这是我在浙江大学写软件工程硕士论文的核心内容,虽然答辨(我女儿以为是大便)老师叫我把这些内容要去掉,但我坚持把它写在里面,内容如下:
基于本体的软件设计方法的价值观认为软件开发过程最核心内容为“寻找软件需求的本质”即“本体”,并用“最快的方法开发出软件产品”,即“软件最终源代码”。
软件开发的核心工作只有两个,即“构建本体概念”和“开发最终源代码”,其它任何文档、环境、过程均为这两个工作服务,起辅助作用。
基于本体的软件设计方法过程概述如下:
构建本体概念可以使用W3C推出的WOL(网络本体语言)规范进行,可以利用象Protégé这样的设计软件进行。
其它任何文档,如需求文档、设计文档、UML建模、测试文档等等均为“开发对象本体概念”服务,只要能形成恰当的本体概念,这些文档均可有可无。问题的冲突和解决都反应到“开发对象的本体概念”上。
在各种开发方法中可以使用暴布式,迭代式,也可以使用RUP,CMM过程改进等等,当然首先推荐使用敏捷方法因为它更快。
对于软件开发对象的理解会随着软件开发的进行发生变化,这种变化是不可避免的,也就是说软件变更是不可避免的。变更出现时需要先对本体概念进行重构和修改,同时对源代码进行同样的重构和修改。我们需要使用各种重构手段,而不是使用拆东墙补西墙的方式。
最为明显的例子就是“测试驱动开发”,把测试排在了整个开发的前面!而其它用例驱动,特性驱动,模型驱动等都只是某一方面先行而已。
以上基于本体软件的基本哲学思想是“自由”和“平等”,过程是“自由”的,开发关系是“平等的”,目标是一致的。
我认为基于本体的软件开发中最为重要的事项有三个,分别为:
所有类、对象、方法、变量的命名需要同本体保持一致,在现代的开发工具包括Protégé, Visual Studio等都对命名的重构支持的挺好。
当对软件对象概念理解发生变化时需要重构本体和软件,使其保持概念一致,即人月神话所谓的“概念完整性”。
利用测试驱动所做的测试其实是一种辅助的自说明代码,使用契约式设计行成能运行时检查的最好自说明文档,使用良好的编程风格从而无需各种辅助文档的帮助即看懂源代码,从而加速软件开发。
添加新评论