[I.3] 个人作业:结课总结

21373444-边一宸 2024-06-30 20:38:03
项目内容
这个作业属于哪个课程https://bbs.csdn.net/forums/buaa-ase2024
这个作业的要求在哪里https://bbs.csdn.net/topics/619057113
我在这个课程的目标是学习软件工程的全流程,了解完整的软件开发的流程
这个作业在哪个具体方面帮助我实现目标总结学期内开发过程中的收获与教训

一、问题回答

博客链接:https://bbs.csdn.net/topics/618198757?spm=1001.2014.3001.6377

问题一

对于之前描述的这些情况,可以采用以下策略:

  • 检查对象状态:通过检查函数调用前后的对象状态来判断函数是否按预期工作。可以在调用函数之前保存对象的状态,然后在调用函数之后检查对象的状态是否发生了预期的变化。
  • 使用Mock对象:使用Mock对象来模拟依赖对象,检查函数是否按预期调用了依赖对象的某些方法。
  • 捕获输出:如果函数会产生输出,可以通过捕获输出并与预期输出进行比较来进行测试。

问题二

目前,我对这个问题仍然保持开放的回答,我认为无论是取决于水平更高的人还是有1+1>2的效果,其实都有一定道理。只不过水平更高的乙一方确实有助于提高程序的上限,但是两方的优势互补与配合,也能有效得提高程序的下限,所以我认为均合理,具体则取决于程序的衡量标准。

问题三

我认为,关于绩效衡量,的确很难找到一个最通用或最准确的方法,没有一种万能的方法可以适用于所有情况,因为不同的工作性质、团队文化、行业标准和公司目标都会影响绩效衡量的标准。绩效衡量涉及到多个维度和因素,不同的团队、公司和项目有不同的需求和背景。但是,我认为可以从以下几个方面来探讨和制定更有效的绩效衡量标准:

  • 目标设定:通过设定具体、可衡量的目标和关键绩效指标来评估员工的绩效。这种方法可以确保评估与公司的战略目标一致。
  • 反馈:从同事、下属和上级等多个角度收集反馈,全面评估员工的工作表现。这种方法可以提供更客观的评价,减少单一评估者的偏见。
  • 项目成果和影响力:评估员工在项目中的具体贡献和对团队、公司的影响力,例如解决了多少问题、改进了哪些流程、带来了多少收益等。
  • 行为和价值观:评估员工是否表现出公司所倡导的核心价值观和行为准则,例如团队合作、创新精神、客户导向等。

问题四

通过实践,我认为UML图等图形建模方法在构思和设计中有以下作用:

  • 迭代和演化:UML图不应该被认为是静态的、一次性的设计文档。相反,它们应该是动态的,随着项目的进展不断更新和演化。这样,UML图可以持续反映当前的系统状态和设计思路。
  • 高层次设计:在项目初期,UML图可以用于高层次的设计,帮助团队理解系统的主要组成部分和它们之间的关系。详细的设计和实现细节可以在开发过程中逐步完善。
  • 沟通工具:UML图不仅仅是为设计而设计的工具,更是团队沟通和协作的工具。通过UML图,团队成员可以有一个共同的视觉参考,减少误解和沟通成本。

所以:UML图在软件工程中具有重要的价值,但也有其局限性。关键在于如何灵活使用它们。UML图在项目初期和团队沟通中非常有用,可以帮助建立一个共同的理解和视觉参考。UML图应该随着项目的进展不断更新和演化,以反映实际的设计和实现情况。根据项目的具体需求,灵活选择和定制建模方法,不必一味追求统一性和完美性。最重要的是,找到合适的抽象层次,使模型既不过于复杂,也不丢失重要信息。

问题五

对于Java程序,确实存在一些形式化验证方法和工具,例如:

  • 模型检测(Model Checking):工具如Java PathFinder(JPF)可以用于检测Java程序中的并发错误。
  • 定理证明(Theorem Proving):工具如KeY可以用于Java程序的形式化验证,通过证明程序符合特定的规范。
  • 类型系统扩展:一些研究扩展了Java的类型系统以捕捉更多的错误,例如通过依赖类型(Dependent Types)来进行更强的类型检查。

应用形式化验证的必要性:

  • 对于高复杂度和高可靠性要求的项目,如航空航天、医疗设备和金融系统,形式化描述非常有必要,因为这些系统的错误代价非常高。
  • 安全和可靠性要求:如果项目对安全性和可靠性有严格要求,形式化方法可以提供更高的保证。
  • 资源和时间:形式化描述和验证需要投入大量的资源和时间,团队是否有足够的资源和时间来进行这些工作是一个重要考虑因素。

二、实践收获

1、需求

主要收获是尝试了NABCD需求分析方法,在weavex项目中,我们主要考虑了其中的N需要(Need),A受众(Audience),B好处(Benefit),D差异(Difference),而对C竞争(Competition)考虑的较少。我们通过问卷确定了用户群体画像,已经用户具体的需要和对现有平台的评价,因此来确定我们的优势。

2、设计

由于要设计一款好用的latex文本编辑器,所以功能及界面设计都是很重要的,我的体会是,首先功能设计要合理,要对需要实现的功能做模块化的处理,减少模块之间的耦合,才能更好的分工合作。而对于UI设计来说,其重要性不言而喻,但是要注意有时UI的设计也需要及时和功能的设计统一,否则将会造成UI迁就功能而导致用户使用体验下降的影响。

3、实现

首先,要明确分工,减少耦合;其次,要制定明确的例会以及开发日程安排,确保团队成员的一致贡献;最后,制定合理的贡献分配机制。

4、测试

我在本项目中主要负责后端的开发,所以主要使用了单元测试和压力测试两种方法。我一般会在每个API接口完成之后,利用一些测试软件软件对该接口进行测试,保证其正确性。而我们还开发了一些资源消耗比较大的API,对CPU的占用较大,所以我们还对其进行了压力测试。

5、发布

我没有主要负责该环节,但是我认为应该扩大宣传力度,努力维护受众群体,坚持用户需求导向,要持续收集用户反馈,不断升级产品功能。

6、维护

在敏捷开发的环境设定下,软件可能会出现或大或小的漏洞,我认为在修复过程中,判定漏洞的优先级或重要性是最关键的问题,甚至还需要根据修复代价做决策。

三、心得体会

团队越大,自然实力越强,但是如何统筹协调不同人员,如何让所有成员都能以较高的满意度完成自己的任务,往往也更加困难。

我在本课程中学习到了一些软件敏捷开发相关的理论知识,对于指导开发实践有着重要的意义。同时,也在亲身参与软件开发的过程中,体会了完整的敏捷开发流程,在理论之外,经历、学习了更多开发中的细节,收获颇丰。

...全文
170 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

73

社区成员

发帖
与我相关
我的任务
社区描述
2024年北航敏捷软件工程
软件工程团队开发结对编程 高校 北京·海淀区
社区管理员
  • clotho67
  • Yeyanhan
  • HJin_Gwok
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