? 软件质量和软件质量保证的基本概念
? 质量度量模型
? 软件复杂性
? 软件可靠性
? 软件评审与软件容错技术
第十三章
管理技术与软件质量保证
? 软件工程管理是对软件生命周期中的一切活动的管
理,尤其是对软件开发过程的管理。
? 软件工程管理涉及到很多学科,如:系统工程学、
标准化、管理学、逻辑学、数学等。
? 软件工程管理涉及到诸多方面的内容,如软件工程
项目计划、制定软件工程规范、软件开发成本估算、
软件项目进度安排、软件配置管理、软件工程标准
化等。
? 软件工程管理的具体内容包括对开发人员、组织机
构、用户、过程控制,文档资料等方面的管理。
软件开发成本估算
? p276
Effort Estimation
? Several types of costs
? Facilities
? Staff
? Methods
? Tools
? The biggest component of cost is Effort
? Staff’s effort represented by staff-days
? We must estimate effort as early as possible
Effort Estimation Methods
? Expert Judgment
? Rand’ Delphi technique
? Wolverton (1974) cost model
? Algorithmic Methods
? Walston and Felix(1977)
? Boehm’s Constructive Cost
Model(COCOMO)
? Machine-Learning Method
Rand公司 Delphi技术的步骤:
1,组织者发给每位专家一份规格说明书和一张估算表。
2,专家研究规格说明书。可召集小组会议,就估算问题进行讨论
3,专家提出三个不同的估算值:最小值 x,最大值 y,最可能值 z。
并无记名填表,说明理由。
4,计算:
5,召集会议,对大的变动之处进行讨论。基于讨论再一次估算
6,再次无记名填表。从( 4)到( 6)适当重复几次,最终获得一
个多数专家公认的软件规模( KLOC)
6
zy4xE ???
软件项目计划
? 在软件项目管理过程中一个关键的活动是
制定项目计划,它是软件开发工作的第一
步。项目计划的目标是为项目负责人提供
一个框架,使之能合理地估算软件项目开
发所需资源、经费和开发进度,并控制软
件项目开发过程按此计划进行。本节主要
软件项目计划的内容、软件开发成本估算
与风险分析、软件项目的进度安排。
软件项目计划内容
? 范围 。 对该软件项目的综合描述, 定义其所要做的
工作以及性能限制, 它包括:项目目标, 主发功能,
性能限制, 系统接口, 特殊要求, 开发概述 。
? 资源 。 包括:人员资源, 硬件资源, 软件资源等 。
? 进度安排 。 进度安排的主要工具有:工程网络图,
Gantt图, 任务资源表 。
? 成本估算 。 保证项目能在预算内按时完成 。
? 培训计划 。 为用户各级人员制定培训计划 。
Estimating Completion
? Critical Path Method ( CPM )
? Real time or actual time
? Available time
? Slack time
? Slack time = available time - real time
? Calculate slack time for each activity
? Critical path
Project Personnel
? Staff roles and characteristic
? Work Styles
? Project organization
Staff Roles and Characteristic
? Ability to perform the work
? Interest in the work
? Experience with similar applications
? Experience with similar tools or languages
? Experience with similar techniques
? Experience with similar development environment
? Training
? Ability to communication with others
? Ability to share responsibility with others
? Management skills
Work Styles
? Four communication styles
? Extrovert,When communicating ideas,they
directly tell others their thoughts
? Introvert,When communicating ideas,they ask
for suggestions from others before forming an
opinion
? Intuitive,They base their decision on feeling
about and emotional reactions to a problem
? Rational,They decide primarily by examining
the facts and carefully consider all options
Work Styles Intuitive
Rational
Ex
tro
ve
rtIntr
ov
ert
Intuitive
Extrovert:
Tells others
Acknowledges feels
Intuitive
Introvert,
Asks others
Acknowledges feels
Rational
Introvert,
Asks others
Decides logically
Rational
Extrovert,
Tells others
Decides logically
我是这样克服羞怯和恐惧的 —— 我一个
劲地让自己出丑,直到习以为常。
—— 萧伯纳
一句名言
软件开发的组织机构
? 三种组织结构
? 主程序员组织机构
? 专家组织机构
? 民主组织机构
? To choose an appropriate structure in term of
? The backgrounds and work styles of team
members
? The number of people on the team
? The management styles of the customers and
developers
主程序员组织机构
? 由一位高级工程师 ( 主程序员 ) 主持计划, 协
调和复审全部技术活动;一位辅助工程师协助
主程序员工作, 并在必要时代替主程序员工作;
若干名技术人员负责分析和开发活动;可以有
一位或几位专家和一位资料员协助软件开发机
构的工作 。 资料员非常重要, 负责保管和维护
所有的软件文档资料, 帮助收集软件的数据,
并在研究, 分析, 评价文档资料的准备方面进
行协助工作 。 主程序员组织机构突出了主程
序员的领导, 责任集中在少数人身上, 减少了
人员之间的通信量, 有利于提高软件质量 。
专家组织机构
? 专家组织机构是由若干专家组成一个开
发机构, 强调每个专家的才能, 充分发
挥每专家的作用 。 这种组织机构虽然能
发挥所有工作人员的积极性, 但往往有
可能出现协调上的困难 。
民主组织机构
? 民主组织机构由从事各方面工作的人员
轮流担任组长。很显然,这种组织机构
对动积极性和个人的创造性是很值得称
道的。但是由于过多的进行组长的信息
,转移,,人员之间的通信量大,不符
合软件工程化的方向,一般不适合大型
项目的开发。
Chief programmer team organization
Chief programmer
Senior
programmers
Assistant chief programmer
Librarian Administration Test
teams
Junior
programmers
Comparison of
Organizational Structure
Highly Structured Loosely Structured
High certainty Uncertainty
Repetition New techniques or technology
Large projects Small projects
软件质量定义
? 软件质量定义为:
1)与所确定的功能和性能需求的一致性 。
2)与所成文的开发标准的一致性 。
3)与所有专业开发的软件所期望的隐含特
性的一致性
质量定义反映了以下三个问题
?软件需求是度量软件质量的基础 。 有符合需
求的软件就不具备质量 。
?专门的标准中定义了一些开发准则, 用来指
导软件人员用工程化的方法来开发软件 。 如
果不遵守这些开发准则, 软件质量就得不到
保证 。
?往往会有一些隐含的需求没有明确地提出来 。
例如, 软件应具备良好的可维护性 。 如果软
件只满足那些精确定义了的需求而没有满足
这些隐含的需求, 软件质量也不能保证 。
软件质量的度量和评价
? 影响软件质量的因素可以分为两大类:
( 1 ) 可以直接度量的因素, 如单位时间内千行代码 ( KLOC)
中所产生的错误数 。
( 2 ) 只能间接度量的因素, 如可用性或可维护性 。
? Boehm软件质量度量模型
? McCall软件质量度量模型 (P291 图 13-6)
? ISO的软件质量评价模型
软件质量保证
? 软件质量保证就是向用户及社会提供满意的
高质量的产品, 确保软件产品从诞生到消亡
为止的所有阶段的质量的活动, 即确定, 达
到和维护需要的软件质量而进行的所有有计
划, 有系统的管理活动 。
软件质量保证包括的主要功能
? 质量方针的制定;
? 质量保证方针的质量保证标准的制定;
? 质量保证体系和建立和管理;
? 明确各阶段的质量保证工作;
? 各阶段的质量评审;
? 确保设计质量;
? 重要质量问题的提出现分析;
? 总结实现阶段的质量保证活动;
? 整理面向用户的文档、说明书等;
? 产品质量鉴定、质量保证系统鉴定;
? 质量信息的收集、分析和使用。
质量保证的主要任务
1,正确定义用户要求 。
2,开发和应用新软件的方法 。 最普遍公认的成功方法就是软件工程
学的方法 。
3,提高软件开发的工程能力 。 在软件开发环境或软件工具箱的支持
下, 运用先进的开发技术, 工具和管理方法提高开发软件的能力 。
4,提高软件的复用率和软件的可重用性 。
5,发挥每个开发者的能力 。
6,明确规定进度管理, 质量管理, 交接检查, 维护体制等方面的要
求, 建立跟踪检查的体制 。 改善对外部协作部门的开发管理 。
7,排除无效劳动 。 最大的无效劳动是因需求规格说明有误, 设计有
误而造成的返工 。 另一种较大的无效劳动是重复劳动, 即相似的
软件在几个地方同时开发 。
8,提高计划和管理质量 。
软件评审
? 设计质量 —— 设计的规格说明书符合用户要求的程度 。
? 程序质量 —— 把程序按照设计规格说明所规定的情况
正确执行的程度 。
? 软件的规格说明分为外部规格说明和内部规格说明
?外部规格说明是从用户角度来看的规格
?内部规格说明是为了实现外部规格的更详细的规格, 即软
件模块结构与模块处理过程的设计 。
?设计质量是由外部规格说明决定的, 程序质量是由内部规
格说明决定的 。
设计质量的评审内容
? 评价软件的规格说明是否合乎用户的要求 。
? 评审可靠性, 即是否能避免输入异常, 硬件失效及软件失效所产生的失
效, 一旦发生应能及时采取代替手段或恢复手段 。
? 评审保密措施实现情况, 即是否提供对使用系统资格进行检查;对特定
数据的使用资格, 特殊功能的作用资格进行检查, 在查出有违反使用资
格情况后, 能否向系统管理人员报告有关信息;是否提供对系统内重要
数据加密的功能等 。
? 评审操作特性实施情况, 即操作命令和操作信息的恰当性, 输入数据与
输入控制语句的恰当性;输出数据的恰当性;应答时间的恰当性等 。
? 评审性能实现情况, 即是否达到所规定性能的目标值 。
? 评审软件是否具有可修改性, 可扩充性, 可互换性和可移植性 。
? 评审软件是否具有可测试性 。
? 评审软件是否具有复用性。
程序质量的评审内容
? 程序质量评审主要是对软件结构、与运行环境的接口、变更影响而进
行的评审活动。
? 软件结构的评审主要针对
? 软件的功能结构
? 功能的通用性
? 模块层次
? 模块结构
? 处理过程的结构等
? 与运行环境的接口的评审主要检查项目
? 与硬件的接口。包括与硬件的接口约定,即根据硬件的使用说明等所做出
的规定;硬件故障时的处理和超载时的处理。
? 与用户的接口。包括与用户的接口约定;输入数据的结构;输出数据的结
构;异常输入时的处理;超载输入时的处理;用户存取资格的检查等。
软件容错技术
? 容错软件的四种定义:
1 ) 规定功能的软件, 在一定程度上对自身错误的作用
( 软件错误 ) 具有屏蔽能力, 则称此软件为具有容错功
能的软件, 即容错软件 。
2 ) 规定功能的软件, 在一定程度上能从错误状态自动恢
复到正常状态, 则称之为容错软件 。
3 ) 规定功能的软件, 在因错误而发生错误时, 仍然能在
一定程度上完成预期的功能, 则把该软件称为容错软件 。
4 ) 规定功能的软件, 在一定程度上具有容能力, 则称之
为容错软件 。
容错的一般方法
? 实现容错技术的主要手段是冗余 。
? 冗余是指实现系统规定功能是多余的那部分资源,
包括硬件, 软件, 信息和时间 。 由于加入了这些
资源, 有可能使系统的可靠性得到较大的提高 。
? 通常冗余技术分为四类
? 结构冗余
? 信息冗余
? 时间冗余
? 冗余附加技术
结构冗余三种工作方式
? 静态冗余通过表决和比较来屏蔽系统中出现的错误, 常用的有:
三模冗余和多模冗余 。 三模冗余是对三个功能相同但由不同的人
采用不同的方法开发出来的模块的运行结果通过表决, 以多数结
果作为系统的最终结果 。 由于无需对错误进行特别的测试, 也不
必进行模块的切换就能实现容错, 故称为静态容错 。
? 动态冗余的主要方式是多重模块待机储备, 当系统检测到某工作
模块出现错误时, 就用一个备用的模块来顶替它并重新运行 。 由
于必须具有检测, 切换和恢复过程, 故称其为动态冗余 。 每当一
个出错被其备用模块顶替后, 冗余系统相当于进行了一次重构 。
各备用模块在其待机时, 可与主模块一样工作, 也可不工作 。 前
者叫做热备份系统, 后者叫做冷备份系统 。
? 混合冗余兼有静态冗余和动态冗余的长处 。
信息冗余
? 信息冗余是指为检测或纠正信息在运算
或传输中的错误而另外增加一部分信息 。
在通信和计算机系统中, 信息常以编码
的形式出现 。 采用奇偶码, 循环码等冗
余码制式就可以发现甚至纠正这些错误 。
为了达到此目的, 这些码 ( 统称误差校
正码 ) 的码长远远超过不考虑误差校正
时的码长, 增加了计算量和信道占用的
时间 。
时间冗余
? 时间冗余是指以重复执行指令(指令复
执)或程序(程序复算)来消除瞬时错
误带来的影响。对于复执不成成功能情
况,通常的处理办法是发出中断,转入
错误处理程序,或对程序进行复算,或
重新组合系统,或放弃处理。
冗余附加技术
? 冗余附加技术是指为实现上述冗余技术所需的资源
和技术。
? 在屏蔽硬件错误的冗错技术中,冗余附加技术包括:
? 关键程序和数据的冗余存储和调用
? 检测、表决、切换、重构、纠错和复算的实现。
? 在屏蔽软件错误的冗错系统中,冗余附加构成包括:
? 冗余备份程序的存储及调用
? 实现错误检测和错误恢复的程序
? 实现容错软件所需的固化程序
容错软件的设计步骤
? 按照设计任务要求进行常规设计, 尽量保证设计的
正确性 。 按常规设计得到非容错结构, 它是容错系
统构成基础 。 在结构冗余中, 不论是主模块还是备
用模块的设计和实现都要在费用许可的条件下, 用
调试的方法尽可能提高可靠性 。
? 对可能出现的错误分类, 确定实现容错的范围 。
? 按照, 成本-效率, 最优原则, 选用某种冗余手段
( 结构, 信息, 时间 ) 来实现对各类错误的屏蔽 。
? 分析或验证上述冗余结构的容错效果。如果没有达
到预期的程度,则应重新进行冗余结构设计。如此
反复,直到有一个满意的结果为止。
Planning and Managing the Project
? Tracking project progress
? Project personnel and organization
? Effort and schedule estimation
? Risk management
? Using process modeling with project
planning
Tracking Project Progress
? Customer’s questions
? Do you understand my problem and needs
? Can you design the system
? How long will it take
? How much will it cost
? Project schedule
? Describe the software development cycle by
? Enumerating the phases or stages
? Breaking the
? stages into discrete activities or tasks
Activity,Milestone,and
Deliverable
? Activity
? An activity is a part of the project that takes
place over a period of time.
? Milestone
? A milestone is the completion of an activity,it
is a particular point in time.
? Milestones in Building a House (P81)
? Deliverable
? The items that customer expects to see
during development,it may be
? Documents
? Demonstrations of function,subsystems,accuracy,
reliability,security,or performance
A good project plan includes
the following items:
1,Project scope
2,Project schedule
3,Project team organization
4,Technical description
5,Project standards,procedures,and proposed techniques and tools
6,Quality assurance
7,Configuration management plan
8,Documentation plan
9,Data management plan
10,Resource management plan
11,Test plan
12,Training plan
13,Security plan
14,Risk management plan
15,Maintenance plan
Technical Description Includes
? Hardware
? Software----Compilers,interfaces
? Functionality
? Performance----execution time,response time,security
? Also Includes Any Standards or Methods of
? Algorithms
? Tools
? Review or inspection techniques
? Design languages or representation
? Coding languages
? Testing techniques
软件配置管理
? 软件配置管理 SCM是一组管理整个软件
生存期各阶段中变更的活动, 其主要目
标是:标识变更;控制变更;确保变更
正确地实现;报告有关变更 。
? 使用配置管理技术, 使变更所产生的错
误达到最小并最有效地提高生产率 。
基线
? 基线是软件生存期中各开发阶段的一个特定点,
它的作用是把开发各阶段工作的划分更加明确
化,使本来连续的工作在这些点上断开,以便
于检查与肯定阶段成果。
? 基线的特征
? 唯一的标识
? 具体的内容
? 正式的审批
? 严格的变更控制
软件配置项 SCI
(Software Configuration Item)
? 软件配置项是软件工程中产生的信息项,
它是配置管理的基本单位。
软件开发环境
? 软件开发环境是由软件开发工具集和环境集成机
制构成的,是支持软件开发而提供的一组工具软
件系统。
? IEEE和 ACM的定义:软件开发环境是相关的一组
软件工具集合,它支持一定的软件开发方法或按
照一定的软件开发模型组织而成。
? 美国国防部在 STARS计划中定义:软件工程环境
是一组方法、过程及计算机程序(计算机化的工
具)的整体化构件,它支持从需求定义、程序生
成直到维护的整个软件生存期。
具有相同或类似含义的环境名称
( 1) 软件开发环境 SDE( Software Development Environment) 。
( 2) 软件工程环境 SEE( Software Engineering Environment) 。
( 3) 软件支持环境 SSE( Software Support Environment) 。
( 4) 项目支持环境 PSE( Project Support Environment) 。
( 5) 自动开发环境 ADE( Automated Development Environment) 。
( 6) 集成化程序设计环境 IPE( Integrated Programming Environment) 。
( 7) 工具盒 Toolbox。
( 8) 工具箱 Toolkit。
对软件开发环境的要求
( 1) 软件开发环境应是高度集成的一体化的系
统 。
( 2) 软件开发环境应具有高度的通用性 。
( 3) 软件开发环境应易于定制, 裁剪或扩充 。
( 4) 软件开发环境不但可应用性要好, 而且是
易使用的, 经济高效的系统 。
( 5) 软件开发环境应由辅助开发向半自动开发
和自动开发逐步过渡的系统 。
软件开发环境的分类
? 按解决的问题分类
? 程序设计环境
? 系统合成环境
? 项目管理环境
? 按软件开发环境的演变趋向分类
? 以语言为中心的环境
? 工具箱环境
? 基于方法的环境
软件工具
? 软件工具是可用来帮助和支持软件需求
分析、软件开发、测试、维护、模拟、
移植或管理而编制的计算机程序或软件
系统。
? 软件工具通常由工具、工具接口和工具
用户接口三部分构成。
软件工具发展的特点
( 1) 软件工具由单个工具向多个工具集成化方向发展 。
如将编辑, 编译, 运行结合在一起构成集成工具 。 注
重工具间的平滑过渡和互操作性 。
( 2) 重视用户界面的设计 。 交互式图形技术及高分辩率
图形终端的发展, 为友好方便的用户图形提供了物质
基础 。 多窗口管理, 鼠标器使用, 图形资源的表示等
技术, 极大地改善了用户界面的质量, 改善了软件的
感观 。
( 3) 不断地采用新理论和新技术 。 如许多软件工具的研
制中采用了数据库技术, 交互图形技术, 网络技术,
人工智能技术和形式化技术等 。
( 4) 软件工具和软件产业的发展相互推动, 促进了软件
工具的商品化进程 。
软件工具的分类
? Reifer和 Trattner将软件工具分为六类
? 模拟工具
? 开发工具
? 测试和评估工具
? 运行和维护工具
? 性能测量工具
? 程序设计支持工具 。
Westinghouse公司 ( 1992) 的
13类软件工具分类标准,
? 系统模拟和模型工具
? 需求追踪
? 需求分析
? 设计
? 编码与单元测试
? 测试与集成
? 文档
? 项目管理
? 配置管理
? 质量保证
? 度量
? 软件再用
? 其他:数据管理、通讯、电子公告牌等。
计算机辅助软件工程
? CASE是一组工具和方法的集合, 以辅助各个阶段的软
件开发 。
? 从学术研究角度讲, CASE是多年来在软件开发管理,
软件开发方法, 软件开发环境和软件工具等方面研究
和发展的产物, 它把软件开发技术, 软件工具和软件
开发方法集成到一个统一而一致的框架中, 并且吸收
了 CAD(计算机辅助设计 ),软件工程, 操作系统, 数
据库, 网络和许多其它计算机领域的原理和技术 。
? 从产业角度讲, CASE是种类繁多的软件开发和系统集
成的产品及软件工具的集合 。
CASE工具分类
?对 CASE工具分类的标准可分为
?功能;
?支持的过程;
?支持的范围 。
?Fuggetta (1993)提出 CASE系统可分为三类
?支持单个过程任务的工具 。 如程序编译, 一致性检查等 。
?支持某一过程所有活动或某些活动的工作台 。
?支持软件过程所有活动 ( 至少大部分的活动 ) 的环境 。
CASE的集成
? 平台集成:工具运行在相同的硬件/操作系统平台上 。
? 数据集成:工具使用共享数据模型来操作 。
? 表示集成:工具提供相同的用户界面 。
? 控制集成:工具激活后能控制其它工具的操作 。
? 过程集成:工具在一个过程模型和, 过程机, 的指导下使
用 。
CASE生存期
(1)CASE需求:根据要开发的软件类型选择一个合适的 CASE系统 。
(2)CASE剪裁:调整一个 CASE系统, 使之适应一特定组织机构或一类项目 。
(3)CASE引入:试用该 CASE系统 。 在这期间, 要培训使用这一系统的开发人员 。
(4)CASE操作:每天都使用 CASE进行软件开发 。
(5)CASE演化:是一个在 CASE系统生命周期中的一个持续的活动 。
(6)CASE废弃:使该 CASE系统在这一阶段不再起作用, 必须保证使用该系统开
发的软件仍被所在组织机构所支持 。
CASE工作台
? CASE工作台是一组工具集,支持像设计、实
现或测试等特定的软件开发阶段。
? 将 CASE工具组装成一个工作台后,各个工具
间能协同工作,为软件开发、维护和管理提
供更强大、更全面的支持,也可以实现能被
其它工具调用的通用服务程序。
? 工作台工具能通过共享文件、共享仓库或共
享数据结构来集成。
CASE工作台分类
? 程序设计工作台 。
? 分析和设计工作台 。
? 测试工作台 。
? 交叉开发工作台 。 支持在一种机器上开发软件, 而在其
它系统上运行所开发的软件 。
? 配置管理 (CM)工作台 。 支持配置管理 。 如版本管理工具,
变更跟踪工具, 系统建造 (装配 )工具等 。
? 文档工作台 。 这些工具支持高质量文档的制作 。
? 项目管理工作台 。 支持项目管理活动, 如项目规划和质
量, 开支评估和预算追踪等 。