软件工程作业-提问回顾与个人总结

软件工程作业-提问回顾与个人总结

项目内容
这个作业属于哪个课程2023年北航敏捷软件工程社区
这个作业的要求在哪里个人作业-提问回顾与个人总结
我在这个课程的目标是掌握团队开发软件的能力
这个作业在哪个具体方面帮助我实现目标总结团队开发软件的经验

问题回顾与总结

提问题博客:软件工程作业-阅读与提问

问题1:如何客观全面地评价一个软件是一个好的软件?有哪些因素。

什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。这的确是抓住了软件工程的一个要素。和软件打交道的专业人都知道软件有“Bug”,软件团队的很多人都整天和Bug打交道,Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。

评价一个软件是否好,需要考虑多个因素,一般来说,我们可以通过以下几个方面:

  • 功能完备性:一个好的软件应该具备完备的功能,能够满足用户的需求。它应该具备所承诺的核心功能,并提供额外的附加功能来增强用户体验。
  • 用户界面设计:软件的用户界面应该设计友好、直观,让用户能够轻松理解和操作。界面布局应该合理,操作流程应该简单明了,以提高用户的易用性和效率。
  • 可靠性和稳定性:一个好的软件应该具备高度的可靠性和稳定性,能够在各种环境和条件下正常运行,不容易崩溃或出现错误。它应该能够处理各种异常情况,并能够及时回复和恢复正常运行状态。
  • 性能和效率:软件的性能和效率也是评价的重要因素。好的软件应该具备良好的响应速度和高效的资源利用,不会占用过多的系统资源或导致系统崩溃。它应该能够在较短的时间内完成复杂的任务,提供良好的用户体验。
  • 兼容性:好的软件应该具备良好的兼容性,能够在不同的操作系统和硬件平台上正常运行,并与其他软件或系统无缝集成。
  • 安全性:软件的安全性是至关重要的。好的软件应该能够保护用户的隐私和数据安全,防止恶意攻击和未经授权的访问。它应该具备有效的安全机制和加密技术,以保证用户数据的保密性和完整性。
  • 文档和支持:一个好的软件应该提供清晰、详尽的用户文档和帮助手册,以便用户了解软件的功能和使用方法。同时,软件开发商应该提供及时的技术支持和客户服务,以解答用户的问题和提供帮助。

问题2:如何检验单元测试的正确性、全面性?

绝大部分软件都是由多人合作完成的,大家的工作相互有依赖关系。最典型的例子就是,某人负责的模块的功能被其他人调用。软件的很多错误都来源于程序员对模块功能的误解 、 疏忽或不了解模块的变化。如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证?单元测试就是一个很有效的解决方案。

确保单元测试的正确性和全面性是确保软件质量的重要一环,为确保软件的正常使用,我们的测试要更加关注以下一些情况:

  • 确保覆盖到所有情况:编写测试用例时,要确保覆盖到尽可能多的代码路径,包括各种分支、条件和异常情况。这样可以确保测试用例的全面性,涵盖各种可能的情况。
  • 验证预期行为:在编写测试用例时,使用断言来验证代码的预期行为。每个测试用例都应该包含断言语句,以验证代码是否按预期工作。这有助于确保测试的正确性。
  • 关注边界条件:重点测试各种边界条件,如最小值、最大值、空值和边界情况。这些边界条件通常是导致错误的地方,通过覆盖这些情况来确保代码的正确性。
  • 处理异常情况:确保测试用例覆盖对异常情况的处理。模拟各种可能的异常情况,并验证代码是否能够正确地捕获和处理这些异常。这包括输入验证、错误处理和异常情况下的回滚或恢复操作等。

问题3:在学习语言越来越多的情况下,我们该如何解决使用频率不高语言的低层次问题?

巴克斯顿说技能的反面是”Problem Solving“ 解决问题 ",这个听起来有点绕,我们看看IT人十分熟悉的一个例子吧。一个 IT 专业的大学生来面试,简历上写“技能:精通 VisuaI Studio C#编程“。于是面试官请他用 Visual Studio IDE 写一段程序 。 一个”不精通“的面试者的编程过程实际上就是一个“解决问题"的过程。例如:

  • 嗯,怎么开始一个C#的命令行程序呢?
  • 定义数组是怎么弄的?是”int [] arr“还是“int arr []”,还是ArrayList,还是Array 。我平时都是上网查的。哦,我不知道还有MSDN网站。
  • 嗯,为什么编译没过呢,哦,这里少一个分号。
  • 嗯,怎么设断点?怎么定义命令行参数?额,我要查一查······

你发现他把时间都花在”解决(低层次)问题”上了,你想考察的“算法技能"、"C#程序设计技能"都无暇顾及。注意,这是在他认为非常精通的编程工具和编程语言中出现这样的问题。你要这样的员工么?

首先,我认为各种编程语言之间一定是有些共同的地方,对此,我们需要熟悉并掌握一些通用的能力,同时要记住各个编程语言自己独特的特点。

当然,除此之外,我们要熟悉并掌握一些工具和插件的使用。例如vscode的插件,通过这些插件的辅助和纠错来帮助我们来解决和避免低层次错误的发生。

