版本号:V1.0
一、项目背景
“构建之法”于2007年在清华大学首次实践,随后经过在北航、东北师范大学、福州大学、集美大学等三十余所学校的不断迭代与改进,现已形成了一套成熟的软件工程课程教学体系,覆盖了软件工程和编程语言的教学。该教学体系有下面的特点:
· 练习量大, 内容多:除了大量的代码练习,还有大量的博客写作练习。
· 理论和实践相结合:讲现代理论,同时结合体现理论的工具,例如:要求所有代码使用Git和Github进行管理。
· 真实的团队开发:要求使用原型设计工具设计项目,使用团队开发工具管理任务分配,使用燃尽图进行进度管控等等一应俱全。
· 学生助教熟悉课程,能够协助老师,与学生充分互动。
在基于“构建之法”思想的软工课程教学中,在团队项目阶段,主要采用博客和Github方式发布团队作业并对源代码进行管理。教师和助教需要对项目团队管理质量进行度量并给予学生及时反馈和有效指导。当前这些工作都是人工进行,效率较低,步骤和流程较为繁琐,缺乏必要的数据统计与汇总。因此需要一款软件系统支持这项工作的开展。
项目名称:团队项目度量反馈平台
面向用户:高校软工教学团队与学习软工的学生
项目开发者:北航软工暑期培训班团队项目1组
二、用户需求分析
1、待解决的问题
(1)源代码管理质量评估与反馈效率需要提高
当前教师和助教对源代码管理质量评价的方法是获取学生代码仓库后,对代码仓库中的commit,源代码的风格一致性,签入描述的完备性进行人工审查,并根据审查结果评分。人工审查效率较低,需要手动下载代码仓库,分析commit,运行源代码风格检查工具。
教师和助教需要通过观察分析以及简单计算后才能获得项目随着时间推移的代码提交情况,而随着时间推移的代码提交情况可以由程序对代码仓库进行分析后自动获得。
教师和助教需要通过对代码仓库中不同成员的贡献情况对所有成员的实际代码修改量进行统计后才能获得所有成员的实际代码修改量,这项工作可以由程序自动分析完成,并用可视化方式展示。
反馈效率低且不及时:反馈给学生的方式采用的是课堂上公布、博客公布或者将结果通过邮件的形式发送给学生,这些反馈方式都较为繁琐,也无法对每一次反馈进行管理,做到可追溯。
(2)项目进度管理质量评估与反馈效率需要提高
当前学生的每日例会汇报常常沦为形式主义,汇报中没有实际内容且不具备实际价值,助教和教师希望可以通过代码仓库中的ISSUE ID,代码提交ID,博客地址等信息自动生成团队每日例会报告。
2、解决方案
针对上述存在的问题,我们将从教师和学生两个角度来进行方案的设计。
对于教师和助教的角色而言,平台提供的主要功能如下:
(1)项目列表及概览
提供整个教学班级的所有参与的项目清单;
提供每个Project的概览信息,包括:代码行数、复杂度、代码重复率、注释率。
而针对每一个项目,则可以详细从源代码管理质量与项目进度管理质量两个方面进行详细查看。
(2)源代码管理质量评估与反馈
其主要目标是要对质量进行评分,评分项如下:
签入功能的独立性(确保每次签入一个功能,一次签入包含多个功能的方式不利于代码的回滚、整体打包) 分值(20分)
签入风格一致性(从代码规范检查的角度,确保签入时风格与上次一致)分值(20分)
签入代码是否可以成功编译运行(确保每次签入的代码经过初步的测试)分值(20分)
签入描述完备性分值(20分)
代码实际修改量分值(20分)
除了对评分项进行展示外,还可以看到每一项自己提交代码对应存在的问题。
(3)项目进度管理质量评估与反馈
其主要目标是要对每个项目团队的进度进行管理,项目进度管理相关的统计结果自动化产生,其数据来源来自学生在软件开发过程中提交的代码和相关文档。具体包括:
每日例会报告产生
项目管理质量评价
对于学生的角色而言,除了可以看到教师角色可以看到的所有功能之外,额外增加的功能如下:
(1)查看教师反馈
(2)提供课程相关资料的专栏与查看功能
3、竞品分析
(1)教育软件市场同类竞争产品概况
a. Sonar-代码质量管理平台
产品展示链接: https://blog.csdn.net/caozhangyingfei0109/article/details/43938383
图片: https://images-cdn.shimo.im/VieoTIJSPW02dQyR/图片.png
Sonar是一款与本项目代码质量管理核心需求有部分叠加的开源软产品,是目前最强大的代码质量管理工具之一。根据产品简介,Sonar提供以下七个方面代码评测功能:
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
图片: https://images-cdn.shimo.im/uJReq0qrrRQYhi4G/image.blob
程序中包含大量复制粘贴的代码是质量低下的,Sonar可检测源码中重复严重的地方:
图片: https://images-cdn.shimo.im/9g9Lh7F0MAAC0GPV/image.blob
展示单元测试覆盖率
图片: https://images-cdn.shimo.im/rXw0wAydH1Q23Kty/image.blob
通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
注释不足或过多的检测
通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug
图片: https://images-cdn.shimo.im/dXNXGvWFtdI60Lat/image.blob
找出循环,展示包与包、类与类之间的相互依赖关系,检测自定义的架构规则;管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况;检测耦合。
b. 其他源代码管理工具
Visual Source Safe(VSS)、Concurrent Version System(CVS)、Subversion(SVN)、GitHub、ClearCase等平台也提供相应代码管理功能。
c. 学生作业管理系统
较为知名的系统有Moodle、BlackBoard。这些系统有较为完善的作业采集和评分管理功能,但是不能采集以博客方式发布的作业,也不能有效存储软件源代码,并不适用于软件工程作业管理。
以上与项目中代码质量管理相关的同类产品,多用于支持软件企业项目管理需要,由于产品缺少检测结果的反馈建议,并不完全适用于软工教学团队代码管理需要。其次,就目前的调研情况来看,作业发布采用博客方式的教学改革尚在探索中,目前尚无支持博客作业采集与作业质量分析的管理系统。
综上所述,就国内应用市场竞品来讲,本项目同类应用较少,市场竞争压力较小,具有研发和市场应用价值。
4、项目优势与收益
本项目的核心功能:
(1)面向教师用户:
能够根据学生用户输入的Issue ID,任务内容描述,代码签入ID,博客地址等内容,自动生成团队项目的每日例会报告,帮助教师实现对项目进度管理的度量,从而指导干预和反馈;
能够自动分析学生源代码项目,并对项目的源代码管理质量作出评分;同时可视化展示不同时间节点提交代码量的多少,并展示出每个同学的实际修改量;使教师可以掌握学生的源代码管理质量,并提出具体意见,并且要具体,有效指导学生源代码管理技能提升。
(2)面向学生用户:
能够可视化展示个人所属团队不同时间节点提交代码量的多少,并展示出个人的实际修改量,使学生了解工作进度;
给出个人所属团队源代码管理质量和项目进度管理的评分与教师反馈,有效获取管理方法的指导。
在“互联网+”为基础的信息技术证改变甚至颠覆教学方式和理念,在此背景下,基于构建之法的软件工程实践教学体系以github源代码管理平台、博客园等互联网平台工具作为教学工具,倡导“做中学”,促使学生在实践中真正获得软件工程能力的提升,在国内软件工程教学领域产生了巨大的反响。目前该教学体系在其关键的项目质量评价与项目进度管理方面主要采用助教助完成,存在教学工作量巨大、作业反馈不及时的问题。本项目主要针对此问题开发与设计该教学管理平台, 如该平台能够推广应用,将能够使采用该教学体系的教师和学生受益,并且直接为国家培养能够开发与团队协作复杂软件系统的软件工程专业人才。
三、交付方案
1、在构建之法论坛与交流群向采用“构建之法”开展教学的软工教学团队分享演示。
2、向其他未采用构建之法进行软工教学的高校进行推广构建之法的同时推广此软件。
3、建立产品官网,介绍产品基本功能,并提供产品试用链接。
4、参加计算机教育相关学术会议,分享产品在教学实践中的使用。
四、参考文献
1、现代软件工程讲义:如何提出靠谱的项目建议(NABCD)
2、第二届构建之法论坛——新一代编程+软工+AI
3、【软剑攻城队】用户需求文档发布
4、Sonar——代码质量管理平台