《实践者的研究方法》—— 第2章 软件工程 2.2 软件过程

2.2 软件过程

软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。活动(activity)主要实现宽泛的目标(如与利益相关者进行沟通),与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系。动作(action,如体系结构设计)包含了主要工作产品(如体系结构设计模型)生产过程中的一系列任务。任务(task)关注小而明确的目标,能够产生实际产品(如构建一个单元测试)。

在软件工程领域,过程不是对如何构建计算机软件的严格的规定,而是一种具有可适应性的调整方法,以便于工作人员(软件团队)可以挑选适合的工作动作和任务集合。其目标通常是及时、高质量地交付软件,以满足软件项目资助方和最终用户的需求。

2.2.1 过程框架

过程框架(process framework)定义了若干个框架活动(framework activity),为实现完整的软件工程过程建立了基础。这些活动可广泛应用于所有软件开发项目,无论项目的规模和复杂性如何。此外,过程框架还包含一些适用于整个软件过程的普适性活动(umbrella activity)。一个通用的软件工程过程框架通常包含以下5个活动。

沟通。在技术工作开始之前,和客户(及其他利益相关者)的沟通与协作是极其重要的,其目的是理解利益相关者的项目目标,并收集需求以定义软件特性和功能。

策划。如果有地图,任何复杂的旅程都可以变得简单。软件项目好比是一个复杂的旅程,策划活动就是创建一个“地图”,以指导团队的项目旅程,这个地图称为软件项目计划,它定义和描述了软件工程工作,包括需要执行的技术任务、可能的风险、资源需求、工作产品和工作进度计划。

建模。无论你是庭园设计师、桥梁建造者、航空工程师、木匠还是建筑师,你每天的工作都离不开模型。你会画一张草图来辅助理解整个项目大的构想——体系结构、不同的构件如何结合,以及其他一些特性。如果需要,可以把草图不断细化,以便更好地理解问题并找到解决方案。软件工程师也是如此,需要利用模型来更好地理解软件需求,并完成符合这些需求的软件设计。

构建。必须要对所做的设计进行构建,包括编码(手写的或者自动生成的)和测试,后者用于发现编码中的错误。

部署。软件(全部或者部分增量)交付给用户,用户对其进行评测并给出反馈意见。

上述五个通用框架活动既适用于简单小程序的开发,也可用于WebApp的建造以及基于计算机的大型复杂系统工程。不同的应用案例中,软件过程的细节可能差别很大,但是框架活动都是一致的。

对许多软件项目来说,随着项目的开展,框架活动可以迭代应用。也就是说,在项目的多次迭代过程中,沟通、策划、建模、构建、部署等活动不断重复。每次项目迭代都会产生一个软件增量(software increment),每个软件增量实现了部分的软件特性和功能。随着每一次增量的产生,软件将逐渐完善。

2.2.2 普适性活动

软件工程过程框架活动由很多普适性活动来补充实现。通常,这些普适性活动贯穿软件项目始终,以帮助软件团队管理和控制项目进度、质量、变更和风险。典型的普适性活动包括如下活动。

软件项目跟踪和控制——项目组根据计划来评估项目进度,并且采取必要的措施保证项目按进度计划进行。

风险管理——对可能影响项目成果或者产品质量的风险进行评估。

软件质量保证——确定和执行保证软件质量的活动。

技术评审——评估软件工程产品,尽量在错误传播到下一个活动之前发现并清除错误。

测量——定义和收集过程、项目以及产品的度量,以帮助团队在发布软件时满足利益相关者的要求。同时,测量还可与其他框架活动和普适性活动配合使用。

软件配置管理——在整个软件过程中管理变更所带来的影响。

可复用管理——定义工作产品复用的标准(包括软件构件),并且建立构件复用机制。

工作产品的准备和生产——包括生成产品(如建模、文档、日志、表格和列表等)所必需的活动。

上述每一种普适性活动都将在本书后续部分详细讨论。

2.2.3 过程的适应性调整

在本节前面部分曾提到,软件工程过程并不是教条的法则,也不要求软件团队机械地执行;而应该是灵活可适应的(根据软件所需解决的问题、项目特点、开发团队和组织文化等进行适应性调整)。因此,不同项目所采用的项目过程可能有很大不同。这些不同主要体现在以下几个方面:

活动、动作和任务的总体流程以及相互依赖关系。

在每一个框架活动中,动作和任务细化的程度。

工作产品的定义和要求的程度。

质量保证活动应用的方式。

项目跟踪和控制活动应用的方式。

过程描述的详细程度和严谨程度。

客户和利益相关者对项目的参与程度。

软件团队所赋予的自主权。

队伍组织和角色的明确程度。

本书第1部分将详细介绍软件过程。

时间: 2024-08-03 17:44:08

《实践者的研究方法》—— 第2章 软件工程 2.2 软件过程的相关文章

《实践者的研究方法》—— 第1章 软件的本质 1.1 软件的本质

第1章 Software Engineering: A Practitioner's Approach, Eighth Edition 软件的本质 要 点 浏 览 概念:计算机软件是由专业人员开发并长期维护的软件产品.完整的软件产品包括:可以在各种不同容量及系统结构的计算机上运行的程序.程序运行过程中产生的各种结果以及各种描述信息,这些信息可以以硬拷贝或是各种电子媒介形式存在. 人员:软件工程师开发软件并提供技术支持,产业界中几乎每个人都间接或直接地使用软件. 重要性:软件之所以重要是因为它在我

《实践者的研究方法》—— 导读