问题4:如何将代码和注释写的“赏心悦目”呢?

我们经常抱怨阅读别人的代码很难,我们自己在写代码的时候,是否考虑到如何让代码更易于阅读和维护呢?

  • 符合一致的代码风格:选择一种统一的代码风格,并在整个代码库中保持一致。这包括缩进、命名约定、代码布局等方面。一致的代码风格使代码易于阅读和理解。
  • 使用有意义的变量和函数命名:选择能准确反映变量和函数用途的有意义的名称。避免使用过于简单或晦涩的名称。好的命名可以使代码更具可读性,减少注释的需求。
  • 缩进和格式化:使用适当的缩进和格式化方式,以提高代码的可读性。正确的缩进使代码块之间的层次结构清晰可见,格式化代码可以使其整齐有序。
  • 添加必要的注释:在关键的地方添加注释,解释代码的意图、实现细节或重要的逻辑。注释应该简洁明了,使用清晰的语言,避免冗长和过多的注释。
  • 注重代码的可读性:编写可读性强的代码是关键。使用空白行和代码块之间的空格来组织代码,使其易于阅读。合理的代码分段和注释可以帮助读者理解代码的逻辑。
  • 避免冗余和复杂的代码:简洁而清晰的代码往往更易于理解。避免冗余的代码和复杂的逻辑,优化代码结构和算法。简洁的代码更易于阅读和维护。
  • 使用版本控制工具:使用版本控制工具(如Git)来跟踪代码的修改和演化过程。通过版本控制,可以保留代码的历史记录,轻松回溯和比较不同版本的代码。

问题5:在当前的社会背景下,在IT行业的我们又该如何”创新“?

最近几年,我们整个社会似乎对创新都很感兴趣,媒体上充斥着创新型的人才、创新型的学校、创新型的公司、创新型的城市、创新型的社会等名词。有些城市还把“创新"当作城市的精神之一,还有城市要批量生产上千名顶级创新人才。IT行业也充斥了很多创新的新闻和掌故。对于创新,有一些似是而非的观点和传说(Myth,迷思)。

  • 跟踪和研究最新技术趋势:保持对最新技术趋势的敏感性,并持续学习和研究新兴的技术和工具。了解人工智能、大数据、区块链、物联网等领域的最新发展,掌握相关技术和应用场景,从中寻找创新的机会。
  • 提升问题解决能力:培养解决问题的能力是创新的关键。努力提升分析和解决问题的能力,培养批判性思维和创造性思维。不断锻炼自己的逻辑思维、抽象思维和创新思维,以寻找新的解决方案和改进现有的技术和流程。
  • 鼓励团队合作和知识分享:在团队中鼓励合作和知识分享的氛围。通过团队协作和跨学科的合作,可以促进创意和创新的产生。分享自己的经验和知识,同时倾听他人的观点和建议,从中获得灵感和新的创新思路。
  • 建立创新文化和环境:为创新提供良好的文化和环境。鼓励员工提出新的想法和尝试新的方法,包括失败和学习的机会。提供创新资源和支持,例如创新实验室、研发项目和创新奖励机制,以激励和鼓励员工的创新行为。
  • 与业界和学术界合作:积极与业界和学术界合作,参与创新项目和研究合作。与行业内的专家和学者合作,进行技术交流和合作研发,共同探索和解决行业面临的挑战。这种合作可以促进知识共享和创新的跨领域融合。
  • 关注用户需求和体验:将用户需求和体验置于创新的核心。了解用户的问题和痛点,寻找创新的解决方案,提供更好的用户体验。通过用户反馈和测试,不断改进和优化产品和服务,保持创新的动力。
  • 持续学习和自我提升:在IT行业中,技术和知识的更新迅速,持续学习和自我提升是保持创新的重要途径。参加培训课程、研讨会和技术交流活动,关注行业的新趋势和最佳实践,拓宽自己的技能和视野。

知识点

需求

NABCD需求分析框架

设计

图形建模和分析方法:ER图、思维导图等

实现

设计文档(Spec)的编写

利用项目管理工具进行项目管理

测试

测试方法:单元测试、构建验证测试、验收测试、压力测试等

发布

ZBB(Zero Bug Build):该版本的构建将所有已知的Bug解决了

维护

软件维护活动类型总起来大概有四种:纠错性维护(校正性维护)、适应性维护、完善性维护或增强、预防性维护或再工程

心得

在个人项目中,我主要负责部分算法设计、GUI设计以及连接算法和GUI部分工作,在这个过程中,我对软件工作的算法有了更加细致的了解,对于前端框架的设计也更加的成熟。当然,这之中最重要的是让我对于两人的工作模式有了一定的了解,这为我后续的团队工作有了更加的了解。

同时,在团队项目中,我更加积极地参与到与我们的团队讨论中去,其中,我负责的主要是部分前端设计的工作。通过这次的工作过程,我对于较为大型的软件工程的工作过程有了一定的了解,对于项目管理工具更加了解,同时,在团队项目的开发过程中,我也更加注意自己的代码风格,学习添加关键注释。当然,我也深刻的认识到,一个大型的软件项目是需要每个人团结合作才能开发出来的,我们每个人都是其中不可分割的一部分。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值