计算与软件工程作业五
作业要求 | 第五周作业 |
---|---|
课程目标 | 讨论软件开发方法的思潮 |
作业帮助 | 了解软件开发的各种方法论 |
参考文献 | 软件开发方法的思潮 |
作业正文
https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10584
迄今为止,我们了解了不少软件工程的方法论。请从下表挑选几篇关于软件工程方法论的文章,仔细阅读(包括相关的讨论),根据你的软件工程经验分享你的看法。https://www.cnblogs.com/xinz/p/3852390.html
瀑布模型
它在软件工程中的局限性在于:
- 各步骤之间是分离的,(但是软件的生产过程中的各个步骤不能这样严格分离出来。)
- 回溯修改很困难甚至不可能, (但是软件生产的过程需要时时回溯)
- 最终产品直到最后才出现,(但是软件的客户, 甚至软件工程师本人都需要尽早知道产品的原型, 试用)
它在软件工程中的实用范围有:
- 如果产品的定义非常稳定, 但是产品的正确性非常重要, 需要每一步的验证.
- 产品模块之间的接口, 输入和输出很好用形式化的方法定义和验证。
- 使用的技术非常成熟, 团队成员都很熟悉这些技术
- 负责各个步骤的子团队分属不同的机构, 或不同的地理位置, 不可能做到频繁的交流。
敏捷思潮
敏捷思潮的价值观:
-
Individuals and interactions over processes and tools
个人和交互 重于 过程和工具 -
Working software over comprehensive documentation
可用的软件 重于 完备的文档 -
Customer collaboration over contract negotiation
和客户协作重于 合同谈判 -
Responding to change over following a plan
响应变化 重于 遵循计划
敏捷宣言遵循的 12 条原则:
- 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
- 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
- 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
- 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
- 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
- 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
- 可工作的软件是进度的首要度量标准。
- 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
- 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 以简洁为本,它是极力减少不必要工作量的艺术。
- 最好的架构、需求和设计出自自组织团队。
- 团队定期地反思如何能提高成效,并依此调整自身的举止表现。
总结
瀑布开发以过程为中心。
在瀑布开发中,设计在初始阶段就已经完成了,并且在实现阶段将不再修改。换句话说,实现阶段就是对设计的完成,设计方案是不会改变的。这样就忽略了用户的反馈、忽略了开发人员的设计的主观能动性,使得开发人员只是专注于代码层面的事情。
敏捷开发以人为中心。
在敏捷开发提倡的是迭代,在每次迭代中都有分析、设计,也就意味着在迭代阶段可以把一部分完成的系统给用户演示,允许用户提意见、需求,也允许开发人员将上一次迭代中得到的想法提出来,并且把这些需求意见想法融入到迭代的分析、设计中,从而在根本上、在理念上,促进了双方的交流沟通,发挥了用户的分析评价和开发人员设计的主观能动性。
现如今网络技术的快速发展,几乎每个人都可以实时的反馈自己在使用某软件的是感受,开发者需要实时的根据用户的体验来修改软件,这更契合敏捷的开发方式,它更强调适应性,软件一直处于可使用状态,迭代周期短,很容易根据需求的改变进行更改。但敏捷软件开发仍存在许多争议,这种争议并不是否定敏捷开发,而是在于如何更好地解决问题,如何构建满足用户当前需求的软件,同时展示具有能满足客户长期需求的扩展能力,这些争议会有助于我们提出更多用于分析和设计的软件工程建模方法和表示方法,推动软件工程的发展。