对软件开发中uml建模的理解和图形整理(二)

今天接着昨天的内容,继续来了解uml的静态建模和动态建模,希望大家通过这两天的了解能加深对uml建模的理解并在以后的项目开发中加以应用。

核心UML图分类:  ---> “独孤九剑”

静态建模:[用例图]、[类图]、对象图、组件图、部署图。

动态建模:[时序图](sequence diagrams)、状态图、活动图、协作图。

核心UML图的定义及使用

一、 用例图:主要用来展示系统的核心功能及其交互的用户或系统。

举例说明:相信上一篇已经写的很清楚了,这里简单贴一张图。

===================== Num1.用例图========================

1. 用例:系统为参与者(人/系统)提供的功能,一般取名为带有动作性的词语。--椭圆

2. 用例之间的关系 --> 虚线 :

a) 包含关系:大功能包含《include》子功能。

b) 扩展关系:将基用例中一段【相对独立并且可选】的动作,用扩展《extends》用例加以封装。 --虚线反向

c) 泛化关系:一般和特殊(抽象类/接口+实现类/子类)的关系。实线三角形箭头反向。

二、类图:主要用来表现类的特征(属性和操作等),描述了多个类/接口的特征以及对象之间的协作和交互。

类图主要做两件事:1 对类中的数据及其操作进行封装;2 标明类与类之间的关系。

下面主要针对这两点来谈谈,第一点: 对类中的数据及其操作进行封装,还是先看图吧:

因为这里使用的是Rose画图,所以所有的画图操作都是在Rose上执行的。需要说明一下:这里画的是一张简单的普通类图,类图的属性和方法是可选的,而这里的正向工程和反向功能有点类似于Java web里面的Hibernate的一个重要作用:将表映射成类,也可以将类映射成表,当然这里的是一张类图而不是数据库里面的表。

第二点:标明类与类之间的关系。类与类之间的关系主要有一下几种:1. 泛化关系(继承关系)、2. 实现关系(接口与实现类的关系)、3. 关联关系(这个比较复杂,这要包含单向关联、双向关联、自关联、聚合关联、组合关联)、4. 依赖关系(项目开发中基本很少画)。下面以图的方式进行讲解:

1,泛化(继承)关系:注意是子类指向父类,且箭头为三角形,连线为实线。

2,实现关系(接口与实现类的关系):这个在Java web中经常用到,比如在Spring中,经常会调用DAO层接口的对象(通过IOC配置xml的方式来setXx产生接口对象)方法来处理Service层的业务(如:登录、注册等)。注意是实现类指向接口,且箭头为三角形,连线为虚线。

3,关联关系:

a)单向关联:就拿追MM来说,很多人都稀罕她,但她都不稀罕。如图:

b)双向关联:就拿夫妻来说,一个男的只能有一个老婆,而一个女的只能有一个老公。如图:

c)自关联:典型的,就拿Menu菜单来说,子菜单和父菜单封装的数据都一样,只是Menu类中要有自己的引用。如图:

d)聚合关联:聚合表示的是整体和部分的关系,比如说:有辆汽车报废了,但其轮胎有两个还是好的,它可以供别的汽车使用。如图(画图时切记:整体指向部分):

e)组合关联:组合也是整体和部分的关系,与聚合最大的区别在于:整体可以控制部分的生命周期。比如:一家IT公司倒闭了,那么其部分也将不复存在。如图:

注意:整体指向部分,与聚合关联不同的是:组合的菱形箭头是实心的,而聚合的菱形箭头的空心的。

4. 依赖关系:存在于方法中的临时变量、方法签名中的参数等,由于项目中很少用到,所以这里就不再赘述。

有点晚了,明天继续,晚安。

时间: 2024-12-15 05:24:43

对软件开发中uml建模的理解和图形整理(二)的相关文章

对软件开发中uml建模的理解和图形整理(一)

由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要.在uml开始之前,咱先回顾一个OOAD.OOP的主要特征. OOAD:根据面向对象的方法学来对软件系统进行分析和设计的过程.它包括OOA 分析阶段和OOD设计阶段.其中分析阶段主要解决"What to do?"的问题,而设计阶段主要解决"How to do?"的问题.具体来说就是:在OOA分析阶段咱要做的主要工作就是建立对业务问题域的视图(建立模型).

对软件开发中uml建模的理解和图形整理(三)

今天接着上一节的内容,继续来了解uml剩下的几种的静态建模和动态建模. 三.对象图:主要用来表现对象的特征,展示多个对象的特征及对象之间的交互.就拿咱出行旅游使用交通工具为例,如图: 说明:对象图只在系统的某一段时间存在,可以被看作是类图在该时刻的实例,主要用来描述对象之间的行为. 四.组件图:也称为构件图,主要用来描述软件中组件之间的关系,同时也是系统设计的一个模块化元素.组件(构件)是系统中可替换的物理部分,它封装了类的实现以及对象提供一组接口,在软件开发过程中,满足相同接口的组件可以自由地

对于软件开发中开发人员与测试人员关系的理解

在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试.在这里我仅针对于有专业的测试和专业的开发的项目. 每个公司应该都有考核机制,对于开发和测试的考核实际上很难量化,通常来讲大的方向就是开发所负责模块的bug数,对于测试来讲就是测出来的bug数,但这真的有效吗?这也许对开发有约束力,理论上开发是能够自己控制bug数的,如果从产生的bug数来评判开发的绩效还算有效,这样开发自然就会把代码写得更加认真.但如果根据测试测出来的bug数来

软件开发中几个基本概念

软件开发中几个基本概念 Peixu.Zhu 自己真的深切理解那些经常挂在嘴边的概念么? 抽象 Abstract 抽象的特点是仅存在于思想和理论之中,而非物理或者具体的存在.(不是指C++中的抽象类) 抽象是永存的,不会随着时空而发生变化. 具体 Concrete 具体的特点是物化的或者是具备物理形态,是真实存在的. 具体不是永存的,是随着时空而发生变化的,仅存于具体的时空之中. 具体和抽象的最大区别是是否随着时空而发生变化,即是否存在于我们的四维空间. 实体 Entity 实体是单独的个体事物(

软件开发中的自测及C代码示例

在软件开发中,程序自测是一个永远都绕不开的话题.很多开发人员以写出有难度的代码为荣,但却不重视对自己编写的代码进行测试,这导致了最终到达客户手中的产品质量不高,bug频发,损害了公司的形象.对于一个开发人员来说,我们应该将开发和自测置于同等重要的地位,我们花在自测上的时间要不比开发少.能否对自己编写的代码进行充分的自测也是检验一个开发人员水平高低的标准之一. 自测方法 根据所编写的程序的特点,自测方法大致有如下几种: 第一种,利用模拟工具进行自测.这种方法适用于需要其他模块(尚不具备)发过来的消

软件开发中的工作事务与微技能分级评估

工作三四年后,是否感觉自己开始做一些没有提升的事情?是否在做一些低水平重复建设的事情呢? 通过对软件开发中的工作事务与微技能进行评估和分级,可以清晰地理解自己的工作构成.评估自己的当前水平.定位下一步发展的方向和思路. 难度系数 *** 1 1.  完成初级的页面测试: 2.  编写简单非专业的文档: 3.  能够理解基本业务: 4.  日常普通的交流: 难度系数 *** 2 1.  完成一个简单的脚本实现临时需求, 15-20 min: 2.  完成一个函数或方法的单测, 5-15 min ;

09.精益敏捷项目管理——敏捷软件开发中QA角色

00.当从鳄鱼嘴里侥幸逃脱时,你很难机器你的初衷其实只是想排出沼泽中的积水. 01.精益--敏捷软件开发中质量保证(Quality Assurance,QA)的角色展开,涵盖了许多关键问题 *测试人员的作用是防止缺陷,而不是发现缺陷 *开始做开发周期计划时如何发挥验收测试的作用,以做到在最大限度上减少浪费 *在早起不容易去做测试时做些什么 02.质量保证和质量控制 a.质量康芝是确保产品或服务被设计和生产出来,满足或超越客户需求的做法 b.质量保证是指由计划的.系统的生产过程,为产品符合预期目的

软件开发中,什么是模块化开发?

软件产品可以被看作是由一系列具有特定功能的组件组成,作为一个完整的系统也可以被分解成一系列功能模块,这些模块之间的相互作用就形成了系统的所有功能. 所谓模块是指可组成系统的.具有某种确定独立功能的半自律性的子系统,可以通过标准的界面和其他同样的子系统按照一定的规则相互联系而构成的更加复杂的系统.每个模块的研发和改进都独立于其他模块的研发和改进,每个模块所特有的信息处理过程都被包含在模块的内部,如同一个"黑箱",但是有一个或数个通用的标准界面与系统或其他模块相互连接. 在软件的模块化开发

基于git的软件开发中并行工程管理以及版本控制系统概要

并行工程师什么,这里就不再解释(不懂请百度),实际上,在软件开发过程中,涉及到多人合作的以项目小组形式完成开发的软件(这里指广义上)或多或少都使用了并行工程的概念,在正式的项目开发中,项目小组成员总是分工合作每人完成一部分,然后再合并起来,而且,在实际应用中,尽管使用的是瀑布模型完成开发,但总是所有项目小组成员同时开始完成自己的部分,这,其实已经是并行工程了,我们可以自豪的宣布:我们在开发过程中使用了并行 工程这种高大上的玩意来提高开发速度,所以,老板你得给我们涨工资! 很简单吧,看起来好简单的