计算机与软件工程作业五
作业要求 | 第五周作业 |
---|---|
课程要求 | 讨论软件开发方法的思潮 |
参考文献 | 参考文献 |
作业帮助 | 了解软件开发的各种方法论 |
瀑布模型
瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
它在软件工程中的实用范围有:
如果产品的定义非常稳定, 但是产品的正确性非常重要, 需要每一步的验证.
产品模块之间的接口, 输入和输出很好用形式化的方法定义和验证。
使用的技术非常成熟, 团队成员都很熟悉这些技术
负责各个步骤的子团队分属不同的机构, 或不同的地理位置, 不可能做到频繁的交流。
大泥球
大泥球是一大片随意构造,杂乱无章,凌乱,任意拼接,毫无头绪的代码丛林,如下问题存在于当前的架构中:
1.业务逻辑混杂在平台实体中,造就了代码量庞大的Activity和Fragment;
2.本应是全局级别独立存在的功能模块,却被封锁在某个特定视图领域内,生命周期和模块层级规划不当;
3.功能拆分不够细致和代码重复,在模块和函数级别均有体现;
4.部分模块之间高度耦合,使用没有经过合理规划的接口来实现通信;
5.部分第三方库没有做隔离,造成和第三方库的高度耦合,还存在库的误用和滥用;
6.分层化缺失,领域边界基本不存在,比如数据层和业务层共享同一套数据结构;
7.缺乏内部规范,部分概念或实体的表述混乱零碎,作为workaround的谜之代码比较多。
银弹
银弹,被引申为解决问题的有效办法。IBM大型机之父福瑞德·布鲁克斯在1986年的论文《没有银弹》中表达了他的观点:软件工程中不存在银弹——没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。文中着重探讨了软件工作的两个分类:本质性与附属性。
敏捷开发
工程方法已经存在很长时间了。他们并没有因为取得巨大成功而引人注目。他们甚至不受欢迎。对这些方法的最频繁的批评是它们是官僚主义的。要遵循这种方法,要做的事情太多了,以致整个开发步伐变慢了。
敏捷方法论是对这些方法论的一种反应。对于许多人而言,这些敏捷方法论的吸引力在于他们对工程方法论的官僚作风的反应。这些新方法试图在无过程与过多过程之间做出有益的折中,提供恰好足以获得合理收益的过程。
所有这些的结果是,敏捷方法与工程方法相比在重点方面发生了重大变化。最直接的区别是它们不太面向文档,通常针对给定任务强调少量的文档。在许多方面,它们都是面向代码的:遵循一条说明文档的关键部分是源代码的路线。
总结
瀑布开发以过程为中心。
在瀑布开发中,设计在初始阶段就已经完成了,并且在实现阶段将不再修改。换句话说,实现阶段就是对设计的完成,设计方案是不会改变的。这样就忽略了用户的反馈、忽略了开发人员的设计的主观能动性,使得开发人员只是专注于代码层面的事情。
方法论可以为我们提供大量的关于代码审核、开发模式上的经验与便捷,这是它最大的用处。
但它不能是一成不变的,应该是随着需求不断进步发展到,这才会真正的发挥出作用。
通过了解这些软件工程方法论的文章,可以知道软件开发是个很复杂的过程,期间很容易产生错误。任意一个小小的细节都会影响整个软件开发的质量,而想要提高软件开发的进度和质量,就必须在多个方面都做到完美。