(本文的最新版在 http://www.zhangxun.com/entry.aspx?sname=tdd§ion=modeling)
张恂:Software is virtual reality.
软件究竟是什么?有很多比喻可以形容。静态的软件就像一座虚拟的建筑,有着清晰的层次结构,而运动时的软件,有的就像一部开动的虚拟机器,或多条柔性的工厂流水线(进程与线程),有的又像一种虚拟的生物,可以肆意地复制和生长(比如软件病毒)。
过去有一种说法,认为:程序 = 算法 + 数据结构,如今看来这种旧结构化时代的观点是不准确、不全面的,在新结构化的 OO 时代我们至少可以得出这样大致的等式:
程序 = 算法 + 软件结构 + 数据结构 + ... ?
这里我们特别强调,软件结构不同于数据结构。程序本身当然也是一种数据信息,可以数据、文件的形式保存,但传统的数据是哑数据,而软件(程序)是操纵哑数据的活动/主动数据。这个等式说明除了算法和数据结构以外,软件结构(包括架构和设计模式)的质量,对软件、程序的质量同样具有决定性的影响。
软件架构是软件的核心结构与行为,因而软件架构的设计是软件设计的核心,而软件架构的设计活动,本身就是一个建模过程。
建模(modeling)并不是软件行业所特有的做法。作为智慧生物的一项基本能力,它也是数千年来人类所有工程行业所共有的一项最佳实践。为什么我们要软件建模?简而言之,无非是因为软件太复杂,有太多的细节,难以被人所理解和掌握,所以我们需要一种能够简单而深刻地反映软件设计本质特征的方法和工具。如何软件建模?就像对待建筑模型、机械模型一样,抽象的软件也是一个(虚拟)多面体,我们需要选择视点、视角和视图,对软件模型做投影和切片。比如,Philippe Kruchten 博士提出的著名的软件架构 4+1 视图(逻辑视图、实现视图、构件视图和进程视图,再加上用例视图)就为我们利用 UML 对复杂软件的结构和行为建模,提供了很好的指导。
过去二十年来,无疑是面向对象(OO)软件的天下,世界软件开发早已进入了 OO 时代。人们知道,高质量的好软件是设计出来的,而软件的设计目前依然主要依赖于人们大脑的思考和判断,人类大脑的思考过程恰是一个对现实世界以及虚拟世界建模的过程。而作为 OO 建模技术的事实上工业标准,统一建模语言(UML)正好为我们提供了一个运用 OO 思维进行软件建模和设计的工具。
自 1997 年 UML 成为对象管理集团(OMG)的国际行业标准,已过去了 10 年。2005 年 UML 1.4.2 成为正式国际标准 ISO/IEC 19501:2005,可以说是软件设计史上的一个重要事件。UML 标准成熟之后的研发进展也比较顺利,当前最新版本为 2.1。
UML 中文 FAQ
UML 有什么用?作为一种建模“语言”,促进沟通是一项基本功能,然而很多人忽视了 UML 独立于传统具象编程语言(比如 Java、C#、C++)、擅长表达抽象 OO 概念的一大特点。事实上,熟练掌握 UML 能够帮助我们的大脑学会快速、敏捷地 运用 OO 方式进行思考。UML 标准建模及其相关技术不但是近 10 年来各工程领域 OO 软件分析、设计与建模的利器,也是当前表达软件架构和设计模式(design patterns)最形象、简洁和有效的工具。
从一名初级程序员成长为一名经验丰富的软件架构师,有很长的路要走。根据张恂的经验,掌握抽象、理性和逻辑的思维方式、思考能力,是程序员成功成长的一个重要关键。在我看来,学会运用 UML 思考,透过现象看本质,抽象地运用 UML 表达软件架构和设计方案,是当今世界上任何一名软件架构师乃至普通 OO 程序员都应该具备或尽快掌握的基本功。这几年世界各地的大专院校、教育培训机构纷纷把 OOAD/UML 列为一门软件工程、软件设计专业的必修课,可以说正在情理之中。
敏捷 OO 教练 张恂
www.zhangxun.com
版权所有
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13633641/viewspace-343365/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13633641/viewspace-343365/