软件平台化(一)

来源:百度文库 编辑:神马文学网 时间:2024/04/29 16:31:07
软件平台化(一) 收藏
软件开发,尤其是商业软件开发,是一个系统工程。开发者,尤其是管理者需要系统地去考虑和控制整个开发过程中的每个环节,以保证软件的质量。下面首先从软件架构谈起,结合我自己的开发经验,跟大家共同探讨一下如何通过软件平台化保证产品质量。
为什么平台化?
按照面向对象设计思想和重构理论,软件开发过程中要尽量不要对已有代码进行改,而是采用增量式的开发方式,以避免对老代码进行修改时引入新的Bug。为什么要这样呢?因为代码编写出来后是要进行测试的,通过测试来发现和解决代码中存在的Bug。当一段代码编写完成并测试通过后,我们就可以说这段代码基本上没有Bug了,是稳定的(最起码在当前可预知的条件下是稳定的)。如果对这段已经稳定的代码进行了修改,那稳定就被打破了,也就无法保证这段代码没有Bug了,必须要进行新的、全面的测试和修改后才可以重新说这段代码是稳定的。可是实际的商用软件开发过程中,我们能保证可以对被修改的代码重新做一遍完整的测试吗?你可以说“我可以”。但是如果你的老板告诉你这代码实现的功能明天就要交付给客户,那你还可以说“我可以”?好,如果你是一个高手,通过一宿的加班,你还是可以说“我可以”。那如果你修改的这段代码刚好是一个刚刚生病住院的兄弟写的,而你只是临时顶替他,并且你不完全熟悉这段代码的细节,那你还可以说“我可以”吗?不熟悉代码的情况下你还能够保证测试的全面性吗?
在商用软件开发过程中,这种情况应该是会经常遇到的。进度紧张、加班加点、人员离职。。。。。。一系列的问题都在不停的干扰着我们以理想的方式去完成软件的开发。这种情况下,我们所要做的,只有提高效率。不必要的工作尽量不去做,也就有了上面说的增量式开发的理论。最起码,增量式开发方式可以减少你做一些不必要的测试工作,也可以减少对老代码的修改引入新Bug的风险。大家常说的到高内聚和低耦合,其实也就是这个道理。
这里只是举了一个简单的例子来说明增量式开发的好处。如果大家想从更深层次上了解为什么这么做以及如何做,建议大家去看Martin Fowler的《敏捷软件开发:原则、模式与实践》。
言归正传,为什么软件架构设计要平台化呢?
要解释这个问题,需要首先说明什么是平台。按照我的理解,平台应该是在一定的需求范围之内,封装了为实现这些需求而必须具备的一些基本功能和执行逻辑的软件框架。这个框架式和具体的业务无关的,仅仅定义了一些为实现这些业务而必须具备的接口。并通过这些接口搭建起来的一个完整的、可运行的软件框架。在这个平台之上,可以根据不同的需求,对平台定义的接口进行实现,来实现具体的业务。(描述得比较抽象,请大家慢慢体会)
从平台的发展历史来看,大致经历了从操作系统平台到数据库平台再到业务基础平台的发展过程。我们这里讨论的平台主要是指业务基础平台。这个平台的目的主要是让开发人员从底层的软件开发中脱离出来,将主要的精力集中到业务上。举例来说,音乐播放器开发平台可以让开发人员把精力集中到开发对不同格式音乐的支持上,而不必再去处理界面的开发。
综上所述,平台化,就是要把软件开发人员从纷繁的开发工作中解放出来,让他们可以把主要精力都集中到业务相关功能的开发上来,提升开发效率。这就是平台化的目的。
好了,天也不早了,洗洗睡了。后面有时间,再和大家进一步探讨如何实现软件架构的平台化。