我的编程空间,编程开发者的网络收藏夹
学习永远不晚

解析UML的面向对象分析与设计

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

解析UML的面向对象分析与设计

     今天这篇文章,就是来和大家讨论一下UML的面向对象分析与设计,可能个人的能力有限,不能写出较好的文章,有需要的小伙伴,可以参考一下。

前言

  经常听到有朋友抱怨,说学了UML不知该怎么用,或者画了UML却觉得没什么作用。其实,就UML本身来说,它只是一种交流工具,它作为一种标准化交流符号,在OOA&D过程中开发人员间甚至开发人员与客户之间传递信息。另外,UML也可以看做是OO思想的一种表现形式,可以说“OO是神,而UML是型”。所以,想用好UML,扎实的OO思想基础是必不可少的。然而,在UML应用到开发过程中时,还是有一定的模式可以遵循的。(注意,是模式而不是教条,我下面给出的流程只是一个启发式过程,而不是说一定要遵循这个流程。)下面,我们通过一个CMS系统的分析设计实例,看看如何将UML应用到实际的开发中。

  从需求到业务用例图

  OOA&D的第一步,就是了解用户需求,并将其转换为业务用例图。我们的CMS系统需求非常简单,大致课做如下描述:这个系统主要用来发布新闻,管理员只需要一个,登录后可以在后台发布新闻。任何人可以浏览新闻,浏览者可以注册成为系统会员,注册后可对新闻进行评论。管理员在后台可以对新闻、评论、注册会员进行管理,如修改、删除等。

  通过以上需求描述,我们画出如下的业务用例图:

解析UML的面向对象分析与设计_面向对象设计_计算机系统开发_网络工程师_编程学习网教育

  这里要注意三点:

  1.业务用例是仅从系统业务角度关注的用例,而不是具体系统的用例。它描述的是“该实现什么业务”,而不是“系统该提供什么操作”。例如,在实际系统中,“登录”肯定要作为一个用例,但是这是软件系统中的操作,而用户所关注的业务是不包含“登录”的。

  2.业务用例仅包含客户“感兴趣”的内容。

  3.业务用例所有的用例名应该让客户能看懂,如果某个用例的名字客户看不懂什么意思,它也许就不适合作为业务用例。

  从业务用例图到活动图

  完成了业务用例图后,我们要为每一个业务用例绘制一幅活动图。活动图描述了这个业务用例中,用户可能会进行的操作序列。活动图有个很重要的使命:从业务用例分析出系统用例。例如,下面是“新闻管理”的活动图:

完成了业务用例图后,我们要为每一个业务用例绘制一幅活动图。活动图描述了这个业务用例中,用户可能会进行的操作序列。活动图有个很重要的使命:从业务用例分析出系统用例。例如,下面是“新闻管理”的活动图

  可以看到,一个“新闻管理”这个业务用例,分解出N多系统操作。这里要特别注意这些操作,其中很多“活动”都很可能是一个系统用例(当然,不是每个都是)。例如,由这个活动图可以看出,系统中至少要包含以下备选系统用例:登录、注销登录、查看新闻列表、修改新闻、删除新闻。

  这样,将每个业务用例都绘制出相应的活动图,再将其中的“活动”整合,就得出所有备选系统用例。

  从活动图到系统用例图

  找出所有的备选系统用例后,我们要对他们进行合并和筛选。合并就是将相同的用例合并成一个,筛选就是将不符合系统用例条件的备选用例去掉。

  一个系统用例应该是实际使用系统的用户所进行的一个操作,例如,“查看新闻列表”就不能算一个系统用例,因为他只是某系统用例的一个序列项。

  为了方便、高效地进行面向对象分析和设计,UML(UnifiedModelingLanguage)被创造出来。UML是一种功能强大的、面向对象分析的可视化系统分析的建模语言,它采用一整套成熟的建模技术,广泛地适用于各个应用领域。运用UML进行面向对象分析设计,通常都要经过下述三个步骤。(1)识别系统的用例和角色。首先要对项目进行需求调研,分析项目的业务流程图和数据流程图,以及项目中涉及的各级操作人员,识别出系统中的所有用例和角色;接着分析系统中各角色和用例见的联系,使用UML建模工具画出系统的用例图;最后,勾画系统的概念层次模型,借助UML建模工具描述概念层的类和活动图。(2)进行系统分析并抽象出类。系统分析的任务是找出系统的所有要求并加以描述,同时建立特定领域模型。从实际需求抽象出类,并描述各个类之间的关系。(3)设计系统,并设计系统中的类及其行为。设计阶段由结构设计和详细设计组成。结构设计是高层设计,其任务是定义包(子系统)、包间的依赖关系和主要的通信机制。包有利于描述系统的逻辑组成以及各个部分之间的依赖关系。详细设计主要用来细化包的内容,清晰描述所有的类,同时使用UML的动态模型描述在特定环境下这些类的实例的行为。

  UML的特点UML具有以下特点[1]:

  (1)面向对象。UML支持面向对象技术的主要概念,提供了一批基本的模型元素的表示图形和方法,能简洁明了地表达面向对象的各种概念。(2)可视化,表示能力强。通过UML的模型图能清晰地表示系统的逻辑模型和实现模型。可用于各种复杂系统的建模。(3)独立于过程。UML是系统建模语言,独立于开发过程。(4)独立于程序设计语言。用UML建立的软件系统模型可以用java、VC++、SmalltaIk等任何一种面向对象的程序设计来实现。(5)易于掌握使用。UML图形结构清晰,建模简洁明了,容易掌握使用。使用UML进行系统分析和设计,可以加速开发进程,提高代码质量,支持动态的业务需求。UML适用于各种规模的系统开发。能促进软件复用,方便地集成已有的系统,并能有效处理开发中的各种风险。

  最终我们得出的系统用例图如下:

