【北京大学 软件工程】二、软件过程

简介: 本文介绍了软件生存周期过程的概念及其分类。软件生存周期是从概念形成到产品淘汰的全周期,涵盖开发、交付、维护等阶段。软件生存周期过程则是这些活动中的一系列相关流程。文中详细描述了基本过程(如获取、供应、开发、运行和维护)、支持过程(如文档、配置管理、质量保证)及组织过程(如管理、基础设施、改进)。此外,还介绍了常见的软件生存周期模型,包括瀑布模型、增量模型、演化模型和喷泉模型,分析了它们的特点和优缺点。

一、软件生存周期过程的概念

1、引入

开发逻辑,是获取正确软件的关键。

软件开发有哪些活动——即要做哪些映射?

应如何正确组织开发活动,形成求解软件的逻辑?

2、软件生存周期过程在软件工程知识框架中的位置

开发所涉及的活动——软件生存周期过程

3、软件生存周期(过程)的概念

  • 软件生存周期

软件产品或系统的一系列活动的全周期。从V形成概念开始,历经开发、交付使用、在使用中不断修订和演化,直到最后被淘汰。

  • 软件生存周期过程(软件过程)

软件生存周期中的一系列相关过程。

为了表述软件开发需要做“什么活(映射)”,引入了以下三个概念:过程是活动的集合,活动是任务的集合,任务是把输入转换成输出的操作

ISO/IEC软件生存周期过程12207-1995

系统地给出了软件开发所需的任务,即回答了:软件开发需要做哪些基本“映射”。


二、软件生存周期过程的分类

1、过程分类

按承担软件开发工作的主体,将软件生存周期过程分为三类:

2、基本过程

又按过程中活动的不同主体,将基本过程(类)分为5个过程:获取过程、供应过程、开发过程、运行过程、维护过程。

(1)获取过程:获取过程是获取者(需方)所从事的活动和任务,其目的是获得满足客户所表达的那些要求的产品和/或服务。该过程以定义客户要求开始,以接受客户所要求的产品和/或服务结束。

(2)供应过程:供应过程是供方为了向客户提供满足需求的软件产品或服务所从事的一系列活动和任务,其目的是向客户提供一个满足已达成需求的产品或服务。

(3)开发过程:开发过是软件开发者所从事的一系列活动和任务,其目的是将一组需求转换为一个软件产品或系统。

(4)运行过程:运作过程是系统操作者所从事的一系列活动和任务。其目标是在软件产品预期的环境中运行该产品,并为该软件产品的维护提供支持。

(5)维护过程:维护过程是维护者所从事的一系列的活动和任务。其目的是:对交付后的系统或软件产品,或为了纠正其错误,改进其性能或其它属性,而对其进行修改;或因环境变更,而对其进行调整。

例如:开发过程,是软件开发者所从事的一系列活动。

包括13个活动:

3、支持过程

又按过程中活动的不同主体,将支持过程(类)分为8个过程:文档过程、配置管理过程、质量保证、验证过程、确认过程、联合评审、审计过程、问题解决等。

(1)文档过程:为记录生存周期过程所产生的信息而定义的活动。

(2)配置管理过程:应用管理上的和技术上的规程来支持整个软件生存周期的过程。

(3)质量保证过程:为客观地保证软件产品和过程符合规定的需求以及已建立的计划而定义的活动。

(4)验证过程:根据软件项目需求,按不同深度(为需方、供方或某独立方)验证软件产品而定义的活动。

(5)确认过程:确认过程是一个确定需求和最终的、已建成的系统或软件产品是否满足特定预期用途的过程。

(6)联合评审过程:为评价一项活动的状态和产品而定义的活动。

(7)审计过程:确定遵照需求、计划合同的程度。

(8)问题解决过程:为分析和解决问题而定义的活动。

3、组织过程(Organizational life cycle processes)

分为7个过程:

管理过程、基础设施过程、改进过程、人力资源过程、资产管理过程、复用程序管理过程、领域软件工程过程

(1)管理过程:管理过程是管理人员从事的、对其它过程进行管理的活动和任务。

(2)基础设施过程:为其他过程建立和维护所需基础设施的过程。

(3)改进过程:改进过程是管理人员从事的一组活动和任务,其目的是:建立、评价、测量、控制和改进软件生存周期过程。

(4)人力资源过程:是为组织和项目提供具有技能和知识人员的过程。

