UML 是表达思想的工具
UML(Unified Modeling Language)是一种标准语言,用于制定,可视化,构造和文档的软件系统。对于 UML 的学习成本较高,个人认为应该采取 “抓大放小” 的学习方式。如果一上来就注重每一个实现细节,无疑成本是巨大的。而且现实工作环境中如果不是做专业的设计输出,UML 带来的价值远远不如同事们坐一起,把设计想法在草纸上画一下效率更高。所以以下内容只抓“大”。
面向对象的世界
UML 是强大到足以代表所有的概念存在于面向对象的分析和设计。UML 图是面向对象的概念的表示。因此,学习 UML 之前,先熟悉一下面向对象的概念(特性)。
• 抽象: 抽象代表现实世界中实体及实体之间的关系。
• 封装: 封装是将信息或数据隐藏的访问的保护。
• 继承: 继承是用来表示类之间的 is-a 关系的,分为单继承和多继承。
• 多态: 定义的机制来以不同的形式存在(子类可以动态的替换父类的方法并执行)。
• 对象: 对象代表一个实体的基本构建块。
• 类: 类是对象的蓝图。
UML 概念模型
概念模型可以被定义为模型,它是由概念和它们之间的关系组成。概念模型的第一步是绘制 UML 图之前。它有助于了解在现实世界中的实体,以及他们如何互相交流。有三个主要的模型:1.功能模型:从用户的角度展示系统的功能,包括用例图。2.对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、 对象图。3.动态模型:展现系统的内部行为。包括序列图,活动图,状态图。
区分 UML 模型和 UML 图是非常重要的,UML 图,包括用例图、协作图、活动图、序列图、部署图、构件图、类图、状态图,是模型中信息的图形表达方式,但是 UML 模型独立于 UML 图存在。
UML 图
结构性图形(Structure diagrams)
目标:强调的是系统式的建模。
图形:静态图(static diagram)「类图,对象图,包图」,实现图(implementation diagram)「组件图,部署图」,剖面图,复合结构图。
行为式图形(Behavior diagrams)
目标:强调系统模型中触发的事件。
图形:活动图,状态图,用例图。
交互性图形(Interaction diagrams)
目标:属于行为图形的子集合,强调系统模型中的资料流程。
图形:通信图,交互概述图,时序图,时间图。
案例(食堂就餐卡系统设计)
功能描述:系统中每个消费者都有一张卡,在管理中心注册缴费,卡内记着消费者的身份、余额。使用时将卡插入收款机则显示卡上金额,服务员按收款机上数字键,收款机自动计算并显示消费额及余额。管理中心的管理员监视每一笔消费,可打印出消费情况的相关统计数据。非功能描述(暂不讨论)。
部署图
部署图:1.管理系统用于餐卡,人员,刷卡设备,消费,支付的统一管理系统。2.消费管理用于用餐人员消费记录记录。3.支付系统用于餐卡充值对接第三方支付平台。4.设备管理用于刷卡设备与系统通信。
管理中心组件图
管理中心包括 5 个基本组件:1.用户管理组件负责管理开卡用户和系统管理员及商户基本信息。2.卡片管理组件负责卡片基本信息管理。3.户账户管理组件负责消费者金额账户基本信息管理。4.消费记录组件负责消费记录信息管理。5.收款机通信组件负责收款设备的在线管理。
注册序列图
用户注册流程:1.消费者通过管理系统完成开卡 2.消费者信息对卡片进行管理确认 3.消费者同支付平台进行充值 4.消费者充值完成之后产生充值类型的消费记录
消费时序图
用户消费流程:1.刷卡设备通过设备管理服务建立与服务器的通信。2.用户插入卡片,设备读取卡片 ID 通过管理系统获取卡片及账户基本信息。3.操作员输入金额确认通知管理系统进行扣款。并返回处理结果 4.管理系统处理扣款后将消费记录同步到消费管理。
UML 统一建模语言可以将沟通的成本降到最低(建立在对 UML 都有所了解的情况下)。学习 UML 的目的是帮助自己工作中理清设计思路,输出设计方案。架构不仅存在于大型的软件系统中,个人的生活,学习,职业发展也需要架构。架构是用来确定做事的边界。边界内做事才能将有限的精力发挥最大的价值。
版权声明: 本文为 InfoQ 作者【Arvin】的原创文章。
原文链接:【http://xie.infoq.cn/article/715a8e2c292b32955e535c606】。文章转载请联系作者。
评论