《UML用户指南》读书笔记
为什么要建模
引言:成功的软件组织应该总是能够交付满足其用户需要的软件。如果一个软件组织能够及时并可预测地开发出这样的软件,并能够有效地利用人力和物力资源,那么这个软件组织就是可持续发展的。
1. 什么是模型?
模型是对现实的简化和抽象。它既可以是结构性的,强调系统的组织;也可以是行为性的,强调系统的动态方面。
2. 为什么要建模
建模是开发优秀软件的所有活动中的核心部分,其目的是为了把想要得到的系统结构和行为沟通起来,为了对系统的体系结构进行可视化和控制,为了更好地理解正在构造的系统,并经常揭示简化和复用的机会,同时也是为了管理风险。
建模具有4个优势:
- 模型有助于按照实际情况或按照所需要的样式对系统进行可视化。
- 模型能够规约系统的结构或行为。
- 模型给出了指导构造系统的模板。
- 模型对做出的决策进行文档化。
人对复杂问题的理解能力是有限的,对于一个复杂的系统,通过建模,可以缩小所研究问题的范围,一次只着重研究它的一个方面。
建模就像盖房子之前要先设计图纸一样。给你一堆材料,让你盖个狗窝,你可能立刻就能上手,只要狗窝够大且不漏水,狗就可以安居。但是让你为家庭盖一座房子,可能就没那么容易了,家庭对于房子的需求肯定要比狗对狗窝的需求要多。这时候,就要精心制定一些详细的计划,至少应该绘制一些房子是什么样子的简图。
3. 建模的四项基本原理
第一,选择要创建什么模型,对如何动手解决问题和如何形成解决方案有着意义深远的影响。
正确的模型将清楚地表明最棘手的问题,错误的模型将使人误入歧途。
第二,可以在不同的精度级别上表示每一种模型。
在任何情况下,最好的模型应该是这样的:它可以让你根据谁在进行观察以及为什么要观察选择它的详细程度。分析人员或最终用户主要考虑“做什么”的问题,开发人员主要考虑“怎样做”的问题。这些人员都要在不同的时间以不同的详细程度对系统进行可视化。
第三,最好的模型是与现实相联系的。
所有的模型都对现实进行了简化,但是关键是简化不要掩盖掉任何重要的细节。
第四,单个模型或视图是不充分的。对每个重要的系统最好用一小组几乎独立的模型从多个视角去逼近。
没有一个视图能描述一个系统的所有细节。
4. 现代软件建模方法
对于软件,最普通的两种方法是从算法的角度建模和从面向对象的角度建模。
传统的软件开发是从算法的角度进行建模,软件系统用过程或函数作为其主要构造块。这种方法导致开发人员把精力都集中在流程控制和对大的算法进行分解。当需求发生变化时以及系统增长时,用这种方法建造的系统就会变得很难维护。
现代的软件开发方法采用面向对象的观点进行建模,软件系统用对象或类作为其主要构造块。事实证明,面向对象方法适合于在各种问题域中建造各种规模和复杂度的系统。
面向对象方法是当前软件开发方法的主流部分,对面向对象系统进行可视化、详述、构造、和文档化正是统一建模语言(UML)的目的。
注:面向切面编程也是如今比较流行的一种软件开发方法。