Skip to content

Latest commit

 

History

History
778 lines (372 loc) · 30 KB

软件工程复习资料.md

File metadata and controls

778 lines (372 loc) · 30 KB

软件工程复习资料

复习方法:

复习课本和课件内容,掌握主要知识点,通过例题掌握解题方法,考试中不会出现原题。

第一章 概述

1、软件危机的定义和典型表现

答:软件危机:计算机软件的开发和维护过程中所遇到的一系列严重问题

典型表现:(1)对软件开发成本和进度的估计常常很不准确

(2)用户对“已完成的“软件系统不满意的现象经常发生

(3)软件产品的质量往往不可靠

(4)软件常常是不可维护的

(5)软件通常没有适当的文档资料

(6)软件成本在计算机系统总成本中所占的比例逐年上升

(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势

2、消除软件危机的途径

答:

(1)消除在计算机系统早期发展阶段形成的“软件就是程序“的错误观念

(2)认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好,管理严格,各类人员协同配合,共同完成的工程项目。

(3)充分借鉴人类长时间积累下来行之有效的原理,概念,技术方法,以及经验教训。

(4)推广在开发软件中总结出来的成功的技术和方法,研究探索更加高效的技术方法

(5)开发和使用更好的软件工具

总之,为解决软件危机,不仅要有技术措施,还必须要有必要的组织管理措施。

3、软件工程的定义

答:

软件工程是指导计算机开发和维护的一门工程学科。

4、软件工程的7条基本原理

答: (1)用分阶段的生命周期计划严格管理

(2)坚持进行阶段评审

(3)实行严格的产品控制

(4)采用现代程序设计技术

(5)结果应该能清楚的审查

(6)开发小组的人员应该少而精

(7)承认不断改进软件工程实践的重要性

5、软件工程方法学的3要素,目前广泛应用的软件工程方法学的种类

答:三要素:

(1) 方法 (2)工具 (3)过程

软件工程方法学种类: (1)传统方法学 (2)面向对象方法学

6、软件生命周期分阶段划分

答:

软件生命周期:

(1) 软件定义时期:问题分析,可行性研究,需求分析

(2) 软件开发时期:系统设计:总体设计,详细设计

系统实现:编码和单元测试,综合测试

(3)软件维护时期

7、软件过程的定义,四种软件过程模型的特点

答: 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

四种软件过程模型: <1>.瀑布模型: (1)阶段间具有顺序性和依赖性

(2)推迟实现的观点:尽可能推迟程序的物理实现

(3)质量保证的观点:每个阶段都必须完成规定的文档,没有交出合格文档就是没有完成该阶段的任务。每个阶段结束前都需要对所完成的文档进行评审,以便尽早法修按问题改正错误。

<2>快速原型模型:

(1) 快速开发:允许迅速创建和显示原型,以便在项目早期获得反馈

(2) 容易修改:设计变更相对容易实施,支持灵活性和快速迭代

(3) 用户参与:便于与用户合作,收集他们的意见和需求,从而改善最终产品

(4) 降低成本:在早期发现和纠正问题,有助于减少后期修改的成本

(5) 用于验证概念:可用于验证新创意或概念,以评估其可行性和市场潜力

(6) 简化设计:着重于核心功能,避免过多复杂性,以便更加专注地验证基本概念

(7) 通信工具:作为一个沟通工具,帮助团队成员理解和共享设计想法

<3>增量模型: (1)逐步构建:系统通过一系列小的增量部分逐步构建,而不是一次性开发整个系统。

(2)可部署性:每个增量都是可以独立部署和使用的,增加了系统的逐步完善和可用性。

(3)快速交付:部分功能或者模块在每个增量中完成,使得系统的部分功能更快地可用。

(4)容错性:即使某个增量出现问题,其他已经实施的增量仍然可以使用,系统具有一定的容错性。

(5)用户参与:允许用户在开发的早期阶段就能够使用部分功能,从而提供实时反馈。

(6)灵活性:可根据需求的变化调整和修改增量,以适应项目的演进。

(7)降低风险:逐步构建系统降低了整体项目失败的风险,因为每个增量都是独立测试和验证的。

(8)适用于大型项目:特别适用于大型和负责项目,可以更好地控制和管理项目的复杂性。

<4>螺旋模型: (1)迭代和循环:采用迭代的方式,不断重复项目的若干阶段,每一次迭代都形成一个新的螺旋。

(2)风险管理:强调在每个迭代中进行风险分析和管理,以确保及时发现和解决问题。

(3)灵活性:允许根据项目需求的变化灵活调整,更容易适应不断变化的环境和需求。

(4)阶段划分:将项目划分为一系列小的可管理的阶段,每个阶段包括计划,风险评估,工程和评审等活动。

(5)用户参与:强调与用户的紧密合作和持续的用户参与,以确保满足用户需求和期望。

(6)可控性:通过每个阶段结束时进行评审,确保项目保持在可控状态。

(7)增量开发:每个螺旋的迭代都可以看作是一个增量的开发阶段,系统功能在每个迭代中逐步完善。

(8)适用于大型项目:特别适用于大型,复杂,创新性强或需求不断变化的项目

(9)成本和时间控制:通过将项目划分为多个迭代,有助于更好的控制项目的成本和时间。

第二章 可行性研究

1、可行性研究的三方面

答: (1)技术可行性:使用现有的技术能实现这个系统吗?

(2)经济可行性:这个系统的经济效益能超过它的开发成本吗?

(3)操作可行性:系统的操作方式在这个用户组织内行得通吗?

2、数据流图的定义,用途,画法,会画

答: 定义:数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

用途:描绘数据在软件中流动和被处理的逻辑过程

画法:

3、数据字典的定义,定义数据的方法,会定义

答:

定义:数据字典是关于数据的信息的集合,也就是对数据流图中所包含的所有元素的定义的集合。

定义数据的方法:对数据进行自顶向下的分解。

4、成本估计的方法,成本/效益分析,会算

答:

成本估计的方法:(1)代码行技术 (2)任务分解技术 (3)自动估计成本技术

成本效益分析需要考虑到以下方面:(1)货币的时间价值 (2)投资回收期

​ (3)纯收入 (4)投资回收率

第三章 需求分析

1、需求分析阶段的任务是什么?

答:

(1) 确定对系统的综合要求

(2) 分析系统的数据要求

(3) 导出系统的逻辑模型

(4) 修正系统开发计划

2、需求分析过程应该建立什么样的模型?

答:数据模型,功能模型,行为模型

3、实体联系图是什么?会画

答:实体联系图是描绘数据对象和数据对象之间的关系,适用于建立数据模型的图形

4、状态转换图是什么?会画

答:是行为建模的基础,描绘了系统的各种行为模型和在不同状态间转换的方式。

5、应从哪些方面验证软件需求的正确性?

答:

(1) 一致性;所有要求必须是一致的,任何一条需求不能和其他需求相互矛盾。

(2) 完整性:要求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。

(3) 现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。

(4) 有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。

6、本阶段完成之前,应书写什么文档?

答:软件需求规格说明书。

第五章 总体设计

1、总体设计的主要任务是什么?

答:

(1) 划分出组成系统的物理元素

(2) 设计软件的结构,即确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系

2、名词:模块 模块化 抽象 逐步求精 信息隐藏 局部化 模块独立 耦合 内聚

答:

模块:由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。

模块化:把程序划分为独立命名且可以独立访问的模块

抽象:抽出事物的本质特性而暂时不考虑它们的细节。

逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

信息隐藏:设计和确定模块,使得一个模块内包含的信息,对于不需要这些信息的模块来说,是不能访问的。

局部化:把一些关系紧密的软件元素物理地址放得彼此靠近。

模块独立:开发具有独立功能而且和其他模块之间没有过多的相互作用的模块。

耦合:是对一个软件结构内不用模块之间互联程度的度量。

内聚:一个模块内各个元素彼此结合的紧密程度。

3、模块间共有几种程度的耦合(或内聚)关系?会区分并比较耦合(或内聚)程度的高低?

答:

耦合程度分为:数据耦合(低耦合),控制耦合(中耦合),特征耦合,公共环境耦合,内容耦合(最高程度耦合)。

内聚关系分为:低内聚:偶然内聚,逻辑内聚,时间内聚

​ 中内聚:过程内聚,通信内聚

​ 高内聚:顺序内聚,功能内聚

4、设计计算机软件的启发式规则有哪些?

答:

(1) 改进软件结构提高模块独立性

(2) 模块规模应该适中

(3) 深度,宽度,扇出和扇入都应适当

(4) 模块的作用域应该在控制域之内

(5) 力争降低模块接口的复杂程度

(6) 设计单入口单出口的模块

(7) 模块功能应该可以预测

5、结构图SC。会读图和画图

答:结构图是进行软件结构设计的一个有力工具。是用来描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或者是主要功能;方框之间的箭头代表模块的调用关系。

6、面向数据流的设计方法的设计过程

答:

img

7、信息流的类型有几种,是什么?

答:

信息流分为变换型和事务型:

变换型:根据基本系统模型,信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统。

事务型:数据沿输入通路到达一个处理T,这个处理根据数据类型再若干个动作序列中选出一个来执行。它完成如下的任务:

(1) 接受输入数据

(2) 分析每个事务以确定它的类型

(3) 根据事务类型选取一条活动通路

8、简单的变换分析、事务分析:给出数据流图,会映射成软件结构

答: 变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。

事务分析是指对业务或系统中的交易(事务)进行详细的研究和分析的过程。

第六章 详细设计

1、结构程序设计的经典定义

答:

如果一个程序的代码块仅仅通过顺序,选择和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

2、程序流程图、盒图、PAD图、判定表,会画。

答:

<1>程序流程图:

缺点: (1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早的考虑程序的控制流程,而不去考虑程序的全局结构。

(2)程序流程图中用箭头表示控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。

(3)程序流程图不易表示数据结构

<2>盒图:

特点:

(1)功能域明确 (2)不可能任意转移控制

(3)很容易确定局部和全程数据的作用域

(4)很容易表现嵌套关系,也可以表示模块的层次结构

<3>PAD图:

优点:

(1) 设计出来的程序必是结构化程序

(2) PAD图描绘的程序结构十分清晰

(3) 用PAD图表现程序逻辑,易读,易懂,易记。

(4) 容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,有利于提高软件可靠性和软件生产率。

(5) 不仅可以用于表示程序逻辑,也可以用于描绘数据结构。

(6) PAD图的符号支持自顶向下,逐步求精的使用。

<4>判定表: 特点:能够清晰的表示复杂的条件组合与应做的动作之间的对应关系。

3、面向数据结构的设计方法是什么?

答: 设计方法为:jackson方法,warnier方法。

4、Jackson图、Jackson方法基本步骤

答:

Jackson图:Jackson图是一种面向数据结构的软件设计方法,它包括顺序结构、选择结构和重复结构。

Jackson方法基本步骤: (1)分析并且确定输入数据和输出数据的逻辑结构,并且用jackson图描绘这些数据结构。

(2)找到输入数据结构和输出数据结构中有对应关系的数据单元。

(3)根据下述规则绘制jackson图: 规则一:为每对有对应关系的数据单元,按照他们在数据结构图中的层次在程序结构图中的相应层次画一个处理框。

规则二:根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上相应的处理框。

规则三:根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次为它们画上相应处理框。

(4) 列出所有操作和条件,并且把它们分配到程序结构图的适当位置。

(5) 用伪码表示程序。

5、程序复杂度的定量度量方法,会计算环形复杂度

程序复杂度的定量度量方法主要是:mccabe方法和halstead方法(书本P137)

第七章 实现

1、试述大型软件系统的测试过程的5个步骤,及每个步骤的测试重点或特点

答:

大型软件系统测试步骤: (1)模块测试:测试重点:每个拥有清晰定义的子功能的模块

特点:目的是为了保证每个模块作为一个单元能够正确运行,这个阶段发现的往往是编码和详细设计的错误。

(2)子系统测试:测试重点:模块的的接口

特点:模块相互之间的协调和通信是这个测试过程的主要问题。

(3) 系统测试:测试重点:一个完整的系统

特点:这个过程不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定要求。这个测试阶段中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。

(4) 验收测试:测试重点:作为单一实体的软件系统。

特点:验收测试的目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。

(5) 平行运行:测试重点:软件产品

特点:能够使新系统在准生产环境下运行而又不冒风险;用户能有一段熟悉新系统的时间;可以验证用户指南和使用手册之类的文档;能够以准生辰模式对新系统进行全负荷测试,可以用测试结果验证性能指标。

2、白盒测试方法从覆盖原程序语句的详尽程度来看,有几种逻辑覆盖标准,其含义分别是什么?会设计测试用例

答: (1)语句覆盖:选择足够多的测试数据,使被测数据中每个语句至少执行一次。

(2)判定覆盖:每个判定的每个分支至少执行一次

(3)条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中每个条件都取到各种可能的结果。

(4)判定/条件覆盖:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都可以取到各种可能的结果。

(5)条件组合覆盖:选取足够多的测试数据,使得每个判定表达式中的各种可能组合都至少出现一次。

(6)点覆盖:如果连通图G的子图G’是连通的,而且包含G的所有节点,则称G’是G的点覆盖。

(7)边覆盖:如果连通图G的子图G是连通的,而且包含G的所有边,则称G是G的边覆盖。

(8)路径覆盖:选取足够多测试数据,使程序的每条可能路径都至少执行一次。

3、基本路径测试方法的特点和步骤?会设计测试用例

答:

特点:是一种白盒测试技术;用环形复杂度为指南定义执行路径的基本集合;测试用例可以保证程序的每条语句至少执行一次;每个条件执行时都将分别取真,假值。

步骤:

(1) 根据过程设计结果画出相应的流图

(2) 计算流图的环形复杂度

(3) 确定线性独立路径的基本集合

(4) 设计可强制执行基本集合中每条路径的测试用例

4、等价划分法,会设计测试用例

答:等价划分法是一种黑河测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。

5、软件可靠性和可用性的定义

答:软件可靠性:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。

软件可用性:是程序在给定的时间点,按照规格说明书的规定,成功运行的概率。

6、估算平均无故障时间和错误总数,会算

答:

img

img

img

img

第八章 维护

1、软件维护指的是什么?试列举4类维护活动,并简述其主要内容。

答:软件维护是指在软件已经交付使用之后,为了改正错误或者满足新的需要而修改软件的过程。

改正性维护:诊断和改正错误的过程(占17%-21%)

适应性维护:为了和变化了的环境适当地配合而进行的修改软件的活动。(占18%-25%)

完善性维护:满足用户提出增加新功能或修改已有功能的建议,和一般性改进建议的过程。(占50%-66%)

预防性维护:为给未来的改进奠定更好的基础而修改软件的过程。(4%左右)

2、软件再工程模型的6类活动。

答: img

第九章 面向对象方法学引论

1、面向对象方法的四个要点

答:

(1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。

(2) 把所有对象都划分为各种对象类,每个对象类都定义了一组数据和一组方法。

(3) 按照子类与父类的关系,把若干个对象类组成一个层次结构的系统。

(4) 对象彼此之间仅能通过传递消息互相联系。

2、什么是面向对象方法学,它的5个优点是什么

答:面向对象方法学(Object-Oriented Methodology)是一种基于“对象”概念的软件开发方法学。这种方法学主张将现实世界中的事物看作对象,每个对象具有自己的属性和行为。通过对对象的分析和设计,可以更加直观地理解和描述客观事物,从而建立一个能够映射问题域的软件系统。

优点:

(1) 与人类习惯的思维方法一致

(2) 稳定性好

(3) 可重用性好

(4) 较易开发大型软件产品

(5) 可维护性好

3、面向对象建模需要建立哪几种模型,建模时需要使用哪些图形工具,会画

答:需要描述系统数据结构的对象模型;描述系统控制结构的动态模型;描述系统功能的功能模型。

需要的图形工具有:类图,状态图,用例图

第十章 面向对象分析

1、建立对象模型的典型工作步骤

答:

(1) 确定对象类和关联,对于大型复杂问题还要进一步划分出若干个主题

(2) 给类和关联添加属性

(3) 利用适当的继承关系来进一步合并和组织类

2、什么是非正式分析?

答:是以用自然语言书写的需求陈述为依据,把陈述中的名词作为类与对象的筛选者,用形容词作为确定属性的线索,把动词作为服务的候选者。

3、建立动态模型的典型工作步骤

答:(1)编写典型交互行为的脚本

​ (2)从脚本中提取出实践,确定触发每个事件的动作对象以及接受事件的目标对象。

​ (3)排列事件发生的次序,确定每个对象可能有的状态以及状态间的转换关系,并且用状态图描绘它们。

​ (4)比较各个对象的状态图,检查它们之间的一致性,确保事件之间的匹配。

4、脚本的定义,事件跟踪图的画法

答:脚本:是指系统在某一执行期间内出现的一系列事件。

事件根据图画法(书本P249-P250)

第十一章 面向对象设计

1、面向对象设计的启发规则有哪些?

答:(1)设计结果应该清晰易懂

​ (2)一般-特殊结构的深度应适当

​ (3)设计简单的类

​ (4)使用简单的协议

​ (5)使用简单的服务

​ (6)把设计变动减至最小

2、软件重用的概念,软件成分重用的级别

答:软件重用概念:重用也叫复用,是指同一事物不做修改或稍加改动就多次重复使用。可分为以下三个层次:知识重用;方法和标准重用;软件成分的重用。

级别:(1)代码重用 (2)设计结果重用 (3)分析结果重用

3、什么是类构件,类构件的特点和3种重用方式

答:面向对象技术中的“类”,是比较理想的可重用软构件,称之为类构件

​ 类构件的特点:

(1) 模块独立性强

(2) 具有高度可塑性

(3) 接口清晰,简明,可靠

三种重用方式:

(1) 实例重用:使用者无需了解实现细节就可以使用适当的构造函数,按照需要创建类的实例。然后向所创建的实例发送适当的消息,启动相应的服务,完成需要完成的工作。或者利用几个简单的对象作为类的成员创建出一个更加复杂的类。

(2) 继承重用:当已有的类构件,不能通过实例重用完成满足当前系统需求时,继承重用提供了一种安全地修改已有类构件,一边在当前系统中重用的手段。

(3) 多态重用:利用多态性不仅可以使对象的对外接口更加一般化,从而降低了消息连接的复杂程度,而且还提供了一种简便可靠的软构件组合机制。系统运行时,根据接收消息的对象类型,由多态性机制启动正确的方法,去响应一个一般化的消息,从而简化了消息界面和软构件连接过程。

4、采用面向对象方法设计软件系统时,系统分解的方法?

答:功能分解法:将系统按照功能进行分解,将大的功能分解为小的功能,直到每个功能都可以独立实现为止。

数据分解法:将系统按照数据进行分解,将大的数据分解为小的数据,直到每个数据都可以独立管理为止。

领域分解法:将系统按照领域进行分解,将大的领域分解为小的领域,直到每个领域都可以独立实现为止。

用例分解法:将系统按照用例进行分解,将大的用例分解为小的用例,直到每个用例都可以独立实现为止。

(这题答案使从GPT上问的)

第十二章 面向对象实现

1、面向对象方法提高可重用性的设计准则

答:

(1) 提高方法的内聚:一个方法应该只完成单个功能

(2) 减小方法的规模:减小方法的规模,如果某个方法的规模过大,应该把它分解成几个更小的方法

(3) 保持方法一致性:功能相似的方法应该有一致的名字,单数特征,返回值类型,使用条件以及出错条件等。

(4) 把策略和实现分开:即一类方法负责做出决策,提供变元,并且管理全局资源,可称为策略方法。另一类方法负责完成具体的操作,但是却并不做出是否执行这个操作的决定,也不知道为什么执行这个操作方法,可称为实现方法。

(5) 全面覆盖:如果输入条件的各种组合都可能出现,则应该针对所有组合写出方法,而不能仅仅针对当前用到的组合情况写方法。

(6) 尽量不使用全局信息:应该尽量降低方法与外界的耦合程度,不使用全局信息是降低耦合度的一项主要措施。

(7) 利用继承机制:在面向对象程序中,使用继承机制是实现共享和提高重用程度的主要途径。

2、面向对象方法提高可扩充性的设计准则

答:

(1) 封装实现策略:应该把类的实现策略封装起来,对外只提供公有的接口,否则将降低今后修改数据结构或算法的自由度

(2) 不要用一个方法遍历多条关联链:一个方法应该只包含对象模型中的有限内容。

(3) 避免使用多分支语句:可以利用Do-case语句测试对象的内部状态,而不要用来根据对象类型选择应有的行为。应该合理利用多态性体制,根据对象当前类型,自动决定应有的行为。

(4) 精心确定公有方法:公有方法是向公众公布的接口,对这类方法的修改往往涉及许多类,因此,修改公有方法的代价通常比较高。为提高可修改性,降低维护成本,必须精心选择和定义公有方法。

第十三章 软件项目管理

1、了解估计软件规模:代码行技术;功能点技术

答:

img

img

img

2、了解工作量估算

答:书本P308

img

3、甘特图会画;工程网络

答:书本P314-316

img

4、人员组织:民主制程序员组、主程序员组、现代程序员组

答:

民主制程序员组:小组成员完全平等,享有充分民主,通过协商做出技术决策。因此,小组成员之间的通信时平行的,如果小组内有n个成员,则可能的通信通道共有n(n-1)/2条。

主程序员组:用经验多,技术好,能力强的程序员作为主程序员,同时利用任何计算机在事务性工作方面给主程序员提供充分支持,而且所有通信都通过一两个人进行。多用于:软件开发人员多数比较缺乏经验;程序设计过程有很多事务性工作;多渠道通信很费时间,将降低程序员的生产率。

现代程序员组:和主程序员组类似,但是主程序员有两个人共同担任,一个技术负责人,负责小组的技术活动,一个行政负责人,负责所有非技术性事务的管理决策。

5、软件配置、基线

答:软件过程的输出信息可以分为3类:

(1)计算机程序 (2)描述计算机程序的文档 (3)数据。

上面这些项组成了在软件过程中产生的全部信息,人们把它们称为软件配置。这些项就是软件配置项。

基线:基线:已经通过正式复审的规格说明或者中间产品。它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。

6.了解能力成熟度模型,5级

答:

(1) 初始级:软件过程的特征是无序的,有时甚至时混乱的。

(2) 可重复级:软件机构建立了基本的项目管理过程,可跟踪成本,进度,功能和质量。

(3) 已定义级:软件机构已经定义了完整的软件过程,软件过程已经文档化和标准化。

(4) 已管理级:软件机构对软件过程和软件产品都建立了定量的质量目标,所有项目的重要的过程活动都是可以度量的。

(5) 优化级:软件机构集中经历持续不断地改进软件过程。