收藏 分销(赏)

第7章--分析问题PPT学习课件.ppt

上传人:精*** 文档编号:7461937 上传时间:2025-01-05 格式:PPT 页数:88 大小:2.43MB 下载积分:16 金币
下载 相关 举报
第7章--分析问题PPT学习课件.ppt_第1页
第1页 / 共88页
第7章--分析问题PPT学习课件.ppt_第2页
第2页 / 共88页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2,*,第,7,章 分析问题,第,7,章 分析问题,学习目标:,理解分析的含义,建立静态分析模型,理解动态分析如何帮助验证静态模型,1,2,2,2,7.1,引言,分析是需求和设计之间的桥梁,可以把系统必须提供的服务的清晰陈述转化为对要处理的对象的正确理解。,分析是找出系统要,处理什么,的过程,而不是确定,如何处理,过程。,2,3,分析模型的分类,分析模型有静态部分和动态部分,静态分析,:使用类图描述,显示对象及其对象之间的关系,动态分析,:使用通信图(协作图)证明静态模型是可行的,2,4,分析的来源,业务需求模型,:描述业务上下文的手工和自动工作流,它使用参与者的面向对象(业务)版本、用例、对象、术语表,有时还有通信图和活动图来描述,系统需求模型,:包含系统的外部视图,描述为参与者的面向系统版本、用例和用例图、用户界面草案、增强的术语表和非功能需求,2,5,分析阶段内容,分析的来源必须转化为由系统处理的对象模型,以及对象的属性和关系,这些对象存在于系统或系统边界上,可以通过一个或多个接口来访问,该阶段的大多数对象都对应于真实世界中的物理对象或概念(低级的、面向解决方案的对象要在设计阶段才出现),贯彻“,用例驱动,”,2,6,补充:处理过程,分析用例,用例工程师,业务模型,或领域模型,补充需求,特征列表,用例模型,概况的,分析类,用例实现,2,7,7.2,为什么要进行分析,分析可防止在彻底理解问题之前设计解决方案,不可能仅根据业务需求模型就完全理解问题,只有转化为软件,才有可能引入新的实践,2,8,分析的作用,完成静态分析,客户就能确认我们对业务对象的理解是否正确,之后让对象影响我们的设计,完成动态分析,就可以确信分析对象能够支持需要的系统功能,2,9,7.3,分析过程概述,使用系统需求模型查找候选的类,以描述与系统相关的对象,并在类图上建立它们,确定类之间的关系,(,关联、聚合、复合和继承,),确定类的属性(对象的、已指定的简单特性),2,10,分析过程概述,检查系统用例,确定已有的对象支持它们。在检查过程中微调类、属性和关系,这个用例的实现过程将生成一些操作,来补充属性,需要时更新术语表和非功能需求,用例本身不需要更新,但可能需要某些更正,2,11,需要给客户展示的,.,类图和属性,便于客户的理解,有这样纠正错误的分析,2,12,不要客户展示的,.,对象操作或通信图,难以被客户理解,肤浅的设计,系统用例已演示了动态行为,其中隐含编码,暴露秘密,在设计之前是要删除的,2,13,7.4,静态分析,静态分析确定系统的逻辑或物理部分,以及如何把它们连接在一起,即描述如何构建和初始化系统,2,14,7.4.1,确定类,为了检查业务需求建模和系统需求建模,以,系统用例,的形式抽取出候选类,候选类常常在用例中用,名词,表示,2,15,确定类,不适合作为候选类的名词:,系统本身,参与者(例外:需要在内部存储参与者的信息),边界,小类型(字符串或数字),2,16,7.4.2,标识类的关系,依赖,泛化(继承),关联,聚集,复合(组合),实现,2,17,1.,依赖,定义,:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。,表现,:依赖关系表现在局部变量,方法的参数,以及对静态方法的调用,2,18,依赖,实例,:比如说拧螺丝,要借助,(,也就是依赖,),螺丝刀,(Screwdriver),来帮助你完成拧螺丝,(screw),的工作,代码,:,publicclassPerson,/*,拧螺丝*,/,publicvoidscrew(Screwdriverscrewdriver),screwdriver.screw();,2,19,2.,泛化(继承)关系,定义,:表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。,表现,:,父类 父类实例,new,子类,(),2,20,泛化代码,classAnimal,classTigerextendsAnimal,publicclassTest,publicvoidtest(),Animala=newTiger();,2,21,3.,关联关系,定义,:对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系,表现,:关联关系是使用实例变量来实现,2,22,关联,实例,:比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司,2,23,关联代码,publicclassCompany,privateEmployeeemployee;,publicEmployeegetEmployee(),returnemployee;,publicvoidsetEmployee(Employeeemployee),this.employee=employee;,/,公司运作,publicvoidrun(),employee.startWorking();,2,24,4.,聚合关系,定义,:当对象,A,被加入到对象,B,中,成为对象,B,的组成部分时,对象,B,和对象,A,之间为聚合(聚集)关系。,聚合是关联关系的一种,是较强的关联关系(强关联),强调的是整体与部分之间的关系,即“,has-a”,关系,聚合的整体和部分之间在生命周期上没有什么必然的联系,部分对象可以在整体对象创建之前创建,也可以在整体对象销毁之后销毁。,2,25,聚合关系,表现,:与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。,2,26,关联与聚合的区别,关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。,对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。,2,27,聚合关系,public Class Person,.,public Class School,private ArrayList students;,private void addStudent(Person person),students.add(person);,2,28,聚合关系,publicclassComputer,privateCPUcpu;,publicCPUgetCPU(),returncpu;,publicvoidsetCPU(CPUcpu),this.cpu=cpu;,/,开启电脑,publicvoidstart(),/cpu,运作,cpu.run();,2,29,5.,复合关系,复合,(强聚集,组合,合成):复合的对象不能由其他对象共享,且与构成它的对象一齐消亡,它带有很强的拥有有关系且整体与部分的生命周期一致的聚合关联形式。例如,Windows,的窗口和窗口上的菜单就是组合关系。,生命周期一致指的是部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。,组合是用带实心菱形的实线来表示。,2,30,复合关系,public Class Windowprivate Menu menu;public Window()menu=new Menu();/,可以在这时候创建,Menu,对象,也可以在之后创建,public void destory()menu.destory();/,必须同时或者在这之前销毁关联的,Menu,对象,2,31,举例,School,与,Student,是什么关系?,public Class Schoolpublic School()./,不需要创建任何,Person,对象,其,Students,都是已有的,Person,对象,public void destroy()./,只需要关掉,School,对象和断开它与自己所有的,Person,对象的关联即可,,Person,对象是不会销毁的,聚合关系,2,32,6.,实现关系,实现,:指的是一个类元描述了另一个类元保证实现的契约。对类来说,就是一个类实现了一个接口,2,33,举例:实现关系,public interface Apublic void methodA();public class B implements Apublic void methodA().,2,34,总结,一般对类关系建模的时候,先对泛化、关联和实现建模,剩下的关系都可以看作依赖。,2,35,标识类的关系,使用频率:关联,聚合,继承,复合,就设计和实现而言,关联、聚合和复合之间的区别很难界定,2,36,7.4.3,绘制类图和对象图,类图显示存在哪些类,这些类有什么关系(正式的类图还可以显示属性和操作),对于聚合、复合和关联,类图显示了可能的运行时关系,而不是显示实际运行时关系,2,37,iCoot,的分析类图,2,38,用,UML,描述运行时的对象,2,39,7.4.4,绘制关系,继承关系,2,40,绘制关系,聚合关系,2,41,绘制关系,复合关系,2,42,绘制关系,关联关系,2,43,1.,多重性,在类的两端标识允许参与关系的运行时对象的数量(关系中的多重性),n,:表示,n,m.n,:,m,到,n,范围内的任意数值(包含,m,和,n,),p.*,:从,p,到无穷大的任意数,*,:,0.*,的缩写,0.1,:可选,2,44,多重性,2,45,2.,关联标签、角色和注释,除了继承之外的所有关系都可以给定一个关联标签,它表示关联的性质,如果关联名称的理解方式不明显,就可以使用一个黑色的箭头,2,46,UML,中的关联标签、角色和注释,2,47,iCoot,的分析类图,2,48,用,UML,描述运行时的对象,2,49,7.4.5,属性,属性是对象的一个特性,例如对象的大小、位置、名称、价格、字体、利率等。,在,UML,中,每个属性都可以指定一个类型,可以是类或原型,通过分割线,显示类名和属性,2,50,用,UML,描述属性,2,51,避免做的事情,.,避免在,UML,使用独立于语言的表示法定义自己的原型,如,integer,、,Real,和,Boolean,,因为在开始设计时,就必须考虑与特定语言相关的内容,避免使用数组类型,因为它是对象和原型的交叉,使用集合类(,List,或,Set,)会更好,2,52,避免做的事情,.,避免在制品中包含派生的属性,如圆的属性包括半径、直径、周长和面积,2,53,iCoot,的属性,2,54,选择属性还是关系,如何为,Car,的颜色建模?,2,55,在属性和关系之间选择,一部分,用户角度,心理学家,汽车厂家,2,56,7.4.6,关联类,2,57,关联类,关联偶尔也有与它相关的信息或行为,关联类可以和关联一起引入,关联类表示的属性和操作仅因为关联关系的存在而存在,在设计时,必须用更具体的类替换关联类,2,58,7.4.7,有形对象和无形对象,无形对象建模,:如目录中描述的产品,有形对象建模,:如送到门口的实际产品,2,59,有形对象和无形对象,2,60,1.,错误的建模,为了清单有形性问题,假定除了销售汽车之外,经销商还给顾客提供服务,2,61,建模信息,与销售相关的信息包括:,modelNumber,availableColors,numberOfCylinders,与服务相关的信息包括:,Owner,vehicleIndentificationNumber,mileageAtLastService,2,62,错误的建模,避免使一个类有两组完全不同的任务,这种类的内聚力很脆弱,它们的任务也不会构成一个模块,2,63,错误的建模,2,64,2.,正确的建模,2,65,正确的建模,2,66,练习,4,考虑一个视频出租系统。下列图中哪个图是正确的?,2,67,7.4.8,好的对象,类取自用例中的名词,对象是具体的事物,是对类的实例化,对象拥有属性,对象能做什么,即对象操作,建议:在动态分析类之前,不要过多地关注操作,2,68,7.5,动态分析,进行动态分析的原因:,确认类图是完整、正确的,以便尽早更正错误,包括添加、删除或修改类、关系、属性和操作,相信当前的模型可以在软件中实现,验证最终系统上用户界面的功能:在进行详细设计之前,最好按照用例中的线条,把对系统的访问放在各个界面上,2,69,用例实现,动态分析中最重要的部分就是用例的实现,2,70,用例实现的步骤,检查系统用例,模拟对象之间发送的消息,在通信图上记录结果,在接收消息的对象上引入操作,根据需要添加类,以标识边界(系统接口)和控制器(复杂业务过程的占位符或者对象的创建和检索),2,71,7.5.1,绘制用例的实现过程,为分析对象之间传送消息的过程,需要用到,UML,通信图和顺序图,相对而言,通信图更适合用例的实现,仅关注对象及其连接,不考虑消息发送的顺序,2,72,U7,:进行预约的通信图,2,73,分析级的通信图可以显示,.,与系统边界交互的参与者,与系统内部的对象交互的边界,系统内部的对象与外部系统的边界交互,2,74,7.5.2,边界、控制器和实体,为表达额外的信息,,UML,允许开发人员使用图标代替标准的对象方框,2,75,边界、控制器和实体,2,76,参与者,参与者,:存在于系统外部的人或系统,2,77,边界,边界,:位于系统边缘上的对象,在系统和参与者之间。,对象系统参与者,边界提供了通信途径。,对于作为参与者的人,边界表示用户界面,以执行命令和查询,显示反馈和结果。,每个边界对象通常都对应于一个用例或一组相关的用例,通常映射到一个用户界面草案,2,78,实体,实体,:系统内部的一个对象,表示一个业务概念,如顾客、汽车或型号,一般实体由边界和控制器操作,而不是自己的行为,实体类出现在分析类图中,大多数实体在设计过程结束后仍旧存在,数据(属性)存放在数据库中,2,79,控制器,控制器:封装了复杂或凌乱过程的系统内部对象,控制器是一个服务对象,提供:,控制系统过程的全部或部分,创建新实体,检索已有实体,控制器只是便于分析,大多数控制器在设计过程结束后就不存在(转换成多个类中的方法),2,80,7.5.3,通信图中的元素,2,81,通信图中的元素,参与者的显示方式与用例图相同,对象显示为带标签的图标或带标签的方框,两个对象之间的线条表示链接,与对象图相同,消息显示为顺序号、消息名称和参数列表,开放端的箭头显示消息发送的方向,2,82,通信图中的元素,标签拥有表示对象和参数,把返回值赋予一个名字可以显示为,n,getNumber(),条件消息可以显示为消息旁边的防护,迭代可以显示为顺序号旁边的*,2,83,7.5.4,给类添加操作,通信图上的每个消息都对应类上的一个操作,从而得到用例实现的完整集合,2,84,给类添加操作,2,85,7.5.5,职责,职责有助于找出和正确指定操作及属性,只要发现系统需要的信息或行为,就应思考“哪个对象负责这个信息或行为”,确保每个对象不会负责多个任务(或角色),把对象看作客户(提出命令,给出命令)或提供者(提供答案和服务),2,86,7.5.6,状态建模,对于生存期非常复杂的实体,可以将其显示在状态图上,2,87,用于预订的状态图,2,88,7.6,小结,如何执行软件开发的分析过程,如何建立静态分析模型,在类图中显示系统面向业务的对象、对象的属性和关系,动态分析如何使用通信图提高和验证静态模型,如何使用状态图为复杂的生存期建模,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服