《软件工程方法与实践》—— 2.3 软件产品与过程

本节书摘来自华章出版社《软件工程方法与实践》一 书中的第2章,第2.3节,作者窦万峰,更多章节内容可以访问“华章计算机”公众号查看。

2.3 软件产品与过程

软件过程提高了软件工程活动的稳定性、可控性和有组织性,过程受到严格的约束,保证软件活动有序进行。软件工程师和管理人员根据需要调整开发过程和遵循该过程。从技术的角度来看,软件过程注重软件开发中采用的方法。
从软件工程师的观点来看,产品就是过程定义的一系列活动和任务的结果,即要交付的软件。产品依赖过程,软件团队会根据产品的特征以及自身特点选择特定的软件过程来开发该产品。
首先,当产品比较复杂,开发周期比较长(一般持续一年及以上),开发成本比较高时,团队就要选择重型软件过程,如螺旋模型或者统一过程模型等。因为当软件比较复杂时,软件需要大量的文档记录软件的分析和设计结果,以便与客户、开发者之间进行交流,从而理解问题并达到一致。其次,当软件持续周期较长时,开发人员中途会退出,其结果也会完全通过文档被保留下来,以便于后来者能够阅读文档,快速理解问题和投入到开发中。最后,随着项目不断进展,复杂的软件产品一般都经过多次更改和演化,后面的结果跟当初的设想肯定存在很大的差异,只有通过文档和相关的管理过程来保存这些更改和变化,才能适应软件产品的进化。
当产品较为简单或需求比较稳定时,一般开发周期也比较短(3个月以内),开发人员也比较少(一般4~8人),这样的软件就可以采用轻型软件过程,如极限编程方法或者瀑布模型即可。
软件过程并不能保证软件按期交付,也不能保证软件满足客户需求。软件过程本身也要进行评估,以确认满足了成功软件工程所必需的基本过程标准要求。软件过程评估作用如图2-1所示。

软件过程评估对现有的过程进行评估,并引发过程改进和能力与风险确定,以便完善软件过程。
常见的软件过程评估方法主要有以下几种。
用于过程改进的标准CMMI评估方法SCAMPI提供了一个过程评估模型,包括启动、诊断、建立、执行和学习。SCAMPI方法采用了卡内基梅隆大学软件研究所的CMMI作为评估的依据。
用于团队内部过程改进的CMM评估方法CBAIPI提供了一种诊断方法,用以分析软件或软件团队的相对成熟度。CBAIPI方法采用了卡内基梅隆大学软件研究所的CMM作为评估的依据。
SPICE标准定义了软件过程评估的一系列要求,目的是帮助软件开发团队建立客观的评价体系,以评估定义的软件过程的有效性。
软件ISO 9001:2000标准是一个通用标准,该标准用于评估软件产品、系统或服务的整体质量。该标准可直接应用于软件团队和公司。ISO 9001:2000标准采用“计划—实施—检查—行动”循环,将其应用于软件项目的质量管理环节。
随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程,包括个人软件过程(Personal Software Process,PSP)和团队软件过程 (Team Software Process,TSP)。
PSP是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。CMM侧重于软件企业中有关软件过程的宏观管理,面向软件开发单位;PSP则侧重于企业中有关软件过程的微观优化,面向软件开发人员。二者互相支持,互相补充,缺一不可。
按照PSP规程,改进软件过程首先需要明确质量目标,也就是软件将要在功能和性能上满足的要求和用户潜在的需求。其次是度量产品质量,对目标进行分解和度量,使软件质量能够“测量”。然后是理解当前过程,查找问题,并对过程进行调整。最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。
PSP为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低的级别中的所有元素,并增加了新的元素。这个进化框架是学习PSP过程基本概念的好方法,它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。
TSP由美国卡内基梅隆大学软件工程研究所提供,可以帮助软件开发组织建立成熟和纪律性的工程实践,生产安全和可信的软件。TSP 支持CMM 中的16 个关键过程域,在实际应用中取得了良好的效果。实施TSP,是改进软件过程的有效途径之一。团队软件过程为开发软件产品的开发团队提供指导,TSP的早期实践侧重于帮助开发团队改善其质量和生产率,以使其更好地满足成本及进度的目标。TSP被设计为满足2~20人规模的开发团队,大型的多团队过程的TSP被设计为最多大约为150人的规模。
团队软件过程加上PSP帮助高绩效的工程师在一个团队中工作,以开发有质量保证的软件产品,生产安全的软件产品,改进组织中的过程管理。通过TSP,一个组织能够建立起自我管理的团队来计划追踪他们的工作、建立目标,并拥有自己的过程和计划。这些团队可以是纯粹的软件开发团队,也可以是集成产品的团队,规模可以为3~20个工程师不等。TSP 团队在广泛领域里可能运用XP、RUP或其他方法。TSP使具备PSP的工程人员组成的团队能够学习并取得成功。如果组织运用TSP,它会帮助组织建立一套成熟、规范的工程实践,确保安全可靠的软件。
团队成员在PSP 的训练中,了解使用TSP 所需的知识和技能。这些训练包括如何制作详细的计划、收集和使用过程数据、制作挣值管理、跟踪项目进度、度量和管理产品质量以及定义和使用可操作的过程。
TSP 采用了循环递增的开发策略,整个软件生产过程由多个循环出现的开发周期组成,每个开发周期划分出若干个相对独立的阶段。每一次循环,都以启动阶段开始。在启动阶段,所有成员一起制定策略、过程和完成工作的计划。

