软件项目定制开发的技术债务是什么?
软件本身是对实际事物运行的模型抽象,好的软件就是寻找和开发出一个最简单并且最贴切实际事物运行的模型或者大规模模型碎片组合。但是简单和贴切实际有时是相互矛盾的事物,有时为了简单可能就远离实际,而一味的贴切实际有可能会将软件变得很复杂,尤其是对实际事物误解及认识的过程中,可能会将软件做得既复杂而又远离实际。这种超出来的复杂度和远离实际的程度既是技术债务,技术债务的本质是增加了软件系统上线之后的运营、维护和变更成本。
超出本应有的复杂度增加了用户使用、学习和理解的成本,增加了操作风险并因此需要应对操作风险事件发生后的善后处理成本。
远离实际的程度在可接受的范围内,增加了用户使用非常规方法、临时变通方法来使用软件系统的使用及学习成本,同时也增加了非常规思维导致的操作风险并因此需要应对操作风险事件发生后的善后处理成本。而过大的远离实际的程度直接使得软件系统无法使用而导致整体投资失败的风险与投资坏账。
软件项目定制开发通常会有两种开发方法:MDD模型驱动开发和TDD测试驱动开发。
这两种方法可能会交互使用,通常情况下,使用合适的、恰当的MDD模型驱动开发可以通过抽象、复用、解耦合、提高内聚度来消除和降低技术债务,而不恰当与错误的MDD模型驱动开发则会大规模增加技术债务,过度抽象的MDD模型驱动开发则会引入过多的抽象层与新概念来增加复杂度,最终也会增加技术债务。使用TDD测试驱动开发可以保证软件是最贴切实际事物运行的,但是纯粹的TDD测试驱动开发会增加重复性的、冗余的、高度耦合、低内聚的概念、设计和代码实现,导致大量的技术债务。
合理的软件项目定制开发是由MDD模型驱动开发和TDD测试驱动开发交替进行,逐渐演化出一个相对最简单和最贴切的软件系统,来达到最低技术债务的目的。
(0) Comments