第四章 面向对象方法 1.基本概念:
(1)对象 在系统分析和系统构造中,对象是对客观世界事务的一种抽象,是由数据(属性)及其上操作(行为)组成的封装体。
(2)类 是具有相同结构、行为和关系的一组对象的描述。
(3)属性 每一对象的属性是一些有着确定值的、用于描述对象状态信息的数据。 (4)服务 为了完成某一任务,一个对象所提供的、并体现其责任的操作。
(5)消息 一个对象为实现其责任而与其他对象的通信,在面向对象方法中,对象之间只能通过消息进行通信。
(6)继承 表达类之间相似性的一种机制,即在已有的类的基础之上增量构造新的类,前者称为父类(或超类),后者称为子类,如果子类只从一个父类继承,则称为单继承,如果子类从一个以上父类继承,则称为多继承。 (7)操作 是类的实例被要求执行的服务。
(8)关联 把一组具有相同结构特性、行为特征和语义的链的描述称为关联。 (9)链 是对象引用的元组(列表)。
(10)依赖 一个依赖规约了两个模型元素(或两个模型元素集合)之间的一种语义关系。
(11)状态 一个状态是在对象的生命期内的一个条件,或在对象满足某个条件,进行某个动作或等待某个事件的期间内的一个交互。 (12)事件 指可以引发状态转换的所发生的事情。 2.对象的特点:
自治性,对象具有一定的独立计算能力,封闭性,对象具有信息隐蔽的能力,通信性,对象具有与其他对象通信的能力。
3.面向对象方法同结构化方法的比较:
结构化方法强调过程抽象和模块化,将现实世界映射为数据流和加工,加工之间通过数据流进行通信,数据作为被动的实体被主动地操作所加工,是以过程(或操作)为中心来构造系统和设计程序的;
面向对象方法把世界看成是独立对象的集合,对象将数据和操作封装在一起,提供有限的接口,其内部的实现细节、数据结构及对它们的操作是外部不可见的,对象之间通过消息相互通信,面向对象方法具有的继承性和封装性支持软件复用,并易于扩充,能较好的适应复杂大系统不断发展和变化的要求。 4.Coad-Yourdon方法:
该方法认为,人类在认识和理解现实世界的过程中,普遍运用着下面三个构造法则,区分对象及其属性,区分整体对象及其组成部分,不同对象类的形成及区分。 5.面向对象方法分析阶段的五个主要活动及其内容:
标识类及对象、标识结构、标识主体、定义属性及实例连接、定义服务及消息连接; 两层矩形符号表示类及对象,内层矩形表示类,分为三部分,类名、属性名、服务名,外层矩形表示该类的对象;
标识的结构有两种,一般/特殊结构和整体/部分结构; 精炼主题可以从问题域和接口复杂性两方面入手;
可以从四方面考虑标识属性,原子概念,规范化,标识机制,保持一个可导出的属性。 6.面向对象设计(OOD):
OOD分为四部分,问题域部分,保持系统总体结构的稳定性,人机交互部分,任务管理部分,简化总体设计和编码,数据管理部分,包括数据存放方法的设计和相应服务的设计。 7.三种面向对象的设计模型(OSA模型):
对象关系模型、对象行为模型、对象相互作用模型。 8.面向对象中特殊的关系集合:
一般关系(is a),一个对象类中的每一对象是另一对象类的一个对象,聚合关系(is part of),一个对象,称之为聚合,是由一些称之为成分的对象构成的,联合关系(is member of),该关系用于生成一个由对象构成的集合,并把该集合看作是一个对象,is member of关系总是二元关系;
成员类是联合的子集,对象是成员类的子集,对象是联合子集的子集。 9.对象关系模型图(ORM),对象行为模型,对象交互模型:
对了构造ORM图,OSA给出了五个基本概念,对象、关系、对象类、关系集合、约束为了构造对象行为模型,OSA集中于三个基本概念,状态、触发、动作,OSA借助于状态网,描述对象间的同步交互。
10.统一软件开发过程(USDP)及其阶段:
USDP是以用况为驱动的、以体系结构为中心的、迭代、增量的过程,分为初始、细化、构造、移交四个阶段。
本章设计题为标识类、对象,及其属性与操作等,一般与DFD建模题在一起,考参考辅导
第264页建模题的第2问,另外,对象标识在试验考试中也会出现,希望考生多加练习,重点掌握。
本章的理论比较灵活,需理解的记忆,考试的时候要做到举一反三,不能只局限于文字定义。
第五章 软件测试
1.两种常用的测试技术:
软件产品与其他产品不同,其最大的成本是检验软件的错误、修正错误的成本,以及为了发现这些错误所进行的设计测试程序和运行测试程序的成本,两种常用的测试技术为,基于“白盒”的路径测试技术和基于“黑盒”的事务处理流程测试技术,白盒测试技术依据的是程序的逻辑结构,黑盒测试技术依据的是软件行为的描述。 2.软件测试及其目标:
软件测试可以定义为,按照规定规程,发现软件错误的过程,软件测试有两个目标,一为预防错误,二为发现错误。 3.软件测试和软件调试的区别:
测试从一个侧面证明程序员的“失败”,而调试是为了证明程序员的正确,测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序员是否通过测试,调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的,测试是有计划的,并要进行测试设计,而调试是不受时间约束的,测试是一个发现错误、改正错误、重新测试的过程,而调试是一个推理过程,测试的执行是有规程的,而调试的执行往往要求程序员进行必要推理以至直觉的“飞跃”,测试经常是由独立的测试组在不了解软件的条件下完成的,而调试必须由了解详细设计的程序员完成,大多数测试的执行和设计可由工具支持,而调试时,程序员能利用的工具主要是调试器。 4.测试用例:
指的是为了发现程序中的故障而专门设计的一组或多组数据。 5.测试过程模型:
环境模型、对象模型、错误模型。 6.软件错误类别:
结构错误、数据错误、编程错误、接口错误。 7.控制流程图及组成:
控制流程图是程序控制结构的图形表示,其基本元素是过程块、节点、判定,控制流程图与程序流程图之间的差异是在控制流程图中,不显示过程块的细节,而在程序流程图中,着重于过程属性的描述。 8.路径测试的基本策略:
路径测试技术的三种基本策略为,路径测试(PX),执行所有可能的穿过程序的控制流程路径,语句测试(P1),至少执行程序中所有语句一次,100%语句覆盖率(C1)的逻辑覆盖程序最弱,分支测试(P2),至少执行程序中每一分支一次(至少每个判定都获得一次“真”和“假”),100%分支覆盖率(C2)比100%语句覆盖在逻辑上要强,条件组合测试,在逻辑上比C1,C2更强。
9.路径选取的一般规则:
选取最简单的、具有一定功能含义的入口/出口路径,对已选的路径进行演化,选取无循环的路径、短路径、简单路径,选取没有明显功能含义的路径。 10.路径测试的目标:
执行足够的测试,以确保最小的C1+C2覆盖率。 11.事务处理流程图与控制流程图的区别与联系:
事务处理流程图与控制流程图的类同点是使用了相同的概念成分,不同之处是事务流程图是一种数据流程图,链支和过程块的定义有所差异,另外事务流程图的判定节点可能是一个复杂的过程,从而事务流程图中的判定只能是“抽象”,第三点不同之处是事务流程图中存在“中断”的作用,中断可以把一个过程等价的变换为具有繁多出口的链支,对此也要予以抽象。
12.事务处理流程测试的步骤:
获得事务处理流程图,浏览、复审,用例设计。 13.事务处理流程测试要解决的问题: 路径选取、激活、测试设备、测试数据库。 14.合理的测试序列:
单元测试、集成测试、有效性测试、系统测试。 15.单元测试及其内容:
单元测试主要检验软件设计的最小单位—模块,单元测试一般采用白盒测试技术,在单元测试期间,通常考虑模块的四个特征,模块接口、局部数据结构、“重要的”执行路径、错误执行路径,单元测试步骤分四部分,首先测试穿过模块接口的数据流,继之进行数据结构的测试,还要进行执行路径的选择测试,边界测试是单元测试中的最后工作,也是最重要的工作。
16.集成测试及其内容: