收藏 分享(赏)

第1章 UML系统建模与分析设计-系统建模与分析设计技术的演变.ppt

上传人:dzzj200808 文档编号:4052191 上传时间:2018-12-06 格式:PPT 页数:98 大小:2.71MB
下载 相关 举报
第1章 UML系统建模与分析设计-系统建模与分析设计技术的演变.ppt_第1页
第1页 / 共98页
第1章 UML系统建模与分析设计-系统建模与分析设计技术的演变.ppt_第2页
第2页 / 共98页
第1章 UML系统建模与分析设计-系统建模与分析设计技术的演变.ppt_第3页
第3页 / 共98页
第1章 UML系统建模与分析设计-系统建模与分析设计技术的演变.ppt_第4页
第4页 / 共98页
第1章 UML系统建模与分析设计-系统建模与分析设计技术的演变.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

1、2018/12/6,1,UML系统建模 与分析设计,2018/12/6,2,课程内容,本课程阐述了基于UML的面向对象分析与设计的基本概念,详细介绍了统一建模语言UML及其开发过程,以一个集成案例贯穿可行性研究、需求分 析、系统分析与系统设计的全过程。 还重点介绍了面向对象的软件开发CASE集成环境、设计模 式、软件复用技术、分布式对象技术、C/S模型、B/S模型、持久对象、往返工程、逆向工程和CORBA构件接口技术等内容。 使学生快速地掌握面向对象的 系统分析、设计方法。,2018/12/6,3,教学目的:,全面掌握采用面向对象的软件开发分析设计的基本步骤与方法. 掌握软件开发工具ROSE的

2、使用方法与技巧,使同学们能够掌握采用面向对象技术独立开发一个软件项目的过程和建模方法,对开发面向对象软件项目的过程有一个完整、全面地了解。,2018/12/6,4,课程学时、考核方式,课程学时(48学时) 课堂讲授: 40学时 上机: 8学时 考查课,考核方式分考试与报告和平时三部分。 考试:闭卷考试 报告:课程设计报告 每个同学期末上交一个完整的采用面向对象技术进行软件开发的课程设计报告,根据报告的内容给出成绩。 平时:出勤、作业,2018/12/6,5,教材和参考书:,教材 UML系统建模与分析设计机械工业出版社刁成嘉 UML基础与Rose建模教程人民邮电出版社蔡敏 UML和模式应用面向对

3、象分析与设计导论1版机械工业出版社CraigLarman著姚淑珍译 参考书 UML系统建模与分析设计课程设计机械工业出版社刁成嘉 UML基础与Rose建模案例(第2版)人民邮电出版社吴建,2018/12/6,6,什么是UML?,统一建模语言(Unified Modeling Language,UML)是描述、构造和文档化系统制品的可视化语言。 作用: 建立软件模型 建模语言: 提供交流的词汇和规则 可视化: 通过标准图符构成图形来描述模型 建模语言而非编程语言 通用标准: 成为软件建模的标准语言,并且在其他领域也得到应用。,2018/12/6,7,模型的三要素,过程,表示法,工具,2018/1

4、2/6,8,学习UML的三要素,表示法 - 图形 过程 - (UML与过程无关,但最好用于RUP) 工具 - (比如:Ratinal Rose),2018/12/6,9,如何学习UML?,按照某种过程进行分析、设计;用设计原则和模式进行更好的设计;用UML表示法记录、辅助“工具”:用UML来表达OOA/D UML的意义就在于为OOA/D的实践规定了一致的表示法 方法:运用OOA/D原则领域分析+职责分配 过程:过程模型(活动套路,开发周期) 用例驱动,以体系结构为中心,迭代增量式,2018/12/6,10,UML不是OOA/D,也不是方法,它仅仅只是一种图形表示法 如果不掌握对象思想,那么UM

5、L或任何case工具(如ROSE)将毫无意义 我们需要一种用于OOA/D的语言,这既是一种思考的工具,也是一种沟通的形式。因此,我们将在OOA/D中应用UML。,如何应用UML进行OOA/D? 如何将UML应用于UP过程?,2018/12/6,11,第一章 系统建模与分析设计技术的演变,本章目的: 理解软件的基本概念和特点 了解软件的发展过程及软件开发过程 了解软件开发的方法 掌握面向对象技术的基本概念及开发过程 了解几种典型的面向对象方法,2018/12/6,12,1.1 软件的概念、特点和分类,1现代软件的概念和特点(1)软件规模大。(2)软件开发规范并趋于标准化。(3)软件开发方法多,有

6、大量的软件工具持。(4)注重软件开发的管理。(5)软件维护相对过去容易得多。,2018/12/6,13,2软件的分类 (1)按软件的功能划分系统软件。支撑软件。应用软件。 (2)按软件的规模划分微型软件。小型软件。中型软件。大型甚至超大型软件。 (3)按软件工作方式划分实时处理软件。分时软件。交互式软件。批处理软件。,2018/12/6,14,(4)按软件服务对象的范围划分项目软件。产品软件。 (5)按使用的频度划分一次性使用软件。使用频度较高的软件。 (6)按软件失效的影响程度划分一般性软件。关键性软件。,2018/12/6,15,1.2 软件的发展与软件工程,软件工程的指导性原则:变动的软

7、件需求。稳妥的设计方法。高效的软件开发支持技术。有效的过程管理。软件工程具有里程碑意义的进展:结构化软件开发方法的工具。计算机辅助软件工程(CASE)。面向对象语言和方法成为主流的软件开发技术。,2018/12/6,16,1.3 软件开发模型的演变和生存周期,1.3.1 软件开发过程与模型的演变,2018/12/6,17,1. 瀑布模型(waterfall model),2018/12/6,18,瀑布模型的特点,文档驱动的模型 阶段间具有顺序性和依赖性 推迟实现的观点 质量保证的观点,2018/12/6,19,瀑布模型的问题,实际项目很少按照该模型给出的顺序进行 用户常常一开始难以清楚地给出所

8、有需求 用户必须有耐心等待一个漫长无反馈的交付 开发者常常被不必要地耽搁,2018/12/6,20,(1)慎重使用瀑布模型的情况: 不能充分理解客户需求或客户需求有可能迅速发生化; 系统太大太复杂,不能一次做完所有的事; 事先拟采用的技术迅速发生变化; 提供的资源有限; 无法利用各开发阶段的某一中间产品。(2)使用瀑布模型的情况: 系统所有的功能、性能要求客户可以一次性准确交付时; 必须是首次开发的新系统并且淘汰全部老系统时。,2018/12/6,21,2. 渐增模型(incremental model) 由一组有计划的、循环渐增的、不断改进的过程版本组成。 各个中间版本可以并行开发。,201

9、8/12/6,22,(1)慎重考虑使用渐增模型的情况: 不能充分理解客户需求或客户需求有可能迅速发生变化; 事先拟采用的技术迅速发生变化; 客户突然提出一些新的功能需求; 长时期内仅有有限的资源保证(开发人员和资金)。(2) 使用渐增模型的情况: 需要在尽短的时间内得到系统基本功能的演示或使用; 各版本都有中间阶段产品可提供使用; 系统可以被自然地分割成渐增的模式; 开发人员与资金可以逐步增加。,2018/12/6,23,3. 演化模型(evolutionary model)演化模型也称为原型(prototype)法模型。使用演化模型时应注意: 演化模型也是通过系统各个可执行的中间版本以渐增的

10、形式来开发系统的,但是客户需求可以分步逐渐了解,不用在初始时就确定。 在模型中,可以预先定义一部分客户需求,然后在每个后继的中间版本中再逐步增加需求,一点点完善。 在开发每个中间版本时,开发过程中的活动和任务可以顺序地或部分重叠平行地被加入到这些中间版本中。,2018/12/6,24,2018/12/6,25,4. 螺旋模型(spiral model),螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即: 制定计划 确定软件目标,选定实施方案,弄清项目开发的限制条件; 风险分析 分析所选方案,考虑如何识别和消除风险; 实施工程 实施软件开发 客户评估 评价开发,提出修正建议,建立下一

11、周期的计划。,2018/12/6,26,螺旋模型,决定目标、 方案和限制,评价方案、 识别风险、 弱化风险,开发、验证、 下一级产品,计划下一阶段,集成 测试,2018/12/6,27,螺旋模型,螺旋模型将瀑布模型与快速原形模型结合起来,并且加入两种模型均忽略了的风险分析。 螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本。,2018/12/6,28,优点 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标; 维护和开发之间并没有本质区别。特点 风险驱动的主要适用于内部开发的大规模软件项目,2018/12/6,29,5 . 智能模型(

12、intelligent model),2018/12/6,30,智能模型,它把瀑布模型和专家系统结合在一起。该模型在开发的各个阶段上都利用了相应的专家系统来帮助软件人员完成开发工作,2018/12/6,31,2018/12/6,32,要点: 开发活动之间的无间隙性和循环迭代性 适用于面向对象的开发过程 强调无明显的活动阶段划分,6 喷泉模型,2018/12/6,33,1.3.2 软件开发模型的选择要综合考虑以下几个因素: (1)软件规模(2)软件类型 系统软件的开发。 实时软件的开发。 商业应用软件的开发。 嵌入式软件的开发。 人工智能软件的开发。,2018/12/6,34,(3)软件质量要求

13、 (4)交付工期 (5)客户需求明确度 (6)投资 (7)可复用性 (8)开发者掌握的资源,2018/12/6,35,1.3.3软件生存周期,2018/12/6,36,软件定义(1)软件系统的可行性研究1)经济可行性研究。2)技术可行性研究。3)法律可行性研究。4)方案的选择。(2)需求分析1)任务。 软件功能需求: 软件性能需求: 软件系统运行环境: 2)按需求建模。3)软件需求规格说明(Software Requirements Specification,简称SRS)。,2018/12/6,37,软件开发(1)概要设计建立系统总体结构和各模块之间的关系;定义各个功能摸块的接口;设计全局数

14、据库或数据结构;规定设计约束;制定组装测试计划。(2)详细设计对概要设计进行细化;建立文档资料。,2018/12/6,38,(3)实现选择合适的编程语言;制定测试案例;保存文档资料。(4)组装测试(5)确认测试 3软件使用、维护和更新换代(1)软件使用(2)系统维护(3)系统更新换代,2018/12/6,39,1.4 软件开发方法简介,1. 结构化程序设计方法其控制结构仅由顺序、选择与重复等有限的基本控制结构表示。 2. 模块化程序设计方法模块之间的接口应尽可能简明清晰:单独模块的修改不影响其它模块的功能;模块化应具有可修改性、易读性和可验证性。 3. 面向对象程序设计方法,2018/12/6

15、,40,1.4.1 结构化软件开发方法 1.4.2 模块化软件开发方法 1.4.3 面向数据结构软件开发方法 1.4.4 面向对象软件开发方法,2018/12/6,41,结构化开发方法 Structured Developing Method,是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。 结构化方法总的指导思想自顶向下、逐步求精。它的基本原则是功能的分解与抽象。 结构化开发方法的组成结构化程序设计方法 SP法(Structured Program)结构化设计方法 SD法(Structured Design)结构化分析方法 SA法(Structured Analy

16、sis)SA,SD,SP 法相互衔接,形成了一整套开发方法。,2018/12/6,42,面向对象方法有几十种,综合起来,其基本观点如下: 现实客观世界由对象组成。 相同的对象归并为类。 类可以继承。 对象之间通过消息进行联系。面向对象 = 对象 + 类 + 继承 + 通信,面向对象软件开发方法,2018/12/6,43,1.4.5 软件开发方法的评价与选择综合考虑以下几方面因素: 人员素质。 时间进度。 掌握资源。 可行性。 领域知识。从四个方面评价: 技术特征。 使用特征。 管理特征。 经济特征。,2018/12/6,44,1.5 面向对象软件开发方法简介,特点:(1)使人们更好地认识客观世

