分析和维护开源软件的实践过程如下图所示:
(1)阅读开源代码
在开源软件托管社区(如
GitHub、SourceForge、码云等)中遴选待分析和维护的开源软件,将其编译、安装和部署到目标运行环境中,通过操作和使用该软件系统以了解其功能;阅读开源软件代码,掌握开源软件的整体架构情况,分析软件模块与软件功能之间的对应关系,大致了解和掌握开源软件的整体情况。
(2)分析代码质量
采用人工阅读分析和工具自动分析(如借助 SonarQube、CheckStyle
等软件工具)相结合的方式,探究开源软件代码的质量情况,学习高质量的程序代码及其编写技能,发现开源软件代码中存在的质量问题,领会和掌握高水平、高质量软件设计和程序设计的规范、策略、方法和技能。
(3)标注开源代码
精读和细读开源软件代码,在局部、微观层次掌握代码的实现细节和方法以及质量特征,理解程序代码的内涵和语义,并在类、方法、语句块、语句等多个层次对开源软件代码进行注释。该活动旨在掌握开源软件代码的具体细节(包括代码语义和内涵、编写的意图等等),并对其进行标注,从而为后续的代码维护奠定基础。该活动的输出是开源软件代码的注释。
(4)维护开源软件
维护开源软件主要包括二方面的工作。一是修改开源软件代码中存在的缺陷,以提高代码质量,也称纠正性维护;二是在开源软件原有程序代码的基础上编写新的程序代码,以完善其功能,也称完善性维护。无论是纠正性维护还是完善性维护,都要求实践人员树立质量意识,运用所学到的方法和技能来编写代码,产生高质量的软件系统。
(5)基于群智方法、借助群智资源来开展实践
在分析和维护开源软件过程中,实践人员会遇到多样化、个性化的软件开发问题。例如,他们不理解开源代码中某些语句的内涵和语义、不知道代码中某些类及其方法的功能、不清楚如何运用特定程序设计语言来实现某些功能、不明白如何从开源社区中克隆开源软件代码等等。由于不同实践人员的软件开发知识和经验有所差异,所阅读的开源程序代码、实现的软件功能各不相同,因而他们遇到的问题也不尽相同。