软件工程(二)软件生存周期与软件过程

软件生存周期

一个软件从开始立项起,到废弃不用为止,统称软件的生存周期。典型的软件生存周期的主要活动包括:

  1. 需求分析

    明确用户需要解决的问题,分析员根据对问题的理解提出关于系统目标与范围的说明,从用户视角对需求进行定义和分析,用需求模型的形式准确地表达出来

  2. 软件分析

    在需求模型的基础上,从开发人员视角对软件需求模型进行分析,建立于需求模型一致,与实现无关的软件分析模型。它既是对软件系统逻辑模型的描述,也是下一步进行系统设计的依据

  3. 软件设计

    将软件分析模型转变为考虑具体实现技术和平台的软件设计模型

  4. 编码

    编码就是按照选定的程序设计语言和可复用软件架构包,把设计文档翻译为源程序

  5. 软件测试

    除针对模块 / 对象错误的单元测试应与编码同时进行外,还要执行集成测试、确认测试和系统测试等步骤

  6. 运行维护

    作为生存周期的最后一个阶段,运行维护阶段的任务主要是做好软件维护,使软件在整个生存周期内都能满足用户的需求,并延长其使用寿命。每次维护都应遵循规定的程序,填写或更改相关文档


软件过程

软件过程可理解为围绕软件开发所进行的一系列活动,也常把软件过程称为 “ 软件开发模型 ”

传统软件模型

  1. 瀑布模型

    基于软件生存周期的线性开发模型,特点是将整个过程严格划分阶段,与软甲生存周期的特点是一致的,现简述如下:

    1. 阶段间的顺序性:各阶段的活动分步完成;前一阶段活动没有结束,后一阶段活动就不能进行
    2. 阶段间的依赖性:前一阶段的输出文档是后一阶段的输入文档,只有当前一阶段有正确输出时,后一阶段才能获得正确结果。如果某一阶段出现问题,往往要追溯到它之前的一些阶段,必要时可能要修改此前已经完成的文档
    3. 推迟实现的观点:过早地编码容易导致返工,甚至造成灾难性后果。把待开发软件的逻辑设计与物理实现清楚的区别开来,即再需求分析和软件设计阶段只考虑系统的逻辑模型,等到编码阶段再来完成程序清单​
    4. 保证质量的观点:每一阶段必须完成规定的文档。每一阶段都要对完成的文档进行复审​
  2. 快速原型模型

    先建立能够反映用户主要需求的原型,让用户实际观察未来系统的概貌,以判断哪些功能是符合需要的,哪些方面还需要改进。然后将原型反复改进,直至建立完全符合用户要求的新系统。原型系统只包括未来系统的主要功能及系统的重要接口,不包括系统细节

  3. 原型模型带来的启示

    改变了生存周期等同于过程模型的习惯性思维,使人们认识到生存周期只指出整个周期应包含哪些活动,并未规定这些活动应该发生多少次。软件开发人员的任务就是通过对软件过程的重新安排,使之更适合于待开发的软件系统

软件演化模型

遵循迭代的思想方法,使所开发的软件在迭代中逐步达到完善

  1. 增量模型

    是瀑布模型的顺序特征与快速原型法的迭代特征相结合的产物。把软件看作一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中一个增量

    例如,如果用增量模型开发一个大型文字处理软件,第一个发布的增量可能实现基本的文件管理、文档编辑与生成功能;第二个增量具有更加完善的文档编辑与生成能力;第三个增量完成拼写检查与文法检查;第四个增量实现页面布局等高级功能,其中任一增量的开发流程均可按瀑布模型或快速原型法完成
    在这里插入图片描述

  2. 螺旋模型

    结合瀑布模型与快速原型模型基础上演变而成。从总体上看,螺旋模型是一种典型的迭代模型。每迭代一次,螺旋线就前进一周。当项目按照顺时针方向沿螺旋线移动时,每轮螺旋均包含计划、风险分析、建立原型、用户评审四种活动,按以下顺序周而复始,直到实现最终产品

    1. 计划:用于选定本轮螺旋所定目标的策略,包括确定待开发系统的目标、选择方案、设定约束条件等
    2. 风险分析:评估本轮螺旋可能存在的问题,必要时可通过建立一个原型来确定风险的大小,据此决定是按原定目标执行,还是修改目标或终止项目。螺旋模型重视风险分析,目的是要了解、分析并设法降低和排除风险
    3. 建立原型:建立一个原型来实现本轮螺旋的目标。例如,第一圈可能产生产品的需求规格说明书,第二圈可能实现产品设计,等等
    4. 用户评审:由用户评价前一步的结果,同时计划下一轮的工作

在这里插入图片描述

  1. 构件集成模型(主要适用于面向对象的软件开发)

    对象技术将事务封装成包含数据和加工该数据的方法的对象,并抽象成为类。经过适当设计和实现的类,也可称为构件。构件在某一领域具有一定通用性,可以在不同计算机软件系统中复用。将这些构件存储起来构成一个构件库,利用预先封装好的构件来构造应用系统。构件集成模型融合了螺旋模型的不少特点,也支持软件开发的迭代方法

形式化方法模型

前边所述都属于非形式化方法模型,旨在用工程方法生产出质量高、易维护的软件产品,多流行与工业界。形式化方法模型以程序变换技术为主要研究内容,多流行于学业界,本文仅做简单介绍

  1. 转换模型

    采用严格的数学方法来表示软件需求规格说明书,然后进行一系列自动或半自动的程序变换,最终将需求规格说明书转换为计算机系统能接受段地目标程序系统

  2. 净室模型

    与增量模型一样,净室开发把软件看作一系列增量,每个增量是一个用形式化方式表示的 “盒” 。这种盒是在某个特定的抽象层次上对系统的一次封装,按照约定的盒结构逐步进行开发,通过认证后即是最终的增量产品。其基本思想是力求在分析和设计阶段就消除错误、确保正确,在无缺陷的洁净状态下实现对软件的制作

在这里插入图片描述

统一过程和敏捷过程

除了上面介绍的七种软件开发模型外,之后又出现了两种与之前迥异的软件过程模型 —— 统一过程和敏捷过程,关于它们的介绍请看

统一软件开发过程(RUP)分析

敏捷软件开发与极限编程

发布了19 篇原创文章 · 获赞 7 · 访问量 5931

猜你喜欢

转载自blog.csdn.net/CSDN_handsome/article/details/103510807