17、界(2)能很好地适应需求变化(3)容易实现软件复用(4)系统易于维护和修改,2018/12/6,45,1.5.1 面向对象的基本概念,对象 类 抽象 封装 消息传递 继承 多态性,2018/12/6,46,1.5.1 面向对象的基本概念1. 对象客观世界中的实体抽象为问题空间中的对象。2. 对象的抽象类把具有相同特征和行为的对象归在一起就形成了类(Class)。,2018/12/6,47,重要的面向对象概念类和对象,在客观世界中,有一些对象具有相同的特征,将他们称之为同类对象。于是出现了类的概念。,2018/12/6,48,“面向对象”运用到软件中面向对象软件工程(OOA/OOD/OOP),利

18、用这种“面向对象”认知的世界观来进行软件开发。 程序由类和对象组成。,class Tree ,Tree aTree = new Tree();,2018/12/6,49,类的作用:,分类:用于区分不同事物。 是创建对象的模板:产生对象。,2018/12/6,50,2018/12/6,51,怎么得到类和对象?抽象,把事物共同点抽取出来,以统一的方式进行概要描述的过程; 从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征; 过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作。,2018/12/6,52,是不是现实世界中类的所有属性和方法都需要在系统中进行抽象呢?,?,当然不是啦

19、!作为一个分析人员,要根据用户实际的业务情况进行选择。 例如在课堂考勤系统中,教师类只需要有姓名、职称、性别这些属性,因为这些是用户需要的。 而在教职工人事管理系统中,教师类就需要姓名、出生年月、入职时间、所属单位、职称、性别、婚姻状况等属性。,1.从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征; 2.过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作。,2018/12/6,53,让对象细节受到保护封装,引入问题:现在让我们来编写一个java小程序,实现在命令行模式下输出以下形式的著名诗词春晓,你会怎么做?,* 春晓 * 春眠不觉晓, * 处处闻啼鸟。 * 夜来风雨声,

20、 * 花落知多少。,3. 信息隐蔽和局部化封装,2018/12/6,54,你可能会这么写,public class ChunXiao1 public static void main(String args) System.out.println(“* 春晓“); System.out.println(“* 春眠不觉晓,“); System.out.println(“* 处处闻啼鸟。“); System.out.println(“* 夜来风雨声,“); System.out.println(“* 花落知多少。“); ,很简单,但是有时候并不是越简单越好! 现在,如果想把*改变为*,该怎么办?改

21、5次吗?,【代码】 Chunxiao1.java,2018/12/6,55,你可能还会这么写,public class ChunXiao2 public String buildStar()return “*“; public static void main(String args) ChunXiao2 c=new ChunXiao2(); System.out.println(c.buildStar()+“ 春晓“); System.out.println(c.buildStar()+“ 春眠不觉晓,“); System.out.println(c.buildStar()+“ 处处闻啼鸟。

22、“); System.out.println(c.buildStar()+“ 夜来风雨声,“); System.out.println(c.buildStar()+“ 花落知多少。“); ,利用方法buildStar()来产生,这样每次只用修改一个地方了 我们把产生的功能封装了起来,对外界使用者来讲,不需要知道方法内部的细节,只需要知道调用这个方法可以产生就行了。,【代码】 Chunxiao2.java,2018/12/6,56,让对象细节受到保护封装,当一个对象执行自己的操作时。它对外界隐藏了操作的细节。,封装可以提高重用性, 并且让程序易于维护,2018/12/6,57,封装的程度问题,还

23、是春晓。刚才我们将产生*的方法写在了类ChunXiao2中,根据前面所讲,类中的方法代表的是类的操作,而产生*和春晓没有 直接关系,这样的封装看起来好像不合理,怎么改进一下呢 ?,ChunXiao3,【代码】StarFactory.javaChunxiao3.java,2018/12/6,58,public class StarFactorypublic String build()return “*“; public class ChunXiao3public static void main(String args)StarFactory strFac = new StarFactory(

24、);System.out.println(strFac.build()+“ 春晓“);System.out.println(strFac.build()+“ 春眠不觉晓,“);System.out.println(strFac.build()+“ 处处闻啼鸟。“);System.out.println(strFac.build()+“ 夜来风雨声,“);System.out.println(strFac.build()+“ 花落知多少。“); ,【代码】StarFactory.javaChunxiao3.java,2018/12/6,59,封装的不同,重用也不同了,现在我们不仅可以在春晓里面用

25、*了,还可以在静夜思 里面用*了,ChunXiao3,JingYeSi,【代码】 JingYeSi.java,2018/12/6,60,public class JingYeSipublic static void main(String args)StarFactory strFac = new StarFactory();System.out.println(strFac.build()+“ 静夜思“);System.out.println(strFac.build()+“ 床前明月光,“);System.out.println(strFac.build()+“ 疑是地上霜。“);Syst

26、em.out.println(strFac.build()+“ 举头望明月,“);System.out.println(strFac.build()+“ 低头思故乡。“); ,【代码】 JingYeSi.java,2018/12/6,61,面向对象重要概念消息传递,2018/12/6,62,4. 对象之间的联系纽带消息,封装机制使得对象独立,但它们不是孤立的,通过消息相互作用。 消息是向对象发出的服务请求。 一个消息包含消息名、接受对象的标志、调用操作名、输入信息、回答信息等。,2018/12/6,63,2018/12/6,64,给对象发消息,让它做的更多消息传递,还是春晓。有些同学不喜欢刚才

27、的排版,全部是*,没有创意。既然StarFactory类是制造*的工厂,那么它应该有更多的产品啊,不能一直是*吧。怎么办?改良版StarFactory2,ChunXiao4,【代码】StarFactory2.javaChunxiao4.java,2018/12/6,65,public class StarFactory2public String build(int i)String star=“;for(int j=0;ji;j+)star+=“*“;return star; public class ChunXiao4public static void main(String args)

28、StarFactory2 strFac2 = new StarFactory2();System.out.println(strFac2.build(1)+“ 春晓“);System.out.println(strFac2.build(1)+“ 春眠不觉晓,“);System.out.println(strFac2.build(2)+“ 处处闻啼鸟。“);System.out.println(strFac2.build(3)+“ 夜来风雨声,“);System.out.println(strFac2.build(4)+“ 花落知多少。“); ,【代码】StarFactory2.javaChun

29、xiao4.java,2018/12/6,66,4.面向对象重要概念继承,在客观世界中,类是有着层次关系的,那么程序世界中,也要能够表现这种层次。于是,有了继承。,2018/12/6,67,用继承改变刚才的春晓,自从有了StarFactory,春晓的世界变得丰富起来。既然*可以创造,那么也应该可以吧。还有、呢?全部都可以。那么让我们创建GraphicFactory类吧。它表示创造上述图形的总厂,而它的子类用来创造每一种图形。,2018/12/6,68,所有的子类都有build()方法,代表创造不同图形的操作,创造*,创造,创造,创造,2018/12/6,69,【代码】GraphicFactor

30、y.javaStarFactory.javaDiamondFactory.javaPentacleFactory.javaChunxiao5.java,2018/12/6,70,public class GraphicFactory public String build()return “ “; public class StarFactory extends GraphicFactorypublic String build()return “*“; public class PentacleFactory extends GraphicFactorypublic String build

31、()return “; public class SquareFactory extends GraphicFactorypublic String build()return “; public class DiamondFactory extends GraphicFactorypublic String build()return “; ,2018/12/6,71,public class ChunXiao5public static void main(String args)GraphicFactory strFac1 = new StarFactory();GraphicFacto

32、ry strFac2 = new PentacleFactory();GraphicFactory strFac3 = new SquareFactory();GraphicFactory strFac4 = new DiamondFactory();System.out.println(strFac1.build()+“ 春晓“);System.out.println(strFac1.build()+“ 春眠不觉晓,“);System.out.println(strFac2.build()+“ 处处闻啼鸟。“);System.out.println(strFac3.build()+“ 夜来风

33、雨声,“);System.out.println(strFac4.build()+“ 花落知多少。“); ,2018/12/6,72,多态性(Polymorphism)是指同一个消息为不同的对象接收时,可产生不同的动作或执行结果。多态性分为两种: 编译时的多态性静态邦定或静态联编 运行时的多态性动态邦定或动态联编 多态性的实现方式: 通过接口实现多态性 通过继承实现多态性 通过抽象类实现的多态性,6. 多态性,2018/12/6,73,多态性的表现,2018/12/6,74,多态性,2018/12/6,75,回顾一下:,类和对象 抽象 封装 消息传递 继承 多态 关联、聚合、组成,2018/1

34、2/6,76,了解这些概念的意义,运用面向对象的概念可以帮助我们: 理解客户的领域知识 用客户能够理解的术语来说明你对问题的理解 准确的建立模型 顺利的进行OOA,OOD,OOP,2018/12/6,77,1.5.2 面向对象系统开发过程,2018/12/6,78,(1)需求分析阶段。 分析领域的业务范围、业务规则和业务处理过程,明确系统的责任、范围和边界,确定系统需求,建立需求模型。(2)系统分析阶段。 建立三个系统模型:对象静态模型、对象动态模型和对象功能模型。(3)系统设计阶段。 在分析模型基础上,选择适当的开发环境进行设计,包括体系结构设计、对象设计、模式设计。(4)系统实现、测试、维

35、护阶段。 程序设计语言实现,各项测试,编写用户使用手册。,面向对象系统开发过程,2018/12/6,79,面向对象系统的开发过程以体系结构为中心,以用例为驱动,是一个反复、渐增的过程。,2018/12/6,80,1.5.3 几种典型的面向对象方法简介,1.Booch 面向对象方法 2.Jacobson 面向对象方法 3.Coad-Yourdon 面向对象方法 4.James Rumbaugh 面向对象方法,2018/12/6,81,1.Booch 面向对象方法,Booch方法的力量在于其丰富的符号体系,包括: . 类图(类结构静态视图) . 对象图(对象结构静态视图) . 状态转移图(类结构动

36、态视图) . 时态图(对象结构动态视图) . 模块图(模块体系结构) . 进程图(进程体系结构) ,2018/12/6,82,逻辑模型:描述系统的类结构和对象结构,类图和对象图。 物理模型:描述系统的模块结构和进程结构,模块图和进程图。 静态模型:描述系统 的静态组成结构 动态模型:描述系统执行过程中的行为,状态迁移图和顺序图。,2018/12/6,83,Booch方法的一般过程1)系统技术层开发步骤: 发现类与对象。提取候选对象,分析标识相关场景,定义类的属性和操作 确定类和对象的语义。选择分析场景,责任分配,定义操作. 标识类和对象间的关系 继承 依赖 关联等2)系统管理层开发步骤:强调团

37、队技术管理。明确用户关键需求。建立系统分析模型。完善设计系统结构。系统实现。软件交付。,2018/12/6,84,2Jacobson的面向对象方法 面向对象的软件工程(OOSE),OOSE的核心最大贡献,是建立了Use Case 模型。,Jacobson将use case模型与其它五种系统模型关联: . 领域对象模型。use case模型根据领域来表示。 . 分析模型。use case模型通过分析来构造。 . 设计模型。use case模型通过设计来具体化。 . 实现模型。该模型依据具体化的设计来实现use case模型。 . 测试模型。用来测试具体化的use case模型。,Uml 创始人

