它们的关系:关联、泛化和细化都是一类特定的依赖。
3. 为表达客观事物,UML给出的基本术语:类与对象、接口、协作、用况、主动类、构件、制品、节点。
4. 聚合是满足“一个类是另一个类的一部分”这一性质的关联,是关联的一种特殊形式。 5. 对象由对象名、对象属性和对象操作组成,用具有3个栏目的矩形表示,上栏目表示
对象名(加下划线)、中间栏目表示属性、下栏目表示操作。 6. 类图的构成成分:类、接口、关联、泛化和依赖关系等。 7. 状态图的构成成分:状态、转移及其相关的事件和动作、消息等。
8. 顺序图的构成成分:参与交互的对象、基本的交互方式(同步和异步)以及消息等。
六、 面向对象方法-RUP
1. RUP的特点:(1)以用况为驱动。(2)以体系结构为中心。(3)迭代、增量式开发。
第五章 软件测试
一、 软件质量与质量保证
1. 软件质量定义即3个一致性:与所确定的功能和性能需求、与所成文的开发标准、与
所有专业开发的软件所期望的隐含特性的一致性。
2. 影响软件质量的因素:可直接度量因素和只能间接度量的因素。
3. 软件质量保证是指确定、达到、维护所需的软件质量而进行的所有有计划、有系统的
29
管理活动。从产品计划和设计开始(必须加以保证),直到投入使用和售后服务的软件生存期的每一阶段的每一步骤。其工作重点放在过程管理上,对制造的每一道工序进行质量控制。
为提高软件质量和效率,主要任务:力争不重复劳动、掌握开发新软件方法、用户要
求定义、组织外部力量协助排除无效劳动、发挥每个开发者的能力、提高软件开发的工程能力、提高计划和管理质量。
4. 质量保证策略发展的三个时期:以检测为重、以过程管理为重、以新产品开发为重。 5. 质量度量模型:McCall质量度量模型、ISO质量度量模型(分为质量特征层、质量子
特征层、度量层)。
McCall质量度量模型有11个特性:
面向软件产品操作的特性有:正确性、可靠性、效率、可用性。 面向软件产品修改的特性有:可维护性、可测量性、适应性。 面向软件产品适应的特性有:可移植性、可重用性、可互操作性。
其中,正确性是指软件满足设计规格说明及用户预期目标的程度。可靠性是指软件按
设计要求,在规定时间和条件下不出故障,持续运行的时间。完整性是指对非授权人访问软件或数据行为的控制程度。可用性是指用户熟悉、使用及准备输入和解释输出所需工作量的大小。
6. 度量软件复杂度使用代码行度量法和基于程序控制流的McCabe度量法。
McCabe度量法一种基于程序控制流的复杂性度量法,也称为环路度量。先画出程序图,再计算环路数。公式为:V(G)=m-n+2p; 其中,V(G)是有向图G中环路数,m是图中G的弧度数,n是图中结点数,p是G中的强连通分量个数。
McCabe度量法的缺点:(1)不能区分不同种类的控制流复杂性;(2)简单IF语句与
30
循环语句、嵌套IF语句与简单CASE语句的复杂性同等看待;(3)把模块间接口当做简单分支处理;(4)一个具有1000行的顺序程序和一行语句的复杂性相同。 7. 软件复杂性度量参数:规模(总共指令数或源代码行数)、难度(由程序中出现的操作
数的数目所决定的量表示)、结构(与程序结构有关的度量来表示)、智能度(算法难易程度)。
8. 软件可靠性表明一个程序按用户要求和设计的目标,执行其功能的正确程序,指在给
定时间内,在规定环境下系统完成所指定功能的概率。使用硬件可靠的定量度量:MTFF(平均失效等待时间)和MTBF(平均失效间隔时间)。
9. 提高软件质量和可靠性的技术有:避开错误技术(在开发过程中不让差错潜入软件)
和容错技术。
容错软件是在一定程度上具容错能力的规定功能软件。设计过程为:(1)常规设计,尽量保证设计正确。(2)对可能出现的错误分类,确定容错范围。(3)按“成本-效率”最优原则,选择容错的冗余手段实现错误屏蔽(如关键程序和数据冗余存储和调用)。(4)分析或验证上述冗余结构的容错效果。
10. 冗余是所有对于实现系统规定功能来说多余的那部分资源,包括硬件、软件、信息、
时间,是实现容
错技术的主要手段。冗余分为四类:结构冗余(又分静态、动态、混合冗余)、信息冗余、时间冗余、冗余附加技术。
11. 软件生存期每个阶段都可能引入人为错误,若不及时纠正就会传播到开发后续阶段,
将引出更多错误,故要进行软件评审,以提高软件质量为目标。把“用户满意程度”理解为软件质量,包括设计质量(设计的规格说明书符合用户要求)和程序质量(程序要按照设计规格说明所规定的情况正确执行)。
31
设计质量的评审针对需求分析阶段产生的软件需求、规格说明书、数据需求说明,在
软件总体设计阶段产生的软件概要设计说明书。
程序质量的评审从开发者角度进行评审,直接和开发技术有关,着眼于软件本身的结
构、与运行环境的接口和变更带来的影响而进行的评审活动。
12. 提高程序效率的根本途径在于选择良好的设计方法、良好的数据结构算法,而不是
靠编程时对程序语句做调整。
二、 软件编码
1. 程序设计语言的共同特性:
心理特性:指影响程序员心理的语言性能。对通信质量有主要影响。表现形式为:
歧义性、简洁性、局部性、顺序性、传统性。
工程特性:指根据软件开发项目的需要,总体上考虑的软件特性。对软件开发的成
功与否有重要影响。表现形式为:可移植性、开发工具的可利用性、软件的可重用性、可维护性。它也是就程序设计语言的工程特性而言,对程序编码的要求。体现在源代码的可维护性等方面。
技术特性:指具体实现软件系统中所提供的语言特性。对软件工程各阶段都有一定
的影响,要根据项目特性选择相应特性的语言。
2. 选择程序设计语言要考虑的因素:项目的应用领域(是关键因素,如工程计算、人
工智能、数
据处理等)、软件开发方法、软件执行环境、算法和数据结构的复杂性、软件开发
人员的知识。
3. 程序设计风格指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。良好的
32