1、软件工程导论复习软件工程导论复习22022-12-26什么是软件什么是软件 软件的定义软件的定义软件由三部分组成:软件由三部分组成:程序:在运行时,能提供所希望的功能和性能的指程序:在运行时,能提供所希望的功能和性能的指令集令集 数据:使程序能够正确运行的数据数据:使程序能够正确运行的数据 文档:描述程序研制过程、方法及使用的文档文档:描述程序研制过程、方法及使用的文档 软件处理的是信息和逻辑软件处理的是信息和逻辑 软件的开发,绝不仅仅是编写程序软件的开发,绝不仅仅是编写程序 软件围绕着逻辑进行软件围绕着逻辑进行 软件就是一个信息交换器软件就是一个信息交换器 产生、管理、获取、修改、显示或传送
2、信息产生、管理、获取、修改、显示或传送信息32022-12-26 什么是软件危机什么是软件危机 软件危机是指在计算机软件的开发和维护过程中所遇软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。到的一系列严重问题。软件工程(软件工程(IEEE)1993年,提出软件工程年,提出软件工程 1)将系统化、规范化、可量化的工程原则和方法,将系统化、规范化、可量化的工程原则和方法,应用于软件的开发、运行和维护。应用于软件的开发、运行和维护。2)对对1)中方法的理论研究。中方法的理论研究。42022-12-26软件工程基本原理软件工程基本原理(开发与维护的指导开发与维护的指导)用分阶段的生命
3、周期计划严格管理用分阶段的生命周期计划严格管理坚持进行阶段评审坚持进行阶段评审实行严格的产品控制实行严格的产品控制采用现代程序设计技术采用现代程序设计技术结果应能清楚地审查结果应能清楚地审查开发小组的人员应该少而精开发小组的人员应该少而精1.承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性52022-12-26 软件工程方法学软件工程方法学 把在软件生命周期全过程中使用的一整套技术的集合称为把在软件生命周期全过程中使用的一整套技术的集合称为方法学方法学(methodology),也称范型,也称范型(paradigm)。软件工程方法学三个要素:方法、工具和过程。软件工程方法学三个
4、要素:方法、工具和过程。方法是完成软件开发各项任务的技术,回答方法是完成软件开发各项任务的技术,回答“如何做如何做”;工具是为方法的运用提供自动或半自动软件支撑环境,回答工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什用什么做么做”;过程是为获得高质量的软件要完成的一系列任务的框架,规定完成过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答各项任务步骤,回答“如何控制、协调、保证质量如何控制、协调、保证质量”。管理方法管理方法62022-12-26 目前使用得最广泛的软件工程方法学。目前使用得最广泛的软件工程方法学。传统方法学也称为生命周期方法学或结构化范型
5、。传统方法学也称为生命周期方法学或结构化范型。当软件规模较大,或对软件的需求是模糊的或随时间变化的时当软件规模较大,或对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功;候,使用结构化范型开发软件往往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。此外,使用传统方法学开发出的软件,维护起来通常都很困难。结构化静态分析,面向对象动态分析结构化静态分析,面向对象动态分析世界万物是变化的世界万物是变化的传统方法学与面向对象方法学传统方法学与面向对象方法学72022-12-26传统方法的特点传统方法的特点 生命周期模型生命周期模型 软件过程划分为若干个阶软件过程划
6、分为若干个阶段段 每个阶段有各自的任务每个阶段有各自的任务 阶段之间有某种顺序性阶段之间有某种顺序性把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称范型(paradigm)。IPO图是输入、处理、输出图的简称10:IF total_valid 0类图显示类及类之间的关系使用上述任何一种方法,都可以计算出流图的环形复杂度为6。功能模型定义“做什么”valuek 0由为对象定义的一系列操作决定行为图(behavior diagram)盒图盒图(N-S图图)2022-12-26621 1 PAD图图2022-12-26631 1判定表判定表2022-12-26
7、641 1用判定树表示计算行李费的算法判定树判定树2022-12-26651 1 伪码伪码2022-12-26661 1测试测试2022-12-26681 1 回归测试回归测试 (已执行过的测试用例的子集已执行过的测试用例的子集)包括下述三种不同的测试用例。包括下述三种不同的测试用例。检测软件全部功能的代表性测试用例。检测软件全部功能的代表性测试用例。专门针对可能受修改影响的软件功能的附加专门针对可能受修改影响的软件功能的附加测试。测试。针对被修改过的软件成分的测试。针对被修改过的软件成分的测试。2022-12-26691 1白盒测试技术白盒测试技术 逻辑覆盖是设计白盒测试方案的技术。设计逻辑
8、覆盖是设计白盒测试方案的技术。设计测试方案是测试阶段的关键技术问题。测试方案是测试阶段的关键技术问题。2022-12-26701 1 语句覆盖语句覆盖为暴露程序的错误,至少每个语句应该执行为暴露程序的错误,至少每个语句应该执行一次。一次。含义是,选择足够多的测试数据,使被测程含义是,选择足够多的测试数据,使被测程序中每个语句至少执行一次。序中每个语句至少执行一次。2022-12-26711 1路径2:1-2-10-12-13Vehicle and AirVehicle areInheritance 继承Abstraction 抽象在类的图标中描述属性和操作一个类通过一系列操作来定义行为Grou
9、ndVehicle检测软件全部功能的代表性测试用例。尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。初始化和终止错误。“喷泉”体现了面向对象软件开发过程迭代和无缝的特性。valuek minimum,其中kiAssociation 关联H/W specific code,O/S specific code general-purpose code这类图描述系统的静态结构,属于这类图的有类图(class diagram)和对象图(object diagram)。Attribute 属性例如,在公司和职员的关联中TextEditor不仅每个语句必须至少执行一次,软件的定义
10、软件由三部分组成:PROCEDURE average;所有的系统都包含了大量的类和对象 判定覆盖判定覆盖又叫分支覆盖又叫分支覆盖不仅每个语句必须至少执行一次,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次,也就是每个判定的每个分支都至少执行一次。行一次。条件覆盖条件覆盖不仅每个语句至少执行一次,而且判定表不仅每个语句至少执行一次,而且判定表达式中每个条件都取到各达式中每个条件都取到各种可能的结果。种可能的结果。2022-12-26721 1 判定判定/条件覆盖条件覆盖判定覆盖不一定包含
11、条件覆盖,条件覆盖也不一定判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,判定包含判定覆盖,判定/条件覆盖能同时满足这两种覆条件覆盖能同时满足这两种覆盖标准。盖标准。选取足够多的测试数据,使得判定表达式中的每个选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。都取到各种可能的结果。条件组合覆盖条件组合覆盖要求选取足够多的测试数据,使每个判定表达式要求选取足够多的测试数据,使每个判定表达式中中条件的各种可能组合都至少出现一次。条件的各种可能组合都至少出现一次。2022-12-2673
12、1 1路径测试路径测试Tom McCabe提出的一种白盒测试技术。提出的一种白盒测试技术。首先计算过程设计结果的逻辑复杂度,并以该首先计算过程设计结果的逻辑复杂度,并以该复杂度为指南定义执行路径的基本集合,从该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可以保证程序中每条基本集合导出的测试用例可以保证程序中每条语句至少执行一次,而且每个条件在执行时都语句至少执行一次,而且每个条件在执行时都将分别取将分别取true(真真)和和false(假假)值。值。2022-12-26741 1求平均值过程的流图使用基本路径测试技术设计使用基本路径测试技术设计测试用例步骤如下。测试用例步骤如
13、下。1.根据过程设计结果画根据过程设计结果画出相应的流图出相应的流图2022-12-26751 1 PROCEDURE average;/*这个过程计算不超过这个过程计算不超过100个在规定值域内的有效个在规定值域内的有效数字的平均值;同时计算有效数字的总和及个数字的平均值;同时计算有效数字的总和及个数。数。*/INTERFACE RETURNS average,total_input,total_valid;INTERFACE ACCEPTS value,minimum,maximum;TYPE value 1.100 IS SCALAR ARRAY;TYPE average,total_i
14、nput,total_valid,minimum,maximum,sum IS SCALAR;2022-12-26761 1TYPE i IS INTEGER;1:i1;total_inputtotal_valid0;sum0;2:DO WHILE valuei -999 3:AND total_input 1004:increment total_input by 1;5:IF valuei=minimum6:AND valuei 011:THEN average=sum/total_valid;12:ELSE average=-999;13:END IFEND average2022-12
15、-26781 1计算流图的环形复杂度计算流图的环形复杂度环形复杂度定量度量程序的逻辑复杂性。三环形复杂度定量度量程序的逻辑复杂性。三种方法来计算环形复杂度。种方法来计算环形复杂度。流图中的区域数等于环形复杂度。流图中的区域数等于环形复杂度。流图流图G的环形复杂度的环形复杂度V(G)E-N+2,其中,其中E是流是流图中边的条数,图中边的条数,N是流图中节点数。是流图中节点数。流图流图G的环形复杂度的环形复杂度V(G)P+1,其中,其中P是流图中是流图中判定节点的数目。判定节点的数目。使用上述任何一种方法,都可以计算出流图使用上述任何一种方法,都可以计算出流图的环形复杂度为的环形复杂度为6。202
16、2-12-26791 1 确定线性独立路径的基本集合确定线性独立路径的基本集合对于所描述的求平均值过程来说,由于环形复杂度为对于所描述的求平均值过程来说,由于环形复杂度为6,因此,因此共有共有6条独立路径。例如,下面列出了条独立路径。例如,下面列出了6条独立路径:条独立路径:路径路径1:1-2-10-11-13路径路径2:1-2-10-12-13路径路径3:1-2-3-10-11-13路径路径4:1-2-3-4-5-8-9-2-路径路径5:1-2-3-4-5-6-8-9-2-路径路径6:1-2-3-4-5-6-7-8-9-2-2022-12-26801 1 设计可强制执行基本集合中每条路径测试
17、用例设计可强制执行基本集合中每条路径测试用例选取数据使得在测试每条路径时都适当设置好选取数据使得在测试每条路径时都适当设置好了各个判定节点的条件。了各个判定节点的条件。路径路径1的测试用例:的测试用例:valuek有效输入值,其中有效输入值,其中ki(i的定义在下的定义在下)valuei-999,其中,其中2i100预期结果:基于预期结果:基于k的正确平均值和总数的正确平均值和总数注意,路径注意,路径1无法独立测试,必须作为路径无法独立测试,必须作为路径4、5和和6的的一部分来测试。一部分来测试。路径路径2的测试用例:的测试用例:value1-999预期结果:预期结果:average-999,
18、其他都保持初始值,其他都保持初始值2022-12-26811 1 路径路径4的测试用例:的测试用例:valuei有效输入值,其中有效输入值,其中i100valuek minimum,其中,其中ki预期结果:其于预期结果:其于k的正确平均值和总数的正确平均值和总数 路径路径5的测试用例:的测试用例:valuei有效输入值,其中有效输入值,其中i100valuekmaximum,其中,其中ki预期结果:其于预期结果:其于k的正确平均值和总数的正确平均值和总数 路径路径6的测试用例:的测试用例:valuei=有效输入值,其中有效输入值,其中i100预期结果:正确的平均值和总数预期结果:正确的平均值和
19、总数2022-12-26821 1黑盒测试技术黑盒测试技术 黑盒测试着重测试软件的功能需求,让软件工程黑盒测试着重测试软件的功能需求,让软件工程师设计出能充分检查程序所有功能需求的输入条师设计出能充分检查程序所有功能需求的输入条件集。件集。黑盒测试并不能取代白盒测试技术,它是与白盒黑盒测试并不能取代白盒测试技术,它是与白盒测试互补的测试互补的方法,它很可能发现白盒测试不易发方法,它很可能发现白盒测试不易发现的其他不同类型的错误。现的其他不同类型的错误。2022-12-26831 1计算流图的环形复杂度关联是强制的(不包含零个)或随意的(包含零个)?流图中的区域数等于环形复杂度。用判定树表示计算
20、行李费的算法所有子类的实例能够继承这些操作而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。给出一个Person的实例,我们能够知道他属于哪家公司GroundVehiclecalculateTax()程序:在运行时,能提供所希望的功能和性能的指令集构件图描述代码构件的物理结构及各个构件之间的依赖关系。班机 747 on 11/11多重性决定可以揭示建模过程中隐藏的问题更加准确地描述公共数据和过程Association 关联一个实例可以连接的其它实例的最大数目?几种重要的关系类型:中间框中列出主要的处理发现、求精、建模、规格说明和复审的过程例如:A和1A5
21、含义相同。每个符号用黑盒子形式定义了组成系统的一个部件。要求选取足够多的测试数据,使每个判定表达式中条件的各种可能组合都至少出现一次。黑盒测试力图发现下述类型的错误:黑盒测试力图发现下述类型的错误:功能不功能不正确或遗漏了功能;正确或遗漏了功能;界面错误;界面错误;数据结构数据结构错误或外部数据库访问错误;错误或外部数据库访问错误;性能错误;性能错误;初始化和终止错误。初始化和终止错误。白盒测试在测试过程的早期阶段进行,而黑盒测白盒测试在测试过程的早期阶段进行,而黑盒测试主要用于测试过程的后期。试主要用于测试过程的后期。黑盒测试故意黑盒测试故意不考虑程序的控制结构,而把注意不考虑程序的控制结构
22、,而把注意力集中于信息域。力集中于信息域。2022-12-26841 1 等价划分等价划分:确定输入数据的有效等价类和无效确定输入数据的有效等价类和无效等价类。等价类。边界值分析边界值分析 错误推测错误推测2022-12-26851 1面向对象基础面向对象基础什么是对象技术什么是对象技术 基于对象概念的软件开发方法基于对象概念的软件开发方法 对象包含有数据及处理数据的功能函数对象包含有数据及处理数据的功能函数 在分析、设计和实现的整个过程中只使用在分析、设计和实现的整个过程中只使用一个概念对象的开发方法一个概念对象的开发方法 能够解决软件危机中大多数问题的方法能够解决软件危机中大多数问题的方法
23、对象对象 =数据数据 +功能功能2022-12-26871 1对象技术的优势对象技术的优势 稳定稳定:较小的需求变化不会导致系统结构大较小的需求变化不会导致系统结构大的改变的改变 举例:某公司的销售处理系统举例:某公司的销售处理系统定单定单合同合同出费出费2022-12-26881 1对象技术的优势对象技术的优势 稳定稳定:数据和功能都打包在一起,从而改善软件数据和功能都打包在一起,从而改善软件的再重用性的再重用性 软件重用能提高质量,减少由于编制新的系统代软件重用能提高质量,减少由于编制新的系统代码而产生的成本码而产生的成本FileMgrMacroEditorMathUtilitiesTex
24、tEditorPrintUtilitiesFormatEditorMenusStringUtilitiesSpreadsheetWord ProcessorReusable-Component Repository2022-12-26891 1对象技术的优势对象技术的优势 面向对象的模型更加贴切地反映了现实世面向对象的模型更加贴切地反映了现实世界界 更加准确地描述公共数据和过程更加准确地描述公共数据和过程 易于理解,尤其对于使用者易于理解,尤其对于使用者现实世界现实世界Laser PrinterExternal DriveComputer对象图对象图2022-12-26901 1对象技术的优势
25、对象技术的优势 面向对象的方法支持大规模开发面向对象的方法支持大规模开发 可以严格定义各个组件之间的交互可以严格定义各个组件之间的交互 减少内部的依赖关系减少内部的依赖关系 减少集成的问题减少集成的问题 支持并行开发支持并行开发2022-12-26911 1对象技术的优势对象技术的优势 帮助开发多层结构帮助开发多层结构 Equipment and Customer specific CodeProcesses and other application code Major abstractions,classes,etc.MechanismsH/W specific code,O/S spe
26、cific code general-purpose code12345ApplicationSpecificApplicationIndependentLess ReuseMore Reuse2022-12-26921 1面向对象概念面向对象概念 Object 对象对象 Class 类类 Instance 实例实例 State 状态状态 Behavior 行为行为 Attribute 属性属性 Operation 操作操作(Method方法方法)Inheritance 继承继承 Subclasses 子类子类 Superclasses 父类父类 Generalization 普遍化普遍化 P
27、olymorphism 多态多态2022-12-26931 1面向对象概念面向对象概念 Abstraction 抽象抽象 Encapsulation 封装封装 Association 关联关联 Role 角色角色 Multiplicity 多重性多重性 Aggregation 聚合聚合 Dependency association 依赖依赖 Package 包包 Use Case 用例用例 Scenario 脚本脚本 Actor2022-12-26941 1什么是对象什么是对象 一个对象代表了一个现实的或虚构的实体一个对象代表了一个现实的或虚构的实体 自然实体自然实体 概念实体概念实体 软件实
28、体软件实体化学过程化学过程连接显示连接显示2022-12-26951 1对象的属性对象的属性 对象是应用中具有明显边界和含义的概念、对象是应用中具有明显边界和含义的概念、抽象或事物抽象或事物 一个对象有三个重要属性一个对象有三个重要属性:状态状态 行为行为 标识标识 术语术语“实例实例”是是“对象对象”的同义词的同义词2022-12-26961 1对象的状态对象的状态 一个对象的状态是它反映于现实世界的一一个对象的状态是它反映于现实世界的一系列属性:系列属性:参数的数值参数的数值(也就是也就是,与对象有关系的数据与对象有关系的数据)它与其它对象的关系它与其它对象的关系 任一时刻的历史状态任一时
29、刻的历史状态可能的状态:可能的状态:停泊停泊 运营运营着陆着陆 终止终止班机班机 747 7472022-12-26971 1对象的行为对象的行为 定义当其它对象发出请求时,该对象如何定义当其它对象发出请求时,该对象如何反应反应 由为对象定义的一系列操作决定由为对象定义的一系列操作决定班机班机 747核对出发时间核对出发时间(返回返回 9:27)机票代理机票代理2022-12-26981 1对象的标识对象的标识 每一个对象都有一个唯一的标识每一个对象都有一个唯一的标识,即使其即使其状态有可能与其它对象一样状态有可能与其它对象一样班机班机 747 on 11/10班机班机 747 on 11/1
30、1班机班机 747 on 11/122022-12-26991 1什么是类(什么是类(Class)类是一组具有相同结构和行为的对象的集类是一组具有相同结构和行为的对象的集合合 共同的结构通过属性表现出来共同的结构通过属性表现出来(i.e.数据数据)共同的行为通过操作表现出来共同的行为通过操作表现出来(i.e.功能功能)班机班机 747结构结构班机号班机号日期日期分配的班分配的班机机起点起点终点终点状态状态行为行为装载设备装载设备起飞起飞延迟延迟取消取消终止终止2022-12-261001 1类的示例类的示例ClassEmployeeStructureNameAddressPositionSal
31、aryStart DateEnd DateBehaviorHireFirePromoteIncrease SalaryRetire2022-12-261011 1类图:用来表达类类图:用来表达类 类图是一种主要的图形化对象表示法类图是一种主要的图形化对象表示法 类图显示类及类之间的关系类图显示类及类之间的关系 一个类通过在类图标中的类名(唯一的)来一个类通过在类图标中的类名(唯一的)来代表代表班机班机2022-12-261021 1属性属性 属性是类的特征或特性属性是类的特征或特性 属性的值是某一特定对象的属性值属性的值是某一特定对象的属性值 在类中属性名必须是唯一的在类中属性名必须是唯一的
32、每一个类的实例都有为这个类定义的所有每一个类的实例都有为这个类定义的所有属性的值属性的值 例如:例如:银行帐户类属性银行帐户类属性帐号帐号银行名称银行名称拥有者拥有者金额金额Mary的银行帐户属性值的银行帐户属性值12345678First National BankMary Smith$1024.482022-12-261031 1操作操作 对象的行为是由为此对象定义的一系列操对象的行为是由为此对象定义的一系列操作决定的作决定的 操作访问或修改对象的属性值操作访问或修改对象的属性值 一个类可能同时存在多个实例,也可能在一个类可能同时存在多个实例,也可能在某一时刻没有实例某一时刻没有实例 一个
33、类的所有实例都可以使用在这个类中一个类的所有实例都可以使用在这个类中定义的操作定义的操作2022-12-261041 1属性和操作的标记法属性和操作的标记法 在类的图标中描述属性和操作在类的图标中描述属性和操作 通常只显示最重要的属性和操作,避免图通常只显示最重要的属性和操作,避免图形混乱形混乱 属性显示在操作上方,操作的名字后跟有属性显示在操作上方,操作的名字后跟有()()班机班机flightNumberdatedeparturetimestatusrelease()takeOff()属性属性操作操作2022-12-261051 1类是生成对象的模板类是生成对象的模板 类是生成对象的模板类是
34、生成对象的模板 类的定义中包含有产生和删除对象的操作属性类的定义中包含有产生和删除对象的操作属性显示在操作上方,操作的名字后跟有显示在操作上方,操作的名字后跟有()一个类定义了使用哪种数据表示法来描述一个类定义了使用哪种数据表示法来描述属性属性 每一个实例都采用有属性值的数据表示法每一个实例都采用有属性值的数据表示法 一个类通过一系列操作来定义行为一个类通过一系列操作来定义行为 这种操作能在每个实例中激活这种操作能在每个实例中激活班机班机Flight 187Flight 121Flight 7472022-12-261061 1类和对象的关系类和对象的关系 每一个对象都是某一个类的实例每一个对
35、象都是某一个类的实例 每一个类在某一时刻都有零个或更多的实每一个类在某一时刻都有零个或更多的实 类是静态的类是静态的;它们的存在、语义和关系在它们的存在、语义和关系在 序执行前就已经定义好了序执行前就已经定义好了 对象是动态的对象是动态的;它们在程序执行时可以被它们在程序执行时可以被 建和删除建和删除2022-12-261071 1关系关系 所有的系统都包含了大量的类和对象所有的系统都包含了大量的类和对象 对象通过与其它对象的协作完成系统的功对象通过与其它对象的协作完成系统的功能行为协作通过关系来实现能行为协作通过关系来实现 几种重要的关系类型几种重要的关系类型:关联关联 聚合聚合 依赖依赖
36、继承继承2022-12-261081 1示例示例:关联关联 在一个工资系统中有下面两个类在一个工资系统中有下面两个类:关联表示了双向的关系,例如关联表示了双向的关系,例如:给出一个给出一个PersonPerson的实例的实例,我们能够知道他属于我们能够知道他属于哪家公司哪家公司 给出一个给出一个 CompanyCompany的实例的实例,我们能够知道在其我们能够知道在其中工作的所有人中工作的所有人PersonCompany2022-12-261091 1关联的多重性关联的多重性 多重性是指多个实例参与一个关联多重性是指多个实例参与一个关联 多重性通过位于关联线某一端的一个表达多重性通过位于关联
37、线某一端的一个表达式或符号来表示式或符号来表示 对于每个关联关系对于每个关联关系,需要做出两个多重性的需要做出两个多重性的决定决定 例如例如,在公司和职员的关联中在公司和职员的关联中 每个公司可以雇用多个职员每个公司可以雇用多个职员 每个职员只有一个从属公司每个职员只有一个从属公司2022-12-261101 1示例:关联的多重性示例:关联的多重性 多重性决定可以揭示建模过程中隐藏的问多重性决定可以揭示建模过程中隐藏的问题题 职员会不会失业职员会不会失业?公司能不能没有职员公司能不能没有职员?一个职员能不能有两份工作一个职员能不能有两份工作?职员职员职员职员雇主雇主公司公司1.1.*1 120
38、22-12-261111 1常用的多重性表示法常用的多重性表示法 多重性能解决两个问题多重性能解决两个问题 关联是强制的关联是强制的(不包含零个不包含零个)或随意的或随意的(包含零包含零个个)?一个实例可以连接的其它实例的最大数目一个实例可以连接的其它实例的最大数目?常用的多重性表示法常用的多重性表示法:1只有一个只有一个 0.*零或更多零或更多 1.*一个或更多一个或更多 0.1 零或一个零或一个*零或更多零或更多 3.7 指定的范围指定的范围(3 or 4 or 5 or 6 or 7)1.3,7结合使用结合使用(1 or 2 or 3 or 7)2022-12-261121 1自反关联自
39、反关联 自反关联指同一个类中的对象的关系自反关联指同一个类中的对象的关系 表示同一个类中多个对象的协作表示同一个类中多个对象的协作A course may have many pre-requisitesA course may be a pre-requisite for many other coursesPre-requisiteCourse0.*0.*2022-12-261131 1聚合(包含)聚合(包含)聚合是一种特殊的关联,体现整体和部分聚合是一种特殊的关联,体现整体和部分的关系的关系 聚合是一种聚合是一种“has-a”或包含的关系或包含的关系 同样可以使用多重性同样可以使用多重性
40、CompanyDepartment1.*12022-12-261141 1依依 赖赖 依赖表示一个对象需要其它对象为其提供依赖表示一个对象需要其它对象为其提供服务服务 又可称为又可称为client-supplier 关系关系 client 使用使用supplier提供的服务提供的服务 supplier 不需要了解不需要了解 client(s)单向关系单向关系ControllerDisplay Itemcontrols2022-12-261151 1继承继承 继承表示一个类从其它类中获得结构和行继承表示一个类从其它类中获得结构和行为(子类为(子类/父类)父类)又名普遍化又名普遍化 交通工具是一个
41、父类交通工具是一个父类 地面交通工具和空中交通工具是子类地面交通工具和空中交通工具是子类VehicleGroundVehicleAirVehicleThe arrow points toward the superclass2022-12-261161 1继承继承 继承表示子类从父类继承时抽象的层次继承表示子类从父类继承时抽象的层次 单继承:子类只从一个父类继承单继承:子类只从一个父类继承 多继承:子类从多于一个的父类继承多继承:子类从多于一个的父类继承 继承通常被称为继承通常被称为“is-a”或或“kind-of”一个子类的实例也一个子类的实例也“is a”父类的实例父类的实例 一个子类的实
42、例是一个子类的实例是“kind-of”父类父类2022-12-261171 1多层次多层次A Car is a kind of GroundVehicle which is a kind of VehicleVehicle and AirVehicle areancestors of AirplaneAirVehicle and Airplane are descendants of VehicleVehicleGroundVehicleAirVehicleCarTruckAirplaneHelicopter2022-12-261181 1继承的内容继承的内容 属性属性 操作操作 关系关系 约
43、束约束 继承平衡类之间的共同之处继承平衡类之间的共同之处2022-12-261191 1继承属性继承属性 属性在继承结构的最高一层定义属性在继承结构的最高一层定义 所有子类的实例能够继承这些属性所有子类的实例能够继承这些属性 每个子类可以增加或重新定义继承的属性每个子类可以增加或重新定义继承的属性;但在修改是要加倍注意但在修改是要加倍注意GroundVehiclelicenseNumberweightCarTrucktonnageA truck has three attributes:licenseNumberweighttonnage2022-12-261201 1继承操作继承操作 属性在
44、继承结构的最高一层定义属性在继承结构的最高一层定义 所有子类的实例能够继承这些操作所有子类的实例能够继承这些操作 每个子类可以增加或重新定义继承的属性每个子类可以增加或重新定义继承的属性GroundVehiclelicenseNumberweightregister()CarTrucktonnagecalculateTax()A truck has three attributes:licenseNumberweighttonnageand two operations:registercalculateTax2022-12-261211 1继承关系继承关系 关系也可以继承关系也可以继承 每个
45、子类都可以分享继承的关系每个子类都可以分享继承的关系GroundVehiclelicenseNumberweightregister()A truck has an ownerCarTrucktonnagecalculateTax()OwnerPerson1.*and a car has an owner12022-12-261221 1对象模型化技术对象模型化技术OMT 对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型。这个模型化的过程是一个迭代过程。2022-12-261231 1基于三个模型的分析过程基于三个模型的分析过程 功能模型着重于系统内部数据的功能
46、模型着重于系统内部数据的传送和处理。传送和处理。功能模型定义“做什么”动态模型定义“何时做”对象模型定义“对谁做”。2022-12-261241 1UML的图的图用例图用例图(use-case diagram)用例是对系统提供的功能用例是对系统提供的功能(即系统的具体用法即系统的具体用法)的描述。的描述。用例图从用户的角度描述系统功能,并指出各个功能用例图从用户的角度描述系统功能,并指出各个功能的操作者。的操作者。1.用例图定义了系统的功能需求。用例图定义了系统的功能需求。2022-12-261251 1静态图静态图(static diagram)这类图描述系统的静态结构,属于这类图的有类图这
47、类图描述系统的静态结构,属于这类图的有类图(class diagram)和对象图和对象图(object diagram)。类图不仅定义系统中的类,表示类与类之间的关系类图不仅定义系统中的类,表示类与类之间的关系(例例如,关联、依赖、泛化和细化等关系如,关联、依赖、泛化和细化等关系),也表示类的内,也表示类的内部结构部结构(类的属性和操作类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命期内类图描述的是一种静态关系,在系统的整个生命期内都是有效的。都是有效的。2022-12-261261 1 对象图是类图的实例,它使用几乎与类图完全相同的图示对象图是类图的实例,它使用几乎与类图完全相同
48、的图示符号。两者之间的差别在于,对象图表示的是类的多个对符号。两者之间的差别在于,对象图表示的是类的多个对象实例,而不是实际的类。象实例,而不是实际的类。由于对象有生命周期,因此对象图只能在系统的某个时间由于对象有生命周期,因此对象图只能在系统的某个时间段内存在。段内存在。一般说来,对象图没有类图重要,它主要用来帮助对类图一般说来,对象图没有类图重要,它主要用来帮助对类图的理解,也可用在协作图中,表示一组对象之间的动态协的理解,也可用在协作图中,表示一组对象之间的动态协作关系。作关系。2022-12-261271 1行为图行为图(behavior diagram)这类图描述系统的动态行为和组成
49、系统的对象间的交互这类图描述系统的动态行为和组成系统的对象间的交互关系,包括状态图关系,包括状态图(state diagram)和活动图和活动图(activity diagram)两种图形。两种图形。状态图描述类的对象可能具有的所有状态,以及引起状状态图描述类的对象可能具有的所有状态,以及引起状态变化的事件,状态变化称作状态转换。通常,状态图态变化的事件,状态变化称作状态转换。通常,状态图是对类图的补充。是对类图的补充。2022-12-261281 1 实际使用时,并不需要为每个类都画状态图,仅需要实际使用时,并不需要为每个类都画状态图,仅需要为那些有多个状态,且其行为在不同状态有所不同的为那
50、些有多个状态,且其行为在不同状态有所不同的类画状态图。类画状态图。活动图描述为满足用例要求而进行的动作以及动作间活动图描述为满足用例要求而进行的动作以及动作间的关系。的关系。活动图是状态图的一个变种,它是另一种描述交互的活动图是状态图的一个变种,它是另一种描述交互的方法。方法。2022-12-261291 1交互图交互图(interactive diagram)这类图描述对象间的交互关系,包括顺序图这类图描述对象间的交互关系,包括顺序图(sequence diagram)和协作图和协作图(collaboration diagram)两种图形。两种图形。顺序图显示若干个对象间的动态协作关系,它强