- 软件过程
- ISO 9000把软件过程定义为:“把输入转化为输出的一组彼此相关的资源和活动”。
- 软件开发过程是把用户要求转化为软件需求,把软件需求转化为设计,用代码来实现设计,对代码进行测试,完成各阶段的文档编制并确认软件可以投入运行使用的过程。
- 软件生存周期
- 软件生存周期是借用工程中产品生存周期的概念而得来的,是指某一软件项目被提出来并着手实现开始直到该软件报废或停止使用为止。
- 软件的生存周期一般分为软件计划、软件开发和软件运行三个时期。
- 软件生命周期可划分为7个阶段
- ![[Pasted image 20230530180144.png]]
- 软件计划时期
- 问题定义
- 可行性研究
- 软件开发时期
- 需求分析
- 软件设计
- 概要设计
- 详细设计
- 编码
- 测试
- 软件运行维护时期
- 软件维护
- 问题定义:要求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认。
- 确定要开发软件系统的总目标;
- 给出功能、性能、可靠性以及接口等方面的要求;
- 提出“系统目标与范围的说明”,提交用户审查和确认。
- 可行性研究:如果问题不值得解决,分析员应该建议,以避免时间、资源、人力和金钱的浪费;如果问题值得解决,分析员应该为工程制定一个初步的计划。
- 完成该软件任务的可行性研究;
- 估计可利用的资源、成本、效益、开发进度;
- 制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查;
- 软件开发可行性研究方法主要有哪四个方面:
- 经济可行性:进行成本/效益分析。从经济角度判断系统开发是否“合算”;
- 技术可行性:进行技术风险评价。从开发者的技术实力、以往的工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性;
- 法律可行性:确定系统开发可能导致的任何侵权、妨碍和责任;
- 方案的选择:评价系统或产品开发的几个可能的候选方案,最后给出结论意见
- 需求分析
- 对用户提出的要求进行分析并给出详细的定义
- 编写软件需求说明书或系统功能说明书及初步的系统用户手册
- 提交管理机构评审
- 概要设计
- 把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应,编写概要设计说明书,提交评审。
- 主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。
- 软件结构:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。
- 数据结构:数据特征的描述、确定数据的结构特性、以及数据库的设计。
- 概要设计建立的是目标系统的逻辑模型,与计算机无关。
- 详细设计
- 对每个模块要完成的工作进行具体的描述,为源程序编写打下基础,编写详细设计说明书,提交评审。
- 详细设计的主要任务:设计每个模块的实现算法、所需的局部数据结构。
- 详细设计的目标:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。
- 软件构造——编码
把软件设计转换成计算机可以接受的程序代码,即以某一种特定程序设计语言表示的“源程序清单”;程序应当是结构良好、清晰易读的,且与设计相一致的。 - 软件测试:发现软件程序中的错误、对软件是否符合设计要求,以及是否符合合同中所要达到的技术要求,进行有关验证以及评估软件的质量。最终实现将高质量的软件系统交给用户的目的。
- 单元测试:查找各模块在功能和结构上存在的问题并加以纠正。
- 集成测试:将已测试过的模块按一定顺序组装测试。
- 确认测试:按规定的各项需求,逐项进行有效性确认测试,决定已开发的软件是否合格,能否交付用户使用。
- 使用和维护
- 改正性维护:运行中发现软件中的错误需要修正。
- 适应性维护:为了适应变化了的软件工作环境,需做适当变更
- 完善性维护:为了增强软件的功能需做变更。
软件生存周期的“V-模型”
![[Pasted image 20230530190515.png]]
- 概要设计与详细设计的区别
- 概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。
- 详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
- 概要设计阶段通常得到软件结构图。
- 详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等