[敏捷软工团队博客]项目展示

团队成员简介和个人博客地址

头像 姓名 博客园名称 自我介绍 PM 测试 前端 后端
dzx 秃头院的大闸蟹 大闸蟹是1706菜市场里无菜可卖的底层水货。大闸蟹喜欢音乐(但可惜不会),喜欢lol(可惜上不去大师),喜欢pokemon(可惜买不起游戏机)。虽然大闸蟹能力不突出,但大闸蟹认真负责任劳任怨。希望在这门课中与大家成为朋友,一同努力奋斗,收获知识,并结下羁绊。
cc cc17373432 喜欢像素rpg。c,java,python,c++都用过,但是都不熟。希望在这学期的软工中和大家共同进步。(争取不拖后腿!)
yjy MagicJim 1706底层群员,无名小卒,在1706菜市场买菜时于一水产摊子前相遇组员大闸蟹。没有特别的喜好,没有特别的专长。学过C和Java,还会一点点C++、Python和Ruby。之前没有接触过软工,也没有参加过团队项目。虽然经验不足能力有限,但是交付的任务不咕不鸽,保证认真完成。希望能向同组的大佬们好好学习,在这学期的软工课程有所收获。
wjx Kidogu 目前可以披露的情报:熟悉C, C++, Python, Java, 有一定编程经验。刚刚接触软件工程,不够熟悉,希望和大家携手共进,斩获佳绩。
css sugarorange 1706底层群员,无名小卒。奶茶里喜欢加的配料是奥利奥和脆波波。希望和大家合作愉快,加油,奥利给!
dlf blueshift 星际玩家,最近因狂看CPP Reference视力进一步减退。目前掌握的编程语言有:C/C++(accumulating)、Java、Python(limited packages)。期待与各位敏捷侠开发出让用户满意的软件。
tq starmiku 干员星级:★★★★。招聘合同:大水群群员滕琦,将是给dalao打call的核心和大家在软工团队中合作。技能一:bug先锋,自动触发,随机地在代码中加入bug。技能二:爆肝,主动触发,花费一晚上时间推动项目进度。技能三:机器化,主动触发,视野缩小到眼前的屏幕,思维彷佛程序一般,增加开发效率。

团队项目的目标

设计和实现一个基于GitLab的软件工程教学实践平台,用于支持软件工程课上的实践项目,主要包括个人项目、结对项目和团队项目。

预期的典型用户

项目的典型用户主要分为三类人群:学生、助教和老师。我们针对每类典型用户的不同特点,分析了他们使用本项目的典型需求、场景、人群占比等因素。

学生A

用户信息 用户情况
姓名 学生A
身份 普普通通的学生
情况 各项能力都处于平均水平。
动机 在软工课程平台上管理项目,接收课程通知,每次作业至少拿个基础分。
困难 在修改时粗心大意导致再次提交的作业存在问题。提交后发现了代码中的问题,本地Debug修改后,没有将应用程序改成在Release环境下生成就提交。
典型场景 提交代码后进行自动化测试,根据测试结果对代码风格以及bug修复后将高质量的版本提交。
典型描述 今后再也不用担心代码内的小问题!
比例 50%
重要性 ★★★★★非常重要,占了一半的用户量,如果觉得这个平台好用,也会更愿意学这门课,学完之后也会更愿意向学弟学妹们推荐这门课。

助教B

用户信息 用户情况
姓名 助教B
身份 软件工程课的助教
情况 监督进度,批改作业。
动机 去每一个人仓库里拉代码太麻烦,部分代码质量低。
困难 课余时间当助教,比较忙。
典型场景 登陆网站助教入口,在具体的作业项目中就能得到所有提交的代码,评测直接由平台进行,只需要提供测试数据就能得到结果排名。进入各项目进度窗口,查看各个组项目进度,对进度慢的组进行提醒。
典型描述 测试自动化,效率提高一千八!
比例 6%
重要性 ★★★★★非常重要,自动化测试能极大程度减小助教工作量,助教就可以节省时间帮助更多的同学。

教师C

用户信息 用户情况
姓名 教师C
身份 软件工程课的老师
情况 发布作业,答疑解惑。
动机 微信区里同学们问的问题大部分是重复的。
困难 比较忙。
典型场景 登陆网站论坛,查看同学们提出的问题,予以解答。
典型描述 答一疑,解千惑。
比例 2%
重要性 ★★★★★非常重要,如果老师觉得这个平台好用,今后就会继续使用这个平台,也可能会向其他老师推广。

预期的功能描述

功能 描述
用户登录 输入账号密码登录
用户注册 用户注册新账号
用户注销 用户退出登录
广播功能 教师和助教可以向不同范围内的成员发送广播,所有成员可查看广播消息
评测功能 自动拉取学生仓库,实现个人和结对项目的自动评测
用户界面 用户登录成功后显示的总览界面
班级界面 展示、管理班级相关信息
项目界面 展示、管理项目相关信息
学生个人界面 展示、管理学生个人信息
教师&助教个人界面 展示、管理教学情况
创建班级界面 教师可在该界面创建班级
创建项目界面 教师和助教可在该界面创建项目
学生团队界面 展示、管理学生团队及学生项目相关信息,包括项目看板、冲刺、issue、博客的创建和管理

预期的用户数量

我们的项目的目标用户群体是本学期选软件工程课程的同学,预计用户数量为80人。如果我们的项目在本学期的课程结束后能够持续运营和管理,未来的用户预计为下一届选课的同学。

事先定义的软件用户量达到了么?

基本达到了。

团队的成员如何分工协作的?有什么经验教训?

在Alpha阶段的前期,我们分为了三个小组,分别是Debug组、完善组和增量组。每组两名同学,一名主要负责前端,一名主要负责后端,以三组并行的方式进行开发。

这样的分组方式持续了一周的时间,我们根据项目进展,将Debug组和完善组合并成了团队项目增量开发组,增量组成为个人和结对项目增量开发组,两组分别负责团队项目、个人和结对项目的增量开发。

在Alpha阶段的团队合作中,我们团队的分工明确,每个同学都有自己负责的模块和任务,团队氛围融洽。在每天的例会中,各个小组都会进行进度的汇报,相互督促,没有拖延的情况发生。

团队是如何进行项目管理的?

我们使用GitHub进行项目管理。新的任务通过issue的形式发布,每完成一项任务,就把对应的issue关闭。

为了防止两个人同时修改代码导致发生冲突,我们也采取了一些措施。一开始的计划是,每组在一天内的不同时间工作,分成上午下午晚上这三个时段,但发现大家的时间并不能完全固定,这样做不太现实。于是我们改变计划为,每次有同学修改代码前都会在群里说一下,给项目加锁,等修改完再释放锁,下一位同学再开始修改。大家轮流对项目进行修改,没有发生过冲突。

我们的GitHub中的issue:

团队如何平衡 时间/质量/资源 争取如期完成任务的?

由于时间比较紧张,我们决定Alpha阶段的主要目标是开发出平台的最小可用版本,修复项目中的Bug,完善基本功能,增量开发部分新功能。细节方面的优化和更多功能的进一步开发放在Beta阶段进行。

我们团队成员的积极性较高,大家都在尽量避免将项目拖到最后再完成,不想让自己成为影响团队进度的人。因此,我们在Alpha阶段的前两周节奏较快,项目进度始终处于稳步推进的状态,没有发生在项目后期疯狂赶ddl的情况。我们团队在时间安排上较为稳妥,充分利用了时间。

在产品之外,团队代码的软件工程质量如何?

测试用例和代码覆盖率

  • 测试用例数目:112

  • 运行测试用例得到代码覆盖率的视频录像

齐全的文档在哪里?

  • 代码注释:在项目代码中给每个方法编写了注释,便于理解。
  • 项目配置说明:基于项目原有的README,结合我们在配置环境过程中遇到的一些问题,我们编写了项目配置踩坑记,将在润色后与原有README合并,给今后继承我们项目的同学参考。
  • 评测机API文档:我们仿照GitLab官方API文档,撰写了我们的评测机的API文档auto test runner API。
  • 使用指南:
    • 在线版本:请见博客园使用指南
    • PDF版本:使用Latex编写

有些项目是在原来的基础上改进的,那么我们团队的软件工程项目质量有什么样的提高?

  • 增强可用性:修复原来项目中存在的大量bug,完善了原有的功能,保证基本功能的正常使用。

  • 功能更人性化:我们将一些操作进行了封装,例如编辑班级、返回功能。减少了在平台和GitLab之间的跳转,使用户体验更好。

  • 增量开发:增加了一些新功能,例如评测功能、创建仓库、权限管理、广播功能等,使平台覆盖的功能更加全面。

  • 编写文档、代码注释:使项目代码更加易读、易懂,便于以后继承我们项目的同学们更好地入手。

原来的项目有些代码混乱,没有注释,没有详细的文档,你们的项目是如何更好解决这个问题的?明年的同学继续开发这个项目,会不会出现类似的抱怨?如果一个新学生在一台新机器上想编译并运行你的项目, 请问能顺利完成么?有什么样的文档能指导新学生?

由于这个项目的环境配置比较复杂,我们在按照项目原有的配置说明进行配置时,仍然遇到了一些难题,花了不少时间。我们将这些问题的解决方法记录在了踩坑记里。这篇踩坑记经过了组内多名成员的迭代改进,已经较为完善和规范。对于明年继续继承我们项目的同学,我们有信心让他们能够比较顺利地配置好环境,不会再踩我们踩过的坑。

除了配置说明外,我们还编写了项目的使用指南,无论是使用者还是开发者,都能从指南中了解这个平台的功能和使用方法。

在代码方面,我们重新梳理了原项目的代码逻辑,并在原先有些混乱的地方做了一些改动。我们还编写了代码注释,方便今后继承项目的同学快速上手读懂代码。

对于项目的目标用户是一般学生的项目, 你们如何找到学生做需求分析?他们给你什么样的反馈?

我们采访了自己的室友,他们也是选了软件工程课的同学们,询问他们的需求。从他们那里得到的反馈和我们之前的计划设想基本相同。

团队项目的实际进展

发布的功能

详见我们团队项目的发布声明:发布声明

在哪里发布了软件

我们已经将项目部署在服务器上,用户可通过http://20.185.223.195直接访问。

用户反馈的截屏

说明在项目管理中,scrum的燃尽图是如何真实反映项目的状态的?或者燃尽图美化了状态?

我们每天都会将今天已完成的任务对应的issue关闭,有了新任务就会发布issue,不会为了燃尽图好看而关闭没有完成的issue,或是干脆不发布issue。并且每个issue的关闭,都会经过经办人的核查,确保每个issue的发布和关闭,都是我们项目进展的真实状态的体现。

团队成员在Alpha阶段的角色和具体贡献

