照顾程序代码质量就像照顾身体,要常常检查,随时注意异状。Android的开发工作如果要确保可用(Usable)与稳定(Stability),就要做好Code Review的工作。根据过去与许多厂商的合作经验发现,许多关键的软件开发观念经常被忽略。主要的原因为,大部份的技术开发思惟,都比较偏向硬件与驱动程序方面,或是功能性的实作。

软件的开发本身就是一项大工程,由Android所创造出来的手机操作系统,可能有近90%的比例是透过软件工程的技术与观念所开发,其它10%才是考虑硬件层面,或是驱动程序层面。换个角度来看,以台湾硬件厂商的技术水平,如果把软件工程的技术养成,一定能具备产品开发的实力。以下提供个人的一点建议:台湾硬件厂该如何提升软件开发能力。

第一、先做再说、确实可行。单独以Android的框架与软硬整合的角度来看,先设计后实作(Design & Implementation)的方法论可能不适用于台湾的产业环境,因此导入传统的软件工程方法论,或许也没有绝对的必要性;原因是,Android已经把这些基础建设都做到一定程度了。在理论与实际间取舍的话,「先实作、后检视」可能是一种方式。

目前在业界所见的程序代码实作,大多偏重硬件与功能面,在理论面着墨不深,不过这却是个很好的契机。过去自已的经验发现,先实作,得到初步可用的程序代码实作后,再考虑理论面,进行程序代码调整,其实是可行、有效率的做法。因此,自已也希望能将这个观念与方法论,提供给客户参考,甚或协助导入「先实作、后检视」的作业流程。

第二、实施Code Review就对了。软件的开发工作,都会有Code Review的流程。这里所提的「检视」即Code Review。Code Review是一个很久的观念了,它在软件管理(Software Management)的领域里被详细讨论。

Code Review是一个系统化的检查过程,目的是确定程序代码的质量;检查的过程,是为了找出错误、并且修正错误,这些错误在初阶的开发阶段(Initial Development Phase)可能不会被发现。这里的「错误」也包含「观念上的错误」、「理论的误用」等等,因此,能动作(Workable)的程序代码,不见得是正确的程序代码。

第三、搭配教育训练。Code Review还有另外一个很重要的目的,却不常被提及,就是「提升开发人员的技能」。Code Review等于Improve Software Quality + Improve Developer's Skills。软件的质量,影响软件的稳定性;人员的素质,影响软件的质量。在初阶开发阶段,可以不必发现理论上的问题,而是下一阶段,由资深开发人员协助Code Review,再进行程序代码调整,以提升软件质量。这就是「先实作、后检视」的精神。

最后、其实是一个例子。以Android Framework与Linux驱动程序为例,主要影响系统稳定性的关键在于「Android框架与Linux驱动程序的数据传递方式」,即「储存数据」并「传递内存」的方式。「内存的使用」是影响 Android 与 Linux 整合稳定性的主要因素。Android底层可能需要以MemoryHeap来储存并传递大量数据,而非以C语言指针(Pointer)的方式进行。

从事硬件发展的研发人员,可以在初阶开发阶段以malloc搭配C语言指针,来传递硬件数据给Android操作系统。但是,必须有Code Review人员,协助将初阶的实作,修改为Memory Heap方式,并以对象观念传递。重构后的程序代码,可以协助该硬件开发人员提升软件技能。这种「先开发、后检视」的作法,就是Code Review的精神,也是台湾硬件业提升Android程序代码稳定性,以及提升开发人员技能的一个方法。