开发逻辑是获取正确软件的关键
- 软件开发要做那些映射-活动?
- 应如何正确组织开发活动,形成求解软件的逻辑?
一、 软件生存周期过程
基本过程
支持过程
组织过程
(1) 描述“要干的活”
过程:活动的一个集合
活动:任务的一个集合
任务:把输入转化为输出的操作
(2) 采用框架-软件生存周期过程框架,“要干的活”分为七个过程组。每个过程组中又包括若干个过程。如下图所示:
协议过程组
组织上项目使能过程组
项目过程组
技术过程组
软件实现过程组
软件支持过程组
软件复用过程组
二、软件生存周期过程框架概述
(1)协商过程(Agreement Processes)("驱动角色")
获取过程 供应过程
(2)组织上的项目使能过程(Organizational Project-enabling Processes)(“保障过程”)
生存周期模型管理过程
基础设施管理过程
项目Portfolio管理过程
人力资源管理过程
质量管理过程
(3)项目过程(Project Processes)(“管理角色”)
项目规划过程
项目评价过程
决策管理过程
风险管理过程
配置管理过程
信息管理过程
测量过程
(4)技术过程(Technical Processes)( “技术角色”)
表达的是项目管理方面的工作,而软件工程项目管理是整个系统工程管理的一部分。
利益悠关方需求定义
系统需求分析过程
系统体系结构设计过程
实现过程
系统集成过程
系统测试过程
软件安装过程
软件接受支持过程
软件运行过程
软件维护过程
软件销毁过程
(5) 软件实现过程(Software Implementation Processes)(“技术角色”):定义了软件实现策略,以便实现指导下属的留个底层过程
软件实现过程
软件需求分析过程
软件体系结构设计过程
软件详细设计过程
软件构造过程
软件集成过程
软件测试过程
(6)软件支持过程(Software Support Processes)(“支持角色”)
支持软件技术过程的有效执行
软件文档管理过程
软件配置管理过程
软件质量保障过程
软件验证过程
软件确认过程
软件评审过程
软件审核过程
软件问题解决过程
(7) 软件复用过程(Software Reuse Processes)(基本能力构建角色):为软件技术过程和支持过程的执行提供必要的能力。
领域工程过程
复用大纲管理过程
复用资产管理过程
三、软件生存周期模型
一个包括软件产品开发、运行和维护中有关过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止。
1、瀑布模型
概念:
(1)项目的开发依次经过:需求、设计、编码和单元测试、集成以及维护-这一基本路径
(2)通过每一阶段,提交以下产品:软件需求规约、设计文档、实际代码、测试用例、最终产品等。
优点:
(1)在决定系统怎么做之前,存在一个需求阶段,鼓励对系统“做什么”进行规约
(2)在建造构建之前,存在一个设计阶段,鼓励规划系统结构
(3)在每一阶段结束时进行复审,允许获取方和用户的参与。
(4)前一步工作产品可作为下一步被认可的、文档化的基线。
缺点:
(1)客户必须能够完整、正确和清晰地表达他们的需求;开发人员一开始就必须理解其应用
(2) 在开始的两个或三个阶段中,很难评估真正的进度状态;设计、编码和测试阶段都可能发生延期。
(3)在一个项目的早期阶段,过分地强调了基线和里程碑处的文档,可能要花费更多的时间,用于建立一些用处不大的文档。
(4)当接近项目结束时,出现了大量的集成和测试工作。
(5)直到项目结束时,都不能演示系统的能力。
适用场景:
(1)在开发中,向下、渐进的路径占支配地位。也就是说,需求已经很好的被理解
(2)过程设计人员清楚需求
2、 增量模型
该模型有一个假设,即需求可以分段,成为一系列增量产品,每一增量可以分别地开发。
优点:
具有瀑布模型的所有优点,此外
(1) 第一个可交付版本所需要的成本和时间是很少的;
(2)开发由增量表示的小系统所承担的风险是不大的;
(3)由于很快发布了第一个版本,因此可以减少用户需求的变更;
(4)允许增量投资,在项目开始时,可以仅对一个或两个增量投资
缺点:
(1)如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;
(2)如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;
(3)管理发生的成本、进度和配置的复杂性,可能会超出一些组织的能力
适用场景:
(1)在开始开发时,需求很明确,且产品还可被适当地分解为一些独立的、可交付的软件
(2)在开发中,期望尽快提交其中的一些增量产品
3、 演化模型
一种有弹性的过程模式,由一些小的开发步组成,每步历经需求分析、设计、实现和验证,产生软件产品的一个增量。
优点:
(1) 在需求不能予以规约时,可以使用这一演化模型。
(2)用户可以通过运行系统的实践,对需求进行改进
(3) 与瀑布模型相比,需要更多用户、获取方的参与
缺点:
(1) 演化模型的使用需要有力的管理
(2)演化模型的使用很容易成为不编写需求或设计文档的借口
(3)用户、获取方不易理解演化模型的自然属性,因此当结果不够理想时,可能产生抱怨。
4、 喷泉模型
特征:迭代 无缝
5、螺旋模型
将软件生存周期的活动分为是个可重复的阶段:规划、风险分析、开发和评估
四、软软件项目生存周期过程的规划与控制
1、 概念:软件项目生存周期过程
项目的生存周期:
Recognition of need -> Acq.Decision&Strategy -> Specification -> Design -> Implementation -> Acceptance - > Release to field -> Maintenance -> Requirements
软件生存周期:在一个项目的生存周期中,每一个任务都通过一个或多个过程的方式来完成的,所有这些相关过程的组合,称为项目的软件生存周期过程。
软件开发风范:
瀑布(waterfall)风范:以瀑布模型为基础而形成的软件项目生存周期过程。
迭代(iterative)风范:也称为演化风范,以演化模型、增量模型和喷泉模型为基础而形成的软件项目生存周期
过程。
螺旋(spiral)风范:以螺旋模型为基础而形成的软件项目生存周期过程。
转换(transformational)风范:以待开发系统的形式化需求规约为基础,通过一系列转换,将需求规约转化为
它的实现而形成的软件项目生存周期过程;其中,如果需求规约发生变化的话,可以重新应用这些转换,对其实现进行更
新。
第四代(fourth generation)风范:围绕特定语言和工具,描述待开发系统的高层,并自动生存代码的软件项目生存周期过程。
2、 软件项目生存周期过程的规划
软件项目生存周期过程的规划可分为3个主要阶段:
1.软件生存周期模型的选择
目标是选取一个适合该项目特点的软件生存周期模型;
2.精化所选择的软件生存周期模型
目标是确定项目需要的过程、活动和任务,并将他们映射到所选取的软件生存周期模型中,形成软件项目生存周
期过程(即开发逻辑)及相应的文档;
3.软件项目生存周期过程的实现
目标是针对已形成软件项目生存周期过程,配以适当的组织过程资产,使软件项目生存周期
3、 软件项目生存周期过程的监控
1.监查软件生存周期过程的执行情况
(1) 进展与进度
(2) 质量数据
(3) 设计、编码和测试计划复审的记录和动作
(4) 变更要求和测试异常报告
(5) 关键资源的有效使用
(6) 与项目组成员的交谈
2.与规划进行比较,必要时进行调整
措施:
(1)当变更的负面影响可能超过带来的好处时,其措施为:按规划的过程继续执行
(2)如果只因初始培训不充分或组织制度不够严格,导致过程没有按预期实施,其措施为:强化过程
(3)如果过程只需要进行少量调整,就可以修改之,其措施为:调整过程
(4)如果过程中只需要进行少量调整,就可以修改之,其措施为:过程替换