软件建模技术ppt课件(完整版)_第1页
软件建模技术ppt课件(完整版)_第2页
软件建模技术ppt课件(完整版)_第3页
软件建模技术ppt课件(完整版)_第4页
软件建模技术ppt课件(完整版)_第5页
已阅读5页,还剩412页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件建模技术高职高专计算机类专业“十二五”规划教材软件建模技术第一部分 基 础 篇1 第二部分 实 践 篇2第三部分 工 具 篇 3第1章 软件工程概述 1.1 软件、软件危机和软件工程的定义 1.1.1 软件及其特点 1.1.2 软件危机 1.1.3 软件工程的定义1.1.4 软件工程的基本原理 1.2 软件开发生命周期 1.3 软件过程模型 1.3.1 常见的生命周期模型 1.3.2 生命周期模型的应用 1.4 软件工程方法学 教学要求理解:软件和软件工程的概念;软件开发生命周期。掌握:软件过程模型运用的原则。第1章 软件工程概述 开发出来的软件往往与用户的需求有偏差;往往在看到最终交付的

2、产品时,用户才真正明确自己的需求;在软件开发过程中,需求可能经常在变,原因可能是用户本身需求的变化,也可能是我们对需求的理解在发生变化,但结果是每次需求变化会带来软件系统的开发延迟,甚至出现变更反复,被推倒了的内容又要重新确立;在软件没有最终交付时,用户如何了解开发进展情况;系统难以维护和扩展,经常重复开发类似的功能;项目经常延期,实际成本往往远远高于估计成本;开发团队内部使用了不同的技术,在交流时常常有障碍;软件危机的影响 1.1软件、软件危机和软件工程的定义 1.1.1 软件及其特点 软件 = 程序 + 数据 + 文档 软件是计算机系统中与硬件相互依存的另一部分,与硬件合为一体完成系统功能

3、 1.1软件、软件危机和软件工程的定义 1.1.1 软件及其特点 软件的特点软件是脑力劳动的产品,但它不同于追求个性化的艺术作品;软件是产品,但它又不同于工业化生产得到的有形产品 1.1软件、软件危机和软件工程的定义 软件的特点描述抽象性 软件是一种逻辑实体而不是具体的物理实体,必须通过测试、分析、思考、判断来了解它的功能、性能及其他特性可复制性 软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。一旦某一软件项目研制成功,以后就可以大量地复制同一内容的副本,即其研制成本远远大于其生产成本不会磨损 在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,

4、但软件也会出现故障,软件维护比硬件维护要复杂得多,与硬件的维修有着本质的差别依赖性 软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问题,并且把软件的可移植性作为衡量软件质量的因素之一开发效率低 软件的开发尚未完全摆脱手工的方式,依然有大量重复性的劳动开发费用高 软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程中必不可少的内容1.1.1 软件及其特点 1.1软件、软件危机和软件工程的定义 什么是软件危机 在计算机软件的开发和维护过程中所遇到的一系列严

5、重问题。 软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断增加的已有软件。 消除软件危机的途径 正确认识软件。 加强管理。使用软件工具。 1.1.2 软件危机 1.1软件、软件危机和软件工程的定义 软件工程的定义软件工程 = 管理 + 技术软件工程的目标 1.1.3 软件工程的定义 1.1软件、软件危机和软件工程的定义 软件工程的基本原理(1)用分阶段的生命周期计划严格管理。(2)坚持进行阶段评审。(3)实行严格的产品控制。(4)采用现代程序设计技术。(5)结果应能清楚地审查。(6)开发小组的人员应该少而精。(7)不断改进软件工程实践的经验和技术。1.1

6、.4 软件工程的基本原理 1.2软件开发生命周期 如何盖一栋大楼?1.2软件开发生命周期 软件开发生命周期可以划分成计划、设计、开发和运行维护4个时期 1问题定义“要解决的问题是什么?”2可行性论证及软件计划“有行得通的解决办法吗?”3需求分析“系统必须做什么?”4总体设计“概括地说,应该怎样做?”5详细设计“具体怎样做?”6编码和单元测试7综合测试8运行/维护1.3 软件过程模型 1建造-修补模型早前,软件开发人员在进行软件开发时不使用规格说明,或者不尝试进行设计;只是简单地建造了一个软件产品,但为满足客户的要求,只能不断地改写该软件,这就是所谓的建造-修补模型。 1.3.1 常见的生命周期

7、模型 1.3 软件过程模型2瀑布模型核心思想是阶段性的评审和验证,每一阶段结束时都要给出完整的文档。缺点是该模型缺乏灵活性,后一阶段出现的问题需要通过前一阶段的重新确认来解决。 1.3.1 常见的生命周期模型 1.3 软件过程模型3原型模型快速设计软件中对用户可见部分的表示,构造原型,由用户评估,逐步调整原型,使之满足用户需要。其优点是开发者和用户可以充分沟通,开发过程也是学习过程,可以低风险开发柔性较大的计算机系统。1.3.1 常见的生命周期模型 1.3 软件过程模型4螺旋模型把软件开发过程组成为一个逐步细化的螺旋周期,每经历一个周期,系统就得到进一步的细化和完善;整个模型紧密围绕开发中的风

