您的当前位置:首页正文

软件平台化(一)

来源:华拓网
软件平台化(⼀)

软件开发,尤其是商业软件开发,是⼀个系统⼯程。开发者,尤其是管理者需要系统地去考虑和控制整个开发过程中的每个环节,以保证软件的质量。下⾯⾸先从软件架构谈起,结合我⾃⼰的开发经验,跟⼤家共同探讨⼀下如何通过软件平台化保证产品质量。为什么平台化?

按照⾯向对象设计思想和重构理论,软件开发过程中要尽量不要对已有代码进⾏改,⽽是采⽤增量式的开发⽅式,以避免对⽼代码进⾏修改时引⼊新的Bug。为什么要这样呢?因为代码编写出来后是要进⾏测试的,通过测试来发现和解决代码中存在的Bug。当⼀段代码编写完成并测试通过后,我们就可以说这段代码基本上没有Bug了,是稳定的(最起码在当前可预知的条件下是稳定的)。如果对这段已经稳定的代码进⾏了修改,那稳定就被打破了,也就⽆法保证这段代码没有Bug了,必须要进⾏新的、全⾯的测试和修改后才可以重新说这段代码是稳定的。可是实际的商⽤软件开发过程中,我们能保证可以对被修改的代码重新做⼀遍完整的测试吗?你可以说“我可以”。但是如果你的⽼板告诉你这代码实现的功能明天就要交付给客户,那你还可以说“我可以”?好,如果你是⼀个⾼⼿,通过⼀宿的加班,你还是可以说“我可以”。那如果你修改的这段代码刚好是⼀个刚刚⽣病住院的兄弟写的,⽽你只是临时顶替他,并且你不完全熟悉这段代码的细节,那你还可以说“我可以”吗?不熟悉代码的情况下你还能够保证测试的全⾯性吗?

在商⽤软件开发过程中,这种情况应该是会经常遇到的。进度紧张、加班加点、⼈员离职。。。。。。⼀系列的问题都在不停的⼲扰着我们以理想的⽅式去完成软件的开发。这种情况下,我们所要做的,只有提⾼效率。不必要的⼯作尽量不去做,也就有了上⾯说的增量式开发的理论。最起码,增量式开发⽅式可以减少你做⼀些不必要的测试⼯作,也可以减少对⽼代码的修改引⼊新Bug的风险。⼤家常说的到⾼内聚和低耦合,其实也就是这个道理。

这⾥只是举了⼀个简单的例⼦来说明增量式开发的好处。如果⼤家想从更深层次上了解为什么这么做以及如何做,建议⼤家去看MartinFowler的《敏捷软件开发:原则、模式与实践》。⾔归正传,为什么软件架构设计要平台化呢?

要解释这个问题,需要⾸先说明什么是平台。按照我的理解,平台应该是在⼀定的需求范围之内,封装了为实现这些需求⽽必须具备的⼀些基本功能和执⾏逻辑的软件框架。这个框架式和具体的业务⽆关的,仅仅定义了⼀些为实现这些业务⽽必须具备的接⼝。并通过这些接⼝搭建起来的⼀个完整的、可运⾏的软件框架。在这个平台之上,可以根据不同的需求,对平台定义的接⼝进⾏实现,来实现具体的业务。(描述得⽐较抽象,请⼤家慢慢体会)

从平台的发展历史来看,⼤致经历了从操作系统平台到数据库平台再到业务基础平台的发展过程。我们这⾥讨论的平台主要是指业务基础平台。这个平台的⽬的主要是让开发⼈员从底层的软件开发中脱离出来,将主要的精⼒集中到业务上。举例来说,⾳乐播放器开发平台可以让开发⼈员把精⼒集中到开发对不同格式⾳乐的⽀持上,⽽不必再去处理界⾯的开发。

综上所述,平台化,就是要把软件开发⼈员从纷繁的开发⼯作中解放出来,让他们可以把主要精⼒都集中到业务相关功能的开发上来,提升开发效率。这就是平台化的⽬的。

好了,天也不早了,洗洗睡了。后⾯有时间,再和⼤家进⼀步探讨如何实现软件架构的平台化。

因篇幅问题不能全部显示,请点此查看更多更全内容