文章目录
前言
过程是软件开发的一个基本要素,这一讲将学习什么是过程,过程在软件开发管理中起到什么作用,软件过程又包括哪些基本活动。
同时还将学习五种软件过程模型。
一、过程的含义
过程是一组将输入转化为输出的相互关联或相互作用的活动
- 对于整个软件开发来说,用户需求是软件开发的基础,也是整个开发过程的一个输入
- 开发人员通过一系列软件开发活动最终交付出用户需要的产品
- 产品质量保证的关键在于对软件开发过程进行有效控制
- 首先,规定过程的实现方法和步骤,也就是说要把整个过程进行细分,详细地定义出过程里面的每一个环节以及各个环节之间的执行顺序
- 其次,还要对过程进行监测,其中包括对过程的开始、每一个活动的执行、过程的结束进行全方位地监测
二、过程方法
过程方法是系统地识别和管理组织内所使用的过程,保证更有效地获得期望的结果。
- 通常,过程包括实现过程、管理过程和支持过程
- 实现过程是提供有价值产品或服务的关键性活动,这些活动负责把输入转化为输出
- 支持过程负责提供所需要的资源和能力,从而使关键性的实现活动能够顺利进行
- 管理过程则是衡量和评价实现过程和支持过程的效能,建立起组织的质量管理体系
- 软件开发管理与支持活动包括:软件项目管理计划、软件配置管理计划、软件质量保证计划、评审记录……
三、软件开发活动
1.问题定义
问题定义:人们通过开展技术探索和市场调查等活动,研究系统的可行性和可能的解决方案,确定待开发系统的总体目标和范围。
2.需求开发
需求开发:在可行性研究之后,分析、整理和提炼所收集到的用户需求,建立完整的需求分析模型,编写软件需求规格说明。
3.软件设计
软件设计:根据需求规格说明,确定软件体系结构,进一步设计每个系统部件的实现算法、数据结构及其接口等。
4.软件构造
软件构造:概括地说是将软件设计转换成程序代码,这是一个复杂而迭代的过程,要求根据设计模型进行程序设计以及正确而高效地编写和测试代码。
5.软件测试
软件测试:检查和验证所开发的系统是否符合客户期望,主要包括单元测试、子系统测试、集成测试和验收测试等活动。
6.软件维护
软件维护:系统投入使用后对其进行改进,以适应不断变化的需求。完全从头开发的系统很少,将软件系统的开发和维护看成是一个连续过程更有意义。
四、软件开发管理
1.软件项目管理
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量和风险进行控制和管理的活动。
2.软件配置管理
软件配置管理是通过执行版本控制、变更控制的规程,并且使用合适的配置管理软件,来保证所有产品配置项的完整性和可跟踪性。
五、软件过程模型
软件过程是为了获得高质量软件所需要完成的一系列任务,它定义了完成各项任务的工作步骤,把任务、人员和工具密切地结合在一起,软件过程模型是对软件过程的抽象描述
。
瀑布模型 | 将基本的开发活动看成是一系列界限分明的独立阶段,这是一种计划驱动的软件过程,有利于规范软件开发活动。 |
原型化模型 | 原型是一个部分开发的产品,用于加强对系统的理解,有助于明确需求和选择可行的设计策略。 |
迭代式开发 | 将描述、开发和验证等不同活动交织在一起,在开发过程中建立一系列版本,将系统一部分一部分地逐步交付。 |
可转换模型 | 利用自动化的手段,通过一系列转换将需求规格说明转化为一个可交付使用的系统。 |
1.瀑布模型
开发阶段严格按照线性方式进行,每一个阶段具有相关的里程碑和交付产品,且需要确认和验证。
- 以预测性为原则
- 以文档驱动开发国过程
- 以过程控制为核心
弊端
:瀑布模型只有到测试阶段才能真正地验证和确认软件的功能和性能,但这个时候所有的代码都已经开发完成,很难返回去纠正需求的问题和设计的缺陷。虽然这种模型对各个阶段进行严格控制,但是却缺少了对变化的适应
软件开发具有迭代性
软件开发具有迭代性,需要不断地反复尝试,通过比较和选择不同的设计,最终确定令人满意的问题解决方案。
2.原型化模型
- 如果用户能够看到软件的操作界面并且实际操作的话,就能明白这些功能是不是自己需要的
- 另外,设计的原型化也可以帮助开发人员评价和分析不同方案的实现效果,最终决定更为合适的设计策略
3.迭代式开发——增量模型和迭代模型
今天的商业环境要求企业更快速地推出新产品,再加上用户需求存在不确定性和持续变化的特点。于是就需要使用新的过程模型来缩短软件项目的开发周期。
优势
:迭代式的开发使得软件系统能够逐步地进行交付,不仅可以缩短产品的开发周期,还可以更好地获得用户对产品的反馈
迭代开发的两种形式:
增量模型:在每一个新的发布中逐步增加功能直到构造全部功能。 迭代模型:一开始提交一个完整系统,在后续发布中补充完善各子系统功能。 |
在增量模型中,首先定义一个小的功能系统,然后在每一个新发布的功能中逐步增加功能,直到构造出全部的功能
在迭代模型中,一开始就提交一个完整的系统,但是每个功能并不完善,然后在后续的发布中,再对其补充、完善
4.可转换模型
犯错是人的天性。往往是由于人为的错误,造成了软件的缺陷。因此,可转换模型是采用形式化的数学方法描述系统,并利用自动化手段通过一系列转换,将形式化的需求规格说明变为可交付使用的系统
优势:
- 由于数学方法具有严密性和准确性,形式化方法所交付的系统具有较少的缺陷和较高的安全性。
- 特别适合于那些对安全性、可靠性和保密性要求极高的软件系统,这些系统需要在投入运行前进行验证。
弊端:
- 建立形式化的数学描述是一个比较困难的工作,目前这种方法还是应用于有限状态的嵌入式系统中
总结
- 在这次的学习中,我学习了软件过程概念及其组成,软件过程包括实现过程、管理过程和支持过程。其中的实现过程又包含问题定义、需求开发、软件设计、软件构造、软件测试和软件维护,这些活动都是关键性活动,负责把输入转化为输出。而软件的开发过程还需要进行软件开发管理,即软件项目管理和软件配置管理。
- 还重点学习了几种常见的软件过程模型及其应用,软件过程模型的发展体现了软件工程理论的发展,从早期完全无序的状态到严格阶段控制的瀑布模型,以及现在流行的应对变化的迭代模型,其目的都是要提高软件开发效率和产品质量,更有效地解决软件开发面临地问题。