8、险分析,推动软件设计向深层扩展和求精。该模型要求开发人员与用户能经常直接进行交流,通常用来指导内部发行的大型软件项目的开发 1.3.1 常见的生命周期模型 1.3 软件过程模型5增量模型一种渐近式的模型 ,它把软件产品作为一系列的增量构件来设计、编码、集成和测试。 第一个增量构件往往实现软件的基本需求,提供最核心的功能。1.3.1 常见的生命周期模型 1.3 软件过程模型6迭代模型迭代模型也是一种渐近式的模型。就对风险的消除上,增量和迭代模型都能够很好地控制前期的风险,但迭代模型在这方面更有优势。迭代模型可以更多地从总体方面思考系统问题,一开始就给出相对完善的框架或原型,后期的每次迭代都是针对

9、上次迭代的逐步精化。1.3.1 常见的生命周期模型 1.3 软件过程模型7喷泉模型认为软件生命周期的各个阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,水既可以落在中间,也可以落在最底部。整个开发过程中都使用统一的概念“对象”进行分析,使用统一的概念和符号表示分析设计过程,各阶段间没有明显的边界,即“无缝”衔接,因此各开发步骤可以多次反复迭代,逐步深化。1.3.1 常见的生命周期模型 1.3 软件过程模型8MSF过程模型吸收了瀑布模型的里程碑和螺旋模型的反复迭代的思想 。分为5个阶段,每一阶段结束时都有明确的交付成果。1.3.1 常见的生命周期模型 1.3 软件过程模型(1)总体上说,面

10、向对象的程序设计采用的是喷泉模型,但局部可以结合其他模型。(2)在前期需求明确、资料完整的情况下尽量采用瀑布模型。(3)在用户无信息系统使用经验、需求分析人员技能不足的情况下要借助原型。(4)在不确定性因素很多、很多东西前面无法计划的情况下尽量采用增量模型和螺旋模型。(5)在需求不稳定的情况下尽量采用增量迭代模型。(6)在资金和成本无法一次到位的情况下可以采用增量模型,将产品分多个版本进行发布。(7)增量、迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付内容。 1.3.2 生命周期模型的应用 1.4 软件工程方法学研究如何通过分解和抽象,将复杂问题转化成一系列可以理解和实现的简单问

11、题。 1.4 软件工程方法学面向过程的程序 = 算法 + 数据结构。面向对象的程序 = 对象 + 类 + 继承 + 消息通信。面向构件的程序 = 构件 + 架构。形式化方法是建立在严格的数学基础上,以逻辑推理为出发点,具有精确数学语义的开发方法。本章小结软件不仅仅是程序,软件=程序+数据+文档。软件工程是为了尽可能消除软件危机的影响,克服软件缺乏“可见性”的缺点,借鉴工业化生产的成功经验,对软件产品的生产过程加以严格管理和控制的一门学科。它的最终目的是实现软件的工业化生产。传统软件工程将软件开发生命周期划分为问题定义、可行性分析、需求分析、概要设计、详细设计、编码、测试、运行维护8个阶段,每一

12、阶段都有具体的任务和交付成果。软件过程模型指如何具体地组织衔接软件开发生命周期的各个阶段。常见的有瀑布模型、螺旋模型、喷泉模型等。软件建模技术中国水利水电出版社高职高专计算机类专业“十二五”规划教材主编 曹静软件建模技术第一部分 基 础 篇1 第二部分 实 践 篇2第三部分 工 具 篇 3第2章 结构化程序设计与面向对象程序设计 2.1 概述 2.2 结构化方法的基本原理 2.2.1 结构化分析过程2.2.2 结构化分析工具 2.3 面向对象方法学的基本概念和原则 2.3.1 基本概念 2.3.2 主要原则 2.4 面向对象方法与结构化方法比较2.4.1 实例 2.4.2 面向对象方法与结构化

13、方法比较 2.4.3 两种方法的综合运用 教学要求掌握:软件结构化分析方法中常用的方法及工具。理解:结构化设计及面向对象设计的思路及特点;在面向对象设计中如何运用结构化设计的方法及工具。了解:结构化分析过程;面向对象方法学的基本概念。第2章 结构化程序设计与面向对象程序设计2.1 概 述 面向过程的方法面向对象的方法20世纪60年代提出的结构化程序设计思想曾为解决“软件危机”立下过汗马功劳,它在一定程度上解决了软件的可靠性、可理解性、可维护性等问题 。面向对象的程序设计思想后来居上,在软件的模块化、可重用、可扩展性等方面体现出了强大的优势 2.2 结构化方法的基本原理 结构化程序设计主要观点是

14、采用自顶向下、逐步求精的程序设计方法。使用三种基本控制结构构造程序,任何程序都可由顺序、选择、重复三种基本控制结构构造。详细描述处理过程常用三种工具:图形、表格和语言;使用的手段主要有数据流图、数据字典、层次方框图、结构化语言、判定表和判定树等。 2.2 结构化方法的基本原理 结构化程序设计一般步骤是:分析业务流程及信息走向;画出数据流图;建立数据字典;提出系统的总体逻辑方案;细化数据流图;确定模块的接口;为每个模块确定采用的算法和数据结构;根据E-R图设计数据库等。 2.2 结构化方法的基本原理 2.2.1 结构化分析过程 阶段拟解决的关键性问题工具手段交付成果问题定义要解决的问题是什么 可

