软件工程 UML图

参考链接:
(1)软件工程中的各种图
https://www.cnblogs.com/sungyouyu/p/3590592.html
(2)UML 用例图,时序图,活动图的定义以及区别
https://www.cnblogs.com/sdjnzqr/p/4043288.html
(3)用例图与用例描述
https://www.jianshu.com/p/e1ff96af7e8c
(4)【UML 建模】UML入门 之 交互图 – 时序图 协作图详解
https://blog.csdn.net/shulianghan/article/details/17927131
(5)【必看!!!】UML之时序图详解
https://blog.csdn.net/xingjiarong/article/details/50232199
(6)软件工程各阶段的UML图应用
https://www.cnblogs.com/ygj0930/p/6616876.html
(7)软件工程 UML类图(Java)https://blog.csdn.net/JxufeCarol/article/details/104084452

CMM 能力成熟度模型:它是对于软件在组织定义,实施,度量,控制和改善软件过程的实践中对于各个发展阶段的描述。CMM的核心是软件开发视为一个过程。并根据这一个原则对软件开发和维护进行监控和研究,以使其更加科学化、标准化、使企业能够更好的实现商业目标。

项目失败的原因:70%项目的失败不是由于技术原因导致的,而是由管理不善引起的。

解决:引入统一建模语言UML进行规范描述

一、UML概述

UML(Unified Modeling Language,统一建模语言)是一种基于面向对象的可视化语言。

它采用一组形象化的图形(如类图)符号作为建模的语言。使用这些符号可以形象的描述系统的各个方面。UML是通过建立图形之间的各种关系(如类之间的关系)来描述模型。

二、UML种类

UML图形一共有十种,分为静态模型图和动态模型图。其中静态模型图主要描述系统的静态结构,动态模型图主要描述系统行为的各个方面。

静态模型图:类图、对象图、包图、组件图、部署图。
动态模型图:用例图、时序图、协作图、状态图、活动图。

三、各个阶段用什么图

(1)需求分析阶段

  • 业务用例图:由用户需求得到业务用例(描述最主要的业务功能,客户最感兴趣的、期望的功能)
  • 活动图

(2)概要设计阶段

  • 功能活动图:根据《开发文档》中新增的功能描述,画出每一个功能的活动图。由每一个功能活动图,完善业务用例图得到系统用例图(此时才是真正全面描述系统各个角色可以执行什么功能的用例图)。

(3)详细设计阶段

  • 用例图:软件工程 UML图_第1张图片
    由《开发文档》中的“功能详细设计”部分,画出每一个功能用例的约束图,主要包括:用例名、用例流程、异常处理等操作。

  • 业务模块图软件工程 UML图_第2张图片

  • 类图:对每个用例的架构、以及功能模块的划分,可以初步确定系统需要多少个实现类组成,画出类图。

  • 时序图:根据每个用例的活动图以及第五步的系统类图,为每个用例画出时序图,更加清晰明确地模拟出用户是怎么一步步调用哪个类的哪个方法来实现进行功能交互的。

四、UML各种类图的区别

(1)时序图和活动图之间的关系和区别

  • 流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。而UML活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
  • UML活动图能够表示并发活动的情形,而流程图不行。
  • UML活动图是面向对象的,而流程图是面向过程的。

(2)时序图和协作图之间的关系和区别

  • 时序图:显示对象之间的关系, 强调对象之间消息的时间顺序(侧重于对象之间的消息传递在时间上的先后关系),显示对象之间的交互。
  • 协作图:描述对象之间的交互关系(表达对象之间的交互过程及对象之间的关联关系)。

(3)

五、用例图

用例图也被称为用户模型图,是从软件的需求分析的到最终实现的第一步,它是从客户角度来描述系统功能的。用例模型就是以用例为基本单位建立的一个系统功能展示模型,它是系统所有用例的集合,以统一、图形化的方式展示系统的功能和行为特性。

它包含三个基本组件:参与者(使用系统的人或事物)、用例(代表系统的某项完整的功能,在图形中使用椭圆型表示)、关系(关联关系、泛化关系、扩展关系、包含关系)。

  • 关联关系:表示参与者与用例之间的通信,任何一方都可发送或接受消息。
  • 扩展关系:如果一个功能在完成的时候,偶尔会执行另外一个功能,使用扩展关系表示。
  • 泛化关系:表示同一个业务的不同技术实现。其实就是继承关系的一种。
  • 包含关系:是指一个用例可以含有其他用例具有的行为。
    软件工程 UML图_第3张图片
    软件工程 UML图_第4张图片