名字 角色 团队贡献分 具体的, 可衡量的, 可验证的贡献 贡献总结
css PM 51 写了20篇博客
组织了21次例会
撰写博客、组织例会、把握项目进度、项目发布
yjy 增量/个人和结对项目增量开发 59 写了3892行代码
发现了4个bug
修复了12个bug
实现广播功能,自动仓库分配
调整gitlab权限分配结构,评测runner及api的封装和对接
tq 增量/个人和结对项目增量开发 49 写了404行代码
发现了2个bug
修复了3个bug
撰写项目介绍博客
技术学习花费25小时
实现广播功能、自动测试与仓库分配、构建runner
完成一些博客的撰写(团队介绍博客、功能规格博客等)
wjx 完善/团队项目增量开发 47 写了288行代码
发现了4个bug
修复了5个bug
发布技术规格说明书
技术学习花费27小时
熟悉代码花费25小时
邀请了4位用户
代码部分:
添加用户注销、项目班级重名检查、
编辑班级详情、部分代码逻辑调整、
修复不能打开team events代码说明的bug、
创建团队项目的功能、创建冲刺时的班级说明、
冲刺详情的对应班级以及项目的说明、
撰写代码注释、修复冲刺页面的bug、
修复编辑了错误的班级的bug
其他部分:
学习前后端知识、
阅读前后端代码并发布后端代码的review、
测试项目、发现bug和功能问题、
邀请用户使用平台等
dlf 完善/团队项目增量开发 46 写了274行代码
修复了1个bug
邀请了3位用户
完善页面跳转逻辑
读了Application Record相关的代码
添加编辑班级的功能
cc Debug/团队项目增量开发 48 写了430行代码
发现了3个bug
修复了8个bug
发布功能规格说明书
技术学习花费20小时
熟悉代码花费30小时
邀请了2位用户
代码部分:
阅读了issue部分相关代码
修复了新建issue默认加入todo列的bug
修复了没有将gitlab中issue全部拉取拉取的bug
修复了项目看板计数、权重、优先度显示的bug
新增了为项目自定义label的功能
完善了issue部分的注释
其他部分:
采访往届团队
dzx Debug/团队项目增量开发 50 撰写项目使用指南
撰写团队介绍&采访
进行了3次对于项目的全面测评
撰写bug复现文档
发现了21个bug
修复了8个bug
邀请了30位用户
技术学习花费30小时
熟悉代码花费24小时
对项目进行细致的测评,并对bug进行定位,进行bug修复
撰写团队介绍、使用指南
大力推广项目

所做软件最有特色的功能是什么,请着重介绍一下。活的用户如何从你的软件中获益的,请现场展示。

评测功能

将创建评测点、提交评测任务、获取评测结果封装成按钮。实现自动拉取学生仓库,在评测机上进行自动评测,并返回评测结果。

增加此功能后,在平台上可以实现个人和结对项目的自动评测,而不需要助教去手动克隆每个学生的项目,再逐一进行评测,为助教评测作业提供了极大的便捷。

  • 创建评测点

  • 提交评测任务

  • 获取评测结果

团队项目功能

我们实现了多种与团队项目管理有关的功能,可以在平台上很方便地进行团队项目的管理。

  • 项目看板

  • 冲刺

  • 问题

团队从用户那里得到了什么反馈,有什么样的bug?

用户给予我们的反馈普遍较好,也收到了一些问题的反馈。

总结,整个团队在Alpha阶段学到了什么,对软件工程的教育,对这个具体的课程有什么批评建议?Beta阶段有什么大体计划?

在Alpha阶段学到的

  • 软件工程流程方面

    体验了软件工程中一个项目从前期的团队建立、整体规划、需求分析、任务拆解,到项目的开发、冲刺,再到项目的发布、总结、规划下一阶段,这样一个完整的流程。对软件的工程化开发有了更深入的体会和理解。

  • 团队协作方面

    我们的团队是一个七人团队,以往的课程往往是三四个人的小组,我们对团队合作有了更丰富的经验和感受,体会到了如何更好地发挥出自己在团队中的作用,也锻炼了自己的协作、沟通、表达能力。无论是基础较好的同学,还是基础一般的同学,都能够在团队中尽自己所能,做出自己的贡献,在团队合作中有所收获,实现1+1+1+1+1+1+1>7的成果。

  • 技术方面

    • GitLab
    • Ruby on Rails
    • Sqlite3/PostgreSQL
    • Vue
    • JavaScript
    • Nginx反向代理

Beta阶段的计划

在Beta阶段,我们的主要任务是结合Alpha阶段发布后收到的用户反馈,提升用户体验,优化细节。

  • 界面美化

  • 批量添加成员

  • 创建团队的合法性检测

  • 登录时的身份验证

  • 完善评测机,使用docker容器作为评测环境,防止评测对主机的影响

  • 进一步开发评测机的API,实现更多功能,以及更多的评测指标

  • 引入团队评分系统,用户提供一个评分规则,我们自动算分

  • 引入评分系统,对博客分、个人、结对、团队分进行整合,整个平台成为一个更加凝聚的整体,一键评分

  • 各项信息的导出(比如下载对应的.csv等)

原文地址:https://www.cnblogs.com/the-agiles/p/12830407.html