作业要求 | https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10584 |
---|---|
课程目标 | 了解软件工程的方法论,进行相关讨论 |
实现目标的方面 | 阅读有关软件工程方法论的文章 |
本次作业 | https://www.cnblogs.com/cdinzz/p/12657383.html |
作业要求
迄今为止,我们了解了不少软件工程的方法论。请从下表挑选几篇关于软件工程方法论的文章,仔细阅读(包括相关的讨论),根据你的软件工程经验分享你的看法。
https://www.cnblogs.com/xinz/p/3852390.html
瀑布模型
瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
优点
1)为项目提供了按阶段划分的检查点;
2)当前一阶段完成后,您只需要去关注后续阶段;
3)可在迭代模型中应用瀑布模型;
增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。
4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
缺点
1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
4)瀑布模型的突出缺点是不适应用户需求的变化。
大泥球
大泥球是一大片随意构造,杂乱无章,凌乱,任意拼接,毫无头绪的代码丛林,如下问题存在于当前的架构中:
1.业务逻辑混杂在平台实体中,造就了代码量庞大的Activity和Fragment;
2.本应是全局级别独立存在的功能模块,却被封锁在某个特定视图领域内,生命周期和模块层级规划不当;
3.功能拆分不够细致和代码重复,在模块和函数级别均有体现;
4.部分模块之间高度耦合,使用没有经过合理规划的接口来实现通信;
5.部分第三方库没有做隔离,造成和第三方库的高度耦合,还存在库的误用和滥用;
6.分层化缺失,领域边界基本不存在,比如数据层和业务层共享同一套数据结构;
7.缺乏内部规范,部分概念或实体的表述混乱零碎,作为workaround的谜之代码比较多。
教堂与集市
教堂:源代码在软件发行后公开,但在软件的每个版本开发过程中是由一个专属的团队所控管的。作者以GNU Emacs及GCC这两软件为例。
集市:源代码在开发过程中即在互联网上公开,供人检视及开发。作者以Linux核心的创始者林纳斯·托瓦兹带领Linux核心的开发为例,亦引用fetchmail的开发为例。
敏捷
一种应对快速变化的需求的一种软件开发方法。基于迭代和增量开发,通过自组织,跨团队沟通协作完成开发工作。
银弹
《没有银弹:软件工程的本质性与附属性工作》这篇经典论文的核心论述通常被解释为复杂的软件工程问题无法靠简单的答案来解决。
来源:https://www.cnblogs.com/cdinzz/p/12657383.html