15、行性论证及软件计划有行得通的解决办法吗数据流图、数据字典、数据流程图、成本/效益分析可行性分析报告、多种解决方案、系统高层逻辑模型需求分析系统必须做什么数据流图、数据字典、算法描述需求规格说明书、系统逻辑模型总体设计概括地说,应该怎样做数据流图、系统流程图、成本/效益分析、系统结构图、层次方框图几种可能的解法详细设计具体怎样做数据流图、HIPO图模块及其接口设计、数据字典2.2 结构化方法的基本原理 2.2.2 结构化分析工具 数据流图 数据字典 E-R图 IPO图 层次图与HIPO图状态图 成本/效益分析 程序流程图与盒图(N-S图) 2.2 结构化方法的基本原理 2.2.2 结构化分析工具

16、 1. 数据流图(DFD图)描绘信息流和数据从输入移动到输出的过程中所经受的变换。基本符号处理数据存储外部实体数据流2.2 结构化方法的基本原理 2.2.2 结构化分析工具 基本符号的含义矩形方框表示数据的源点或终点。是系统的外部实体。圆形表示变换数据的处理。它可以代表一系列程序、单个程序或者程序的一个模块。平行横线代表数据存储。数据存储并不等同于一个文件,它可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等。数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。2.2 结构化方法的基本原理 2.2.2 结构化分析工具 画数据流图的基本

17、原则自顶向下逐层细化完善求精 2.2 结构化方法的基本原理 2.2.2 结构化分析工具 具体步骤:(1)绘顶层数据流图。找出对整个系统而言的输入、输出数据,确定外部实体,它们决定了系统与外界的接口。(2)为数据流命名,为加工命名。(3)检查核对。(4)核对无误后,进行分解,画处理的内部。 在(2)至(4)步之间反复迭代,直到处理无法进一步分解为止。2.2 结构化方法的基本原理 2.2.2 结构化分析工具 书店借书系统的顶层数据流图2.2 结构化方法的基本原理 2.2.2 结构化分析工具 书店借书系统的第一次分解后的数据流图2.2 结构化方法的基本原理 2.2.2 结构化分析工具 “借书”处理分

18、解后的数据流图2.2 结构化方法的基本原理 2.2.2 结构化分析工具 书店借书系统的层次图2.2 结构化方法的基本原理 2.2.2 结构化分析工具 2数据字典数据字典是对所有与系统相关的数据元素的一个有组织的列表,精确、严格地定义各个数据元素,使得用户及开发人员对于输入、输出、存储和处理形成共同的理解例如: 借阅制度表 = 读者类别+允许借阅册数+罚款规定+丢失图书罚款规定 读者类别 = 金卡 | 银卡 | 铜卡 又如:预订请求 = 客人数据+住宿期限+客房类别 客人数据 = 客人姓名+地址+身份证号码+护照号码 +支付方式 身份证号码 = 15十进制数字18 护照号码 = 字母 + 8十进

19、制数字8 字母 = AZ 十进制数字 = 09 2.2 结构化方法的基本原理 2.2.2 结构化分析工具 3E-R图(实体关系图 )例如2.2 结构化方法的基本原理 2.2.2 结构化分析工具 4IPO图IPO是输入、处理、输出的简称,IPO图能方便地描绘输入数据、数据的处理和输出数据的关系。 2.2 结构化方法的基本原理 2.2.2 结构化分析工具 主文件更新的IPO图2.2 结构化方法的基本原理 2.2.2 结构化分析工具 5层次图与HIPO图层次图用来描绘软件的层次结构,图中的一个矩形框代表一个模块,方框间的连线表示调用关系。它适于在自顶向下设计软件的过程中使用,描述模块的划分。2.2

20、结构化方法的基本原理 2.2.2 结构化分析工具 书店借书系统的层次图2.2 结构化方法的基本原理 2.2.2 结构化分析工具 书店借书系统的H图2.2 结构化方法的基本原理 2.2.2 结构化分析工具 6状态图(略)2.2 结构化方法的基本原理 2.2.2 结构化分析工具 7成本/效益分析目的从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定 2.2 结构化方法的基本原理 2.2.2 结构化分析工具 实例2.2 结构化方法的基本原理 2.2.2 结构化分析工具 8程序流程图与盒图(N-S图)是表达语句执行过程的主要工具 基本符号:2.3

21、 面向对象方法学的基本概念和原则 2.3.1 基本概念 1对象(object)2类(class)3实例(instance)4消息(message)5方法(method)6属性(attribute)7封装(encapsulation)8继承(inheritance)9多态性(polymorphism)10重载(overloading)2.3 面向对象方法学的基本概念和原则 2.3.2 主要原则 (1)抽象(2)分类(3)聚合(4)关联(5)消息通信(6)粒度控制(7)行为分析2.4 面向对象方法与结构化方法比较 2.4.1 实例 结构化方法与面向对象的方法的共性2.4 面向对象方法与结构化方法比