软件工程 UML图_第5张图片
软件工程 UML图_第6张图片

【Example】
用例图描述了系统提供的一个功能单元。
用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色"(actors,也就是与系统交互的其他实体)关系,以及系统内用例之间的关系。

用例图一般表示出用例的组织关系——要么是整个系统的全部用例,要么是完成具有功能(例如,所有安全管理相关的用例)的一组用例。

要在用例图上显示某个用例,可绘制一个椭圆,然后将用例的名称放在椭圆的中心或椭圆下面的中间位置。要在用例图上绘制一个角色(表示一个系统用户),可绘制一个人形符号。

角色和用例之间的关系使用简单的线段来描述。
软件工程 UML图_第7张图片
软件工程 UML图_第8张图片
软件工程 UML图_第9张图片
软件工程 UML图_第10张图片
【用例描述】
软件工程 UML图_第11张图片
在描述用例时一定要注意:
1)围绕“交互”进行场景描述。
2)保持“规格说明”级别,尽可能不要涉及界面、按钮、方法等软件系统的内部构造机制。
3)正常流程中,注意交互序列的完整性,用户操作与系统反应都应该写出来。
软件工程 UML图_第12张图片
【建立用例图步骤】
a. 进行目标分析与确定解决方向

  • 进行目标分析,确定项目的目标,定义高层次解决方案的系统特性。

b. 寻找参与者

  • 根据a中确定的目标与系统特性,发现与系统功能相关的参与者。

c. 寻找用例

  • 可根据找到的参与者来寻找用例,每个参与者的一个目标(或任务)就是一个系统用例。参与的目标(或任务)必须与项目的目标与系统特性相一致,否则就不能为其建立用例。该步骤会将系统所有用例都表示在一个用例图中,即系统用例图。如下图所示:
    软件工程 UML图_第13张图片
    d. 细化用例
  • 简单情况,c步骤就可以结束了;复杂系统开发中,往往因为系统用例图中用例粒度不适宜而需要进一步细化用例。用例粒度合适的判断标准:用例描述了为应对一个业务事件,由一个用户发起,并在一个连续时间段内完成,可以增加业务价值的任务。

以上面系统用例图为例,“特价策略制定”、“赠送策略制定”两个用例的业务目的、发起源和过程基本相同的,仅仅业务数据不同的可以合并成一个用例;“会员管理”用例有两个明显不同的业务事件,可以被细化为“发展会员”和“礼品赠送”两个更细粒度的用例;“库存处理”有三个不同业务目标:出库、入库、库存分析。最终调整和细化后如下图:
软件工程 UML图_第14张图片

六、类图

类图是面向对象系统建模中最常用的,也是定义其他图的基础。它主要是用来显示系统中的类,接口及他们之间的关系。类图中包含的主要元素有类、接口、和关系。其中的关系有关联关系、泛化关系、依赖关系、实现关系。在类图中也可以包含注释和约束。

类是类中的主要组件,有3部分组成:类名、属性和方法。
接口的表示法:在UML中接口用一个带有名称的圆圈表示。并且通过一条实践与它的模型相连。也可以使用普通的类表示,但是要在上面要做声明。

  • 泛化关系:表示类与类,接口与接口之间的继承关系。
  • 依赖关系:对于两个相对独立的系统。当一个系统负责构造另一个系统的事例,或者依赖另一个系统的服务时。这两个系统之间体现为依赖关系。
  • 关联关系:对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定的事例存在固定的对应关系时,这两个系统之间的关联关系。关联关系中的关系可以有一个名称。
  • 关联关系包括:聚合关系、组成关系。
  • 聚合关系:是一种特殊的更强形式的关联,它在逻辑上是部分和整体的关系。但 是不强调生命周期。聚合关系描述了一中“has a”的关系。即整体拥有部分。整体不在,部分可以存在。聚合关系使用空心的菱形箭头。
  • 组合关系:它是更强的一种聚合关系,它强调生命周期。只有在整体存在的条件下,部分才能存在,如果整体不在,部分不能单独存在。整体拥有部分的生命周期。组成关系用实心的菱形箭头。

【Example】
软件工程 UML图_第15张图片

七、时序图

时序图用于描述对象之间的传递信息的时间顺序,即用例中的行为顺序。

序列图显示具体用例(或者是用例的一部分)的详细流程。它几乎是自描述的,并且显示了流程中中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。

  • 当执行一个用例时,时序图中的每一条消息对应了一个类中操作或者引起转换的触发事件。时序图是一个而微大关系图。