(5)资产管理过程:为组织的资产管理者而定义的活动。

(6)复用程序管理过程:为组织的软件复用而定义的活动。

(7)领域软件工程过程:为领域模型、领域软件体系结构的确定及该领域资产的开发和维护而定义的活动。

软件过程之间的关系


三、软件生存周期模型的概念

1、软件生存周期模型与软件生存周期过程间的关系

开发活动的组织框架——软件生存周期模型

2、软件生存周期模型的概念&软件开发模型

软件生存周期模型 IEEE Standard 12207.0-1996

把一个软件生存周期模型描述为:一个包括软件产品开发、运行和维护中有关过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止。

中国计算机科学与技术百科全书称软件生存周期模型为“软件开发模型”,并把它定义为:软件过程、活动、任务的结构框架。


四、常见的软件生存周期模型

1、瀑布模型

1970年,W.Royce

(1)瀑布模型将软件生存周期的各项活动规定为依固定顺序而连接的若干阶段工作;

(2)瀑布模型规定了每一阶段的输入,以及本阶段的工作成果,作为输出传入下一阶段。

(1)项目的开发依次经过:需求、设计、编码和单元测试、集成以及维护这一基本路径。

(2)通过每一阶段,提交以下产品:软件需求规约、设计文档、实际代码、测试用例、最终产品等。工作产品(又称可提交的产品,Deliverables)流经“正向”开发的基本步骤路径。

(3)“反向”步骤流表示对前一个可提交产品的重复变更(又称为“返工”(Rework))

  • 由于所有开发活动的非确定性,因此是否需要重复变更,这仅在下一个阶段或更后的阶段才能认识到。
  • 返工不仅在以前阶段的某一地方需要,而且对当前正在进行的工作也是需要的。

关于瀑布模型的优缺点

(1)瀑布模型的优点

虽然瀑布模型是一个比较“老”的、甚至过时的开发模型。

但其优点为:

  1. 在决定系统怎样做之前,存在一个需求阶段,鼓励对系统“做什么”进行规约(即设计之前的规约)。
  2. 在建造构件之前,存在一个设计阶段,鼓励规划系统结构(即编码之前的设计)。
  3. 在每一阶段结束时进行复审,允许获取方和用户的参与。
  4. 前一步工作产品可作为下一步被认可的、文档化的基线。允许基线和配置早期接受控制。

(2)瀑布模型存在的不足

  1. 客户必须能够完整、正确和清晰地表达他们的需求;开发人员一开始就必须理解需求。
  2. 缺乏灵活性。一旦软件需求存在偏差,就会导致开发出的软件产品不能满足用户的实际要求。
  3. 在一个项目的早期阶段,过分地强调了基线和里程碑处的文档,可能要花费更多的时间,用于建立一些用处不大的文档。
  4. 直到项目结束之前,都不能演示系统的能力,增加了项目的风险。

2、增量模型

该模型有一个假设,即需求可以分段,成为一系列增量产品,每一增量可以分别地开发。

关于增量模型的优缺点:

(1)增量模型的优点

作为瀑布模型的第一个变体,具有瀑布模型的所有优点。此外,它还有以下优点:

  1. 第一个可交付版本所需要的成本和时间是很少的;
  2. 开发由增量表示的小系统所承担的风险是不大的;
  3. 由于很快发布了第一个版本,因此可以减少用户需求的变更;
  4. 允许增量投资,即在项目开始时,可以仅对一个或两个增量投资。

注:如果采用增量投资方式,那么客户就可以对一些增量进行招标,然后,开发人员按提出的截止期限进行增量开发,这样客户就可以用多个契约来管理组织的资源和成本。

(2)增量模型的缺点

如果增量模型不适于某些项目,或使用有误,则有以下缺点:

  1. 如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;
  2. 如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布:
  3. 管理发生的成本、进度和配置的复杂性,可能会超出一些组织的能力。

3、演化模型(Evolutionary model)

是一种有弹性的过程模式,由一些小的开发步组成,每一步历经需求分析、设计、实现和验证,产生软件产品的一个增量。通过这些迭代,完成最终软件产品的开发。

  • 针对事先不能完整地定义需求的软件开发
  • 针对用户的核心需求,开发核心系统
  • 根据用户的反馈,实施活动的迭代

4、喷泉模型

  • 特征:迭代、无缝
  • 与面向对象技术的关系

相关文章
|
架构师 Java 测试技术
【软件工程】为什么要选择软件工程专业?
【软件工程】为什么要选择软件工程专业?
414 0
|
17小时前
|
供应链 安全 区块链
【北京大学 软件工程】一、软件工程概论
本文介绍了软件的定义、特点及分类,探讨了软件工程的起源、概念及其框架,并展望了软件工程的新视野。软件是指计算机系统中的程序及其文档,具有无形性、复杂性和高开发成本等特点,分为系统软件、支撑软件和应用软件三类。软件工程起源于解决早期编程难题,历经个人程序、软件作坊到软件工程时期的发展,旨在以工程化方法解决软件危机。软件工程的核心目标是生产正确、可用且开销合理的软件,主要活动包括需求分析、设计、实现、确认和支持。新一代信息技术如量子计算、区块链等正推动软件工程向更高效、安全的方向发展。
【北京大学 软件工程】一、软件工程概论
|
17小时前
|
算法 数据挖掘
【北京大学 软件工程】五、结构化设计方法-1
结构化设计是软件开发中的重要环节,旨在根据需求规约构建系统的软件模型。其主要目标是在抽象层面上建立系统架构(包括数据和程序结构),并详细描述处理算法,最终形成设计规格说明书。结构化设计分为总体设计和详细设计两部分:总体设计确定系统的模块结构及模块间的调用关系;详细设计则深入描述各模块的具体实现。 设计方法需提供体现原理的术语、表达软件模型的工具及过程指导。总体设计引入了“模块”与“调用”两个核心概念,并使用模块结构图(MSD)来表达静态结构。设计步骤包括将DFD(数据流图)转化为MSD,区分变换型和事务型数据流图,通过自顶向下的方式逐步细化模块,确保高内聚低耦合。
【北京大学 软件工程】五、结构化设计方法-1
|
17小时前
|
存储 测试技术 项目管理
【北京大学 软件工程】三、软件需求
本文介绍了软件需求工程的基础概念和流程。首先定义了需求及其获取,强调需求是描述系统功能、性能等方面的要求,并需具备必要性、无歧义性、可测性、可跟踪性和可测量性五大基本性质。接着阐述了需求的分类,包括功能、性能、外部接口、设计约束和质量属性五类,并详细说明了各类需求的具体内容及示例。此外,还探讨了需求发现的技术,并分析了每种技术的应用场景与优缺点。最后,文章解释了需求规约(SRS)的概念、格式和作用,指出它是软件开发组织与用户之间的技术合同,用于指导项目管理、产品设计、测试计划和用户手册的编写。需求规约不应包含设计细节或项目规划信息,而是专注于明确系统的功能性与非功能性要求。
【北京大学 软件工程】三、软件需求
|
17小时前
|
存储 自然语言处理 算法
【北京大学 软件工程】四、结构化分析方法
结构化分析方法是一种系统化的软件开发方法学,旨在通过使用问题域术语建立系统的功能模型,以明确“系统必须做什么”。该方法包括结构化分析、设计和程序设计三个主要部分。其核心工具是数据流图(DFD),用于表达系统功能模型,并结合数据字典定义数据流和数据存储。此外,还使用加工小说明(如判定表或判定树)描述加工逻辑。 结构化分析过程遵循自顶向下、逐步求精的原则,首先建立系统环境图确定边界,然后通过分解加工、分派数据流和引入文件来细化模型。整个过程中需确保模型平衡和信息组织的复杂性控制。最终输出为需求规格说明书(SRS),确保需求的正确性、无二义性、完整性和可验证性等特性。
|
3月前
|
敏捷开发 算法 数据建模
『软件工程2』详解软件工程和软件过程模型
该文章深入解析了软件工程的概念及其过程模型,包括软件生命周期的不同阶段和常见的软件开发模型如瀑布模型、敏捷开发等,并探讨了各自的特点与适用场景。
『软件工程2』详解软件工程和软件过程模型
|
安全 算法 测试技术
|
机器学习/深度学习 小程序 测试技术
|
算法 测试技术 应用服务中间件
软件工程导论
软件工程导论
276 1
软件工程导论
|
机器学习/深度学习 存储 传感器
软件工程导论—可行性研究(下)
软件工程导论—可行性研究(下)
软件工程导论—可行性研究(下)