一个系统用例应该是实际使用系统的用户所进行的一个操作,例如,“查看新闻列表”就不能算一个系统用例,因为他只是某系统用例的一个序列项

  从系统用例图到用例规约

  得出系统用例图后,我们应该对每一个系统用例给出用例规约。关于用例规约,没有一个通用的格式,大家可以按照习惯的格式进行编写。对用例规约唯一的要求就是“清晰易懂”。

  下面给出“登录”这个系统用例的一个规约:

得出系统用例图后,我们应该对每一个系统用例给出用例规约。关于用例规约,没有一个通用的格式,大家可以按照习惯的格式进行编写。对用例规约唯一的要求就是“清晰易懂”

  业务领域类图

  完成了上面几步,下面应该是绘制业务领域类图了。所谓业务领域类图要描述一下三点:

  1.系统中有哪些实体。

  2.这些实体能做什么操作。

  3.实体间的关系。

系统中有哪些实体。2.这些实体能做什么操作。3.实体间的关系

  这里要特别强调:这里的实体不是Actor,而是Actor使用系统时使用的所调用的实体,是处在系统边界之内的实体。例如,管理员就没有作为一个实体出现在这里,因为管理员处在系统边界之外,它所有的工作都可以通过调用这三个类的方法完成。并且,这里的“注册会员”实体也不是刚才用例图中注册会员这个Actor,而是作为一个系统内的业务实体,供Actor们使用的。例如,其中的注册功能是给注册会员这个Actor使用,而移除则是给管理员这个Actor使用的。

  理解以上这段话非常重要,我经常看到由于混淆了实体和Actor的关系而导致画出的领域类图不准确或职责分配不准确。

  大家可能还注意到,我们这里没有给出每个实体的属性。其实,在领域分析阶段,实体的属性并不重要,重要的是找出实体的操作。

  实现类图

  以上这几步,就是分析的过程。而下面的步骤就是设计了。

  设计没有分析那么好描述,因为分析是“客户面”,它只关心系统本身的功能和业务,而不关心任何和计算机有关的东西。但是,设计和平台、语言、开发模型等内容关系紧密,因而很难找出一个一致的过程。但是,一般在设计过程中实现类图是要绘制的。

  实现类图和领域类图不一样,它描述的是真正系统的静态结构,是和最后的代码完全一致的。因此,它和平台关系密切,必须准确给出系统中的实体类、控制类、界面类、接口等元素以及其中的关系。因此,实现类图是很复杂的,而且是平台技术有关的。所以,我在这里不可能给出一个准确的实现类图,不过为了描述,我还是给出一个简化了的实现类图,当然,它是不准确的,而只是从形式上给出实现类图的样子。

  我们假设这个系统建构于.NET3.5平台上,并且使用ASP.NETMVC作为表示层,整体使用三层架构。那么,用户模块体系的实现类图大体是这样子(不准确):

我们假设这个系统建构于.NET3.5平台上,并且使用ASP.NETMVC作为表示层,整体使用三层架构。那么,用户模块体系的实现类图大体是这样子(不准确)

  序列图

  有了静态结构,我们还要给出动态结构,这样,才能看清系统间的类是如何交互的,从而有效帮助程序员进行编码工作。

有了静态结构,我们还要给出动态结构,这样,才能看清系统间的类是如何交互的,从而有效帮助程序员进行编码工作

  上图给出的是用户登录的序列图。首先注册会员作为Actor,调用UserController的Login方法启动序列,然后序列按图示步骤执行。其中UserServices作为业务组件,首先调用数据访问组件的GetByName确定用户是否存在,如果存在,再调用GetByNameAndPassword确定输入密码是否是此用户的密码。从而完成业务功能。

  要注意,序列图在实际中是很多的,几乎每个类方法都配有相应的序列图。

  最后的步骤

  在完成了上面的过程后,就可以进行编码、调试、测试等工作了。但这些已经超出了本文讨论的范围。

  总结

  本文简要给出了使用UML进行OOA&D的过程。当然,由于示例较小,而且本人水平有限,所以给出的相关内容可能不是很准确。而且软件分析设计本来就不是一个固定模式的过程,随着系统的不同整个过程会有变化。本文只是想起到一个抛砖引玉的作用,让朋友们大致了解UML的使用流程。至于实际的分析设计,还需要深入的学习和实践的积累。

     结束语:大家如果真的想要学好UML的使用流程,可以登陆编程学习网,基础不好没有关系,编程学习网上有很多入门的知识,大家可以一步一步的学习。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

解析UML的面向对象分析与设计

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

解析UML的面向对象分析与设计

     今天这篇文章,就是来和大家讨论一下UML的面向对象分析与设计,可能个人的能力有限,不能写出较好的文章,有需要的小伙伴,可以参考一下。前言  经常听到有朋友抱怨,说学了UML不知该怎么用,或者画了UML却觉得没什么作用。其实,就UML本身来说,它只是一种交流工具,它作为一种标准化交
解析UML的面向对象分析与设计

面向对象设计要点讲解

  面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设计模式的最终实现仍然要使用面向对象编程语言来表达,如Visua
面向对象设计要点讲解

2021下半年软件设计师考点分析:面向对象的概念

  很多考生在备考2021下半年软件设计师考试,今天编程学习网小编为大家整理了软考软件设计师考点分析:面向对象的概念,供大家备考复习。  【考法分析】  本知识点的考查形式主要是给定相关的一些概念描述判断正误;或根据描述指出对应的概念。  【要点分析】  1、基本概念:  (1)对象:属性(数据)+方法(操作)+对象ID 
2021下半年软件设计师考点分析:面向对象的概念

面向对象设计中的要素与原则有哪些?

  面向对象是基于万物皆对象这个哲学观点. 把一个对象抽象成类,具体上就是把一个对象的静态特征和动态特征抽象成属性和方法,也就是把一类事物的数据结构知识库" href="http://lib.csdn.net/base/datastructure" rel="nofollow" rel="nofollow" targe
面向对象设计中的要素与原则有哪些?

软件设计师面向对象的概念考点

  软件设计师面向对象的概念考点有哪些?为了方便考生及时有效的备考,编程学习网小编为大家精心整理了软考中级软件设计师面向对象的概念考试知识点,供大家参考和学习。如想获取更多计算机软件水平考试的模拟题及备考资料,请关注编程学习网网站的更新。  【考法分析】  本知识点的考查形式主要是给定相关的一些概念描述判断正误;或根据描述指出
软件设计师面向对象的概念考点

