当前课程知识点:软件工程与软件自动化 >  第三章 OO与UML >  3.5 使用UML设计面向对象系统 >  UML综述

返回《软件工程与软件自动化》慕课在线视频课程列表

UML综述在线视频

下一节:UML用例图

返回《软件工程与软件自动化》慕课在线视频列表

UML综述课程教案、知识点、字幕

嗨,大家好

下面我们一起来讨论UML

这一部分我们暂时不讨论具体的UML模型图

我们先从总体上把握一下UML

我们知道,当初OMG在设计UML的时候目标是十
分明确的

它就是要设计一套用于表达面向对象建模过程的
标记符号系统

UML不会告诉你或者要求你使用某种开发方法

它着眼于解决那些有重大影响的问题

它要创建的这种建模语言,要对设计者和机器都
适用

并且希望能够成为面向对象开发活动中的官方语

自从1997年开始,UML横空出世

打破了当时面向对象建模方法林立的局面

一统了江湖,UML一直在发展当中

被加入了越来越多的特性,比如实时特性和并发
特性等等

时至今日,UML的确做到了如它的名字所代表的
美好愿望

统一了软件开发过程中多个工种人员的交流

融合了多种流派的做法

贯通了多种类型的工作内容

它的多种模型图足以直观的表达和

详细的描述面向对象分析设计的内容

那我们如何选择UML版本呢

对于一般系统建模来说,UML1.3版本已经足够了

如果需要设计实时的面向对象系统

则需要引用支持RealTime-UML的版本

主要的UML模型图有这5类10种图

用例图用于进行需求分析

静态图表达系统的结构

行为图用于表达核心对象的状态转换或主要场景
的业务过程

交互图用于表达对象之间的协作关系和协作次序

实现图用于对系统部署进行说明

UML并没有规定在设计一个面向对象系统的时候

一定要用哪些图,它只是给你提供了一堆的工具

怎么用,什么时候用,按什么顺序用

完全由设计者自己决定

为了有所区分,一般认为用例图,类图和序列图
比较常用

在面向对象设计期间

类图和序列图分别从静态结构和动态行为两方面

帮助设计者勾画出了清晰的面向对象系统模型

下面我们看这张4+1软件结构视图

首先是场景视图,场景是对业务逻辑的抽象

是对用户需求的全面理解

逻辑视图描述了要设计的对象模型

这个模型全面对应着用户需求中的功能需求

和功能需求相对应的

进程视图描述了设计的非功能性需求

如并发性能和同步性能等

开发视图则关注代码的组织和管理

它与逻辑视图具有严格的对应关系

软件自动化工具就是关注如何从逻辑视图到开发
视图的自动映射

物理视图则是用于描述将来开发出来的

软件代码单元是如何部署到硬件上去的

它关注的是系统的性能和可靠性等方面

UML提供了这么多模型图,如何正确使用呢?

首先我们用用例分析技术对捕获到的需求进行分

识别出系统边界,确定参与者和用例

必要的时候对用例进行扩展

很多初学者在做用例分析的时候

往往错误的认为用例图是核心

其实用例只是一个带着名字的饼状图

它展现出来的信息非常有限

所以需要打开用例这个黑盒子

使用活动图和自然语言对用例进行比较详细的业
务流程描述

甚至可以借用那些面向过程方法当中的一些详细
设计工具

比如流程图,来描述用例所代表的业务流程

需求分析弄清楚了,接下来画什么图呢?

下面要画的图是面向对象设计的关键

最终程序员要用编程语言把一个一个的类写出来

所以类图是核心

但是,如果只有类图,程序员无法确定类之间的
关系

和它们的交互次序,同样呢,这些类无法让系统
运行起来

在实际工作中,我们根据业务流程的描述

有可能先识别出一些容易识别的类

然后对这些类进行分析

了解它们之间的交互关系

并通过序列图、协作图、状态图

甚至活动图来进一步细化

在细化分析过程中进行重构

可能又识别出了新的类

或者把原来的类进行拆分或合并等等

通过一次又一次的迭代,最终得到了一张完整的
类图

类的关系和属性、方法也都补充完整了

随着迭代的进行,各种模型图越来越多

为了便于组织和管理

我们往往通过包的形式对各种模型图进行收纳

就像文件夹一样。包之间也是有依赖关系的

这是一个典型的体现了MVC结构的包图

用户接口包里面都是用户界面相关的各种模型图

商业对象包里面包含了各种业务逻辑模型图

而数据库包里则是与数据存取有关的模型图

有些模型图不属于这三个包

比如各种工具在各层都能用得到,就放到这个包

包图可以让整个项目变得井井有条

要注意学会合理使用

最后进入编程阶段了。在这个阶段

程序员要根据设计工程师提供的各种模型图

选择一种合适的编程语言来翻译成可运行系统

如果没有这一步,以前的设计就是纸上谈兵,没
有什么价值

程序员根据什么来编程呢?

主要是根据类图和序列图来编写类的架构

比如确定类的名称,属性和方法声明

而方法的具体实现,则需要参考数据结构与算法

通过活动图,状态图,甚至是流程图

程序员可以写出具体的方法实现,完成实际的业
务流程

程序测试通过,如何部署呢?

这就要按照构件图和配置图的说明把软件

安装部署到实际的机器上去

经过一段时间的试运行

客户按照当初的用例图和需求文档来一一验收

确定功能和性能都能够满足合同的约定

这就完成了软件开发活动,进入软件维护期

最后总结一下,如何用UML来设计一个面向对象
系统

一句话就是自外向内,逐步求精

从需求开始,确定系统边界

确定使用系统的角色,也就是参与者,确定业务
流程

然后打开用例这个黑盒子

通过活动图,流程图这些工具识别出类

确定类间关系,明确对象之间的消息传递顺序

所有的这些作都是与平台无关的,也是与编程语
言无关的

然后进入编程实现阶段

这时可以根据所选用语言的特征和平台的特征

给出最有效最简洁的实现方法

最终生产出让用户满意的软件产品

好,这一节就说到这儿,谢谢大家

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

UML综述笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。