跟我学统一建模语言UML——应用UML实现面向对象的需求分析与建模的入门示例_第1页
跟我学统一建模语言UML——应用UML实现面向对象的需求分析与建模的入门示例_第2页
跟我学统一建模语言UML——应用UML实现面向对象的需求分析与建模的入门示例_第3页
跟我学统一建模语言UML——应用UML实现面向对象的需求分析与建模的入门示例_第4页
跟我学统一建模语言UML——应用UML实现面向对象的需求分析与建模的入门示例_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料1.1 跟我学统一建模语言UML应用UML实现面向对象的需求分析与建模的入门示例1.1.1 面向对象的需求分析与建模1、面向对象的统一建模(1)什么是建模建模就是建立模型,当然模型可以是多种不同的形态比如实体、图形等形式,建模是人类对客观世界和抽象事物之间联系的具体描述。(2)什么是软件系统建模1) 软件系统的建模则是通过将用户的业务需求映射为软件系统项目的最终实现的程序代码,并保证编程实现的程序代码能够满足用户的应用需求;2) 此外,程序代码还能方便地回溯软件系统需求的过程,这个过程称为软件系统建模将现实应用问题表述成为软件方面的问题,

2、并最终加以解决的过程。(3)为什么要对软件系统进行建模建立高楼大厦和建立狗窝的区别是在建设狗窝之前不需要进行设计方面的工作过程,而建立高楼大厦时则必须要在建筑施工之前进行充分的需求分析和详细的建筑设计、评估等过程。因此,为了能够生产出合格的软件系统,也就同样需要有一套关于软件系统的体系结构、实现过程、程序代码结构和所使用的各种工具、各种规范的说明和图示的“说明资料”或者“参考文档”,而这些“说明资料”或者“参考文档”则是对软件系统建模后的成果。1) 通过对软件系统进行建模可以更好地帮助软件系统的开发人员理解正在开发的软件系统,同时也能够表达软件系统的开发人员所渴望的软件系统结构和功能行为、业务

3、流程、展示和控制软件系统体系结构,最终达到降低软件系统开发的风险之目的,保证目标软件系统能够按时、按质和在计划的成本内顺利地完成。2) 通过对软件系统进行建模还可以实现把复杂的软件系统简单化,因为人类在工程实践中应用模型的主要作用就是使复杂的问题信息关联能够简单易懂。3) 通过对软件系统进行建模还能够让软件系统的开发人员容易洞察复杂堆砌而成的原始数据背后所隐藏的规律,并能有效地使软件系统的开发人员能够更清晰地理解软件系统的需求。4) 软件系统的分析和设计模型能够帮助软件系统的开发人员按照实际情况或按照设计人员既定的目标对软件系统进行可视化的设计和构造编程实现。5) 软件系统的分析和设计模型同样

4、也允许软件系统的开发人员详细地说明软件系统的结构和功能行为。此外,模型还能够给出一个构造软件系统的模板,从而可以对设计人员的决策和实现方案进行文档化。(4)对软件系统进行建模的核心点1) 明确这个应用的数据以及对数据进行如何的处理;2) 建模的结果是要产生出相关的文档或者说明书。2、传统的结构化模型设计方法(1)应用传统的结构化模型的分析及设计方法(Structured systems analysis and design method,简称SSADM)对软件系统所建立出的模型由于不能反应软件系统实现的源程序代码,建立模型与程序设计实现在环节上相互脱离,所建立出的模型与实现软件系统的功能程序

5、代码之间几乎没什么关系。(2)开发人员根据所建立出的软件系统模型并不能生成对应的功能实现的程序代码;反之,再根据程序代码更不能生成对应的软件系统模型。所以不能保证软件系统的产品质量,更不易于软件系统的后期维护和升级完善,因为软件模型和软件实现的程序代码之间没有什么关联的约束力。也没有检测软件模型的质量高低的相关标准。 (3)之所以会出现这样的“鸿沟”,主要的原因是由于传统的软件开发是从算法的角度进行软件系统的建模。3、基于面向对象的UML软件系统建模 面向对象的软件系统建模方法是把软件系统看作是相互协作的对象集,而这些对象是对结构和行为的封装,属于某个特定的类;而这些类具有某种层次化的结构关系

6、,软件系统的所有功能是通过这些对象之间相互发送消息从而实现功能交互而获得相关的功能。由于面向对象支持抽象、封装和继承等机制,从而使得应用面向对象方法所实现的软件系统建模结果可以实现模块化、层次分类、可重用和可扩展。4、基于面向对象的UML建模类型(1)软件系统的静态建模静态建模机制包括用例图(Use Case Diagram)、类图(Class Diagram)、对象图(Object Diagram)、包(Package)、组件图(Component Diagram)和配置图(Deployment Diagram)。(2)软件系统的动态建模动态建模机制包括状态图(State Diagram)、

