目前开发方式的主要缺点
目前开发方式存在弊病的来源主要在于设计,实现和运行时的分离和弱连接。
1 设计和实现(广义的代码)的分离。目前的所有设计都是弱的设计(只是程度不同),就是说设计不能直接的或不能完全直接的产生代码实现,一旦管理不严,代码实现就会脱离设计,尤其在一个项目测试后期或运行期,并且需求变化比较大的时候;甚至一个被长期维护的系统,设计往往早已消失,只有维护的人员知道系统目前的样子。至于从实现反向的产生设计的反向工程,那更是一个高难的动作。这种弱的设计直接导致的就是实现缺乏控制,最后导致软件的失败或缩短软件生命期。目前解决这个问题从技术和人两个角度来考虑,一方面使用UML这样的语言来强化设计,另一方面用CMM这样的规范来强化人的管理。要指出的是UML对设计的强化是有限度的,CMM的管理也会大幅度提高成本。
2 实现(代码)和运行时的分离。这种分离导致了开发者在编写代码的需要想象系统运行时的状况,这时候开发者可以用很多实现的方法,使用哪一种取决于开发者的素质和经验,这也就是说编程是艺术的原因。消除这种随意性和不一致,就要通过反复的测试来验证运行时的结果,就是这样也无法保证代码的不作出意料之外的事情。上述因素导致了软件质量低下和漫长的测试周期。解决上述问题,一般是通过提供粒度更大的功能模块,4GL界面,加强开发规范等方法,流行的XP(极限编程)就是一个比较好的方法,主要也是通过挖掘人的潜能。
上述几个重要因素的分离导致从需求到设计到代码实现到产生运行结果,就像一个松散的链条,一个漫长的行军队伍,问题的复杂度在人为因素的逐级参与下变得更加复杂。为了达到目的:将最终结果约束到最开始的需求上,就需要增加人力成本和技术成本来完成,如购买各种开发辅助工具和增强项目管理和人员的培训,总之是通过增加各类成本来努力消除来软件的质量问题和保证进度。