基于UML的软件开发过程

  • UML的概述
  • UML的定义
  • UML的组成
  • UML中的5类图形
    • 类图
    • 对象图
    • 用例图
    • 活动图
    • 状态机图
    • 顺序图
    • 通讯图
    • 交互图
    • 构件图
    • 部署图
  • UML的应用领域

为什么需要UML?

建模是管理软件开发复杂性的有效手段,使用UML给出的需求规格、总体设计、概要设计、详细设计等的图形表示,有助于参加软件产品开发的各方更好的交流,沟通、讨论。由于软件的逻辑复杂、需求易变性,使得软件的开发、测试和维护活动很复杂,并且软件的发展使得软件成为市场竞争中的一个关键因素。因此,开发者需要更好的理解他们正在构建什么,建模可以提供有效的方法,并且不一定要影响开发速度。客户和业务用户始终希望软件能够按时交付,以能够像所期望的那样具有随需应变的功效。
通过软件建模,开发人员能够:
1)在提交额外的资源之前创建并交流软件设计。
2)从设计追溯到需求阶段,有助于确保构建正确的系统。
3)进行迭代开发,在开发中,模型和其他的更高层次的抽象推动了快速而频繁的变更。

UML的概述

模型是对现实世界中的物体或系统的简化或图形表示。例如,地球仪、建筑模型、工程中的设计图纸、机器零件的设计图纸等。所以,我们要用工程化的方法开发软件产品,自然就引入了软件模型的概念。UML可以用于对任何复杂的系统建模,主要还是对软件系统建模。

建模应用于复杂的系统构建中,有时候是物理模型,如飞机、汽车、房子等的按照一定比例制作的实物模型,有时候是商业金融模型、市场贸易模拟以及电子电路图。

UML的定义

Unified Modeling Language(UML),统一建模语言,UML的定义包括UML语义和UML表示法两个部分。
(1)UML语义
UML元素符号代表的含义,描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致和通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的表达方法所造成的影响。此外UML还支持对元模型的扩展定义。
(2)UML表示法
定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。

UML的组成

模型 是一个特定系统的完整描述。


UML中的视图
1.用例视图(Use Case View),强调从用户的角度看到的或需要的系统功能,是参与者的外部用户所能观察到的系统的功能的模型图。
2.逻辑视图(Logical View),展示系统的静态或结构组成及特征,也称为结构模型视图(Structural Model View)或静态视图(Static View)。
3.并发视图(Concurrent View)体现了系统的动态或行为特征,也称为行为模型视图(Behavior Model View)或动态视图(Dynamic View)。
4.组件视图(Component View)体现了系统实现的结构和行为特征,也称为实现模型视图(Implementation View)。
5.配置视图(Deployment View)体现了系统实现环境的结构和行为特征,也称为环境模型视图(EnvironmentModel View)或物理视图(Physical view)。

UML中的5类图形


需求阶段,通过用例建模,描述用户感兴趣的系统功能。
静态分析阶段,主要识别系统中的类及其关系,用UML类图来描述系统
动态分析阶段,尝试组织多个对象并构思对象的交互与协作,以实现和检验用例的可行性,可以用UML动态模型来描述。
测试阶段,不同的测试小组使用不同的UML图作为测试依据:单元测试使用类图和类规格说明;集成测试使用组件图和协作图;系统测试使用用例图来验证系统的行为;验收测试用户进行,以验证系统测试的结果是否满足在分析阶段时确定的需求


类图

**类(class):**一类或一组具有类似属性和共同行为的事物。

建立类图的步骤:
1.研究分析问题领域,确定系统需求
2.发现对象和类,明确他们的含义和责任,确定属性和操作
3.发现类之间的静态联系。(关联、泛化、聚合、组合、依赖)
4.设计类和联系,调整和精化已得到的类之间的联系,解决命名冲突和功能重复问题
5.绘制类图并编制相应的说明