前 言 如果有这样一款计算机软件,它能满足用户的需求,能在相当长的时间内无故障地运行,修改起来轻松便捷,使用起来更是得心应手,那么,这款软件必定是成功的,它切实改善了我们的生活.但是,如果有这样一款软件,它令用户失望,错误频出,修改起来困难重重,使用起来更是举步维艰,那么,这必定是一款失败的软件,它使我们的生活一团糟.谁都希望开发出优秀的软件,为我们的生活带来便利,而不是把自己陷入失败的深渊.要想使软件获得成功,在设计和构建软件时就需要有规范,需要采用工程化的方法. 自本书第1版问世以来的近35

《实践者的研究方法》—— 第2章 软件工程 2.4 软件开发神话

2.4 软件开发神话 软件开发神话,即关于软件及其开发过程的一些被人盲目相信的说法,这可以追溯到计算技术发展的初期.神话具有一些特点,让人觉得不可捉摸.例如,神话看起来是事实的合理描述(有时的确包含真实的成分),它们符合直觉,并且经常被那些知根知底的有经验的从业人员拿来宣传. 今天,大多数有见地的软件工程师已经意识到软件神话的本质--它实际上误导了管理者和从业人员对软件开发的态度,从而引发了严重的问题.然而,由于习惯和态度的根深蒂固,软件神话遗风犹在. 管理神话.像所有领域的经理一样,承担软件职

《实践者的研究方法》—— 第2章 软件工程 2.6 小结

2.6 小结 软件工程包含过程.方法和工具,这些工具使得快速构建高质量的复杂计算机系统成为可能.软件过程包括五个框架活动:沟通.策划.建模.构建和部署,这些活动适用于所有软件项目.软件工程实践遵照一组核心原则,是一项解决问题的活动. 尽管我们关于构建软件所需的软件知识和技能增长了,但仍有大量的软件神话将管理者和从业人员诱入歧途.随着对软件工程理解的深化,你就会逐渐明白,为什么无论何时遇到这些神话,都要不遗余力地揭露. 习题与思考题 2.1 图2-1中,将软件工程的三个层次放在了 "质量关注点&q

《实践者的研究方法》—— 第2章 软件工程 2.3 软件工程实践

2.3 软件工程实践 在2.2节中,曾介绍过一种由一组活动组成的通用软件过程模型,建立了软件工程实践的框架.通用的框架活动--沟通.策划.建模.构建和部署--和普适性活动构成了软件工程工作的体系结构的轮廓.但是软件工程的实践如何融入该框架呢?在以下几节里,读者将会对应用于这些框架活动的基本概念和原则有一个基本了解.   2.3.1 实践的精髓 在现代计算机发明之前,有一本经典著作<How to Solve it>,在书中,George Polya[Pol45]列出了解决问题的精髓,这也正是软件

《实践者的研究方法》—— 第3章 软件工程 3.1 通用过程模型

第3章 Software Engineering: A Practitioner's Approach, Eighth Edition 软件过程结构 要 点 浏 览 概念:在开发产品或构建系统时,遵循一系列可预测的步骤(即路线图)是非常重要的,它有助于及时交付高质量的产品.软件开发中所遵循的路线图就称为"软件过程". 人员:软件工程师及其管理人员根据需要调整开发过程,并遵循该过程.除此之外,软件的需求方也需要参与过程的定义.建立和测试. 重要性:软件过程提高了软件工程活动的稳定性.可控

《实践者的研究方法》—— 第2章 软件工程 2.5 这一切是如何开始的

2.5 这一切是如何开始的 每个软件工程项目都来自业务需求--对现有应用程序缺陷的纠正,改变遗留系统以适应新的业务环境,扩展现有应用程序功能和特性,或者开发某种新的产品.服务或系统. 在软件项目的初期,业务需求通常是在简短的谈话过程中非正式地表达出来的.以下这段简短谈话就是一个典型的例子. SafeHome 如何开始一个软件项目   [场景] CPI公司的会议室里.CPI是一个虚构的为家庭和贸易应用生产消费产品的公司. [人物] Mal Golden,产品开发部高级经理:Lisa Perez,营

《实践者的研究方法》—— 第3章 软件工程3.2 定义框架活动

3.2 定义框架活动 尽管第2章描述了5种框架活动,并给出了每种活动的基本定义,但是软件团队要在软件过程中具体执行这些活动中的任何一个,还需要更多信息.因此,我们面临一个关键问题:针对给定的问题.开发人员和利益相关者,哪些动作适合于框架活动? 对于由个人负责的小型软件项目(可能远程),其需求简单明确,沟通活动也许仅仅是与合适的利益相关者的一个电话或一封邮件.因此,主要的动作是电话交流,这个动作所包括的主要工作任务(任务集)有: 1.通过电话与利益相关者取得联系. 2.讨论需求并做记录. 3.将笔

《实践者的研究方法》—— 第3章 软件工程 3.3 明确任务集

3.3 明确任务集 我们再来看图3-1,每一个软件工程动作(如需求获取以及与沟通活动相关的动作)都由若干个任务集(task set)构成,而每一个任务集都由软件工程工作任务.相关工作产品.质量保证点和项目里程碑组成.需要选择最能满足项目需要并适合开发团队特点的任务集.这就意味着软件工程动作可以根据软件项目的特定需要和项目团队的特点做适当的调整. 信息栏 任务集 任务集定义了为达到一个软件工程动作的目标所需要完成的工作.例如,需求获取(通常称为"需求收集")就是发生在沟通活动中的一个重要