UML语言与系统设计

UML语言及系统设计  

架构师成长营

1.前言

本文是以《软件架构设计》和《大象Think in UML》两本书的内容为基础进行讲述,以个人的理解做了提炼和总结,旨在能够通过本文对UML语言以及其在系统设计中的应用有一个概括性的了解。

 

2.《软件架构设计》

2d4d85fd68bca5d36ed6de5e6e8f73f8459.jpg

图 架构设计过程的节奏

 

fe1a5dd7cd9cdcc71c4b33d9dd81f81ad7c.jpg

图 架构设计的6个步骤

 

 

b9a9769fd061bb712ce89b3810e68e1ceeb.jpg

需求分析

 

2dd9d2543b264223b6fc6a40292f7ac22d5.jpg

确定关键需求

 

 

ebd6b8dbfd533cb0a77dbcd3c39d2f6c52d.jpg

概念架构设计

 

3a324a837264882006daec9b5c9d6d43c04.jpg

 

2.1需求分析

愿景分析:愿景=业务目标+范围+Feature+上下文图。

需求分析 

用例图

47332bccab3aed682715d19d698441a436d.jpg

 

用例简述(用户故事)

ccfebb1beb747bd0061ad0101f9e591295a.jpg

用例规约  

444d0faa9ff4c98f96fb165df29432fe31f.jpg

 

用例实现(鲁棒图)

d82271f7b8724efa5afbd2dee48c5253b01.jpg

 

34812933b487c50d48793da92d629d74f48.jpg

 

e8927cebb50e2f3ae4bb516f9b7cef63765.jpg

 

2.2.领域建模

领域模型:类图、状态图

12af60b37544acd0fbae35a72ed0ed15dc9.jpg

 

4bdb6e95534f116d2e99ab7f416cdaab8a6.jpg

 

 

c99dcf2b106a1117efee3867421d04ee0b6.jpg

领域模型在软件开发中的作用

 

2.3.确定关键需求

关键质量

关键功能:核心功能、必做功能、高风险功能、独特功能。

 

2.4.概念架构设计

关键需求进、概念架构出。

左手功能:鲁棒图。

右手质量:目标-场景-决策表。

要领1:功能需求与质量需求并重。

要领2:1个决定、4个选择。

 

2.5.细化架构设计

5个视图、15个任务

逻辑架构=模块划分+接口定义+领域建模。

开发架构=技术选型+文件划分+编译关系。

物理架构=硬件分布+软件部署+方案优化。

运行架构=技术选型+控制流划分+同步关系。

数据架构=技术选型+存储格式+数据分布。

3.《大象Think in UML》

3.1概念

UML(Unified Modeling Language)统一建模语言

RUP(Rational Unified Process)统一过程

3.2UML核心元素

版型:是对一个UML元素基础定义的扩展,UML几乎每一个元素都有很多版型,例如:用例有业务用例、业务用例实现、系统用例等版型;类有接口、边界类、实体类、控制类等。在建模的不同阶段,问了区分视图之间的不同点,会采用不同的图示来表示。

参与者:参与者是在建模过程中处于核心地位的。

394289fcc76460985f5bb26478dcb843c5b.jpg

参与者位于边界之外。

参与者可以非人。

业务主角和业务工人的区别。

参与者与涉众的关系

参与者与用户的关系

参与者与角色的关系

用例:用例是一种把现实世界捕获下来的方法,用例定义了一组用例实例,其中每一个实例都是系统所执行的一系列操作,这些操作生成特定主角可以观测的值。

0b823e8a75f158ef9999cc4cfec076ec2ec.jpg

用例是相对独立的。

用例执行结果对参与者来说是可以观测和有意义的。

这件事必须由一个参与者发起,不存在没有参与者的用例,用例不应该自动启动,也不应该主动启动另一个用例。

用例必须是以动宾短语形式出现的。

业务用例、业务用例实现、概念用例、系统用例、用例实现

边界:

边界决定视界

边界决定抽象层次

业务实体:业务实体是一种版型,在业务建模阶段建立领域模型。

c99dcf2b106a1117efee3867421d04ee0b6.jpg

6f579a4a73062f3e1e35ff96d01e24cfc95.jpg

领域包、子系统、组织结构、层

分析类:分析类用于获取系统中主要的“职责簇”。它们代表系统的原型类,是系统必须处理的主要抽象概念的第一个关口。

分析类代表系统的主要“职责簇”,意味着分析类是从功能性需求向计算机实现转换的第一个关口。

分析类可以产生系统的设计类和子系统,意味着计算机实现是可以通过某种途径产生出来的。

a33e825bffb92a50c91716461b22298c5c4.jpg边界类

 

4fa1fed0a96910f90c7313af6fcd36ad1c7.jpg控制类

 

530b4195f8277f50bd9c9f17342559917e8.jpg 实体类

 

:属性、方法、可见性

关系:关系是重要的语义,它抽象出对象之间的联系,让对象构成某个特定的结构。

关联530b4195f8277f50bd9c9f17342559917e8.jpg它描述不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。A对象知道B对象的存在。

 

依赖298462f2b8951d71b6665c3a4a5fbfb4779.jpg它表示一个对象的修改会导致另一个对象的修改的关系。A对象保存了B对象的ID,如果A没有使用B,则是关联关系,如果A使用了B对象,则是依赖关系。

扩展6d0117a3f63b3e56a2edf6acaebd8feca47.jpg它特别用于用例模型中说明向基本用例中的某个扩展点插入扩展用例。一般来说,扩展用例是带有抽象性质的,它表示用例场景中的某一个支流,由特定的扩展点触发而被启动。用例是可选的。

包含530b4195f8277f50bd9c9f17342559917e8.jpg它特别用于用例模型,说明在执行基本用例的实例的用例实例过程中插入行为端。用例是必须的而不是可选的。

实现2cfde93f43699a1715f4d5fdfca1f686bc2.jpgA实现B,在用例模型中连接用例与用例实现,说明基本用例的一种实现方式。

精化8dc429825e68479fdcda966352cec83858c.jpgA精化了B,一个基本用例可以分解出许多更小的关键精化用例,这些精化用例更细致地展示了基本用例的核心业务。

泛化9a382f6069730b132bdc8407e290e5c3876.jpgA继承自B,说明两个对象之间的继承关系。

聚合aea9551923f91ba7dd9d624fe6f4456042a.jpg聚合关系用于类图,特别用于表示实体对象之间的关系,表达整体由部分构成的语义。与组合不同的是,聚合不是强依赖的,即使整体不存在了,部分仍然存在。

组合b3e0c61db73b71589dd005f9c5a3d2c52c5.jpg

组件

3.3UML核心视图

静态图:用例图、类图(概念层类图、说明层类图、实现层类图)、包图

 

动态图:

活动图:用例活动图、对象活动图、泳道、业务场景建模、用例场景建模

状态图:

时序图:业务模型时序图、概念模型时序图、设计模型时序图

协作图:业务模型协作图、概念模型协作图、设计模型协作图

 

3.4UML核心模型

用例模型

        业务用例模型:业务用例视图、业务规则、业务对象模型、业务用例实现视图、业务用例实现场景、包图。

        概念用例模型:概念用例分析、分析类视图、分析场景

        系统用例模型:业务用例、概念用例、用例视图、用例规约、补充规约、业务规则、用例实现、用例场景、分析对象。

领域模型

分析模型

软件架构和框架

设计模型

组件模型

实施模型

 

3.5实践

准备工作

了解问题领域

涉众分析

规划业务范围

客户访谈

 

获取需求

定义边界

发现主角

发现业务用例:用例图

业务建模:活动图(泳道)、时序图、协作图、用例规约、业务对象模型、业务用例实现视图、业务用例实现场景、包图

领域建模:分析类图、时序图、协作图

提炼业务规则:全局规划、交互规则、内禀规则

获取非功能性需求

主要成果物

 

需求分析

关键概念分析:概念用例、概念模型

业务架构

系统原型

 

系统分析

系统用例

分析业务规则:全局规则、交互规则、内禀规则

用例实现:系统用例、系统用例实现、系统用例实现场景。

软件架构和框架

分析模型:分析类、时序图

组件模型

部署模型

 

系统设计

设计模型:设计类、设计模型、设计类实现(时序图)

接口设计

包设计

 

转载于:https://my.oschina.net/u/3963977/blog/2240182