对象图

某台具体的洗衣机就是洗衣机类的一个对象。
比如:小明家的海尔洗衣机

用例图

1.用例(use case):从用户的观点对系统行为的一个描述。
2.用来从用户的观察角度收集系统需求。
3.用例图表达系统的外部事物(参与者)与系统的交互,它表达了系统的功能,即系统所提供的服务
4.整个软件项目的开发可以采用Use Case 驱动的方式进行。


一个Use Case图可以按照下列步骤建立
1.找出系统外部的活动者和外部系统,确定系统的边界和范围
2.确定每一个活动者所期望的系统行为
3.把这些系统命名为Use Case
4.把一些公共的系统行为分解为一批新的Use Case,供其它的Use Case引用。把一些变更的行为分解为扩展的Use Case
5.编制每一个Use Case的剧本(一系列步骤地描述,这些不走构成了剧本)
6.绘制Use Case 图
7.区分主业物流和例外情况的事件流。可以把表达例外情况的事件流的Use Case画成一个单独的子Use Case图
8.精化use Case图。解决Use Case间的重复与冲突问题,简化use Case中的对话序列。Use Case图可以有不同的层次,高层次的Use Case可以分解为若干个下属子系统中的Use Case

活动图

活动图实质上是一种流程图,只不过表现的是从一个活动到另一个活动的控制流。活动图描述活动的序列,并且支持对带条件的行为和并发行为表达

1.活动图着重描述活动和大的过程,它们可能与方法或成员函数及其活动序列相对应,也可能不对应。从这种意义上,它很像流程图,而不同之处是活动图显式支持并发活动和它们的同步

2.活动图最大的不足之处是它们没有显式表示出哪个对象执行哪个活动以及它们之间的消息工作方式。你可以为每个活动标记上负责的对象,但那不会使对象之间的交互变得清晰(那就是你要使用交互图的时候了)。一种常能凑效的方法是,在为一个过程建模的早期,先画活动图来帮助你获得对整个过程的理解。然后你可以用交互图来帮助你将活动分配到类中。

状态机图

1.在任一给定的时刻,一个对象总是处于某一特定的状态。
2.状态机图主要表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作

顺序图

1.在一个运行的系统中,对象之间要发生交互,并且这些交互要经历一定的时间。
2.顺序图表达的正是这种基于时间的动态交互。重点是完成某个行为的对象类和这些对象类之间所传递的消息的时间顺序

序列图的内容
在序列图中可以有对象和actor实例,以及说明它们如何交互的消息。序列图描述了在参与交互的对象中所发生的事件(从激活的角度来说明),以及这些对象如何通过相互发送消息进行通信。您可以为用例事件流的各种不同形式制作序列图。

什么时候使用
在你要分析一个用例中多个对象的行为时,就应该使用交互图。它们很有效地表示对象之间的合作,但并不那么适用于精确定义行为。
如果你想分析一个对象在多个用例中的行为,请使用状态转移图。如果你想分析交叉于多用例或多线程中的行为,考虑用活动图吧。

通讯图

通讯图通过对象之间的连接和它们相互发送的消息来显示参与交互的对象。

通讯图的图例

协同图的建立步骤:
1.确定交互的上下文
2.找出参与交互的对象角色,把他们作为图形的节点安置在协同图中
3.设置对象的初始性质
4.说明对象之间的链接,首先给出对象之间的关联链接,然后给出其他链接
5.从初始化交互的消息开始,在链接上安置相应消息。给出消息序号。注意用箭头的形势区别同步消息和异步消息。根据协作图是属于说明曾换是属于实例层,给出消息标签的内容,以及必要的构造型约束。
6.处理一些特殊情况,如循环、自调用、回调、多对象等。

交互图

