软件的可复用性和维护性
1.软件的可维护性
所谓软件的可维护性其实说简单了就是软件代码的可被修改的容易程度。如前言所说,代码反复修改的情况不可避免,
这种软件的不断演化过程——具体就是修正错误;适应新环境;满足新需求——虽然貌似将软件的功能变的越发强大
,但是事实上这些改变总是或多或少的有悖于当初的设计初衷,因此势必慢慢的蚕食软件的基础架构和代码质量
造成的结果是让代码越来越难看懂,健壮性越来越脆弱,修改一个bug的代价越来越大。
导致软件可维护性低的原因
(1)过于僵硬,很难在一个软件系统里加入一个新的性能,哪怕是很小的都很难。这是因为加入一个新新能,不仅仅意味建造一个独立的新模块,
而且因为这个新性能会波及很多其他模块,最后变成跨越几个模块的改动。使得一个起初只需要几天的工作,最后变成持续好久的作战。
(2)过于脆弱,与软件过于僵硬同时存在的,是软件系统在修改已有代码时过于脆弱。对一个地方的修改,
往往会导致看上去没有什么关系的另一个地方发生故障。尽管在修改之前,设计师们会竭尽所能预测可能的故障地点,
地那是在修改完成之前,系统的原始设计师们甚至都无法确切预测到可能会波及到的地方。这种一碰就碎的情况,造成软件系统过于脆弱。
(3)复用率低,发现一段代码,函数,模块所做的事情是可以在新的模块、或者新系统中使用的时候,
他们总会发现,这些已有的代码依赖于一大堆其他的东西,以至于很难将他们分开。最后,他们发现最好的办法就是不去“碰”这些已有的东西,
而是重新写自己的代码。他们可能会使用源代码黏贴的办法,以最原始的复用方式,节省一些时间。这样的系统就有复用率低的问题。
(4)黏度过高,一个改动可以保持原始的设计意图和原始设计框架的方式进行,也可以破坏原始意图和框架的方式进行。
第一种办法无疑会对系统的未来有利,第二种办法是权宜之计,可以解决短期问题,但是会牺牲中长期的利益。
如果总是第二种办法比第一种办法容易,就叫做黏度过高。一个黏度过高的系统会诱使维护它的程序员采取错误的维护方案,并惩罚采取正确维护方案的程序员。
2 计算机软件可维护性的一般方法 在计算机软件的日常应用中,提高软件可维护性的措施是一项值得深入研究的课题,
其一般方法包括以下几点:
1 提升软件工具模块化和质量技术
2 创建精密的软件品质目标和优先级
3 选择有可维护的程序设计语言
4 加强计算机软件可维护性方法的研究
2.软件的可复用性
1.软件复用的好处
软件复用有三大好处:
提高生产效率
提高软件质量
改善系统的可维护性
2.传统的复用
传统的复用主要有:
代码的粘贴复用
算法的复用
数据结构的复用
传统的复用方的一个缺陷就是复用常常以破坏可维护性为代价。比如两个模块A和B,他们都使用了C模块。那么当A需要增加一个新的行为
,B有可能不需要,甚至不允许C添加新行为。这时,如果坚持复用,就要牺牲可维护性;如果坚持可维护性,就只有放弃复用。
3.面向对象的复用
面向对象的复用的焦点不是集中在函数和具体的算法等实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。
也就是说复用的焦点发生“倒转”。复用的倒转不是因为实现细节不重要,而是因为这些复用通常做得很好了,而且抽象层次的复用更值得强调,
因为它是在提高复用性的同时保证可维护性的关键。抽象层次通常是较稳定的,如果抽象层次相对独立于具体层次的话,
那么具体层次内部的变化就不会影响到抽象层次,所以抽象层次的复用会比较容易。