38、Ivar Jacobson,2018/12/6,85,用例(Use case) 贯穿了OOSE活动的核心,描述了系统的需求及功能。,建立面向对象分析模型的过程1)建造用户需求模型。定义执行者及责任,标识用例.2)建造系统分析模型。创建界面对象的结构视图模型,对象行为操作,利用用例场景复审模型.建立面向对象设计模型的过程1)创建模块作为主要的设计对象。2)创建一个显示激励如何在模块间传送的交互图。3)把模块组织成子系统。4)复审设计工作。,2018/12/6,86,3.Coad-Yourdon 面向对象方法,(1)面向对象分析(OOA)步骤 构造和评审面向对象分析(OOA)概念模型的顺序由五个层

39、次组成,即类与对象属性服务结构主题,2018/12/6,87,这五个层次表示分析的不同侧面。,2018/12/6,88,设计模型由四个部件模型和四个活动组成。 四个部件模型:人机接口部件模型问题领域部件模型任务管理部件模型数据管理部件模型 四个活动:构建四个部件模型的活动。 OOD贯穿OOA的五个层次和五个活动,OOA结果就是OOD的问题领域部件,但在OOD中可以改动和增补。,(2) 面向对象设计(OOD)步骤,3.Coad-Yourdon的面向对象方法论,2018/12/6,89,设计模型的体系结构,2018/12/6,90,4James Rumbaugh的面向对象方法 对象模型化技术OMT

40、 UML创始人 James Rumbaugh 詹姆斯-朗博,Rumbaugh的OMT方法将开发过程分为四个阶段: . 分析 需求分析:导出问题范围的描述 系统分析:建立三大模型 . 系统设计:将分析模型划分为子系统 . 对象设计:确定属性及操作,定义算法和数据结构,结构,关系等 . 实现,2018/12/6,91, 对象模型(object model).描述对象的结构(对象、类、层次、关系),表示静态的、系统的数据特征。用对象图描述。对象模型最重要,动态模型和功能模型依此建立. 动态模型(dynamic model). 描述系统与时间和操作顺序有关的系统特征,描述系统控制特征。用状态图表示 功

41、能模型(function model).描述与数据值变换有关的系统特征。用数据流程图表示。,分析建立三种模型:,2018/12/6,92,一个UML的应用实例,面向对象分析(OOA):在问题域内发现和描述对象。面向对象设计(OOD):如何定义软件对象以及它们之间如何协作以实现需求。,2018/12/6,93,快速开始的示例,骰子游戏:软件模拟游戏者投掷两个骰子,如果总点数是7则赢得游戏,否则为输 过程:定义用例-定义领域模型-定义交互图-定义设计类图 定义用例(用例是需求分析的一种工具,它是一些情节的描述) 骰子游戏: 1、游戏者请求骰子 2、系统展示结果:如果骰子的总点数是7,则游戏者赢;否

42、则游戏者输,2018/12/6,94,骰子游戏的领域模型(Domain Model),定义领域模型(OOA) - 识别问题中的概念,它是对真实世界领域中的概念和想像可视化,与具体实现的软件技术无关(比如java或C#) 游戏者 骰子 骰子游戏,2018/12/6,95,骰子游戏的领域模型(Domain Model),2018/12/6,96,分配对象职责并绘制交互图(动态建模),OOD关注的是:软件对象的定义 职责与协作,2018/12/6,97,定义设计类图(静态建模),从领域模型以及交互图中获得启示,定义软件类,包括属性、方法等等 骰子游戏的局部设计类图示例如下:,2018/12/6,98,1.6 本章小结,软件的基本概念和特点 软件的发展过程及软件开发过程 软件开发的方法 面向对象技术的基本概念及开发过程 几种典型的面向对象方法,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报