1.顺序图和通讯图都是交互图,它们既是等价的,又是有区别的。
2.顺序图和通讯图都能等价的表现系统运行中对象通过消息发生的交互行为。
3.顺序图表示了时间的消息序列,便于分析交互的时序,但没有表示静态对象关系,顺序图可以有效地帮助人们观察系统的顺序行为。
4.通讯图着重表示一个协作中的对象之间的联系和消息

构件图

构件图代码构件的物理结构,以及构件之间的依赖关系。在物理层面对系统结构及内容的直观描述,最接近于通常意义上的模块结构图。

部署图

显示基于计算机系统的物理体系结构。

UML的应用领域

1.UML的目标是以面向对象图的方式来描述任何类型的系统。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。
2.UML模型可作为测试阶段的依据。系统通常需要经过单元测试、集成测试、系统测试和验收测试。不同的测试小组使用不同的UML图作为测试依据:单元测试使用类图和类规格说明;集成测试使用部件图和协作图;系统测试使用用例图来验证系统的行为;验收测试由用户进行,以验证系统测试的结果是否满足在分析阶段确定的需求。
——————————————————————————————————
选取一个过程——RUP

一个简单的案例
1.CMS系统
2.该系统需求非常简单,大致课做如下描述:
3.这个系统主要用来发布新闻,管理员只需要一个,登录后可以在后台发布新闻。任何人可以浏览新闻,浏览者可以注册成为系统会员,注册后可对新闻进行评论。管理员在后台可以对新闻、评论、注册会员进行管理,如修改、删除等。
——————————————————————————————————

1.与用户进行访谈,并且做好记录,了解用户的业务流程。
2.在访谈过程中,抽象出系统的“词汇”,画出领域类图
3.画出业务用例图,用来与用户沟通”系统应该实现什么样的业务”。

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

——————————————————————————————————
1.将每个业务用例都绘制出相应的活动图,再将其中的“活动”整合,就得出所有备选系统用例。
2.找出所有的备选系统用例后,我们要对他们进行合并和筛选。合并就是将相同的用例合并成一个,筛选就是将不符合系统用例条件的备选用例去掉。一个系统用例应该是实际使用系统的用户所进行的一个操作。

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

——————————————————————————————————
在设计阶段,需要绘制实现类图和包图。同时还涉及到组件图,时序图,协作图等。
实现类图和领域类图不一样,它描述的是真正系统的静态结构,是和最后的代码完全一致的。因此,它和平台关系密切,必须准确给出系统中的实体类、控制类、界面类、接口等元素以及其中的关系


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

时序图在实际中是很多的,几乎每个类方法都配有相应的时序图
——————————————————————————————————

图片来源:XX大学老师授课PPT

基于UML的软件开发过程相关推荐

  1. UML建模(二):基于UML的软件开发过程

    基于UML的软件开发过程 需求分析阶段 可以使用用例图来描述目标软件系统所有重要.有风险的用例,利用用例图表示参与者与用例及用例与用例之间的关系: 可以使用类图来表示目标软件系统所基于的应用领域中的概 ...

  2. 火车售票系统(基于UML的软件分析与设计模型建模实验)

    火车售票系统(基于UML的软件分析与设计模型建模试验) 文章目录 火车售票系统(基于UML的软件分析与设计模型建模试验) 一.需求 二.UML用例图 三.UML类图 四.UML时序图 一.需求 实现一 ...

  3. 软件设计实验(一)C#火车售票系统-基于UML的软件分析与设计模型建模实验(用例图、类图、时序图)

    主要从用户管理模块分析: (1)用例图: (2)类图: (3)时序图:

  4. [架构之路-131]-《软考-系统架构设计师》-软件工程-1-软件工程方法大全(软件开发过程方法、软件开发过程模型、逆向工程、净室软件工程)

    前言: 第3章 软件工程 3.1 软件开发过程方法 3.1.1 什么是软件工程 软件工程是一门研究用工业硬件生产的工程化方法构建和维护有效.实用和高质量的软件的学科. 它涉及程序设计语言.数据库.软件 ...

  5. 在统一软件开发过程中使用UML

    如何在统一软件开发过程中使用UML? 起始阶段常用UML图 在起始阶段,通常有用例图.类图.活动图.顺序图等UML图的参与. 获取用户需求之后首先要将这些需求转化为系统的顶层用例图. 在确定了用例之后 ...

  6. 【基于UML软件建模的在线学习平台】

    文章目录 开发背景与意义 一.需求分析 学生功能结构 教师功能结构 二.部分课程设计报告 总结 开发背景与意义 随着教育事业的改革,国家对高等教学逐渐得到重视.但是传统的高校间教学教育无法在学生与老师 ...

  7. 【基于UML软件建模的教材管理系统 】

    文章目录 前言 一.教材管理系统 二.部分课程设计报告 总结 前言 随着社会的不断进步,高等院校在校学生人数急剧增加,学校对教材的数量.类型较以前明显增多,给学校的教材管理工作带来了新的挑战.这些挑战 ...

  8. 【基于UML软件建模的客户关系管理系统】

    文章目录 前言 一.需求分析 二.部分课程设计报告 总结 前言 系统要求对使用不同的用户群体,设置不同的权限,设置系统的不同功能.不同的用户所看到的信息也不同.根据系统需要实现的功能,将系统划分成5个 ...

  9. 坐地铁软件测试自学,基于UML的地铁联锁软件测试用例生成方法的研究

    摘要: 计算机联锁是保证列车安全运行的重要技术措施,对联锁逻辑的分析.测试.验证是满足苛刻需求条件的基础.联锁软件作为保证行车安全的重要设备,定期对其测试至关重要.基于模型的测试用例生成方法研究,可以 ...

最新文章

  1. feignclient对象找不到_为什么我找不到对象呢,一个33岁大龄剩女的疑惑
  2. Android PC投屏简单尝试- 自定义协议章(Socket+Bitmap)
  3. 名词解释多媒体计算机,多媒体-名词解释及填空
  4. har文件解析工具_嵌入式MCU也能跑AI?STM32 Cube.AI工具包使用初探
  5. 10月25日学习内容整理:数据操作:增加更新删除,单表查询操作
  6. android开发所遇问题集(一)----Mr.Zhang
  7. inode结构详解(深层次理解拷贝,删除,移动的本质)以及硬链接和软链接的区别(图文)
  8. php如何优化递归函数,php递归函数怎么用才有效?php递归函数典型例子
  9. 猿创征文 | 国产数据库之南大通用数据库详解安装和使用
  10. 空洞卷积(扩张卷积dilated convolution)
  11. sql语句查询存储过程
  12. sort函数(c语言排序)
  13. 数据分析之数据透视表(Office2019)
  14. 贝茜放慢脚步(寒假每日一题 14)
  15. mysql 8.0 如何改密码(转载
  16. 远程计算机怎么桌面显示不全,win7系统连接远程桌面却不能全屏显示解决方法...
  17. 服务器和交换机物理连接_二层、三层及四层交换机的区别 | 小知识
  18. 干货 : 揭秘信息可视化图表的设计方法
  19. u-boot:env源码目录分析一
  20. JS 图片压缩上传并在iOS中矫正方向

热门文章

  1. gltf骨骼动画解析笔记
  2. pygame库-Surface类-blit方法的两个参数(source, dest)的含义
  3. 小游戏开发怎么选游戏引擎
  4. 笨方法学python 习题34
  5. 心肺运动试验----各类参数分析笔记
  6. 以下名字 不能作为c语言标识符的是,(完整版)《C语言程序设计》复习参考答案...
  7. 从入门到入土:IP源地址欺骗dos攻击实验
  8. 网络创业者莱恩-福克斯:最后一分钟的奇迹
  9. 第 05 篇 如何使用 SQL 语句进行模糊查找?
  10. 格林公式中对偏微分的积分