软件工程导论——软件生存周期

1. 软件生存周期的定义

软件生存周期是指软件从产生,发展到成熟,直至衰亡为止的过程

因为软件生存周期是个非常漫长的过程,所以通常把软件生存周期划分为几个时期:

  • 1.软件定义时期
  • 2.软件开发时期
  • 3.软件维护时期

2. 软件生存周期阶段划分

国标《计算机软件开发规范》,将软件生存周期划分为八个阶段:

  • 可行性研究和计划
  • 需求分析
  • 总体设计
  • 详细设计
  • 程序实现(编码和单元测试)
  • 集成测试
  • 确认测试
  • 使用和维护

3. 各阶段完成的任务

3.1 可行性研究和计划

该阶段的关键任务是:解决的问题是什么?是否有行得通的解决方法?如果有那么需要给出粗略计划,该阶段需要提交以下几个文档:

3.1.1 问题定义报告

该报告需要清楚的表示该软件所解决问题的性质是什么,工程需要达到什么样的目标,以及工程规模

3.1.2 可行性研究报告

该文档当中需要从几个方面来论证需要开发的软件是否可行,比如说:

  • 从经济角度上,需要进行成本效益分析,包括经济效益和社会效益,最后需要表示效益大于成本,该软件才会有开发的必要
  • 从技术可行性分析,需要进行技术分析,有没有实现该软件的重大技术障碍,如果有,则该软件不能进行开发
  • 从社会可行性进行分析,该软件被开发有没有危害公共安全,社会道德等因素,如果有,则该软件不能进行开发

3.1.3 可行性分析的步骤

  1. 复查并且确定系统的规模和目标
  2. 研究正在使用的系统
  3. 建立新系统的高层逻辑模型
  4. 导出和评价各种方案
  5. 推荐可行的方案
  6. 草拟初步的开发计划
  7. 编写可行性研究报告并且提交审查

注:早期认真进行可行性研究和分析可以减轻后期开发可能遇到的困难

3.1.4 项目开发计划(粗略)

 如果可行性分析通过后,那么需要给出粗略的项目开发计划

3.2 需求分析

该阶段的关键任务:目标系统必须做什么,也就是确定开发该软件的目的

可行性研究的需求分析是粗略的,不准确的

需求分析是完整的,准确的,清晰的,具体的

3.2.1 确定系统的综合要求

  1. 功能需求
  2. 性能需求
  3. 环境需求
  4. 接口需求
  5. 界面需求(用户) 

3.2.2 分析系统的数据需求

由系统的信息流归纳抽象出数据元素组成,数据的逻辑关系,数据字典格式和数据模型,并以IPO的结构方式表示。因此分析系统的数据需求是软件需求分析的一个重要任务

3.2.3 建立系统的逻辑模型

一致性分析检查确定系统的构成以及主要成分,并且用图文结合的形式,建立新系统的逻辑模型,通常使用数据流图,数据字典以及处理算法来表述系统的逻辑模型

3.2.4 需求规格说明书(需求分析报告)

该文档中需要详细的写出未来目标系统的需求,该文档是整个软件生存周期中最重要的文档,因为该文档中记录了未来软件要做什么等所有内容,软件展开设计之后,需要依据该文档来制作,软件开发成功后,客户需要根据该文档来进行验收

3.3 总体设计

 该阶段的关键任务:怎么实现目标软件系统?该阶段需要提交以下文档:

根据需求分析结果来设计方案:可能会设计出多种技术方案,甚至需要设计高,中,低成本不同的方案,接下来分析这些方案,最后推荐出最佳方案,然后按照该方案来设计软件结构

3.3.1 总体设计说明书

该文档中记录着总体设计的结果。

3.4 详细设计

该阶段关键任务:该如何具体实现系统?该阶段需要设计每个模块的算法和数据结构并且给出足够详细的过程性描述,该阶段需要提交以下文档

3.4.1 详细设计说明书

该文档中用适当的表达工具来表达算法和数据结构

3.4.2 结构化程序设计

结构化的程序设计采用自顶向下逐步求精的设计方法和单出入口的控制结构

所使用的结构有顺序,选择,重复三种

  • 顺序结构:实现过程的步骤是任意算法说明的基础
  • 选择结构:提供按照某些逻辑发生选择处理的条件
  • 重复结构:提供循环处理

只有三种基本控制结构就可以实现单出入口,且屋死循环的程序

3.4.3 详细设计工具

描述程序处理过程的工具,可以分为图形,表格和语言三类,基本要求是提供对设计准确无歧义的描述,应能明确了解控制流程,处理功能,数据组织及其它方面的实现细节。从而在编码阶段可以把对设计的描述直接翻译成对应的程序代码

常用的详细设计工具:程序流程图,盒图(N-S图),PAD图,伪码

3.4.4 程序流程图

 

优点:易学,表达直观

缺点:不够规范,诱使程序员过早考虑流程而不考虑程序的整体结构,不易表达数据结构和层次的结构 

 3.4.5 盒图(N-S图)

 优点:功能余表达明确,很容易确定局部和全局数据的作用域,很容易表达模块的层次结构并列出嵌套关系

3.5 实现(编码和单元测试)

该阶段关键任务:选择语言和工具翻译详细设计结果和测试模块,该阶段需要提交以下文档:程序清单,单元测试报告

3.6 集成测试

该阶段的关键任务:将经过单元测试的模块组装起来进行测试,通过测试使软件达到预定要求,该阶段需要提交测试报告,报告中需要有测试计划,测试方案,测试结果

3.7 确认测试(验收测试)

该阶段关键任务:客户根据需求规格说明书来进行测试,该阶段提交的文档和集成测试相同

3.8 使用与维护

该阶段关键任务:通过必要的维护活动使系统持久满足用户的要求

常见的维护类型:

  • 改正性维护:软件运行过程中发现错误,进行维护
  • 适应性维护:软件运行因软硬件环境变化,进行维护
  • 完善性维护:用户要求改进或者扩充软件,进行维护
  • 预防性维护:为将来的维护做准备

实际上软件生存周期不一定分成按照这八个阶段的顺序执行,实际上进行软件开发工作时,软件规模,软件类型,开发环境以及技术方法等各种因素会影响阶段区分,以及各个阶段的执行顺序,从而形成不同的软件生存周期模型,又称为过程模型 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值