论UML在程序开发中的重要作用_第1页
论UML在程序开发中的重要作用_第2页
论UML在程序开发中的重要作用_第3页
论UML在程序开发中的重要作用_第4页
论UML在程序开发中的重要作用_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、经典软件工程思想将软件开发分为五个阶段:需求分析系统分析和设计;系统实施、测试和维护分为五个阶段。前言如果你想建一个狗窝,你可以在准备好木头、钉子和一些基本工具(如锤子、锯子和卷尺)后开始工作。从制定一个小的初步计划到完成一个具有适当功能的狗舍,不需要别人的帮助,几个小时就可以完成。只要狗窝够大,不漏太多,狗就能平静地生活。如果没有达到预期的效果,返工总是有可能的,这不过是让狗遭受一些委屈。如果你想建一座高层办公楼,在准备木头、钉子和一些基本工具之前就开始工作是非常愚蠢的。因为你用的钱可能是别人的,他们会问你房子的大小、形状和风格。与此同时,他们经常改变主意,即使项目已经开始。因为失败的代价太

2、高,所以有必要制定一个详细的计划。负责建筑设计和施工的是一个庞大的组织,而你只是其中的一部分。该组织将需要各种设计图纸和模型,以便各方相互交流。只要获得适当的人员和工具,并积极管理将建筑概念转化为实际建筑的过程,就能建造出符合使用要求的建筑。如果你想继续从事建筑工作,你必须在使用要求和实际施工技术之间取得良好的平衡,并与施工队的其他成员打交道,不要让他们处于危险之中,也不要让他们工作太辛苦而筋疲力尽。奇怪的是,许多软件开发组织开始想要构建一个豪宅式的软件,但是当他们开始处理这个问题时,他们似乎急于构建一个狗窝。有时候你很幸运。如果在合适的时间有足够合适的人,并且一切顺利,你的团队就有可能(也只

3、有可能)推出让用户眼花缭乱的软件产品。然而,总的来说,不可能所有的人都合适(合适的人往往供不应求),时间并不总是合适的(昨天总是更好),其他事情也不尽如人意(这往往取决于你)。如今,对软件开发的要求日益增加,但是开发团队经常仅仅依靠他们真正知道如何做好的唯一事情来编写程序代码。英雄式编程已经成为这个行业的传奇,人们似乎经常认为努力工作是对发展中各种危机的正常反应。然而,这可能不会产生正确的程序代码,而且有些项目非常庞大,无论工作时间延长多长,都不足以完成所需的工作。如果你真的想构建一个相当于房子或建筑的软件系统,问题不仅仅是要编写大量的软件。事实上,关键是编译正确的软件,并考虑如何编写更少的软

4、件。为了生产合格的软件,有必要有一套关于架构、过程和工具的规范。即便如此,许多项目开始看起来像狗舍,但后来发展成为建筑,原因很简单,它们是自己成就的受害者。如果不考虑建筑、工艺或工具的规格,总有一天狗窝会膨胀成一座建筑,并因自身重量而倒塌。狗舍的倒塌可能会惹恼你的狗;同样,一栋不成功的建筑将对该建筑的租户产生严重影响。失败的软件项目失败的原因是不同的,所有成功的项目在很多方面都是相似的。一个成功的软件组织有许多成功的因素,其中之一就是采用建模。1.什么是项目开发中的模型以及建模的重要性。那么,模型是什么?简而言之:这个模型是对现实的简化。该模型提供了系统的蓝图。该模型可以包括一个详细的计划和一

5、个从非常高的层次考虑系统的总体计划。一个好的模型包括具有广泛影响的主要元素,同时忽略与给定抽象级别无关的次要元素。每个系统可以用不同方面的不同模型来描述,所以每个模型都是一个语义上封闭的系统抽象。模型可以是结构化的,强调系统的组织。它也可以是行为的,强调系统的动态方面。为什么是模特?一个基本原因是:建模是为了更好地理解正在开发的系统。通过建模,应该实现四个目标:(1)该模型有助于根据实际情况或所需的风格来可视化系统。(2)模型可以指定系统的结构或行为。(3)模型给出了一个模板来指导系统的构建。(4)模型记录了所做的决策。建模不仅适用于大型系统。即使像狗窝这样的软件也能从建模中受益。然而,可以清

6、楚地说,系统越大、越复杂,建模的重要性就越大,原因很简单:因为我们不能完全理解一个复杂的系统,所以我们应该对它建模。人们理解复杂问题的能力是有限的。通过建模,缩小了研究问题的范围,一次只研究一个方面,即把一个难题分成一系列可以解决的小问题;解决这些小问题就能解决这个难题。此外,通过建模可以增强人类的智能。一个正确选择的模型可以使建模者在更高的抽象层次上工作。每个项目都可以从一些建模中受益。即使在一次性软件开发中,由于可视化编程语言的支持,也可以轻易地扔掉不合适的软件。建模还可以帮助开发团队更好地可视化系统计划,并帮助他们正确地构建它,以便开发工作可以更快地进行。如果你根本不建模,项目越复杂,它

7、就越有可能失败或构建错误。所有实际系统都有一个自然趋势:随着时间的推移,它们变得越来越复杂。虽然我们可能认为建模在今天是不必要的,但是随着系统的发展,我们会后悔这个决定,但是已经太晚了。如何在项目开发中建模,接下来我将详细解释建模工具uml。二、统一建模语言介绍uml(统一建模语言),也叫uml(统一建模语言或标准建模语言),是从1997年开始omg标准。它是一种支持建模和软件系统开发的图形语言,为软件开发的所有阶段提供建模和可视化支持,包括需求分析、规范、构建和配置。uml是一种强大的面向对象的可视化系统分析建模语言。它的模型可以帮助开发人员更好地理解业务流程,构建更加可靠和完善的系统模型,

8、使用户和开发人员对问题描述有相同的理解,减少语义差异,保证分析的正确性。uml建模可以分为需求建模和设计建模。需求建模的目的是确定系统边界,定义系统需要实现的功能。设计建模的主要目的是在开发团队之间交换设计思想。和后续程序设计的基础;后续测试和验收程序的基础。)第三,统一建模语言应用领域uml的目标是用面向对象的图形来描述任何类型的系统,具有广泛的应用领域。软件系统模型是最常用的模型,但它也可以用来描述非软件系统,如机械系统、企业组织或业务流程、处理复杂数据的信息系统、具有实时要求的工业系统或工业流程等。总之,uml是一种通用的标准建模语言,它可以用静态结构和动态行为来建模任何系统。此外,um

9、l适用于系统开发过程的不同阶段,从需求规范描述到完成后的系统测试。在需求分析阶段,用例可以用来捕获用户需求。通过用例建模,描述了对系统感兴趣的外部角色及其对系统(用例)的功能需求。分析阶段主要关注主要概念(如抽象、类和对象等)。)和问题域中的机制。有必要识别这些类及其关系,并用uml类图来描述它们。为了实现用例,类需要协作,这可以用uml动态模型来描述。在分析阶段,只对问题域(现实世界的概念)中的对象建模,而不考虑定义软件系统中技术细节的类(如处理用户界面、数据库、通信和并行性的类)。这些技术细节将在设计阶段介绍,因此设计阶段为施工阶段提供了更详细的规范。编程(构造)是一个独立的阶段,它的任务

10、是使用面向对象的编程语言将类从设计阶段转换成实际的代码。当用uml建模分析和设计时,我们应该避免考虑将模型转换成特定的编程语言。因为在早期阶段,模型只是理解和分析系统结构的工具,不利于过早地建立一个简单而正确的模型来考虑编码问题。uml模型也可以作为测试阶段的基础。系统通常需要经历单元测试、集成测试、系统测试和验收测试。不同的测试团队使用不同的uml图作为测试基础:单元测试使用类图和类规范;集成测试采用组件图和协作图。系统测试使用用例图来验证系统行为;验收测试由用户进行,以验证系统测试结果是否满足分析阶段确定的要求。总之,标准建模语言uml适用于用面向对象技术描述任何类型的系统,也适用于系统开

11、发的不同阶段,从需求规格说明到系统完成后的测试和维护。4.统一建模语言图形类型介绍uml定义了九种图,如用例图、类图、对象图、状态图、活动图、序列图、协作图、组件图和部署图,根据它们的特点可以分为五类。2.静态图:(类图、对象图);3.行为图:(活动图、状态图);4.交互图:(序列图、协作图);5.实现图:(组件图和部署图)。这些数字从不同的方面描述了这个系统。系统模型将这些不同的方面整合成一个一致的整体,便于系统分析和构建。1.用例图描述角色以及角色和用例之间的联系。解释谁想使用这个系统,他们可以用它做什么。用例图包含许多模型元素,如系统、参与者和用例,并显示这些元素之间的各种关系,如泛化、

12、关联和依赖。2.类图类图是一个静态视图,它描述了系统中的类以及类之间的关系。在正确编写代码之前,它可以让我们对系统有一个全面的了解。类图是一种模型类型,确切地说,它是一种静态模型类型。3.对象图很像类图,它是类图的一个实例,一个对象图显示一个类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。4.活动图描述用例所需的活动以及活动之间的约束关系,这有利于识别并行活动。它可以演示系统中哪里有功能,以及这些功能和系统中其他组件的功能如何满足用例图建模的业务需求。5.状态图描述类的对象的所有可能状态,以及事件发生时状态的转换条件。您可以捕捉对象、子系统和系统的生命周期。它们

13、可以告诉一个对象它可以具有什么状态,以及事件是如何发生的(例如消息的接收、时间的流逝、错误、条件变为真等)。)会随着时间的推移影响这些状态。状态图应该连接到所有具有清晰可辨的状态和复杂行为的类;该图可以确定一个类的行为以及该行为如何根据当前状态而改变,并且还可以显示哪些事件将改变该类的对象的状态。状态图是类图的补充。6.序列图序列图是一个模型,用于显示参与者如何在一系列连续步骤中与系统对象交互。序列图可以用来显示对象如何交互。序列图关注的是消息序列,也就是说,消息是如何在对象之间发送和接收的。7.协作图类似于序列图,它显示了对象之间的动态协作关系。它可以被视为类图和序列图的交集,协作图对对象或

14、角色建模,以及它们如何相互通信。如果强调时间和顺序,使用顺序图;如果强调上下级关系,选择协作图;这两种图形统称为交互式图形。8.组件图(组件图)描述代码组件的物理结构以及各种构建之间的依赖关系。用于建模软件组件及其关系。这些图由组件标记和组件之间的关系组成。在组件图中,组件是软件的单个组件,可以是文件、产品、可执行文件和脚本。9.部署图(配置图)用于模拟系统的物理部署。例如计算机和设备,以及它们是如何连接的。部署图的用户是开发人员、系统集成商和测试人员。在上图中,因为类图之间的关系相对复杂,所以给出了类图之间关系的一般解释。它们的关系类型包括关联、聚合、组合、概括和依赖。1.概括(概括)【泛化

15、关系】:是一种继承关系,表示一般与特殊的关系。它指定子类如何专门化父类的所有特征和行为。例如,老虎是一种动物,它既有老虎的特点,又有动物的共性。箭头指向:带有三角形箭头的实线指向父类2.实现(实现)实现关系:是类和接口之间的关系,表示类是接口所有特性和行为的实现。【箭头指向】:带三角形箭头的虚线指向界面3.协会【关联关系】:是一种所有权关系,使一个类知道另一个类的属性和方法;比如老师和学生,丈夫和妻子关联可以是双向的,也可以是单向的。双向关联可以有两个箭头或没有箭头,单向关联有一个箭头。代码实现:成员变量箭头和指向:带有普通箭头(或实心三角形箭头)的实线,指向所有者在上图中,老师和学生是双向相

16、关的。老师有不止一个学生,学生可能有不止一个老师。然而,学生和课程之间的关系是单向的。一个学生可能要选修多门课程,而这门课程是一个抽象的东西。他没有学生。4.聚合【聚合关系】:整体与部分的关系,没有整体,部分可以独立存在。如果汽车和轮胎是整体和部分的关系,没有汽车轮胎仍然可以存在。聚合关系是一种关联关系,是一种强关联关系。关联和聚合在语法上是无法区分的,所以我们必须研究具体的逻辑关系。代码实现:成员变量箭头和指向:带有空心菱形的实线,菱形指向整体5.组合(组合)【组合关系】:整体与部分的关系,但部分不能脱离整体而独立存在。如果公司和部门是整体和部分的关系,没有公司就没有部门。组合关系是一种联想关系代码实现:成员变量箭头和指向:带有实心菱形的实线,菱形指向整体6.依赖性依赖:这是一种使用关系,即一个类的实现需要另一个类的帮助,所以尽量不要使用双向依赖。代码表示:局部变量、方法参数或对静态方法的调用箭头和指向:带有指向用户的箭头的虚线各种关系的优缺点顺序:一般化=组合聚合关联依赖的实现uml图形实例因为开发项目的复杂性各不相同,所以上述九种图形并不都用于实际开发中。通常,最常用的图形有三种类型:用例图、类图和时序图。以下示例仅列出了这三个图形示例类型1图表:2.用例图:. 3 .时序图:uml建模工具powerdesign rose附

温馨提示

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

评论

0/150

提交评论