计算机与软件工程作业五

作业要求|[第五周作业]https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10584
--|:--😐--😐--:
课程目标|讨论软件开发方法的思潮
参考文献| https://www.cnblogs.com/xinz/p/3852390.html
作业帮助| 了解软件开发的各种方法论

作业正文

迄今为止,我们了解了不少软件工程的方法论。请从下表挑选几篇关于软件工程方法论的文章,仔细阅读(包括相关的讨论),根据你的软件工程经验分享你的看法。
https://www.cnblogs.com/xinz/p/3852390.html

瀑布模型

软件将要经历一个定义、开发、运行维护,直至被淘汰这样的全过程,这个全过程称为软件的生命周期。 为了使软件生命周期中的各项任务能够有序地按照规程进行,需要一定的工作模型对各项任务给予规程约束,这样的工作模型被称为软件过程模型。瀑布模型中的“瀑布”是对这个模型的形象表达,即山顶倾泻下来的水,自顶向下、逐层细化。
1.它的核心思想是将各项功能的实现与设计分开,规定了各阶段的一个自上而下的顺序,相邻的两个阶段有紧密的联系,就好比我们平时写的操作步骤,从第一个步骤开始,每个步骤都依赖于上一个步骤的结果,作为本阶段的一个输入,有很强烈的先后顺序。
2.瀑布模型对软件的每项功能在需求分析、设计时就给出了实现的具体方案,所以用瀑布模型,整个软件的设计框架很清晰,每一步也很明确,软件工作者也很清楚自己的分工。
3.任何阶段如果发生错误,立即回到前面发生错误得阶段,进行修正工作.
4.每一阶段完成后,皆会有严谨的文件产生.
5.使用者即用户只有在调查,需求分析及测试三个阶段参与.

银弹

银弹,被引申为解决问题的有效办法。IBM大型机之父福瑞德·布鲁克斯在1986年的论文《没有银弹》中表达了他的观点:软件工程中不存在银弹——没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。文中着重探讨了软件工作的两个分类:本质性与附属性。
本质性(essence):软件本身在概念(conceptual)建构上存在先天的困难;亦即如何从抽象性问题,发展出具体概念上的解决方案。
附属性(accident):将概念上的构思施行于电脑上(编程语言),所遭遇到的困难。

敏捷开发

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。

大泥球

所谓大泥球,是指杂乱无章、错综复杂、邋遢不堪、随意拼贴的大堆代码。我们现在惯用的敏捷性开发的很多方面会直接导致泥球,包括:缺少前期设计、应对需求变化过晚、应对架构变化过晚、碎片式增长。尤其是在需求导向愈发重要的今天,很多软件在发布的同时就已经过时了,大泥球也会随之产生。同时随着修改BUG,新BUG可能也会随之产生。
在我看来,对于一个项目而言,减少大泥球的办法有如下几点:
做好前期设计,制定代码规范,规划好各个模块的接口与功能,是最基本的保障。
以需求、实际进度为导向及时调整:需求决定软件的定位,脱离了需求,代码便毫无意义;而根据实际完成情况及时调整设计与分工,是很必要的。
沟通,重视代码复查与测试:检查冗余的有效方法。
处理好代码复用:这是造成随意拼接、错综复杂的重要原因。

总结

通过了解这些软件工程方法论的文章,可以知道软件开发是个很复杂的过程,期间很容易产生错误。任意一个小小的细节都会影响整个软件开发的质量,而想要提高软件开发的进度和质量,就必须在多个方面都做到完美。

posted @ 2020-04-07 09:43  我吃柠檬。  阅读(179)  评论(0编辑  收藏  举报