时间: 2024-09-23 19:01:41

《软件工程方法与实践》—— 2.3 软件产品与过程的相关文章

《软件工程方法与实践》—— 2.5 软件工程活动

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第2章,第2.5节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 2.5 软件工程活动 在软件工程的概念被提出来之前,开发人员错误地认为,软件就是开发活动,或者极端地认为其就是编码,至于分析和设计等都是次要的.随着软件规模的不断增大,软件开发活动中暴露出很多问题.软件工程是为克服这些问题而被提出,并在实践中不断地探索它的原理.技术和方法.软件工程的工程化思想让开发人员看到,软件工程活动包括沟通活动.计划活动

《软件工程方法与实践》—— 3.3 传统的软件过程模型

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第3章,第3.3节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 3.3 传统的软件过程模型 3.3.1 瀑布模型 在20世纪80年代之前,瀑布模型是最早也是应用最广泛的软件过程模型,现在它仍然是软件工程中应用得最广泛的过程模型.瀑布模型提供了软件开发的基本框架,其过程是接收上一项活动的工作结果作为输入,然后实施该项活动应完成的工作,并将该项活动的工作结果作为输出传给下一项活动.同时,在开始下一个阶段的活动

《软件工程方法与实践》—— 2.2 什么是软件过程

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第2章,第2.2节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 2.2 什么是软件过程 2.2.1 软件过程的定义 软件的诞生及其生命周期是一个过程,我们总体上称这个过程为软件过程.软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动,每一项活动又可以分为一系列的工程任务.任何一个软件开发组织,都可以规定自己的软件活动,所有这些活动共同构成了软件过程. 必须有科学.有效的

《软件工程方法与实践》—— 3.2 什么是软件过程模型

    本节书摘来自华章出版社<软件工程方法与实践>一 书中的第3章,第3.2节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 3.2 什么是软件过程模型     为了能高效地开发一个高质量的软件产品,通常把软件生存周期中各项开发活动的流程用一个合理的框架-开发模型来规范描述,这就是软件过程模型,或者称为软件生存周期模型.所以,软件过程模型是一种软件过程的抽象表示法,"建模"是软件过程中常使用的技术手段之一.     软件过程模型是从一个特

《软件工程方法与实践》—— 1.4 软件工程的基本原理与基本原则

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第1章,第1.4节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 1.4 软件工程的基本原理与基本原则 人们根据软件开发的特点和软件工程的概念,提出了软件工程的基本原理和基本原则. 1.4.1 基本原理 推迟实现.推迟实现是软件方法学的基本指导思想.软件开发过程应该理性地 "推迟实现",即把逻辑设计与物理设计清楚地划分开来,尽可能推迟软件的物理实现.对于大中型的软件项目,在软件开发过程中

《软件工程方法与实践》—— 2.4 软件生存周期

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第2章,第2.4节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 2.4 软件生存周期 同任何事物类似,软件也有一个从生到死的过程,这个过程一般称为软件生存周期或生命周期(Software Development Life Cycle,SDLC).一般地,软件生存周期可划分为定义.开发和运行3个时期,每个时期又细分为若干个阶段.把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大.结构复杂和

《软件工程方法与实践》—— 1.5 软件工程开发方法学

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第1章,第1.5节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 1.5 软件工程开发方法学 在软件工程学科中,方法学用来表示一套涵盖整个软件生产过程的技术的集合.目前使用得较广泛的软件工程开发方法学,分别是结构化开发方法学和面向对象开发方法学. 1.5.1 结构化开发方法学 结构化开发方法学自1968年提出后,经过几十年的发展,形成了一套完整的规范.构成结构化开发方法学的技术包括结构化分析.结构化设计.结

《软件工程方法与实践》—— 1.3 什么是软件工程

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第1章,第1.1节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 1.3 什么是软件工程 在软件开发的早期阶段,人们过高地估计了计算机软件的功能,认为软件能承担计算机的全部责任,甚至有些人认为软件可以做任何事情.如今,绝大多数专业人士已经认识到软件神化思想的错误.尤其是软件危机的出现,迫使人们思考一个问题,那就是软件并非是万能的,难以满足人们各种各样的需求,需要提出有效的开发与维护方法来指导人们高效率地开发

《软件工程方法与实践》—— 第2章 软件过程 2.1 引言

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第1章,第1.1节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 第2章 软 件 过 程 2.1 引言 大型软件的开发一直是开发人员和机构所面临的严峻的挑战,特别是软件危机出现以后,人们为了解决软件危机提出了各种各样的方法.从技术方面入手,这些方法直接影响了系统分析的思想,结构化程序设计成为程序设计的主流.人们从管理方面入手, 这些方法解决软件的一个核心问题,这就产生了软件工程的概念.软件工程继续发展,人们