22、较 2.4.1 实例 实例“书店借书系统”的分析与设计(详见教材) 2.4 面向对象方法与结构化方法比较 2.4.1 实例 (1)面向对象方法反复迭代完善需求。对已有的需求(参见附录1)进行整理,列出需求列表。与用户交流得到有效的需求列表。画出初始用例模型,表达系统的主要功能及主要业务流程。完善需求列表,完善用例模型。反复迭代进行逻辑设计。识别系统中的对象及其关系,画初始类模型。确定类的职责、属性和方法。表示出主要业务过程的动态模型。由动态模型反复映射,完善类模型。2.4 面向对象方法与结构化方法比较 2.4.1 实例 面向对象方法(续)物理设计。确定整个系统的拓扑结构(部署图)。修订类模型。

23、相应修订动态模型。完成反映程序模块的包图。完成反映程序软件构成的组件图。设计界面,设计数据库。2.4 面向对象方法与结构化方法比较 2.4.1 实例 (2)结构化方法。 获取完整的需求。自顶向下、逐层分解,画出数据流图。书写数据字典。映射出系统的层次结构,进行系统结构(模块及其接口)设计。逐层细分,细化出每个处理。设计界面,设计数据库。2.4 面向对象方法与结构化方法比较 2.4.2 面向对象方法与结构化方法比较结构化程序设计方法的特点是自顶向下、逐步求精,在获取完整的需求之后才能开始系统的分析和设计 面向对象的程序设计方法的特点是根据现实问题直接抽象出对象,分析对象的行为和与行为相关的数据,

24、对象间通过传递消息进行通信,协作完成相应的功能,从问题出发,模拟现实问题建立系统模型,易于理解和实现。2.4 面向对象方法与结构化方法比较 2.4.3 两种方法的综合运用 (1)内在的一致性。 1)目标一致。 2)使用分解和抽象的原则。 3)局部化和信息隐蔽。 4)模块独立。(2)应用的互补性。 1)成熟的理论。 2)有效的方法。 3)实用的工具。 4)严谨的开发过程。本章小结本章将面向对象的方法学与传统结构化程序设计方法学进行了对照。结构化方法和面向对象的方法是当前两种主流的软件开发方法。其中,面向对象的程序设计方法根据现实问题直接抽象出对象,分析对象的行为和与行为相关的数据,对象间通过传递

25、消息进行通信,从问题出发,模拟现实问题,建立系统模型,易于理解和实现;结构化程序设计方法有一套成熟的理论基础,“自顶向下、逐步求精”,在获取完整的需求之后才能开始系统的分析和设计。在进行面向对象的程序设计时,要善于吸收、借鉴传统结构化程序设计的方法工具。在进行面向对象的设计时,从需求分析到系统设计都是一个反复迭代的过程。数据流图(DFD图)是分析数据存储的有效工具。 软件建模技术中国水利水电出版社高职高专计算机类专业“十二五”规划教材主编 曹静软件建模技术第一部分 基 础 篇1 第二部分 实 践 篇2第三部分 工 具 篇 3第3章 统一建模语言与现代软件工程 3.1 软件工程的发展趋势及成功经

26、验 3.1.1 现代软件工程研究中的热点内容 3.1.2 现代软件工程的成功经验 3.2 统一建模语言概述 3.2.1 什么是软件建模 3.2.2 什么是UML 3.2.3 UML的历史 3.2.4 UML中的五类图 3.2.5 UML建模的基本过程 3.2.6 统一建模语言在现代软件工程中的作用 教学要求理解:什么是统一建模语言;统一建模语言的作用;统一建模过程。了解:现代软件工程研究中的热点内容;面向对象的建模思想。第3章 统一建模语言与现代软件工程3.1 软件工程的发展趋势及成功经验 3.1.1 现代软件工程研究中的热点内容 研究方面具体内容软件过程模型 瀑布模型、增量模型、快速原形模型

27、、螺旋模型、喷泉模型、MSF过程模型等软件开发方法 面向对象的方法、面向构件的方法、极限编程等项目管理过程 MSF过程模型、企业文化设计模式 工厂模式、命令模式等辅助工具 各种软件建模工具 (如Rational Rose、 Visio、Rational XDE)、项目计划工具(如Project)、文档自动生成工具(如SODA)等软件过程的研究在实际开发中如何合理的运用各种经典的过程模型,构造出与具体开发方法相适应的严格的应用步骤。 软件开发方法的研究 如面向构件的方法、极限编程,面向服务的方法、轻型计划的方法、以及针对具体行业的特殊开发方法等 管理过程的研究 为了使软件项目能够按照预定的成本、

28、进度、质量要求顺利完成项目开发,而对成本、人员、进度、质量、风险等因素进行分析、控制和管理的活动,旨在整个企业的开发能力。 设计模式研究每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心 辅助工具的研究3.1 软件工程的发展趋势及成功经验 3.1.1 现代软件工程研究中的热点内容 现代软件工程的成功经验文档可视化迭代式开发使用模式基于组件的架构变更管理(变更文档)3.1 软件工程的发展趋势及成功经验 3.1.2 现代软件工程的成功经验 3.2 统一建模语言概述 模型的三个特点是一种简化;通过不同的视角看问题;使用通用的符号。软件建模的实现过程3.2.1 什么是软件