2021年软件设计师考点:面向对象的概念

  2021年软件设计师考试知识点有哪些?今天编程学习网小编为大家整理了2021年软件设计师考点:面向对象的概念,希望对在备考软件设计师的考生会有帮助。  【考法分析】  本知识点的考查形式主要是给定相关的一些概念描述判断正误;或根据描述指出对应的概念。  【要点分析】  1、基本概念:  (1)对象:属性(数据)+方法(
2021年软件设计师考点:面向对象的概念

2022下半年软件设计师知识点:面向对象的概念

  不少考生在备考2022下半年软件设计师考试,编程学习网小编为大家整理了2022下半年软件设计师知识点:面向对象的概念,希望对大家备考有帮助。  为帮助考生备考软考软件设计师考试,编程学习网小编为大家整理了2022下半年软件设计师知识点:面向对象的概念,相信对大家备考会有帮助。  面向对象的概念(★★★★★)  【考法分析】
2022下半年软件设计师知识点:面向对象的概念

2021下半年软件设计师考点分析:绝对路径与相对路径

  很多考生在备考2021下半年软件设计师考试,今天编程学习网小编为大家整理了2021下半年软件设计师考点分析:绝对路径与相对路径,供大家备考复习。  【考法分析】  本知识点主要考查形式即给出图示,要求选择正确的绝对路径、性对路径、文件全名。  【要点分析】  1、绝对路径从根目录开始写起,并且该文件的全名即为绝对路径+
2021下半年软件设计师考点分析:绝对路径与相对路径

2021下半年软件设计师考点分析:对称加密与非对称加密

  很多考生在备考2021下半年软件设计师考试,今天编程学习网小编为大家整理了软考软件设计师考点分析:对称加密与非对称加密,供大家备考复习。  【考法分析】  本知识点的考查形式有:区分对称加密和非对称加密算法;根据给出的描述判断正误;根据对称加密和非对称加密算法的特点区分选择算法;或根据情景描述,确定在某个阶段使用的秘钥
2021下半年软件设计师考点分析:对称加密与非对称加密

信息安全工程师Web安全的需求分析与基本设计考点

  信息安全工程师Web安全的需求分析与基本设计考点有哪些?为了方便考生及时有效的备考,编程学习网小编为大家精心整理了软考信息安全工程师Web安全的需求分析与基本设计考试知识点,供大家参考和学习。如想获取更多计算机软件水平考试的模拟题及备考资料,请关注编程学习网网站的更新。  【考法分析】  本考点主要是对web安全需求分析与
信息安全工程师Web安全的需求分析与基本设计考点

信息安全工程师信息系统安全的需求分析与设计准则考点

  信息安全工程师信息系统安全的需求分析与设计准则考点有哪些?为了方便考生及时有效的备考,编程学习网小编为大家精心整理了软考信息安全工程师信息系统安全的需求分析与设计准则考试知识点,供大家参考和学习。如想获取更多计算机软件水平考试的模拟题及备考资料,请关注编程学习网网站的更新。  【考法分析】  本考点主要是对信息系统安全的需
信息安全工程师信息系统安全的需求分析与设计准则考点

信息安全工程师电子商务安全的需求分析与基本设计考点

  信息安全工程师电子商务安全的需求分析与基本设计考点有哪些?为了方便考生及时有效的备考,编程学习网小编为大家精心整理了软考信息安全工程师电子商务安全的需求分析与基本设计考试知识点,供大家参考和学习。如想获取更多计算机软件水平考试的模拟题及备考资料,请关注编程学习网网站的更新。  【考法分析】  本考点主要是对电子商务安全的需
信息安全工程师电子商务安全的需求分析与基本设计考点

编程热搜

  • 华为高级工程师认证费用
      华为高级工程师认证费用是多少?华为高级工程师认证要多少钱?华为高级工程师认证是华为认证体系中用于标识个人能力在某一技术领域达到高级工程师级别的证明,认证费用为200美金,通过考试取得的证书3年有效。  华为高级工程师认证费用是必修方向和选修方向的总和,其中必修方向认证费用为300美金,选修方向认证费用为180美金。
    华为高级工程师认证费用
  • 2024年初级软考上半年考试时间安排
    初级软考每年安排两次考试,2024年初级软考上半年考试时间已公布,2024年初级软考上半年考试时间为5月25-28日。2024年初级软考上半年报名时间及入口:根据往年各省初级软考报名时间来看,2024年上半年初级软考报名时间3月份开始,具体请考生关注全国各省2024上半年软考报名时间及入口汇总表,希赛小编将及时为大家更
    2024年初级软考上半年考试时间安排
  • HCIA证书和HCIE哪个比较好?
      HCIA证书和HCIE哪个比较好?华为认证包含三个等级,分别是HCIA(华为认证网络工程师)、HCIP(华为认证网络资深工程师)、HCIE(华为认证互联网专家)认证。  HCIA(Huawei Certified ICT Associate )即华为认证ICT工程师,是华为职业认证中用于标识个人能力在某一技术领域达
    HCIA证书和HCIE哪个比较好?
  • 教你在PPT中创建好看的镜像效果
      当我们在阅读杂志书刊,或者看电影的时候常常都会看到像下图一样的原图片与图片镜像的组合效果的图片,在很多的摄影作品中也会有,我们其实也可以在PPT中轻松实现这种应用于各大媒介的图文特效技巧,不信的话我们一起来学习一下,操作过程其实并不复杂!  下面我们就开始我们的具体操作步骤了,首先第一步,我们需要先打开PowerP
    教你在PPT中创建好看的镜像效果
  • 多媒体应用设计师可以提前交卷吗
      可以。但是多媒体应用设计师提前交卷有时间限制,根据软考的考场规则,按照人力资源和社会保障部文件规定,开考5分钟后应试人员一律禁止入场。专业技术人员资格考试原则上封闭2个小时,不足2小时的全程封闭。  软考多媒体应用设计师属于专业技术人员资格考试,专业技术人员资格考试原则上封闭2个小时,不足2小时的全程封闭。  根据
    多媒体应用设计师可以提前交卷吗
  • 全国计算机二级C语言程序设计章节练习题及答案(1)
      对于备考计算机二级C语言考试的考生可以多做试题,一方面了解往年考试题型,一方面熟悉往年考点。今天编程学习网小编给大家准备了全国计算机二级C语言程序设计章节练习题及答案(1),供考生们练习。  点击查看:全国计算机二级C语言程序设计章节练习题及答案汇总  判断题  ×1.C++语言和C语言都是面向对象的程序设
    全国计算机二级C语言程序设计章节练习题及答案(1)
  • 广西2024上半年计算机软考什么时候报名?
    广西2024上半年计算机软考3月25日开始报名,具体报名时间见全国各省2024上半年软考报名时间及入口汇总表。2024上半年广西软考考试采用网络报名的方式,考生在规定的报名时间内进入中国计算机技术职业资格网,点击页面右下方的报名入口,进入全国计算机技术与软件专业技术资格(水平)考试网上报名平台,选择“广西”入口后点击进
    广西2024上半年计算机软考什么时候报名?
  • 软考可以申请退税吗
      可以。软考证书是可以抵扣个税的,按照个税6项专项附加扣除标准,在取得软考证书的当年,可以按照3600元定额扣除。  软考证书可以抵扣个税,根据国务院印发的《个人所得税专项附加扣除暂行办法》,第三章继续教育包含三条,具体内容如下:  第八条 纳税人在中国境内接受学历(学位)继续教育的支出,在学历(学位)教育期间按照每
    软考可以申请退税吗
  • win10如何正确禁用IPv6网络协议
       在Windows Vista和Server 2008开始,微软包括本地支持的IPv6(互联网协议第6版),并默认启用。IPv6是新的计算机的地址协议,最终将取代IPv4这是目前最流行的标准。win10中默认开启了对IPv6协议的支持,但是会影响到系统运行速度和磁盘占有率等。除非你的网络有IPv
    win10如何正确禁用IPv6网络协议
  • 2020年数据库系统工程师上午真题及答案解析
      2019上半年数据库系统工程师考试已结束,今天编程学习网小编为大家整理了2020年数据库系统工程师上午真题及答案解析,以便大家了解2020下半年数据库系统工程师基础知识考试真题。  软考数据库系统工程师上午考试为基础知识,编程学习网小编为大家整理了2020年数据库系统工程师上午真题,想知道答案和解析的考生可以直接进入在线题
    2020年数据库系统工程师上午真题及答案解析

目录