7、时序图(Sequence Diagram)、协作图(Collaboration Diagram)和活动图(Activity Diagram)。5、何时需要对软件系统进行建模尽管在软件应用系统开发的任何阶段开展对应的建模工作都是有意义的,但无可否认的是,在软件系统的设计最初阶段,软件系统的开发人员应将精力主要用于处理有关软件应用系统的用途、为实现软件系统的既定功能应决定要采用何种的编程环境,而不是考虑实现程序的细节(如在屏幕上的什么位置放置按钮等)方面的问题先设计、后实现。在软件系统项目开发的中期阶段,对待开发的软件系统引入建模相关的工作,也是非常有意义的。支持UML的Ratioal Rose分

8、析、设计工具既支持正向建模(根据模型导出对应的程序代码),同时也支持反向建模(根据程序代码反推测出对应的设计模型)。Ratioal Rose工具帮助软件系统的开发人员通过建立出相关的模型,从而使得开发人员能够更好地把握软件系统实现程序开发的方向,准确完成在软件系统需求分析阶段中所要求的各项任务(功能性和非功能性需求)。1.1.2 软件系统需求分析1、什么是软件系统需求分析(1)软件系统需求分析是一个翻译软件系统的需求(功能性和非功能性)和深入理解问题的过程(2)软件系统需求分析的目标是要理解相关的问题并开发出一个简要描述方案的可视化模型,不考虑软件系统最终具体的实施技术环境,即解决软件系统“要

9、做什么”的问题。2、软件系统需求分析工作的重点(1)主要是将用户的业务功能性的需求翻译为软件工程中的相关概念,或者用软件工程相关的概念来诠译问题所要求的功能;(2)工作的核心是捕获问题的行为,在屏蔽实施细节的基础上得到构成方案的粗略对象模型。3、软件系统需求分析工作的重要性(1)通过对用户的需求(功能性和非功能性)进行分析,可以产生出能体现整个软件系统灵魂的文档,并且能够将客户的需求从具体到抽象的一个过程(2)最终产生并能够制定出编码人员可实施的软件系统规范和标准。4、软件系统需求分析工作的要点开发的软件系统项目应该是以客户的需求为中心,而不应该为实现的技术而迁就或者改变软件系统既定的需求,特

10、别是非功能性需求。5、软件系统需求分析阶段的工作主要分为业务需求和应用软件系统功能需求两部分(1)分析业务需求(以网上银行为例加以说明)业务需求描述的是企业愿景级的需求比如,对于网上银行系统业务,从大的方面来说是基本相同的。作为网上银行系统,为了保证核心平台的通用性和实用性,在需求分析阶段首先全面剖析了银行系统业务过程,从业务操作的角度分析每个过程的输入、输出和处理细节。其次,面向业务处理过程,提取规范的业务流程建议;面向业务处理办法,研究最新金融政策文件并结合各地的实际情况,提取业务处理过程的每个算法、参数等等。最后,将所有问题整理出来,向用户相关部门进行咨询和确认,然后再加工整理,形成网上

11、银行系统业务需求分析报告。(2)分析软件系统功能需求(以网上银行为例加以说明)对于网上银行系统平台应用软件功能需求的分析,本着提高工作效率和方便用户使用的原则提取应用软件的功能。网上银行系统的功能划分充分考虑到了银行经办机构现行的管理体制、机构设置、操作人员配备、系统管理人员素质等方面的因素,并对其未来可能的发展变化进行了研究。对网上银行系统的需求分析阶段除了要总结和吸收软件系统开发企业以前遇到的问题和相关经验之外,还要参考国家和地方的最新金融政策文件、业务说明书籍等资料。(3)该阶段的输入和输出(以网上银行为例加以说明)软件系统需求分析阶段输入的规范指导文件包括银行金融业务流程规范。最后输出

12、的结果有网上银行系统业务流程分析、网上银行系统需求分析报告、需求分析阶段风险分析报告、需求分析软件问题报告、需求分析阶段总结报告等相关的说明书。1.1.3 利用统一建模语言UML进行软件系统的建模1、利用UML实现系统分析和设计的基本过程(1)3个基本过程从应用的角度来看,当采用面向对象方法、相关技术和实现工具设计软件系统时,首先是描述软件系统的需求从而获得软件系统的主要功能;其次是根据需求建立出软件系统的静态模型,以构造软件系统的结构;最后则是描述软件系统的动态行为,从而获得软件系统中的各个对象之间的交互关系。(2)静态建模机制其中在第1步和第2步中所建立的模型都是静态的,包括用例图、类图、

