透明思考


Transparent Thoughts


毕业设计中使用敏捷方法的尝试

从CNKI收录的共计超过1000篇与敏捷软件开发相关的论文中,我找到了5篇关于在毕业设计中使用敏捷方法的文章,从一个侧面勾勒出高校教育工作者看待敏捷的一种视角。

最早谈这个话题的是广东工业大学计算机学院的刘竹松、李振坤、王文彦三位作者。他们于2007年发表的《极限编程在计算机本科毕业设计中的应用》一文中认为,“将极限编程应用到计算机专业本科毕业设计中”的主要目的是“有助于学生形成团队合作的精神”,从而“促进学生学习的兴趣,加强学生综合应用各方面知识的能力,增强学生之间的相互交流、相互学习,提高毕业设计的整体效果”。从这个出发点,作者们认为“极限编程的核心是结对编程”,具体实施时谈的也是“合理设计结对”和“合理分配任务”。

(这篇文章先后发表在《电脑知识与技术》和《计算机教育》两个期刊,可能是作者一稿多投。所以讨论“在毕业设计中使用敏捷方法”这一主题的文章其实只有4篇。)

稍后,2007年10月,大理学院数学与计算机学院的杨健、张晓玲、周少云三位作者在《计算机时代》发表了《软件开发类毕业设计中敏捷软件技术的应用》一文。在这篇文章中,作者尝试解决“毕业设计质量低下,学生得不到真正锻炼”的问题,具体表现形式包括“软件各个功能模块无法有效整合”、“需求因为各种原因不断改变”、“软件的错误和缺陷不断涌现”等。与此前的刘文不同,杨文尝试回答的问题更为全面,包含了沟通、需求、质量等多个角度。因此在看待敏捷方法时,三位作者关注到了更为全面的多个敏捷原则,包括“增量式开发、可持续的开发速度、简单、结对编程、适应改变、个体激励和交流、反省”等。值得注意的是,这些概念在敏捷软件开发的理论框架中并不都是“原则”,有一些是具体的实践。并且杨文完全没有提及测试驱动开发、持续集成等技术性的实践,也没有提及用户故事、看板等需求管理和迭代管理的实践。似乎三位作者的关注点主要还是在团队内部的交流和协作,对于团队对外的呈现(需求的获取和管理、项目进度、软件质量)的考虑较少。

第三篇文章是石家庄外经贸职业学院的马静媛和河北交通职业技术学院的薛惠于2009年发表于《电脑知识与技术》的《极限编程在高职计算机专业毕业设计中的应用》。与刘文相似,这篇文章想要达到的目标也是“加强学生综合应用各方面知识的能力,挖掘学生的学习潜力,并且培养学生之间的合作意识,提高毕业设计的整体水平”,重心仍然是在团队的内部与沟通协作上。与刘文和杨文相比,马文明确指出了极限编程的12个最佳实践,并着重讨论其中的简单设计、结对编程和集体代码所有制三个实践。另外,马文提出了对测试驱动开发实践的要求:“编码之前必须先写好单元测试代码”、“代码完成后用编码前编写的测试用例进行单元测试”、“代码和测试用例一起存入代码库”。马文没有提及如何划分用户故事和开发任务,也没有提及持续集成,从文中无法判断,学生在实际开展测试驱动开发时是否遇到任务过大、失败的测试被荒废等问题。

第四篇文章是湖南工业大学计算机与通信学院的曾志浩和肖小克于2012年发表于《计算机教育》的《以敏捷开发和极限编程为指导的软件工程毕业设计》。曾文与前三篇文章有一个显著的区别:这篇文章的关注重心不在内部的沟通、协作和学生能力培养,更多地关注毕业设计的进度和质量这两个对外指标。以此为出发点,曾文提出了一套“以AD和XP为指导的毕业设计过程”,包括项目的组织方式、管理方式和考核方式,并给出了具体的“典型过程及相关支撑工具”。在管理侧,曾文提出“贯穿整个毕业设计过程,以各个阶段时间点为标志,要求学生以增量的方式来完善项目开发”,并在考核时注重代码功能而非文档、交叉检查结对学生的编码工作量、要求学生就系统的多个可运行版本进行演示等,把敏捷实践与毕业设计考核方式相结合。在工具侧,曾文仅推荐了测试管理工具Mercury Quality Center和持续集成工具Jenkins,并未推荐具体的测试工具。这可能是为了顾及建议的通用性,但也给具体项目开展时自动化测试和测试驱动开发的落地留下了一个问号。

综观这四篇文章,我们可以勾勒出敏捷方法在中国高校计算机教育领域的历程。从早期的刘文以偏概全地看到一个特立独行的实践(结对编程)、杨文对敏捷理论的解读不清晰不准确,到马文能够准确描述极限编程的实践、并有意识地选择自己需要的实践,再到曾文从组织、管理、考核等角度全方位运用并辅以工具支撑,我们能看到中国高校计算机专业指导老师逐步深化对敏捷理解的过程。另一方面,从刘文直到曾文,对于测试驱动开发和重构的描述是语焉不详的,关于持续集成的具体实践和具体挑战的论述是缺位的,由此不难想象,在实际的毕业设计项目中,这些技术性的实践很可能并没有得到有效实施,于是敏捷会更多地退化为一种鼓励沟通、鼓励协作的团队运作方式——这与前三篇文章的诉求相一致,而曾文也没能提供技术性支撑工具(尤其是Jenkins)在实施中的真实情况。这种“重沟通轻技术”的敏捷采纳方式,恰是敏捷在整个中国IT业的境遇缩影。