第四章
一、软件测试的目的和重要性
1. 目的:为了发现和改正错误
2. 为了发现程序中的错误而执行程序的过程
3. 好的测试方案使测试很可能发现尚未发现的错误
4. 成功的测试是发现了未发现的错误的测试
二、软件测试方法分为2种
1. 静态分析
2. 动态测试
三、动态测试方法分为:
白盒法:分析程序的内部逻辑结构,注意选择适当的覆盖标准。
黑盒法:不考虑程序内部结构与特性,只根据功能或程序的外部特性设计
四、软件测试的步骤
单元测试→集成测试→确认测试→系统测试
第五章
一、软件维护
1.维护种类
(1)改正性维护
(2)适应性维护
(3)完善性维护
(4)预防性维护
2. 副作用
(1)代码副作用
(2)数据副作用
(3)文档副作用
3. 可维护性的度量
(1)可理解性
(2)可测试性
(3)可修改性
(4)可移植性
第六章
一、面向对象(OO)
目的是有效地描述和刻画问题领域的信息和行为,以全局的观点来考虑系统中各种对象的联系,考虑系统的完整性和一致性,是对问题域的完整、直接的映射。
二、面向对象的分析(OOA)
通常建立三个模型:对象模型、动态模型、功能模型
三、面向对象方法学的要素和优点
1. 四个要素:
(1)对象
(2)类
(3)继承
(4)消息传递
Ps:实例:有某个特定的类所描述的一个具体对象。
消息:对象发出的服务请求。
封装:把对象的属性和方法结合成一个独立的单位,尽可能隐蔽对象的内部细节。
2. 面向对象=对象+类+继承+用消息通信
3. 优点:
(1)与人类习惯的思维方式一致
(2)稳定性好
(3)可重用性好
(4)较易开发大型软件产品
(5)可维护性好
四、统一建模语言(UML)
1. 定义:是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,从需求分析到规格,再到构造和配置。
2. UML语言中的关系
(1)关联关系
是一种结构化关系,指一种事物与另一种事物有联系。在UML图中用一条实线表示,在关联的两端可以标注关联双方的角色和多重性标记。其中有一对一、一对多和多对多关系。
(2)聚合关系
也称为聚集关系,是一种特殊关联关系,描述元素之间部分和整体之间的关系。
(3)组合关系
表示类之间整体和部分的关系,一种特殊的聚合关系。组合关系中部分和整体具有统一生存期,部分对象只能作为组合对象的一部分与组合对象同时存在。
(4)依赖关系
两个事物之间的语义关系。如事物A、B,A变化引起B变化,则称B依赖于A。在UML中用一条带有箭头的虚线表示。
(5)泛化关系
表示一般与特殊的关系。用一条带空心三角箭头的实线表示。
(6)实现关系
一个元素实现另一个元素。如类实现接口。带空心三角的虚线。
3. UML图有用例图、类图、对象图、状态图、顺序图、活动图、协作图、构件图、部署图9种。
Ps:动态建模只有顺序图、状态图和活动图。
五、用例图
1. 用例代表某些用户可见的功能,用于实现一个具体的用户目标。定义了系统的功能需求。用例图只写出谁做了什么。
2. 用例关系
(1)关联关系
(2)扩展关系:扩展用例是基础用例的一个相对独立且可选的用例。
(3)包含关系:如果两个以上的有大量一致的功能;一个用例的功能太多时,可以使用包含关系建立若干个更小的用例;执行基用例时,每次都必须调用被包含用例。
(4)泛化关系:一个或多个用例是某个一般用例的特殊化时使用泛化。
3. 用例图包含:
(1)参与者(actor)/执行者/角色:系统功能的使用者和维护者、其他系统、硬件设备、甚至是时钟。可以用泛化关系来描述多个参与者之间的公共行为。用一个小人表示。
(2)用例(use case):必须是由某一个参与者触发而产生的活动,即每个用例至少涉及一个参与者。每个参与者必须至少涉及一个用例。用椭圆表示。
(3)通信联系:执行者和用例之间交换信息。用线段连接。
4. 表示:
(1)关联(参与者和用例之间),实线箭头。
(2)包含(用例与用例之间),虚线箭头,上面写“《include》”,包含指向被包含。(必须)
(3)扩展(用例与用例之间),虚线箭头,上面写“《extend》”,扩展指向被扩展。(可以有)
(4)泛化(参与者之间),实线箭头,表示发出的事物“is a”被指向的事物。
六、类图
1. 描述类与类之间的静态关系。类图表示系统或领域中的实体及实体之间的关联,由表示类的类框和表示类之间如何关联的连线所组成。包的作用是把各种相关的建模元素组织在一起,形成一个整体。
2. 属性的可见性就是可访问性,分为:
(1)公有的(publiic):用+表示
(2)私有的(private):用-表示
(3)保护的(protected):用#表示
3. 类的相互关系
(1)聚合关系:整体和部分的关系。部分对象可同时参与多个整体对象的构成,称为共享聚集。关键词:“包含”、“组成”、“分为”。且在整体类旁边画空心菱形,用实线连接部分类。
(2)组合关系:整体和部分的关系,部分和整体具有统一生存期。如果部分类完全隶属于整体类,部分与整体共存亡,则称该聚聚为符合聚集,简称组成。用实心菱形(在整体这边画)。
(3)泛化关系(继承):表示一般与特殊的关系。空心箭头的实线,从子类指向父类。
七、对象图
1. 对象是类的实例(类可以实例化,接口不行;接口可以多继承,没有定义),因此对象图可以看做类图的实例,能帮助人们理解比较复杂的类图。
八、状态图
1. 建立类或对象的动态行为模型。状态图重点在于描述状态的控制流。
2. 状态图画的是某一个对象的状态,不是整个的。
3. 状态转换是指两个状态之间的关系,它描述了对象从一个状态进入另一个状态的情况,并执行了所包含的动作。
4. 符号及表示:
(1)椭圆或圆角矩形:状态
(2)箭头:状态转移
(3)事件(写在箭头旁边):引起状态转换的原因
(4)条件(跟在事件后面括号):状态转换的条件
(5)实心圆:初始状态
(6)内部实心的同心圆:最终状态
九、交互图的两种形式:顺序图(时序图)和协作图
1. 顺序图:
(1)描述对象之间动态交互的情况,着重表示对象间消息传递的时间顺序。
(2)对象用矩形框表示,框内标对象名。顺序图方向有从上到下和水平方向两种。箭头上写事件。
(3)横轴表示参与交互的对象,纵轴表示时间。
对象:行为的执行者,而不是类象。
生命线:是一个时间线,表示对象存在的时间段
2. 协作图:
(1)描述组成系统的各个成分之间如何协作来实现系统的交互行为。
(2)强调发送和接收消息的对象之间的组织。
(3)包含对象、链、消息。
Ps:区别在于前者描述时间顺序,后者描述对象之间的关系。两者语义等价,可以转换形式且不丢失任何信息。
十、活动图
1. 建模用例的工作流,理解业务处理过程、描述复杂过程的算法。
2. 活动,动作,转移、决策、同步条、业务对象、起始状态、终止状态
3. 是状态图的一种特殊情况。不需指明任何事件,只要动作被执行,活动图中的状态就自动开始转换。
4. 泳道:活动图中的区域划分。每一个泳道代表一个责任区域,一个泳道中包括一组相关活动。
十一、构件图
1.描述软件构件之间的相互依赖关系。
2.构件的类型:
(1)源构件:实现类的源代码文件
(2)二进制构件:一个对象代码文件、一个静态库文件或一个动态库文件
(3)可执行构件:一个可执行的程序文件,是链接所有二进制构件所得到的结果
(1)构件之间才有依赖、提供关系,节点间只有关联关系。
(2)实线表示服务的提供,虚线表示服务的依赖。接口:从代表构件的大矩形边框画出一条线,另一端为小空心圆,接口名字写在空心圆旁边。接口表示构建对外提供的服务。
(3)包含元素:组件、接口、关系
Ps:先写名称后写类型,不要被名字迷惑。如ServerHostMachine中,ServerHost是名字,Machine是类型。
十二、部署图(配置图)
1.用来描述系统所需的处理器和设备的拓扑结构
2.包含元素:节点、组件、关系。
3.一般一个系统只有一个部署图。