在软件开发之前,使用UML
为什么要建模
🎈 必须到用户中去,以一种训练有素的方式访问客户,揭示系统的真实需求;
🎈 如果正在建造一座大厦,有时需要从宏观的角度上让投资者看到大厦的样子,感受到大厦的整体效果;而有时也需要认真的思考细节问题,例如复杂棘手的管道铺设;
🎈 对于很多软件工程师来说,从考虑实现到编写代码,其实不需要花费太多时间,就是思考和编码。程序员会在心中做一些建模,甚至在白板或者草稿上模拟出一些想法。然而别人对这些概念容器产生误解;同时阅读某种层次分布中的代码,虽然可以推断出它的大概意思,但我们却很难直接领会它,一旦编码者另寻高就,信息将会永远丢失。
UML介绍
UML主要包含以下概念:
事物 | 结构 | 🔸类 🔸主动类 🔸接口 🔸构件 🔸协作 🔸用况 🔸制品 🔸结点 🔸包 🔸注释 |
行为 | 🔸交互 🔸状态机 🔸活动 | |
关系 | 依赖 | 🔹dependency |
关联 | 🔹association | |
泛化 | 🔹generalization | |
实现 | 🔹realization | |
图 | 结构图 | 🥉类图、🥉构件图(组合结构图)、🥉部署图、🥉制品图、🥉对象图、 |
行为图 | 🥈交互图(时间顺序图、通信图)、🥈状态图、🥈活动图、🥇用况图、 |
最好用5个互连的视图来描述软件密集型系统的体系结构:
❗ use case view | 它没有描述软件系统是如何组织的,而是描述了形成系统体系结构的动力。 | 实际场景的用况图,及元素的交互、状态、活动图 |
design view | 表达了现实世界中的问题及其解决方案的词汇 | 类图,及其元素的交互、状态、活动图 |
implementation view | 表达了计算机中系统装配与管理的逻辑 | 构件图,及其元素的交互、状态、活动图 |
interaction view | 展示了系统不同部分之间的信息流,针对性能、伸缩性等 | (主动)类图,及其元素的交互、状态、活动图 |
deployment view | 物理系统的分布、交付和安装; | 部署图,及其元素的交互、状态、活动图 |
🥇用况图
描述了参与者和一组用况以及它们之间的关系。
用况是指一系列动作的总称,最终有一个可以观察的结果。
🥉类图
展示了一组由🔸类 🔸接口 🔸协作 以及它们之间的关系。
🥇构件图(组合结构图)
展示了🔸类或者🔸协作的内部结构、包括🔸构件的内部部件等。