您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 《UML面向对象需求分析与建模教程--基于uml25标准》
《UML面向对象需求分析与建模教程--基于uml2.5标准》邹盛荣主编书号:978-7-03-044467-7科学出版社2015第2章面向对象方法第一部分建模理论概述•第一部分将介绍面向对象方法的产生、UML的发展、RUP统一过程的模型、Rose工具及UML的更多技术细节。••第2章面向对象方法•第3章UML统一建模语言•第4章RUP统一过程•第5章Rose建模工具•第6章UML更多细节第2章面向对象方法目录2.1了解面向对象产生的原因12.2面向对象方法基本概念与特征2.3面向对象方法学开发过程322.4下一步发展方向42.1了解面向对象产生的原因史•俗话说:•“天下大势,分久必合,合久必分。”GradyBoochIvarJacobsonRumbaugh•起初软件是手工作坊的生产方式,没有标准化的过程、工具和技术,从而导致了大量软件错误。之后计算机专家们提出了各种语言和方法,但还是不能避免错误的发生。•小型的软件(5000行代码以下的软件)基本能正确的生产出来,但大中型软件(50000行代码以上的软件是大型软件,其间的为中型软件)项目就很难保证。例:Windows95有1000万行代码Windows2000有5000万行代码Exchange2000和Windows2000开发人员结构Exchange2000Windows2000项目经理25人约250人开发人员140人约1700人测试人员350人约3200人IE项目•IE各版本•传统的软件工程方法学曾经给软件产业带来了巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,当把这种方法学应用于大型软件产品的开发时,却很少取得成功。图1-1项目的成败53%16%31%中途取消的项目出现问题的项目顺利完成的项目StandishGroupData•Dataonprojectscompletedin2006Justoveroneinthreeprojectswassuccessful•在20世纪60年代后期出现的面向对象编程语言Simula-67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重对面向对象分析和设计的研究,从而逐步形成了面向对象方法学。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。可以说,面向对象技术是当前最好的软件开发技术。-16-对象技术的发展历史Simula基本思想19671972Smalltalk实用化C++商业化1980s1990Java编程方法的成熟UML统一方法学19952011+构件、服务、云计算???2.2面向对象方法基本概念与特征•对象:对象是要研究的任何事物。从一本书到图书馆,单个整数到庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。•类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其父类,形成类层次结构。•消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。•Coad和Yourdon将面向对象概念概括为以下方程:面向对象=对象+类+继承+通信即:面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。•封装性:封装是一种信息隐蔽技术,它体现于类的说明,使数据更安全.是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外部特性(对象能接受哪些消息,具有那些处理能力),而对象的内部特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。•继承性:继承性是子类自动共享父类数据和方法的机制。它由类的派生功能体现。一个类直接继承其父类的全部描述,同时可修改和扩充。•多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,因此,同一消息即可调用不同的方法实现。2.3面向对象方法学开发过程•现实世界中存在现实对象,然后人们根据自己的观察角度和要求将现实对象抽象成现实类,然后软件设计人员基于现实类模拟出软件类,最后在程序中将软件类实例化成软件对象,最终的程序就是软件对象的活动和交互。学生类属性:学号姓名专业班级成绩...行为:吃饭睡觉上课锻炼…学生实例李华陈丽张涛刘霞...学生对象LiHuaChenLiZhangTaoLiuXia...抽象创建-26-用对象观点认识事物•A.这里面有什么东西?类与对象•B.每个东西看上去是什么样的?类的属性•C.每个东西能做点什么用?类的操作•D.这些东西都呆在什么地方?类的行为、状态、部署•E.这些东西之间有什么关系?类间的关联•F.这些东西是怎么成事的?类间的协作(用例实现)DACBEF•首先要行面向对象的分析,其任务是了解问题域所涉及的对象、对象间的关系和作用(即操作),然后构造问题的对象模型,力争该模型能真实地反映出所要解决的实质问题。在这一过程中,抽象是最本质、最重要的方法。针对不同的问题性质选择不同的抽象层次,过简或过繁都会影响到对问题的本质属性的了解和解决。•其次就是进行面向对象的设计,即设计软件的对象模型。根据所应用的面向对象软件开发环境的功能强弱不等,在对问题的对象模型的分析基础上,可能要对它进行一定的改造,但应以最少改变原问题域的对象模型为原则。然后就在软件系统内设计各个对象、对象间的关系(如层次关系、继承关系等)、对象间的通信方式(如消息模式)等,总之是设计各个对象应做些什么。•最后阶段是面向对象的实现,即指软件功能的编码实现,它包括:每个对象的内部功能的实现;确立对象哪一些处理能力应在哪些类中进行描述;确定并实现系统的界面、输出的形式及其它控制机理等,总之是实现在设计阶段所规定的各个对象所应完成的任务。-31-总结:结构化VS面向对象•结构化思维用过程刻画数据间关系•对象思维直接用类表达数据间关系•结构化中,数据是死的,全部依赖算法操作•对象思维中,数据是活的,“她”知道自己的信息(属性),并能完成自己的工作(操作)•结构化思维更像是一个人在解决所有问题•对象思维更像是一个团队的分工协作审批不同的方法对同一应用实例(电话安装业务系统)的不同效果结构化分析——数据流和加工登记安装开通问题:不是直接映射问题域,与问题域事物相关的数据和操作不是围绕这些事物来组织的,而是分散在数据流和加工中;经常发生信息膨胀——模型中的多个数据流,实现中其实只是一项数据;分析模型难以与设计模型及源程序对应。用户登记表用户登记表用户登记表用户登记表文件用户信息面向对象方法——对象及其关系用户登记表用户名登记人审批人施工队号码登记审批安装开通用户营业员主管人施工队机房1*1*1*«call»«call»«call»«call»个人用户团体用户帐单帐单项1*1*«call»直接映射了问题域中的实际事物;能够与程序形成良好的对应。-35-面向对象VS结构化-1•扬弃,不是否定顾客取款功能帐号、数额订单PK订单ID下单日期税金运费总价订单项PK订单项ID购买数量价格FK1订单ID顾客提款机1:请办理提款(帐号,金额)-36-面向对象VS结构化-2•(程序)实现角度数据结构+算法=程序设计以对象为中心组织数据与操作数据对象属性操作对象的行为类型与变量类与对象实例函数(过程)调用消息传递类型与子类型一般类与特殊类,继承构造类型整体-部分结构,聚合指针关联-37-面向对象VS结构化-3传统结构化方法面向对象方法(UML)需求模型输入I、处理P、输出O的视角,面向功能的文档(用户需求规格说明书)需求变化,其功能变化,所以系统的基础不稳固从用户和整体角度出发使用系统抽象出用例图,获取需求;如需求变化,对象的性质相对功能稳定,系统基础稳定分析模型面向过程的数据流图DFD、实体—关系图ERD、数据字典DD表示分析模型功能分解,数据和功能/过程分开把问题作为一组相互作用的实体,显式表示实体间的关系数据模型和功能模型一致类、对象图表示分析模型,状态、顺序、协作、活动图细化说明设计模型功能模块(SC图),模块之间的连接/调用是模块的附属形式类和对象实现,类/对象的关联、聚集、继承等连接、连接规范和约束作为显式定义实施模型体系结构设计构件图,部署图测试模型根据文档进行单元测试,集成测试,确认测试单元测试采用类图,集成测试用实现图和交互图,确认测试采用用例图2.4下一步发展方向•(1)组件化•软件生产如果象硬件生产一样能够快速高效的生产出来,而且质量有保证,那软件生产将会彻底摆脱软件危机的困扰。那软件的目标之一就是软件的组件化,希望软件系统的模块象组件一样可按需要生产、组装、调试、维护。OMG/CORBA。对象管理组织发布了公共对象请求代理体系结构,对象请求代理ORB提供了多种服务,使得可复用构件可以与其他构件通信,而不管这些构件在系统中的位置如何。MicrosoftCOM和.NET。微软开发了构件对象模型,此模型提供了在Windows操作系统上运行的单个应用系统内使用构件的规格说明,这些构件可以是不同厂商生产的。Microsoft.NET框架涵盖了COM,并提供了覆盖大量应用领域的可复用类库。SunJavaBean构件。JavaBean构件系统是一个可移植的、平台独立的CBSE基础设施,是使用Java程序设计语言开发的。基于构件的开发商品化成品软件构件,由厂家作为产品供应,它们可以在构建软件时使用。这些构件通过良好定义的接口提供特定的功能,能够集成到软件中。建模和构建活动开始于识别可选构件。这些构件有些设计成传统的软件模块,有些设计成面向对象的类或软件包。基于构件开发模型步骤对于该问题域的基于构件的可用的产品进行研究和评估。考虑构件集成的问题。设计软件架构以容纳这些构件。将构件集成到架构中。进行充分的测试以保证功能正常。基于构件的开发基于构件开发模型能够使软件复用,软件复用为软件工程师带来极大收益。有研究报告指出:基于构件开发缩短了70%的开发周期,减少了84%的项目开销,生产率指数可达到26.2,而工业标准值为16.9。•(2)形式化•软件工程学科中引入数学的概念和定律,软件生产将会更加科学化,后面的高级课题中将进一步说明在软件开发中应用形式化方法的可行性和一般步骤。形式化方法有希望定量刻画用户的需求,并自动化的生产出所需要的软件。•(3)智能化•二十世纪是计算机科学的年代,计算机硬件结构和功能已经得到很大的发展,软件的需求还层出不穷,而且存在大量重复生产的状况,如果能够生产出一个软件产品,而且该产品能够适用于一类系统中,如图书馆系统如果生产一个而且能通用于所有单位的图书馆系统,那软件的智能化水平将更高。•关于智能化需要向生物学中的大脑智能学习,而二十一世纪是生命科学的年代,我们还需要向生物大脑中学习大脑智能的机理,并运用于软件工程中来,这可能还有很长的路要走。Thankyou!
本文标题:《UML面向对象需求分析与建模教程--基于uml25标准》
链接地址:https://www.777doc.com/doc-2836090 .html