序列图有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例。

  • 纵轴表示时间时间轴向下延伸。
  • 横轴代表协作中的各个独立对象。
  • 对象存在时,消息用从一个对象的生命线到另个对象的生命线的箭头表示。箭头以时间的顺序在图中上下排列。
  • 时序图包括四个元素 对象(Object),生命线(Lifeline),激活(Activation),消息(Message)

(1) 对象(Object)
在这里插入图片描述
对象 : 时序图中的对象在交互中扮演的角色就是对象;
对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;
对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;

  • 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;
  • 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;

(2) 生命线(Lifeline)
软件工程 UML图_第16张图片
生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;
生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;
对象的生命线 : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标 如上图;

(3) 激活(Activation)
软件工程 UML图_第17张图片
激活(Activation) : 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务;
去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象;
激活的表示 : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条;
激活去激活的时机

  • 激活 : 对象激活是在激活条的顶部激活;
  • 去激活 : 激活条的底部去激活, 通常发生在一个消息离开对象生命线;

(4) 消息
消息概念 : 定义 交互 和 协作 中 交换信息 的类, 对 对象之间的 通信内容 建模;

消息动作 :

  • 动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过 发送 和 接收 消息 进行通信;
  • 产生结果 : 消息可以触发操作, 唤起信号, 或使目标对象创建 或 销毁;

消息的异步和同步通信 :

  • 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的 命名的 对象间的异步通信;
  • 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;

消息类型 :

  • 在这里插入图片描述
    两个对象间绘制消息;
  • 在这里插入图片描述
    两个对象之间的过程调用;
  • 在这里插入图片描述
    两个对象之间的异步消息;
  • 在这里插入图片描述
    过程调用中返回的消息;
  • 在这里插入图片描述
    绘制反身消息;

【Example】
软件工程 UML图_第18张图片
软件工程 UML图_第19张图片

八、活动图

活动图本质上就是流程图。它用于描述系统的活动,判定点和分支等。活动中的动作状态,原子的、不可已中断的动作,并在此动作完成后向另一个动作转变。分支与合并。

活动图表示在处理某个活动时,两个或者更多类对象之间的过程控制流。活动图可用于在业务单元的级别上对更高级别的业务过程进行建模,或者对低级别的内部类操作进行建模。

  • 活动图最适合用于对较高级别的过程建模,比如公司当前在如何运作业务,或者业务如何运作等。这是因为与序列图相比,活动图在表示上"不够技术性的",但有业务头脑的人们往往能够更快速地理解它们。

分支在软件系统中很常见:用于表示对象类具有的条件行为。用一个布尔型的表达式真假来判定动作的流向,合并有两个如转换一个出转换,分支有一个如转换两个出转换。

  • 分叉与汇合:分叉又来描述并发线程。每个分叉可以有一个输入的转换和两个或多个输出转换。汇合代表两个或多个并发控制流的同步发生。当所有流都到达汇合点后,程序才能继续前进。
  • 泳道:泳道将活动图中的活动划分为若干组。并将每一组指定给负责这组活动的业务组织。在活动图中,泳道使用垂直的实线绘制。

【Example】
软件工程 UML图_第20张图片

九、状态图

状态图包括状态、转换、初始状态、终止状态。

【Example】
软件工程 UML图_第21张图片

十、协作图

协作图也叫做合作图,是一种交互图。
时序图主要侧重于对象之间的消息传递在时间上的先后关系。
而协作图表达对象之间的交互过程及对象之间的关联关系。

【Example】
软件工程 UML图_第22张图片

十一、对象图

对象图是类图的实例,用于显示系统执行时的一个可能的快照。即在某一个时间系统上可能出现的样子,对象图用带有下滑线的对象名称表示对象。

【Example】
软件工程 UML图_第23张图片

十二、组件图

组件图用来建立系统中各种组件之间的关系。各个组件通过功能组织在一起。JavaBean,ejb,jsp都是组件。
在UML中,组件使用左侧有两个小矩形的矩形来表示。
组件图用来设计系统的整个架构。

【Example】
软件工程 UML图_第24张图片

十三、包图

包图由包与包之间的关系组成,包的图标就如同一个带标签的文件夹。

【Example】
软件工程 UML图_第25张图片

十四、部署图

部署图是用来帮助开发者了解软件中各种组件驻留在什么硬件位置,以及这些硬件之间的相互关系。

【Example】
软件工程 UML图_第26张图片

你可能感兴趣的:(软件工程)