使用 UML 作为工程语言
为什么要建模
🎈必须到用户中去,以一种训练有素的方式访问客户,揭示系统的真实需求;
🎈如果正在建造一座大厦,有时需要从宏观的角度上让投资者看到大厦的样子,感受到大厦的整体效果;而有时也需要认真的思考细节问题,例如复杂棘手的管道铺设;
🎈对于很多软件工程师来说,从考虑实现到编写代码,其实不需要花费太多时间,就是思考和编码。程序员会在心中做一些建模,甚至在白板或者草稿上模拟出一些想法。然而别人对这些概念容器产生误解;同时阅读某种层次分布中的代码,虽然可以推断出它的大概意思,但我们却很难直接领会它,一旦编码者另寻高就,信息将会永远丢失。

图形概念
元素:如类、主动类、接口、构件、协作、用况、制品、结点、包、注释 等;
元素关系:如依赖·dependency、关联·association、泛化·generalization、实现·realization
元素与关系组成的图:如结构图:类图、构件图、部署图、制品图、对象图;行为图:交互图(时间顺序图、通信图)、状态图、活动图、用况图;
具体应用场景
软件工程中,在需求沟通阶段,最重要的就是画出描述各类用户及其使用场景的 use case;
再根据每种用户场景,依次设计 design view 表达了现实世界中的问题及其解决方案:
首先画出活动图,尽量确定每个 use case 所包含的活动;
再画出通信图,尽量确定每个活动中,每个收发信息的领域模型,和信息的内容;
确定领域模型后,我们需要为各个模型和消息添加时间维度,画出领域模型之间的时序图,进一步梳理每个 use case 业务流程;
此时我们已经尽可能地明白了领域模型之间的关系逻辑,现在我们可能需要对某些复杂的领域模型进一步画状态图(如订单)从而了解它所存在的业务复杂性;
还有其他进一步的UML应用场景,未完待续...