13、包图、对象图、组件图和配置图等5个UML的图形。所有这些图形都是依据标准建模语言UML的静态建模机制而产生的结果。(3)动态建模机制其中第3步中所建立的UML模型或者可以执行、或者表示执行时的时序状态或交互关系,它包括状态图、活动图、时序图和合作图等4个UML图形,所有这些图形都是依据标准建模语言UML的动态建模机制而产生的结果。因此,标准建模语言UML主要可以归纳为静态建模机制和动态建模机制两个方面;它是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统(不只限于软件系统)进行建模。2、UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。(1)在需求分析阶段在此阶

14、段的主要任务是:建立用户需求和功能模块,确定软件系统中的参与者和用例;同时可以用用例来捕获用户的功能性需求。1) 通过用例建模,描述对软件系统感兴趣的外部角色及其对软件系统(用例)的功能要求;2) 通过用时序图可以实现按时间的先后顺序,从上到下分析软件系统中的用例,确定用例的处理流程;3) 通过协作图可以确定对象之间的关系及处理过程的分析流程。(2)分析阶段主要关心问题域中的主要概念(如抽象、类和对象等)和机制,软件系统开发人员需要识别这些类以及它们相互间的关系,并用UML的类图进行描述。为实现用例,各个类之间需要协作,而这可以用UML的动态模型中的协作图来描述。(3)在设计阶段只对问题域的对

15、象(现实世界的概念)建模,而不考虑定义软件系统中技术实现细节的类(如处理用户接口、数据库、通讯和并行性等问题的类),这些技术细节将在设计阶段引入。因此,设计阶段为软件系统的构造实现阶段提供更详细的规格说明。(4)编程(构造)是一个独立的阶段其任务是用面向对象编程语言(目前极大部分编程语言都属于面向对象编程语言)将来自设计阶段的类转换成实际的程序代码。在用UML建立分析和设计模型时,应尽量避免考虑把模型转换成某种特定的编程语言。因为在早期阶段,所建立出的模型仅仅是理解和分析软件系统结构的工具,如果过早地考虑编码的实现细节问题十分不利于建立简单正确的模型。此阶段所需要应用的UML的图如下:1)类图

16、-显示系统中类与类之间的交互2)组件框图:表示系统中的组件及相互依赖性(5)UML模型还可作为测试阶段的依据高质量的软件系统通常需要经过单元测试、集成测试、系统测试和验收测试等不同的测试验证环节,不同的测试小组使用不同类型的UML图作为自身测试的依据;1) 单元测试使用类图和类规格说明;2) 集成测试使用部件图和协作图;3) 软件系统测试使用用例图来验证软件系统的功能行为;4) 验收测试由用户进行,以验证软件系统测试的结果是否满足在软件系统需求分析阶段确定的既定需求。所用到的UML图为部署图显示网络中的物理布局和各种组件的位置。3、软件系统设计阶段的主要任务和相关的UML图(1)概要设计阶段1

17、)主要的任务软件系统的设计人员通过分析所建立出的用例图,得到相关的类;然后再分析这些类的属性、操作(方法)和它们之间的关系,从而为后续的类图设计提供基础信息。2)所用到的UML图l 类图-显示软件系统中类与类之间的关系、单个程序类的结构等方面的信息;l 包图-具有一些共性的类(也还包括接口)组合在一起的图,体现了软件系统的模块组成。(2)详细设计阶段1)主要的任务细化软件系统用例图中的各个用例之间的关系,单个用例的实现流程及业务流,从而确定出各个类之间的交互信息、流程关系及状态切换。2)所用到的UML的图l 类图-显示软件系统中类与类之间的关系;l 活动图显示软件系统中类与类之间的交互关系;l

18、 时序图显示软件系统中某个用例的业务实现过程;l 状态图-显示一个对象从生成到删除的生命周期。4、理解统一建模中“统一”的含义(1)软件系统开发的整个生命周期(包括业务建模、用例建模、应用建模、数据建模)都可以用可视化建模技术统一起来。(2)在传统的软件系统开发技术中,这些阶段是由不同的技术完成的,如软件系统的业务模型是由IDEF(ICAM DEFinition method的缩写, 是美国空军在70年代末80年代初在结构化分析和设计方法基础上发展的一套软件系统分析和设计方法)相关的语言来描述,而软件系统的分析设计模型则由数据流图来表示,软件系统所应用的数据库表结构和数据库表之间的关系是用ER

19、(对象关系图) 来定义等等。这无形中增加了软件系统开发人员的学习负担和提高了开发成本。(3)在可视化建模技术中,软件系统所有的这些开发活动及相关的工作都可以由同一种语言(即UML)来描述和定义,这样可以大大增强开发团队中人员的沟通,提高开发效率和软件系统最终的质量。5、如何利用UML进行软件系统的需求分析及建模(1)为什么要建模1)必须对软件系统进行简化和抽象目前的企业级的软件系统也是一种非常复杂的系统,它的最终表现形式为可运行的目标代码。但是最终的软件代码一般是非常复杂的,会包含太多的细节信息和应用了复杂的实现技术,直接阅读程序代码很难对软件系统有一个全面的了解和把控。因此,软件系统的开发人

20、员需要有一个中间过程来得到这些结果,同时也需要对软件系统进行简化和抽象关注核心问题,也就有必要进行软件系统的设计过程。2)通过构建软件系统模型以对软件系统进行全面的分析和设计利用统一建模语言UML 来对软件系统结构进行全面的分析、理解和设计,也就是构建软件系统模型的过程,这就是所谓的可视化建模(Visual Modeling)。目前,在软件工程领域,可视化建模技术已经成为一种成熟并且标准的软件系统开发技术规范。(2)什么是模型1)模型是对现实世界的简化和抽象现实世界中的系统是纷繁复杂的,人们直接去认识现实世界并且解决其中的问题是非常困难的,而且也不利于沟通和传播。所以人们往往会构造一个模型来对

21、现实世界中的复杂系统进行简化和抽象。通过这种简化和抽象来帮助相关的设计人员加深对于系统的认知和理解,在进行简化和抽象时,重点关注或者抓住的内容应该是问题的本质,而过滤掉很多其他非本质的因素,从而帮助设计人员简化问题的复杂性,有利于问题的解决。2)各行各业都使用模型来辅助设计模型在现实世界中大量存在,无论是研制飞机还是制造汽车,设计师们都会利用模型来研究目标课题的某一个侧面或者某一方面,如汽车的风阻系数、飞机机身的空气动力布局等等。在研发过程的大部分阶段中,设计师都不会去构造一个真实的系统来进行研究,因为构造一个真实的系统的成本太高了(或甚至是不可能的),同时问题本身没有得到足够的简化,很难找到

22、对问题的正确答案或者解决方法。3)模型是沟通的手段人们平时所见的各种工程模型有的是一种概念上的模型,如数学模型;有的是对实际系统外观的一个缩小,如轮船、飞机模型和建筑模型等;还有的是对设计思想的一种展示,如建筑物的设计图纸、机械设计图等等。无论是哪一种模型,它的另外一个主要目的都是帮助人们进行思想上的沟通和技术上的交流。应用数学模型能够使别人了解你的逻辑思路,飞机等实体模型能够向观众展示飞机的外观,设计图纸将设计师的设计思想传递给生产制造工人。4)模型可以精确地描述系统语言和文字是人们进行沟通的主要手段,但语言和文字往往有二义性存在,较难保证人们的理解完全一致,而且不同国家或者民族有自己不同的

23、语言,不容易沟通交流。所以在工程技术中,各行各业更多地是使用各种各样的模型来进行思想和技术等方面的沟通,模型可以精确地描述系统,同时能够保证在整个系统开发的过程中的语义一致性。6、可视化建模技术的主要优点(1)能够有效地管理系统的复杂度模型通过过滤掉非本质的细节信息,成为描述复杂的问题或结构的本质的抽象(abstraction),从而可以使得问题更容易被理解。因为在对象模型中。软件系统的开发人员只需要描述对象所实现的功能,而封装了操作实现的细节。与软件代码相比,对象模型描述的也是同一个系统,但它展示的是软件系统结构中最关键的元素以及它们之间的关系,所有的编码细节都已经被忽略掉了,从而有利于开发人员把握理解整个软件系统。(2)增强团队的沟通对象模型同时也作为软件系统设计的蓝图,记录了软件系统开发人员的设计思想。对于软件系统的设计者而言,对象模型提供了一个工具以帮助开发人员整理设计思路,整个设计过程都可以被记录下来并保存到相关的设计文档中;同时,也可以避免开发者在整个软件系统的架构明确之前就陷入编码的实现细节之中,因为开发人员对于模型的调整修改相对于程序代码的修改要简单得多,有利于提高软件系统的开发效率。另一方面,对象模型也使得设计的结果很容易被其他人所理解,设计者的设计意图可以被完整的传递而不发生信息的失真。可视化建模采用的是标准的统一建模语言UML,所有的开发人员都应该采用

温馨提示

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

最新文档

评论

0/150

提交评论