【软件工程】 软件工程及开发模型

  • Post author:
  • Post category:其他


导图:


【软件工程】

定义(IEEE):软件工程师开发、运行、维护和修复软件的系统方法。


【软件工程过程】

软件工程过程:

  • 软件规格说明

  • 软件开发(设计)

  • 软件确认(用户需求)

  • 软件维护

软件工程过程的特性:

  • 易理解性

  • 可见性

  • 可支持性

  • 可接受性

  • 可靠性

  • 健壮性

  • 可维护性

  • 速度


【软件开发的五大模型】


1.瀑布型:→演变:b模型:


https://baike.baidu.com/item/%E7%80%91%E5%B8%83%E6%A8%A1%E5%9E%8B/9817778

思想: 瀑布模型:这种模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。(有顺序的)

包括软件生存期中的问题定义、可行性分析、需求分析、概要设计、详细设计、编码、测试和维护过程。


(1)特点:

阶段(时间)的顺序性和依赖性

推迟实现的观点

质量保证的观点(每个阶段都要产生文档并评审,合格才能进行,质量保证)

(2)优点:

奠定了软件工程方法的基础

流水作业,便于分工协作

推迟物理实现,易于修改文档,有复审质量保证

(3)缺点:

周期长

与用户见面晚,开发阶段为开发人员,用户不能及时与开发人员沟通问题。成功率低

问题发现越晚,修改成本越高


演变:b模型:


维护成本比较高,在交付用户使用时,修改内容要限制在20%-30%,修改太多就是二次开发了。


2.快速原型模型:


https://baike.baidu.com/item/%E5%BF%AB%E9%80%9F%E5%8E%9F%E5%9E%8B%E6%A8%A1%E5%9E%8B

(1)思想:设计人员和用户在一起,快速建立一个反映用户需求的原型,在此基础上,修改,再测试,再反复修改,测试。

(2)优点:

  • 设计人员和用户一直在一起,方便反复设计和修改。

  • 与用户见面快,开发效率高

(3)操作时两种策略:

  • 丢弃型

  • 修改型



3. 渐增模型(演化模型 / 增量模型):

(1)基本思想:基于原型,反复运行,不断修改。

(2)优点:

  • 在项目的初始阶段不需要投入太多的人力资源,不断优化。

  • 与用户见面快,开发效率高。

  • 开发人员和用户一直在一起,方便及时修改问题,更好的满足用户的需求。

  • 较大灵活性,适合于软件要求不明确,设计方案有一定风险的软件项目。

(3)缺点:

  • 整体结构和文档的划分上均不如瀑布型清晰严格

  • 周期长,成本高



4. 螺旋模型:多次原型反复并增加风险评估的开发模型


https://baike.baidu.com/item/%E8%9E%BA%E6%97%8B%E6%A8%A1%E5%9E%8B

是一种风险驱动的模型。也是一种迭代模型,把开发过程分为几个螺旋模型,每迭代一次,螺旋线就前进一周,反复逐渐递增。

每转一圈就产生一个新的版本,直到用户认可(也是在瀑布模型基础上演变的,必须在前一个阶段才能到下一个阶段)

(1)优点:

  • 支持用户需求的动态变化,可以不断开发优化

  • 结合了快速原型模型的迭代性质(可修改、可拓充性)和瀑布模型的系统性和可控性的特点,提高目标软件的适用能力

  • 方便项目管理人员及时调整管理决策,降低开发风险

  • 适合于内部开发的大规模软件项目(现代开发常用模型)

(2)缺点:

  • 如果每次迭代效率不高,致使迭代次数过多将会增加成本并推迟提交时间

  • 使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高

(3)四象限——四方面活动:

  • 制定计划——确定软件目标,选定实施方案,弄清项目开发的限制条件

  • 风险分析——分析所选方案,考虑如何识别和消除风险

  • 实施工程——实施软件开发

  • 客户评估——评价开发工作,提出修正建议


5.喷泉模型:

(1)特点:

  • 迭代(重复,演进)

  • 无间隙(各阶段间无明显界限)



(2)优点:


  • 适用于面向对象的软件开发,开发效率较高

  • 各个阶段没有明显的界限,开发人员可以同步进行开发



(3)缺点:


  • 喷泉模型在各个开发阶段是重叠的,所以需要大量开发人员,不利于管理

  • 要求严格管理文档,审核难度加大

改进的喷泉模型:



版权声明:本文为Ginny97原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。