29、建模 面向对象的软件建模机制 3.2 统一建模语言概述 3.2.1 什么是软件建模 统一建模语言(Unified Modeling Language,UML)是一种通用的可视化面向对象的建模语言,适用于对任何面向对象的事物的建模,如面向对象的软件建模、业务建模。 3.2 统一建模语言概述 3.2.2 什么是UML 最初的阶段是专家的联合行动,由三位OO(面向对象)方法学家将他们各自的方法结合在一起,形成UML 0.9。第二阶段是公司的联合行动,由十几家公司组成的“UML伙伴组织”将各自的意见加入UML,形成UML 1.0和1.1,并作为向OMG申请成为建模语言规范的提案。第三阶段是在OMG控制

30、下的修订与改进,OMG于1997年11月正式采纳UML 1.1作为建模语言规范。第四阶段是作出重大修订后于2003年推出UML 2.0,UML得到了广泛认可和使用。 3.2 统一建模语言概述 3.2.3 UML的历史 用例图静态图类图(Class Diagram)对象图(Object Diagram)包图(Package Diagram)行为图状态图(Statechart Diagram)活动图(Activity Diagram)交互图顺序图(Sequence Diagram)协作图(Collaboration Diagram)实现图组件图(Component Diagram)部署图(Depl

31、oyment Diagram)3.2 统一建模语言概述 3.2.4 UML中的五类图 UML建模机制 3.2 统一建模语言概述 3.2.5 UML建模的基本过程 不同开发阶段的UML模型 3.2 统一建模语言概述 3.2.5 UML建模的基本过程 它是优秀的文档可视化工具,符号形象直观。能体现文档的连贯性(即需求设计实现的自然过渡,且能较灵活地应对变更)。贯穿软件开发生命周期的各个阶段。能清楚地表达设计模式。与最好的软件工程实践经验集成。为面向对象的设计与开发中涌现出的高级概念(如协作、框架、模式和组件)提供支持,强调在软件开发中对架构、框架、模式和组件的重用。与具体的实现无关,可应用于任何语

32、言平台和工具平台。与具体的过程无关,可应用于任何软件开发的过程。3.2 统一建模语言概述 3.2.6 统一建模语言在现代软件工程中的作用 本章小结现代软件工程的成功经验中,强调文档的可视化、软件的重用性、代表多方利益的人员之间无障碍地交流。在这些环节中,统一建模语言发挥着很大的作用。统一建模语言(UML)是一种通用的可视化面向对象的建模语言,它使用通用的符号,通过反复迭代的建模机制分析需求,进行系统的分析和设计。 软件建模技术中国水利水电出版社高职高专计算机类专业“十二五”规划教材主编 曹静软件建模技术第一部分 基 础 篇1 第二部分 实 践 篇2第三部分 工 具 篇 3第4章 用例图 4.1

33、 用例图概述 4.1.1 用例建模的目的 4.1.2 定义用例图 4.1.3 用例图的主要组件 4.2 识别参与者 4.2.1 捕获需求 4.2.2 识别参与者 4.3 识别用例 4.3.1 识别用例的方法 4.3.2 用例的命名规则 第4章 用例图 4.4 用例间的关系 4.4.1 泛化关系 4.4.2 包含关系 4.4.3 扩展关系 4.5 用例文档 4.6 重构系统的用例模型 教学要求掌握:用例图定义、用例图的标记符组件以及如何建立用例图模型。理解:用例图建模的原因、泛化技术,以及包含与扩展关系。了解:描述用例的方法。第4章 用例图 用例建模的目的 利用“系统”的观点来分析问题、解决问题

34、。使用计算机逻辑来模拟描述系统本身,包括系统的组成、关系、系统的各种可能状态以及系统中可能产生的过程和过程引起的切换。 可以利用一个容易理解的模型来描述用户如何使用这个系统、系统和客户以及系统和外部系统之间的交互过程,这个模型也就是通常我们所说的使用UML设计新系统的起始点用例图。 4.1 用例图概述 4.1.1 用例建模的目的 定义用例图 用例图是有关系统细节的最高形式。它能准确地说明客户对他们要开发的应用程序期望有什么样的功能用例图是一种在系统完成后能使管理机构、用户和其他干系人了解其功能的极好方法。 登录系统存款取款查询余额修改密码转账退出系统客户4.1 用例图概述 4.1.2 定义用例

35、图 用例图的主要组件 用例图包含4个基本组件:参与者(Actor)、用例(Use Case)、关系、系统。 (1)参与者。参与者是系统外部的一个实体,它以某种方式参与用例的执行过程。(2)用例。用例代表系统的某项完整的功能,是动作步骤的集合。系统的功能是通过参与者使用用例来实现的。 4.1 用例图概述 4.1.3 用例图的主要组件 用例图的主要组件 用例图包含4个基本组件:参与者(Actor)、用例(Use Case)、关系、系统。 (3)关系。除了用例和参与者之间的关联关系以外,还可以定义参与者之间的泛化关系,用例之间有包含、扩展和泛化关系。 (4)系统。系统指一个软件系统、一项业务、一个商

36、务活动、一台机器等。 (图见书)4.1 用例图概述 4.1.3 用例图的主要组件 捕获需求 收集需求的方式有访谈、问卷调查、实地观察、使用原型、特定群体调查、用户指导等。需求的来源主要是人、各种现有成品(如报表、培训手册、视频记录等)、现有的软件系统或人工系统。通过各种形式记录下收集到的需求信息,经过整理,从中获取有价值的信息来建立系统模型。 4.2 识别参与者 4.2.1 捕获需求 识别参与者的方法 识别参与者的思路,可以从以下几个方面来考虑:(1)谁使用系统的主要功能?(2)谁改变系统的数据?(3)谁从系统获取信息?(4)谁需要系统的支持以完成日常工作任务?(5)谁负责维护、管理并保持系统

