[易 易 部 落]--分 享 技 术 和 思 想

基于本体的软件设计方法

作者:Eureka

这是我在浙江大学写软件工程硕士论文的核心内容,虽然答辨时那些砖家老师叫我要把这些内容要去掉,但我坚持把它写在里面,内容如下:   

基于本体的软件设计方法的价值观认为软件开发过程最的核心内容是“寻找软件需求的本质”即“本体”,并用“最快的方法开发出软件产品”,即“软件最终源代码”。   

因此,软件开发的核心工作只有两个,即“构建本体概念”和“开发最终源代码”,其它任何文档、环境、过程均为这两个工作服务,起辅助作用。

基于本体的软件设计方法过程概述如下:

  1. 对于任何软件开发,首先构建软件“开发对象的本体概念”。
    构建本体概念可以使用W3C推出的WOL(网络本体语言)规范进行,可以利用象Protégé这样的设计软件进行。
  2. 所有客户协作、需求沟通以及开发设计中的交流内容均为“开发对象的本体概念”。
    其它任何文档,如需求文档、设计文档、UML建模、测试文档等等均为“开发对象本体概念”服务,只要能形成恰当的本体概念,这些文档均可有可无。问题的冲突和解决都反应到“开发对象的本体概念”上。
  3. 基于“开发对象的本体概念”使用各种开发方法构建软件“产品源代码”。
    在各种开发方法中可以使用暴布式,迭代式,也可以使用RUP,CMM过程改进等等,当然首先推荐使用敏捷方法因为它更快。
  4. 当“开发对象的本体概念”发生变化后,则首先重构和修改“开发对象的本体概念”,并同时对“产品源代码”进行重构和修改,实现本体概念和代码的连动。
    对于软件开发对象的理解会随着软件开发的进行发生变化,这种变化是不可避免的,也就是说软件变更是不可避免的。变更出现时需要先对本体概念进行重构和修改,同时对源代码进行同样的重构和修改。我们需要使用各种重构手段,而不是使用拆东墙补西墙的方式。
  5. 整个过程中,需求、设计、建模、架构、编码、测试等各种开发阶段是平等的,可以先行,也可以后行,没有先后之分,均为核心内容即“本体概念”和“源代码”服务。
    最为明显的例子就是“测试驱动开发”,把测试排在了整个开发的前面!而其它用例驱动,特性驱动,模型驱动等都只是某一方面先行而已。 以上基于本体软件的基本哲学思想是“自由”和“平等”,过程是“自由”的,开发关系是“平等的”,目标是一致的。

我认为基于本体的软件开发中最为重要的事项有三个,分别为:

  1. 命名
    所有类、对象、方法、变量的命名需要同本体保持一致,在现代的开发工具包括Protégé, Visual Studio等都对命名的重构支持的挺好。
  2. 重构
    当对软件对象概念理解发生变化时需要重构本体和软件,使其保持概念一致,即人月神话所谓的“概念完整性”。
  3. 自说明代码
    利用测试驱动所做的测试其实是一种辅助的自说明代码,使用契约式设计行成能运行时检查的最好自说明文档,使用良好的编程风格从而无需各种辅助文档的帮助即看懂源代码,从而加速软件开发。

下面您可根据自己的喜好分别使用“Disqus”或者“多说”进行留言评论: