本主题讨论软件过程的类别、软件生命周期模型、软件过程适应和实际考虑。软件开发生命周期(软件开发生命周期)包括用于指定软件需求并将其转换为可交付的软件产品的软件过程。软件产品生命周期(SPLC)包括一个软件开发生命周期加上额外的软件过程提供部署、维护、支持,进化,报废,和所有其他inceptiontoretirement过程软件产品,包括软件配置管理、软件质量保证过程应用于整个软件产品的生命周期。一个软件产品生命周期可以包括多个用于演进和增强软件的软件开发生命周期。
单个的软件过程之间没有时间顺序。软件过程之间的时间关系由软件生命周期模型提供:软件开发生命周期或SPLC。生命周期模型通常强调模型中的关键软件过程以及它们在时间和逻辑上的相互依赖和关系。生命周期模型中软件过程的详细定义可以直接提供,也可以参考其他文档。
除了在软件过程之间传递时间和逻辑关系之外,软件开发生命周期模型(或在组织内使用的模型)还包括应用进入和退出标准的控制机制(例如,项目评审、客户批准、软件测试、质量关口、演示、团队共识)。一个软件过程的输出通常为其他过程提供输入(例如,软件需求为软件架构设计过程和软件构建和软件测试过程提供输入)。几个软件过程活动的并发执行可能产生一个共享的输出(例如,由不同团队开发的多个软件组件之间的接口规范)。一些软件过程可能被认为效率较低,除非同时执行其他软件过程(例如,软件需求分析期间的软件测试计划可以改进软件需求)。
2.1 软件过程的类别
在软件开发和软件维护生命周期的各个部分中,已经定义了许多不同的软件过程。这些过程可以分为以下几类:
主要过程包括软件开发、操作和维护的软件过程。
支持过程在整个软件产品生命周期中间歇性地或连续地应用,以支持主要过程;它们包括软件过程,如配置管理、质量保证、验证和确认。
组织过程为软件工程提供支持;它们包括培训、过程度量分析、基础设施管理、投资组合和复用管理、组织过程改进,以及软件生命周期模型的管理。
跨项目过程,如复用、软件产品线和领域工程;它们在组织中涉及到不止一个软件项目。
软件过程除了上面列出的之外还包括以下内容。
项目管理过程包括计划和估计、资源管理、度量和控制、领导、管理风险、管理利益攸关方,以及协调软件开发和维护项目的主要、支持、组织和跨项目过程的过程。
软件过程也是为特定的需求而开发的,例如处理软件质量特征的过程活动(参见软件质量知识领域)。例如,软件开发期间的安全问题可能需要一个或多个软件过程来保护开发环境的安全并减少恶意行为的风险。开发软件过程也可以为建立对软件完整性的信任提供充分的依据。
2.2 软件生命周期模型
软件的无形和可塑的本质允许了各种各样的软件开发生命周期模型,包括线性模型,在线性模型中,软件开发的各个阶段按照需要通过反馈和迭代依次完成,然后是集成、测试和单个产品的交付;到迭代模式,在这种模式下,软件会在迭代周期中以功能不断增加的方式开发;对于敏捷模型,通常包括向客户或用户代表频繁地展示可工作的软件,这些客户或用户代表在短的迭代周期中指导软件开发,从而产生可交付的工作软件的小增量。如果需要,增量的、迭代的和敏捷的模型可以将工作软件的早期子集交付到用户环境中。
线性软件开发生命周期模型有时被称为预测软件开发生命周期模型,而迭代和敏捷的软件开发生命周期被称为自适应软件开发生命周期模型。应该注意的是,在一个SPLC期间,根据维护活动的不同,可以使用不同的软件开发生命周期模型来执行各种维护活动。
各种软件开发生命周期模型的一个显著特征是管理软件需求的方式。线性开发模型通常在项目启动和计划期间尽可能地开发一套完整的软件需求。然后严格控制软件需求。软件需求的变更是基于由变更控制委员会处理的变更请求的(参见软件配置管理知识领域中的变更控制委员会中的请求、评估和批准软件变更)。基于在每个增量中实现的软件需求的划分,增量模型产生连续的工作增量,可交付软件。软件需求可能被严格控制,就像在线性模型中一样,或者随着软件产品的发展,在修改软件需求方面可能会有一些灵活性。敏捷模型可能在最初定义产品范围和高级特性;然而,设计敏捷模型是为了在项目期间促进软件需求的开发。
必须强调的是,软件开发生命周期从线性到敏捷并不是一条细的直线。不同方法的要素可纳入具体模式;例如,增量式软件开发生命周期模型可能包含顺序的软件需求和设计阶段,但是在软件构建期间允许相当大的灵活性来修改软件需求和架构。
2.3 软件过程的适应
预定义的软件开发生命周期、splc和单个软件过程通常需要进行调整(或“剪裁”),以更好地满足本地需求。组织环境、技术创新、项目规模、产品关键性、法规要求、行业实践和企业文化可能决定需要的适应性。单个软件过程和软件生命周期模型(开发和产品)的适应可能包括向软件过程、活动、任务和过程添加更多的细节,以解决关键问题。它可能包括使用一组替代的活动来实现软件过程的目的和结果。适应还可能包括从开发或产品生命周期模型中删除明显不适用于待完成工作范围的软件过程或活动。
2.4 实际考虑
在实践中,软件过程和活动经常是交叉的、重叠的,并且并发地应用。指定离散的软件过程的软件生命周期模型,具有严格指定的进入和退出标准以及规定的边界和接口,应该被视为必须适应的理想化,以反映组织环境和业务环境中的软件开发和维护的现实。
另一个实际的考虑事项:软件过程(如配置管理、构建和测试)可以进行调整,以促进软件的操作、支持、维护、迁移和报废。
在定义和裁剪软件生命周期模型时需要考虑的其他因素包括对标准、指示和策略的要求一致性;客户需求;软件产品的临界性;以及组织成熟度和能力。其他因素包括工作的性质(例如,对现有软件的修改与新的开发)和应用领域(例如,航空航天与汽车电子)。
责任编辑:lq6
-
软件
+关注
关注
69文章
4781浏览量
87163 -
软件过程
+关注
关注
0文章
4浏览量
5059
原文标题:软件生命周期
文章出处:【微信号:QCDZYJ,微信公众号:汽车电子工程知识体系】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论