决定软件可维护性的因素有:

1)可理解性2)可测试性3)可修改性4)可移植性5)可重用性

应该采取哪些措施:

1)提高可理解性:模块化·详细的设计文档·结构化设计·程序内部的文档和良好的高级程序设计语言

2)提高可测试性:良好的文档对于诊断和测试是至关重要的,此外,软件结构·可用的测试工具和调试工具,以及以前设计的测试过程也都是非常重要的

3)提高可修改性;模块结构良好,高内聚,低耦合。信息隐藏·局部化·控制域与作用域的关系等也影响软件的可修改性

4)提高可移植性:把因环境变化而必须修改的程序局限在少数程序模块中,从而降低修改难度