37、正常运行?(6)系统需要处理哪些硬设备?(7)系统需要和哪些外部系统交互?(8)谁对系统运行产生的结果感兴趣?(9)有无时间、气温等内部或外部条件? 4.2 识别参与者 4.2.2 识别参与者 识别用例的方法 在识别用例的过程中,可以从以下几个方面来考虑: (1)特定参与者希望系统提供什么功能。(2)系统是否存储和检索信息,如果是,由哪个参与者触发。(3)当系统改变状态时,是否通知参与者。(4)是否存在影响系统的外部事件。4.3 识别用例 4.3.1 识别用例的方法 用例的命名规则 用例名是一个字符串,用例是从用户的角度来描绘系统的功能,因此命名的基本原则是:从参与者的角度出发进行命名(如使用

38、“登录”而不用“身份验证”),使用动词加宾语的结构,尽量使用行业术语(如使用“报销”,而不用“交钱”)。系统中用例太多时需求要适当分组(包),这时可以通过在用例名后面加上双冒号和包名来表示该用例是属于哪个包的。4.3 识别用例 4.3.2 用例的命名规则 泛化关系 用例与用例之间也存在着泛化关系,通常用于表示同一业务目的(父用例)的不同技术实现(各个子用例)。 4.3.2 用例的命名规则 4.4 用例间的关系 4.4.1 泛化关系 包含关系 在包含关系中,基本用例吸收了被包含的用例的行为,如果没有后者它将是不完整的。包含关系的划分有两个好处:一是被包含用例被抽取出来,基本用例得以简化;二是可以

39、抽象出公共事件流,实现功能代码的复用。 4.4 用例间的关系 4.4.2 包含关系 扩展关系 如果在完成某个功能的时候有时会执行另一个功能,则用扩展关系来表示。扩展关系表示为虚线箭头加“”字样,箭头指向被扩展的用例。 教师在保存成绩的时候,如果有学生成绩不合格将打印补考通知单 4.4 用例间的关系 4.4.3 扩展关系 用例文档用例图不足以表达更多的细节,对于系统中的每一个用例,还需要了解详细的执行情况,以便完整地理解创建系统时的设计任务。用例文档为我们提供了一个很好的模板 。用例编号:用例名:用例描述:参与者:前置条件:后置条件:事件路径:扩展点:补充说明:4.5 用例文档 用例建模的过程本

40、身就是一个反复迭代和逐步精化的过程。 如果你对以下问题都回答“是”的话,那么这个用例就是合理的;否则,这个用例需要拆分为几个小的用例。 这个用例是否能够带来一个独立的好处?是否可以用简洁的文字来描述这个好处?参与者是否能够仅通过一次会话就完成这个用例?能否想象在一个连贯的测试计划中,这个用例将是一个测试用例? 4.6 重构系统的用例模型 用例建模的过程本身就是一个反复迭代和逐步精化的过程。 如果你对以下问题都回答“是”的话,那么这个用例就是有效的和独立的;否则,这个用例实际上可能是其他用例的一个部分。参与者是否得到了明确的信息或者以某种可度量的方式改变系统?执行这个用例之后,参与者是否可以在确

41、定的时间内停止使用这个系统?4.6 重构系统的用例模型 订餐预约系统的最终用例模型 4.6 重构系统的用例模型 本章小结用例模型是分析功能需求的一个有力工具。它由用例图和每个用例的文档组成。用例图可以可视化地表达出用例功能,使分析员与用户之间的交流更加容易。在用例图中,用例的表示符号是一个椭圆,参与者的图符是一个直立人形,参与者与用例之间用关联线连接,通常用例都位于表示系统边界的矩形框之中。用例之间存在各种关系:包含关系用带关键字的虚线箭头线表示;扩展关系用带关键字的虚线箭头线表示;还有一种泛化关系,表示一个用例继承了另一个用例的属性和行为。分析过程开始于和客户交谈,产生系统高层用例图。用例图

42、在分析过程中起着很重要的作用,它能反映系统基本的功能需求。但要创建完整的用例模型,还要对每个高层用例进行细化,建立用例文档。对于复杂的系统可以先画出表达系统整体功能的顶层用例模型,再画出各个功能的用例模型子图。用例模型是后期设计和开发的基础。 软件建模技术中国水利水电出版社高职高专计算机类专业“十二五”规划教材主编 曹静软件建模技术第一部分 基 础 篇1 第二部分 实 践 篇2第三部分 工 具 篇 3第5章 静态模型 5.1 静态模型的基本概述 5.2 类图 5.2.1 类图概述 5.2.2 类图的基本组件 5.2.3 关系 5.2.4 关联关系的不同重数与代码的映射 5.2.5 如何建模类图

