
1

什么是UML
统一建模语言(UML)是描述、构造和文档化系统制品的可视化语言。UML是图形化表示法的事实标准,用来绘制和展示与软件(特别是OO软件)相关的图形以及文字
应用UML的三种方式
UML作为草图:非正式的、不完整的图,借助可视化语言的功能,用于探讨问题或解决方案空间的 复杂部分
UML作为蓝图:相对详细的设计图,用于:
1)逆向工程,即以UML图的方式对现有代码进行可视化, 使其易于理解。
2)代码生成(前向工程)UML作为编程语言:用UML完成软件系统可执行规格说明。可执行代码能够被自动生成,但并不像 通常一样为开发者所见或修改;人们仅适用UML”编程语言”进行工作。如此应用UML需要有将所有行为 或逻辑进行图形化表示的实用方法,但是目前在理论、工具的健壮性和可用性方面仍然处于发展阶段。
2

4+1架构视图
1995年,Philippe Kruchten在《IEEE Software》上发表了题为 《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注.Kruchten提出了一个”4+1″视图模型,从 5 个不同的视角包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5 个试图结合在一起才能反映系统的软件体系结构的全部内容.
架构模型
软件架构用来处理软件高层次结构的设计和实施。它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。
软件架构={元素,形式,关系/约束}
软件架构涉及到抽象、分解和组合、风格和美学。我们用由多个视图或视角组成的模型来描述它。为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图:
1) 逻辑视图 Logical View
-面向对象的分解
面向最终用户,描述系统的功能属性。系统分解为一系列的关键抽象,大多数来自于问题域,表现为对象或对象类的形式。它们采用抽象、封装和继承的原理。类图用来显示一个类的集合和他们的逻辑关系:关联、依赖、组合、聚合、继承等等。
逻辑视图的风格采用面向对象的风格
2) 进程视图 Process View
-过程分解
面向系统集成人员,考虑一些非功能性的需求,如性能和可用性。它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与进程结构相结合在一起 – 即在哪个控制线程上,对象的操作被实际执行。
进程是构成可执行单元任务的分组,进程代表了可以进行策略控制过程架构的层次,进程可以就处理负载的分布式增强或可用性的提高而不断被重复。软件被划分为一系列单独的任务。任务是独立的控制线程,可以在处理节点上单独地被调度。
进程视图的风格采用管道或过滤器,或者客户端/服务器,以及各种多个客户端/单个服务器和多个客户端/多个服务器的变体
3) 开发视图 Development View
子系统分解
面向设计人员和开发人员,主要关注软件开发环境下实际模块的组织和管理。
软件打包成小的程序块(程序库或子系统),它们可以由一位或几位开发人员来开发。子系统可以组织成分层结构,每个层为上一层提供良好定义的接口。系统的开发架构用模块和子系统图来表达,显示了”输出”和”输入”关系。
大部分情况下,开发架构考虑的内部需求与以下几项因素有关:开发难度、软件管理、重用性和通用性及由工具集、编程语言所带来的限制。开发架构视图是各种活动的基础,如:需求分配、团队工作的分配(或团队机构)、成本评估和计划、项目进度的监控、软件重用性、移植性和安全性。它是建立产品线的基础。
开发视图的风格采用分层的风格,设计规则是某层子系统依赖同一层或低一层的子系统,层次越低,通用性越好(底层库:JavaSDK,图像处理软件包)
4) 部署视图 Physical View
软件至硬件的映射
面向系统工程人员,主要关注系统非功能性的需求,如可用性、可靠性(容错性)、性能(吞吐量)和可伸缩性。
软件在计算机网络或处理节点上运行,被识别的各种元素(网络、过程、任务和对象),需要被映射至不同的节点;我们希望使用不同的物理配置:一些用于开发和测试,另外一些则用于不同地点和不同客户的部署。因此软件至节点的映射需要高度的灵活性及对源代码产生最小的影响。
5) 场景视图 Scenarios
架构的描述,即所做的各种决定,可以围绕着以上四个视图来组织,然后由一些用例 (use cases)或场景(scenarios)来说明,从而形成了第五个视图.
3

UML的9大图形
- 用例图(use case diagrams)
- 静态图
(1)类图(class diagrams)
(2)对象图(object diagrams)- 交互图
(1)序列图(顺序图)
(2)通信图(Collaboration diagrams)- 行为图:描述系统的动态模型和对象之间的交互关系。
(1)状态图(Statechart diagrams)
(2)活动图(Activity diagrams)- 实现图
(1)构件图(Component diagrams)
(2)部署图(Deployment diagrams)

温馨提示
原文始发于微信公众号(编程爱好者社区):设计篇-UML方法论
本文来自转载,原文链接: