我在《专业嵌入式软件开发 — 全面走向高质高效编程》一书中用一章的内容指出,软件平台与框架开发是高质软件的打造之路。这里想进一步谈一谈实施这一高质软件打造方法所需注意的事项。
首先,明确(软件)平台与框架开发的主要目的不是对操作系统的功能进行封装,而是为所需开发的上层应用提供服务。虽然平台与框架的开发需要通过对操作系统的功能进行封装来实现为上层应用提供服务,但两者的主、次不能颠倒。
以为上层应用提供服务为导向,有助于我们在平台与框架开发的过程中取舍哪些功能应纳入其范畴,而不致于“沦落为”包罗万象。
致力于将平台与框架打造成包罗万象的目的或许是为了提高其生存能力,但这并不是一种可取的思想。原因在于,各种操作系统所提供的功能并不完全相同,有些功能可以通过抽象的方法在不同的操作系统上为上层应用提供统一的接口,但有些功能却不能。如果平台与框架所提供的某一功能在一个操作系统上存在,在另一个操作系统上却没有,在使用者没有意识到这一点的情形下,当基于该功能模块的软件需要实现跨操作系统时就会出现问题。在平台与框架的设计上,除非万不得以,我们应尽可能从技术上避免这类问题的发生。
其次,一个平台很难适用于所有的应用领域,框架尤为如此。如前面所说,平台与框架是为上层应用提供服务的,而应用存在业务(或行业)领域问题。由于不同的领域可能具有完全不同的特点,这就使得同一平台或框架难以同时适用。很显然,抽象层次越高的软件模块其领域适应性就越差;反之,抽象层次越低其领域适应性就越好。比如,一个对线程进行简单封装的软件模块,由于其抽象层次低,所以几乎可以运用于任何的应用领域。
再次,平台与框架的开发是一个长期渐近的过程,而非一蹴而就的。在设计者没有足够软件行业和业务领域经验的情况下,要一口气设计出高质量的平台与框架是不大现实的。因此,通常情况下,平台与框架应当按需逐步演进。一方面,这可以避免过度设计所带来的资源浪费;另一方面,这有助于在我们发现设计不当时更方便地对已有设计进行改进。
软件需求的变更是一种常态,这种变更有时会反映于平台与框架不能适应新的需求。在这种情况下,需要我们回头审视现有设计,并对设计进行恰当的变更以适应新的需求。不少公司在打造自己的平台与框架时,刚开始的出发点是好的,但由于在实施过程中忽视了平台与框架存在“过时”问题,使得最终的结果并非如期所愿。用静态的思维对待平台与框架开发将最终导致前功尽弃,甚至引发怀疑这种方法的有效性。
最后,我们需要意识到,平台与框架开发所需的软件设计能力和业务经验要求更高、设计所涉及的范围也更广。从复杂度守恒的观点来看,引入平台与框架开发有助于简化上层应用的实现,但这种简化是通过将上层的复杂度转移到下层而做到的。正因如此,尽管平台与框架开发这种高质软件打造方法有效,但并不是每一个项目团队都能实施它,因为瓶颈在于缺乏具备实施这一方法所需能力的人。