版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程复习,第1章 基础知识,2020/7/11,1,2,什么是软件,软件的定义软件由三部分组成: 程序:在运行时,能提供所希望的功能和性能的指令集 数据:使程序能够正确运行的数据 文档:描述程序研制过程、方法及使用的文档 软件处理的是信息和逻辑 软件的开发,绝不仅仅是编写程序 软件围绕着逻辑进行 软件就是一个信息交换器 产生、管理、获取、修改、显示或传送信息,软件程序,2020/7/11,3,什么是软件危机 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。,软件工程(IEEE) 1993年,提出软件工程 1) 将系统化、规范化、可量化的工程原则和方法,应用于软件的开发、运
2、行和维护。 2) 对1)中方法的理论研究。,2020/7/11,4,软件工程基本原理 (开发与维护的指导) 用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应该少而精 承认不断改进软件工程实践的必要性,2020/7/11,5,软件工程方法学 把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称范型(paradigm)。 软件工程方法学三个要素:方法、工具和过程。 方法是完成软件开发各项任务的技术,回答“如何做”; 工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什么做”;
3、过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答“如何控制、协调、保证质量”。,管理方法,2020/7/11,6,目前使用得最广泛的软件工程方法学。 传统方法学也称为生命周期方法学或结构化范型。 当软件规模较大,或对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功; 此外,使用传统方法学开发出的软件,维护起来通常都很困难。 结构化静态分析,面向对象动态分析,世界万物是变化的,传统方法学与面向对象方法学,2020/7/11,7,传统方法的特点,生命周期模型 软件过程划分为若干个阶段 每个阶段有各自的任务 阶段之间有某种顺序性,2020/7/11,
4、8,面向对象方法: 对象作为融合数据及在数据之上的操作行为的统一的软件构件。 把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作。 按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,称为继承。 对象彼此间仅能通过发送消息互相联系封装性。,数据:静态 操作:动态,Everything is Object.,2020/7/11,大连理工大软件学院,9,1.3 软件生命周期,软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段,每个
5、阶段有各自的任务。,2020/7/11,1,10,问题定义 可行性研究 需求分析 概要设计 详细设计 编码和单元测试 综合测试 软件维护,2020/7/11,1,11,实际的瀑布模型,软件过程模型(生命周期模型),2020/7/11,1,12,快速原型模型,2020/7/11,1,13,增量模型,瀑布模型:力求一次性给用户完整的系统。 增量模型:逐步增加系统功能。 需要开放的架构设计。,2020/7/11,1,14,完整的螺旋模型,2020/7/11,1,15,喷泉模型,迭代是OO开发过程的主要特性。 喷泉模型是典型的面向对象生命周期模型。 “喷泉” 体现了面向对象软件开发过程迭代和无缝的特性
6、。 为避免喷泉模型的过分无序,把一个线性过程作为总目标。,迭代,2020/7/11,1,16,喷泉模型,迭代:逐步求精 阶段间没有明显的界限面向对象的思想保证了各个阶段开发的一致性。,迭代是OO开发过程的主要特性。 喷泉模型是典型的面向对象生命周期模型。 “喷泉” 体现了面向对象软件开发过程迭代和无缝的特性。,2020/7/11,1,17,可行性与需求分析,可行性研究 不是解决问题,而是确定问题是否值得去解决 较高层次的系统分析和设计过程 需求分析 发现、求精、建模、规格说明和复审的过程 反复求精多次细化,得出对目标系统的完整、准确和具体的要求。 建立数据模型、功能模型和行为模型等三种模型。
7、还要写出准确的软件需求规格说明。,。,2020/7/11,1,19,系统流程图,系统流程图 概括描绘物理系统的传统工具 用图形符号,以黑盒子形式描述组成系统的每个部件 程序、文档、数据库、人工过程,2020/7/11,1,20,系统流程图例子,例子,每个符号用黑盒子形式定义了组成系统的一个部件。 没有部件内部的具体工作过程 箭头确定通过系统的逻辑路径(信息流动路径),2020/7/11,1,21,数据流图,数据流图(DFD) 描绘信息流和数据从输入移动到输出的过程中所经受的变换。,或,或,或,2020/7/11,1,22,加工中常见关系的符号表示,2020/7/11,1,23,2020/7/1
8、1,1,24,把处理事务的功能进一步分解后的数据流图,2020/7/11,1,25,数据字典,数据字典是关于数据的信息的集合,即对DFD图中包含的元素的定义的集合。 数据字典的用途是供人查阅不了解的条目的解释。提供分析设计过程中关于数据的描述。 数据字典与DFD相辅相成。 只有DFD和对应的元素的精确定义放在一起,才能构成系统的规格说明。,2020/7/11,1,26,定义数据的方法, 意思是等价于(或定义为); 意思是和(即,连接两个分量); 意思是或(即,从方括弧内列出的若干个分量中选择一个),用“”号分开供选择的分量; 意思是重复(即,重复花括弧内的分量); ( )意思是可选(即,圆括弧
9、里的分量可有可无)。 使用上限和下限进一步注释表示重复的花括弧。 左边用上角标和下角标分别表明重复的上限和下限; 左侧标明重复的下限,在闭括弧的右侧标明上限。 例如: A和1A5 含义相同。 ,1,5,2020/7/11,1,27,数据字典的实现,CASE工具 人工卡片,2020/7/11,1,28,实体关系图,数据模型包含三种相互关联的信息:数据对象、描述数据对象属性及数据对象彼此间相互连接的关系。,2020/7/11,1,29,某校教学管理 ER 图,2020/7/11,1,30,学生和课程之间的E-R模型 学生和课程之间的多对多联系E-R模型; (b) 将多对多联系转换为一对多联系E-R
10、模型,选课,m,n,学号,专业,年级,课名,课号,学时,1,n,学号,专业,课名,课号,学时,学号,课号,n,1,姓名,课程,学生,姓名,课程,学分,学生,年级,选课,学分,(a),(b),2020/7/11,1,31,其他图形工具,Warnier图,2020/7/11,1,32,其他图形工具(3),IPO图,2020/7/11,1,33,其他图形工具(2),IPO图 IPO图是输入、处理、输出图的简称 左边框中列出有关的输入 中间框中列出主要的处理 右边框中列出产生的输出 处理的顺序暗示了执行的顺序 箭头指出数据通信的情况,2020/7/11,1,34,总体设计,总体设计,概要设计和详细设计
11、。 概要设计主要任务是通过仔细分析软件规格说明,适当地对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构。 详细设计阶段详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。,2020/7/11,1,36,模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 可以由许多程序员分工编写不同的模块 可以使软件结构清晰,便于扩展 使软件容易测试和调试,因而有助于提高软件的可靠性。 模块大小要适中,不过分细。,2020/7/11,1,37,模块独立,模块的独立程度可以由两个定性标
12、准来度量,分别称为内聚和耦合。 耦合:衡量不同模块彼此间互相依赖(连接)紧密程度; 内聚:衡量一个模块内部各个元素彼此结合的紧密程度。,2020/7/11,1,38,耦合是对一个软件结构内不同模块之间互连程度的度量。 尽可能松散耦合,2020/7/11,1,39,数据耦合: 特征耦合: 控制耦合: 外部耦合: 公共耦合: 内容耦合:,弱 强,尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。,2020/7/11,1,40,内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。 简单地说,理想内聚的模块只做一件事情。 ,2020/7/11,1
13、,41,功能内聚: 信息内聚: 通信内聚: 过程内聚: 时间内聚: 逻辑内聚: 巧合内聚:,强 弱,设计时应该力求做到高内聚。,2020/7/11,1,42,改进软件结构提高模块独立性 模块规模应该适中 深度、宽度、扇出和扇入都应适当 模块的作用域应该在控制域之内 力争降低模块接口的复杂程度 设计单入口单出口的模块 模块功能应该可以预测,2020/7/11,1,43,描绘软件结构的图形工具,层次图和HIPO图 结构图,2020/7/11,1,44,正文加工系统的层次图,2020/7/11,1,45,正文加工系统的H图,2020/7/11,1,46,结构图的例子产生最佳解的一般结构,2020/7
14、/11,1,47,软件结构设计方法,面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。 利用数据流图中的“映射“,把数据流图变换成软件结构。,2020/7/11,1,48,变换流和事务流,2020/7/11,1,49,设计步骤 复查基本系统模型。 复查并精化数据流图。 确定数据流图具有变换特性还是事务特性。 确定输入流和输出流的边界,从而孤立出变换中心。 完成“第一级分解”。 完成“第二级分解”。 使用设计度量和启发规则对第一次分割得到的软件结构进一步精化。,2020/7/11,1,50,数字仪表板系统的数据流图,精化数据流图 数据流图具有变换特性还是事务特性,2020/7/11
15、,1,51,具有边界的数据流图,确定输入流和输出流的边界,从而孤立出变换中心,2020/7/11,1,52,第一级分解的方法,2020/7/11,1,53,数字仪表板系统的第一级分解,完成“第一级分解”,2020/7/11,1,54,第二级分解的方法,2020/7/11,1,55,未经精化的输入结构,完成“第二级分解”,2020/7/11,1,56,精化后的数字仪表板系统的软件结构,软件结构进一步精化,2020/7/11,1,57,事务分析的映射方法,2020/7/11,1,58,详细设计,详细设计阶段主要完成界面和程序过程设计 过程设计应该在数据设计、体系结构设计和接口设计完成之后进行 程序
16、员将根据过程设计写出实际的程序代码。,2020/7/11,1,60,结构程序设计的经典定义如下所述: 如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。,2020/7/11,1,61,过程设计的工具,程序流程图 ,2020/7/11,1,62,盒图(N-S图),2020/7/11,1,63,PAD图,2020/7/11,1,64,判定表,2020/7/11,1,65,用判定树表示计算行李费的算法,判定树,2020/7/11,1,66,伪码,2020/7/11,1,67,测试,2020/7/11,1,69,回归测试
17、(已执行过的测试用例的子集)包括下述三种不同的测试用例。 检测软件全部功能的代表性测试用例。 专门针对可能受修改影响的软件功能的附加测试。 针对被修改过的软件成分的测试。,2020/7/11,1,70,白盒测试技术,逻辑覆盖是设计白盒测试方案的技术。设计测试方案是测试阶段的关键技术问题。,2020/7/11,1,71,语句覆盖 为暴露程序的错误,至少每个语句应该执行一次。 含义是,选择足够多的测试数据,使被测程序中每个语句至少执行一次。,2020/7/11,1,72,判定覆盖 又叫分支覆盖 不仅每个语句必须至少执行一次, 而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支
18、都至少执行一次。 条件覆盖 不仅每个语句至少执行一次,而且判定表达式中每个条件都取到各种可能的结果。,2020/7/11,1,73,判定/条件覆盖 判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,判定/条件覆盖能同时满足这两种覆盖标准。 选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。 条件组合覆盖 要求选取足够多的测试数据,使每个判定表达式中条件的各种可能组合都至少出现一次。,2020/7/11,1,74,路径测试 Tom McCabe提出的一种白盒测试技术。 首先计算过程设计结果的逻辑复杂度,并以该复杂度为指南定义执行
19、路径的基本集合,从该基本集合导出的测试用例可以保证程序中每条语句至少执行一次,而且每个条件在执行时都将分别取true(真)和false(假)值。,2020/7/11,1,75,求平均值过程的流图,使用基本路径测试技术设计测试用例步骤如下。 根据过程设计结果画出相应的流图,2020/7/11,1,76,PROCEDURE average; /*这个过程计算不超过100个在规定值域内的有效数字的平均值;同时计算有效数字的总和及个数。*/ INTERFACE RETURNS average, total_input, total_valid; INTERFACE ACCEPTS value, min
20、imum, maximum; TYPE value 1.100 IS SCALAR ARRAY; TYPE average, total_input, total_valid, minimum, maximum, sum IS SCALAR;,2020/7/11,1,77,TYPE i IS INTEGER; 1: i1; total_inputtotal_valid0; sum0; 2: DO WHILE valuei -999 3: AND total_input 100 4: increment total_input by 1; 5: IF valuei = minimum 6: AN
21、D valuei = maximum 7: THEN increment total_valid by 1; sumsum+valuei; 8: END IF increment i by 1; 9: END DO,2020/7/11,1,78,10: IF total_valid 0 11: THEN average = sum/total_valid; 12: ELSE average = -999; 13: END IF END average,2020/7/11,1,79,计算流图的环形复杂度 环形复杂度定量度量程序的逻辑复杂性。三种方法来计算环形复杂度。 流图中的区域数等于环形复杂度
22、。 流图G的环形复杂度V(G)E-N+2,其中E是流图中边的条数,N是流图中节点数。 流图G的环形复杂度V(G)P+1,其中P是流图中判定节点的数目。 使用上述任何一种方法,都可以计算出流图的环形复杂度为6。,2020/7/11,1,80,确定线性独立路径的基本集合 对于所描述的求平均值过程来说,由于环形复杂度为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
23、-8-9-2- ,2020/7/11,1,81,设计可强制执行基本集合中每条路径测试用例 选取数据使得在测试每条路径时都适当设置好了各个判定节点的条件。 路径1的测试用例: valuek有效输入值,其中ki (i的定义在下) valuei-999,其中2i100 预期结果:基于k的正确平均值和总数 注意,路径1无法独立测试,必须作为路径4、5和6的一部分来测试。 路径2的测试用例: value1 -999 预期结果:average-999,其他都保持初始值,2020/7/11,1,82,路径4的测试用例: valuei有效输入值,其中i100 valuek minimum,其中ki 预期结果:
24、其于k的正确平均值和总数 路径5的测试用例: valuei有效输入值,其中i100 valuekmaximum,其中ki 预期结果:其于k的正确平均值和总数 路径6的测试用例: valuei=有效输入值,其中i100 预期结果:正确的平均值和总数,2020/7/11,1,83,黑盒测试技术,黑盒测试着重测试软件的功能需求,让软件工程师设计出能充分检查程序所有功能需求的输入条件集。 黑盒测试并不能取代白盒测试技术,它是与白盒测试互补的方法,它很可能发现白盒测试不易发现的其他不同类型的错误。,2020/7/11,1,84,黑盒测试力图发现下述类型的错误: 功能不正确或遗漏了功能; 界面错误; 数据
25、结构错误或外部数据库访问错误; 性能错误; 初始化和终止错误。 白盒测试在测试过程的早期阶段进行,而黑盒测试主要用于测试过程的后期。 黑盒测试故意不考虑程序的控制结构,而把注意力集中于信息域。,2020/7/11,1,85,等价划分:确定输入数据的有效等价类和无效等价类。 边界值分析 错误推测,2020/7/11,1,86,面向对象基础,什么是对象技术,基于对象概念的软件开发方法 对象包含有数据及处理数据的功能函数 在分析、设计和实现的整个过程中只使用一个概念对象的开发方法 能够解决软件危机中大多数问题的方法 对象 = 数据 + 功能,2020/7/11,1,88,对象技术的优势,稳定: 较小
26、的需求变化不会导致系统结构大的改变 举例:某公司的销售处理系统,2020/7/11,1,89,对象技术的优势,稳定:数据和功能都打包在一起,从而改善软件的再重用性 软件重用能提高质量,减少由于编制新的系统代码而产生的成本,2020/7/11,1,90,对象技术的优势,面向对象的模型更加贴切地反映了现实世界 更加准确地描述公共数据和过程 易于理解,尤其对于使用者,2020/7/11,1,91,对象技术的优势,面向对象的方法支持大规模开发 可以严格定义各个组件之间的交互 减少内部的依赖关系 减少集成的问题 支持并行开发,2020/7/11,1,92,对象技术的优势,帮助开发多层结构,2020/7/
27、11,1,93,面向对象概念,Object 对象 Class 类 Instance 实例 State 状态 Behavior 行为 Attribute 属性 Operation 操作 (Method方法) Inheritance 继承 Subclasses 子类 Superclasses 父类 Generalization 普遍化 Polymorphism 多态,2020/7/11,1,94,面向对象概念,Abstraction 抽象 Encapsulation 封装 Association 关联 Role 角色 Multiplicity 多重性 Aggregation 聚合 Dependen
28、cy association 依赖 Package 包 Use Case 用例 Scenario 脚本 Actor,2020/7/11,1,95,什么是对象,一个对象代表了一个现实的或虚构的实体 自然实体 概念实体 软件实体,2020/7/11,1,96,对象的属性,对象是应用中具有明显边界和含义的概念、抽象或事物 一个对象有三个重要属性: 状态 行为 标识 术语“实例”是“对象”的同义词,2020/7/11,1,97,对象的状态,一个对象的状态是它反映于现实世界的一系列属性: 参数的数值 (也就是,与对象有关系的数据) 它与其它对象的关系 任一时刻的历史状态,可能的状态: 停泊 运营 着陆
29、终止,班机 747,2020/7/11,1,98,对象的行为,定义当其它对象发出请求时,该对象如何反应 由为对象定义的一系列操作决定,2020/7/11,1,99,对象的标识,每一个对象都有一个唯一的标识, 即使其状态有可能与其它对象一样,班机 747 on 11/10,班机 747 on 11/11,班机 747 on 11/12,2020/7/11,1,100,什么是类(Class),类是一组具有相同结构和行为的对象的集合 共同的结构通过属性表现出来 (i.e. 数据) 共同的行为通过操作表现出来 (i.e. 功能),班机 747,结构 班机号 日期 分配的班机 起点 终点 状态,行为 装
30、载设备 起飞 延迟 取消 终止,2020/7/11,1,101,类的示例,Class Employee,Structure Name Address Position Salary Start Date End Date,Behavior Hire Fire Promote Increase Salary Retire,2020/7/11,1,102,类图:用来表达类,类图是一种主要的图形化对象表示法 类图显示类及类之间的关系 一个类通过在类图标中的类名(唯一的)来代表,2020/7/11,1,103,属性,属性是类的特征或特性 属性的值是某一特定对象的属性值 在类中属性名必须是唯一的 每一个
31、类的实例都有为这个类定义的所有属性的值 例如:,银行帐户类属性 帐号 银行名称 拥有者 金额,Mary的银行帐户属性值 12345678 First National Bank Mary Smith $1024.48,2020/7/11,1,104,操作,对象的行为是由为此对象定义的一系列操作决定的 操作访问或修改对象的属性值 一个类可能同时存在多个实例,也可能在某一时刻没有实例 一个类的所有实例都可以使用在这个类中定义的操作,2020/7/11,1,105,属性和操作的标记法,在类的图标中描述属性和操作 通常只显示最重要的属性和操作,避免图形混乱 属性显示在操作上方,操作的名字后跟有(),2
32、020/7/11,1,106,类是生成对象的模板,类是生成对象的模板 类的定义中包含有产生和删除对象的操作属性显示在操作上方,操作的名字后跟有() 一个类定义了使用哪种数据表示法来描述属性 每一个实例都采用有属性值的数据表示法 一个类通过一系列操作来定义行为 这种操作能在每个实例中激活,班机,2020/7/11,1,107,类和对象的关系,每一个对象都是某一个类的实例 每一个类在某一时刻都有零个或更多的实 类是静态的; 它们的存在、语义和关系在 序执行前就已经定义好了 对象是动态的; 它们在程序执行时可以被 建和删除,2020/7/11,1,108,关系,所有的系统都包含了大量的类和对象 对象
33、通过与其它对象的协作完成系统的功能行为协作通过关系来实现 几种重要的关系类型: 关联 聚合 依赖 继承,2020/7/11,1,109,示例: 关联,在一个工资系统中有下面两个类: 关联表示了双向的关系,例如: 给出一个Person的实例, 我们能够知道他属于哪家公司 给出一个 Company的实例, 我们能够知道在其中工作的所有人,2020/7/11,1,110,关联的多重性,多重性是指多个实例参与一个关联 多重性通过位于关联线某一端的一个表达式或符号来表示 对于每个关联关系, 需要做出两个多重性的决定 例如, 在公司和职员的关联中 每个公司可以雇用多个职员 每个职员只有一个从属公司,202
34、0/7/11,1,111,示例:关联的多重性,多重性决定可以揭示建模过程中隐藏的问题 职员会不会失业? 公司能不能没有职员? 一个职员能不能有两份工作?,2020/7/11,1,112,常用的多重性表示法,多重性能解决两个问题 关联是强制的 (不包含零个) 或随意的 (包含零个)? 一个实例可以连接的其它实例的最大数目? 常用的多重性表示法: 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),2020/7/11,1,113,自反关联,自反关联指同一
35、个类中的对象的关系 表示同一个类中多个对象的协作,A course may have many pre-requisites A course may be a pre-requisite for many other courses,2020/7/11,1,114,聚合(包含),聚合是一种特殊的关联,体现整体和部分的关系 聚合是一种 “has-a” 或包含的关系 同样可以使用多重性,2020/7/11,1,115,依 赖,依赖表示一个对象需要其它对象为其提供服务 又可称为client-supplier 关系 client 使用supplier提供的服务 supplier 不需要了解 clie
36、nt(s) 单向关系,controls,2020/7/11,1,116,继承,继承表示一个类从其它类中获得结构和行为(子类/父类) 又名普遍化 交通工具是一个父类 地面交通工具和空中交通工具是子类,2020/7/11,1,117,继承,继承表示子类从父类继承时抽象的层次 单继承:子类只从一个父类继承 多继承:子类从多于一个的父类继承 继承通常被称为 “is-a” 或“kind-of” 一个子类的实例也 “is a” 父类的实例 一个子类的实例是 “kind-of” 父类,2020/7/11,1,118,多层次,A Car is a kind of GroundVehicle which is
37、a kind of Vehicle,Vehicle and AirVehicle are ancestors of Airplane AirVehicle and Airplane are descendants of Vehicle,2020/7/11,1,119,继承的内容,属性 操作 关系 约束 继承平衡类之间的共同之处,2020/7/11,1,120,继承属性,属性在继承结构的最高一层定义 所有子类的实例能够继承这些属性 每个子类可以增加或重新定义继承的属性; 但在修改是要加倍注意,2020/7/11,1,121,继承操作,属性在继承结构的最高一层定义 所有子类的实例能够继承这些操作
38、每个子类可以增加或重新定义继承的属性,2020/7/11,1,122,继承关系,关系也可以继承 每个子类都可以分享继承的关系,2020/7/11,1,123,对象模型化技术OMT,对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型。 这个模型化的过程是一个迭代过程。,2020/7/11,1,124,基于三个模型的分析过程,功能模型着重于系统内部数据的传送和处理。 功能模型定义“做什么” 动态模型定义“何时做” 对象模型定义“对谁做”。,2020/7/11,1,125,UML的图 用例图(use-case diagram) 用例是对系统提供的功能(即系统的具体用法)的描述。 用例图从用户的角度描述系统功能,并指出各个功能的操作者。 用例图定义了系统的功能需求。,2020/7/11,1,126,静态图(static diagram) 这类图描述系统的静态结构,属于这类图的有类图(class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论