43、 5.2.6 实例“饮料自动售货机系统”的类图 第5章 静态模型5.3 对象图 5.3.1 对象图的概念 5.3.2 对象图和类图的区别 5.4 包图 5.4.1 包图的概念 5.4.2 包图建模 第5章 静态模型 教学要求掌握:类图的标记符组件,如何建模类,如何建模类图。理解:如何表现类的特性、职责和约束,类之间的关系。了解:如何建模对象图、包图。5.1 静态模型的基本概述 静态模型的基本概述 静态模型包括类图、对象图、包图、组件图和部署图。类图描述系统中类的静态结构,它不仅定义系统中的类,表示类之间的关系(如关联、依赖、聚集等),也表达类的内部结构(即类的属性和操作)。类图描述的这种静态关

44、系涉及软件系统开发的整个生命周期。对象图是类图的实例,符号与类图非常相似,可以认为对象图是类图在程序执行的某个过程中一瞬间的快照。包图由包或类组成(有时也包括组件),表示包与包之间的关系。包图可以用于描述系统的分层结构。组件图和部署图涉及程序的物理实现。5.1 静态模型的基本概述 采用面向对象技术设计系统步骤 描述需求 根据需求建立系统的静态模型以构造系统的结构 描述系统的行为 5.1 静态模型的基本概述 静态模型的基本概述 用例图、类图(包含包)、对象图、组件图和部署图5类图形,是统一建模语言UML的静态建模机制。 状态图、活动图、顺序图和协作图4类图形,是统一建模语言UML的动态建模机制

45、。5.2 类图 类图概述 类图是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型,它用于描述系统的结构。 类图的建模贯穿系统的分析和设计阶段的始终,通常从商务伙伴能够理解的用例开始建模,最终往往成为只有开发小组能够完全理解的类。 建模类图也是一个反复迭代的过程。 类图包含两个元素:类、关系 。5.2.1 类图概述 当对系统的静态模型建模时,通常以下面的3种方式之一使用类图: 对系统的静态对象建模。如书店借书系统的Book类、学生管理系统的Student类等。对简单的协作建模。协作是一些共同行为的类、接口和其他元素的群体。如数据库连接类、用户验证类、过滤字符串类等。对逻辑数据库

46、模式建模。在很多领域中,都需要在关系数据库或面向对象数据库中存储永久信息,系统分析者可以用类图对这些需要永久化的实体建模。5.2 类图 5.2.1 类图概述 类图的基本组件 类 5.2 类图 5.2.2 类图的基本组件 类命名时应该遵守以下几条准则:使用标准术语。使用具有确切含义的名词。必要时用名词短语作名字。对于类图中的类而言,它的类名、属性、操作也有一定的书写规范。类名:正体字说明类是可被实例化的,斜体字说明类为抽象类。 属性:按照“可见性 属性名 :类型 =初始值”的书写顺序。操作:按照“可见性 方法名称( 参数列表) :返回类型”的书写顺序。5.2 类图 5.2.2 类图的基本组件 类

47、的表示方法5.2 类图 5.2.2 类图的基本组件 隐藏属性部分或操作部分,或者两者都隐藏 5.2 类图 5.2.2 类图的基本组件 通过在属性名称和数据类型之后添加等号来为属性指定默认值 在UML中,可以通过 符号表示类的某些属性的多重性 5.2 类图 5.2.2 类图的基本组件 类图中还可以指明另一种类的信息。在操作部分下面的区域,可以用来说明类的职责,也就是类的属性和操作能完成什么任务 5.2 类图 5.2.2 类图的基本组件 使用一个用花括号括起来的自由文本,括号中的文本指定了该类所要满足的一个或多个约束 5.2 类图 5.2.2 类图的基本组件 使用注释为类的属性或操作添加更详细的说

48、明 5.2 类图 5.2.2 类图的基本组件 UML中的类可以作为面向对象语言中的类 public class TaxCalculator private longtaxRate ; private intsalary; public TaxCalculator (long taxRate) this.taxRate = taxRate ; public long countTax ( ) return taxRate*salary ; public int getSalary ( ) return salary; public void setSalary (int salary) this

49、.salary = salary; 5.2 类图 5.2.2 类图的基本组件 接口 在UML中,接口是用一个带有名称的小圆圈表示的,并且通过一条实线与它的模型元素相连。当一个接口是在某个特定的类中实现时,使用该接口的类通过一个依赖关系(一条带箭头的虚线)与该接口的小圆圈相连接。 5.2 类图 5.2.2 类图的基本组件 接口对应的Java代码映射 interface Callback void callback(int param); class Client implements Callback public void callback(int p) public void nonIfac

50、eMeth( ) class TestIface public static void main(String args) Callback c = new Client( ); c.callback(42); 5.2 类图 5.2.2 类图的基本组件 关系 泛化关系:一个类(子类)继承另外的一个类(超类)的同一功能,并增加它自己的新功能。泛化关系就是用来表示类与类、接口与接口之间的继承关系的。关系中的实线空心封闭箭头由子类指向父类 5.2 类图 5.2.3 关系 关系 实现关系:实现关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。关系中的箭头由实现接

51、口的类指向被实现的接口。在Java中,实现关系可以直接用接口,implements关键字表示。在有些程序语言中不支持接口,但支持类之间的多重继承。在UML中,可以使用泛化关系表示。 5.2 类图 5.2.3 关系 关系 依赖关系:依赖也是类与类之间的连接,并且依赖总是单向的。实体之间的“依赖”关系暗示一个实体的值发生变化后可能影响依赖于它的其他实例。 在面向对象的系统中,作为方法的一个部分,一个对象可能创建另一个对象,让它执行一定的功能。也可以一个对象还可能在一个方法中创建另一个对象,对它进行配置,然后将它作为方法的返回值传给方法的调用者。5.2 类图 5.2.3 关系 关系 关联关系:在对系

52、统建模时,特定的对象间将会彼此关联,我们称这种关系为关联关系,它反映了对象之间相互依赖、相互作用的关系。 5.2 类图 5.2.3 关系 关联关系 双向关联 单向关联 聚集关联 组成关联 自身关联 关联类 5.2 类图 5.2.3 关系 关联关系 双向关联 关联总是被假定是双向的。这意味着,两个类彼此知道它们间的联系。一个双向关联用两个类间的实线表示。在线的任一端,可以放置角色名和多重值 5.2 类图 5.2.3 关系 关联关系 单向关联虽然两个类是相关的,但是只有一个类知道这种联系的存在。一个单向的关联表示为一条带有指向已知类的开放箭头的实线。单向关联只包含已知类的角色名和多重值描述 5.2

53、 类图 5.2.3 关系 关联关系 聚集关联 聚集是关联的一种形式,代表两个类之间的整体/局部关系。 5.2 类图 5.2.3 关系 关联关系 组成关联 组成关联表明一个对象是被一个更大的整体所拥有。这个被包含的对象可能不能参与更多的组成关联,并且不能独立于这个整体而存在。在整体创建的时候创建这个部分,并在整体销毁的时候销毁。在UML中,组成的表示是在关联线上靠近“整体”类的一端加上一个实心的菱形。 5.2 类图 5.2.3 关系 关联关系 自身关联 类也可以使用自身关联与它本身相关联。当一个类关联到它本身时,并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关 。 5.2 类

54、图 5.2.3 关系 关联关系 关联类 Person类和 Company 类之间关联时产生了称为 Contract的关联类。这意味着当Person类的一个实例关联到 Company 类的一个实例时,将会产生Contract类的一个实例。5.2 类图 5.2.3 关系 关联关系的不同重数与代码的映射 (1)单向关联(0.1) (2)单向关联(1.1) (3)单向关联(1.*) (4)双向关联(1,0.1) 5.2 类图 5.2.4 关联关系的不同重数与代码的映射 关联关系的不同重数与代码的映射 (1)单向关联(0.1) public class Account private DebitCard

55、 theCard;public DebitCard getCard( ) return theCard; public void setCard ( DebitCard card ) theCard = card; public void removeCard ( ) theCard = null; 5.2 类图 5.2.4 关联关系的不同重数与代码的映射 关联关系的不同重数与代码的映射 (2)单向关联(1.1)public class Accountprivate Guarantor theGuarantor;public Account (Guarantor g) if (g = = nu

56、ll) ; theGuarantor = g ; public Guarantor getGuarantor ( ) return theGuarantor ; 5.2 类图 5.2.4 关联关系的不同重数与代码的映射 关联关系的不同重数与代码的映射 (3)单向关联(1.*) public class Managerprivate Vector theAccounts;public void addAccount (Account acc) theAccount.addElement ( acc ) ; public void removeAccount (Account acc) theAc

57、count.removeElement(acc); 5.2 类图 5.2.4 关联关系的不同重数与代码的映射 关联关系的不同重数与代码的映射 (4)双向关联(1,0.1) public class Accountprivate DebitCard theCard;public DebitCard getCard( ) return theCard;public void addCard ( ) theCard = new DebitCard ( this ) ; public class DebitCardprivate Account theAccount ;DebitCard (Accou

58、nt a) theAccount = a ;public Account getAccunt ( ) return theAccount5.2 类图 5.2.4 关联关系的不同重数与代码的映射 1建立类图的一般步骤(1)研究分析问题领域。(2)发现对象与类,明确它们的含义和责任,确定属性。(3)发现类之间的关系。把类之间的关系用关联、泛化、聚集、组合、依赖等关系表达出来。(4)设计类与关系。调整和细化已得到的类和类之间的关系,解决诸如命名冲突、功能重复等问题。(5)绘制类图并编制相应的说明。 5.2 类图 5.2.5 如何建模类图 2. 如何发现类以及它们之间的关系对所获得的信息,采用“名词-

59、动词”分析法非常有效。(1)找出以上来源中的名词或名词短语,作为候选类(2)对候选类进行筛选,去掉冗余的、和系统无关的、以及非独立的类(3)以动词为线索确定类之间的关系 5.2 类图 5.2.5 如何建模类图 某“饮料自动售货机系统”具有“设置”、“销售”、“取消”三个主要功能,请根据以下功能描述建模系统类图。设置。一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。销售。顾客将硬币投入售货机,经累

60、加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物篓掉出,并自动结算及找钱。取消交易。顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。 5.2 类图 5.2.6 实例“饮料自动售货机系统”的类图 步骤:(1)找出对象及其关联(2)赋予类及关联的属性数据(3)组织类的结构 5.2 类图 5.2.6 实例“饮料自动售货机系统”的类图 对象图的概念 对象图描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看做是类图在某一时刻的实例。 5.3 对象图 5.3.1 对象图的概念 对象图和类图的区别 类图:类具有3个分栏(类名、属性及操作);在类的类名分栏中只有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论