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

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

团队项目的目标

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

预期的典型用户

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

学生A

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

助教B

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

教师C

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

预期的功能描述

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

预期的用户数量

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

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

基本达到了。

由于用户数目在Alpha阶段已经基本确定下来了,我们在Beta阶段发布的目标是增加20个issue和20篇博客。

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

在Beta阶段,我们改变了Alpha阶段分组协作的方式,改为每个人负责一项或几项新功能的开发。基于Ruby开发的特点,团队的每个成员在Alpha阶段都学习了前端和后端的相关技术,每个人都能够独立负责一个功能的前、后端整体开发,我们认为这样的分工方式效率更高。

我们将分工也体现在了GitHub的issue中,我们的每一项新功能对应的issue都分配了assignee,标志着功能与负责人的对应。

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

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

为了防止两个人同时修改代码导致发生冲突,我们也采取了一些措施。首先是在分工方面,每个人负责的功能不同,修改的代码部分也相对独立,已经尽量避免了冲突。并且在commit之前,我们也会先在群里加锁,避免在这期间有人对代码进行修改,push后再释放锁。

Beta阶段的改进

在Alpha阶段的评审中,老师和助教给我们提出的建议是将issue和commit对应起来,我们在Beta阶段做到了这一点:

E.g:改进广播系统

并且我们也规范了commit的格式,例如refinement、bugfix、new feature等类型,加上具体的内容,使commit信息更明确清晰。

我们的GitHub中的issue:

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

测试部分

在测试方面,我们保留了Alpha阶段的全部测试用例,以确保回归测试的正确性。

每名成员负责测试自己所开发的新功能,修复出现的bug,确保能够正常使用后再提交。

齐全的文档在哪里?

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

由于在Beta阶段新增了不少功能,界面也有较大的调整,我们撰写了使用指南的Beta版本。

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

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

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

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

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

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

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

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

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

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

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

团队项目的实际进展

发布的功能

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

在哪里发布了软件

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

用户反馈的截屏

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

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

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

名字 角色 团队贡献分 具体的, 可衡量的, 可验证的贡献 贡献总结
css PM 49 写了17篇博客
组织了12次例会
撰写博客、组织例会、把握项目进度、项目发布
yjy 开发 41 写了1595行代码
撰写1篇技术博客
1. 调整了前端的界面
2. 增加了教学计划功能
3. 增加了登录的权限管理以及组织的创建
tq 开发 51 写了1030行代码
撰写1篇技术博客
1. 多评测机功能
2. 评测点管理功能
3. 班级管理UI调整
wjx 开发 53 写了530行代码
撰写1篇技术博客
1. 批量创建结对项目
2. 批量创建团队项目
3. 创建博客选择作业
4. 学习vue组件
5. 学习element UI
6. 检查代码、发现和报告bug
dlf 开发 54 写了227行代码 1. 增加表单合法性检查
2. 广播消息及新教学任务的实时通知
my 开发 52 写了426行代码
技术学习、熟悉代码花费20小时
组织的显示,修改,删除
dzx 开发、测试 50 写了818行代码
撰写1篇技术博客
撰写使用指南
1. 调整了前端的界面,增加了博客入口
2. 新增了批量创建学生用户的功能
3. 增加了博客作业的新建和展示功能
4. 增加新建博客选择博客作业
5. 调整博客显示界面
6. 增加博客评分功能
7. 调整所有博客的显示功能
8. 书写使用指南
9. 测试bug

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

  • 批量添加学生

  • 批量创建团队和结对项目

  • 博客作业和评分

  • 教学进度管理

  • 新广播通知

  • 表单合法性检查

  • 评测系统

  • 组织管理

图文版详见发布声明:发布声明,我们也录制了视频进行播放展示。

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

用户给予我们的反馈集中表示为界面变化较大,更加美观了,也表示平台访问速度较慢,比较卡。

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

在Beta阶段学到的

  • 更加重视项目管理

  • 时间和质量的平衡与取舍

  • 人员变动的调整

[敏捷软工团队博客]Beta阶段项目展示的更多相关文章

  1. [敏捷软工团队博客]Beta阶段使用指南

    软件工程教学实践平台使用指南 项目地址:http://20.185.223.195:8000/ 项目团队:the agiles 进入界面如图: 目录 软件工程教学实践平台使用指南 学生端 登录 iss ...

  2. [敏捷软工团队博客]Beta阶段事后分析

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决的问题是:现在的软工课程的作业分布在博客园.GitHub上,没有一个集成多种功能的一体化 ...

  3. [敏捷软工团队博客]Beta阶段发布声明

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 Beta阶段发布声明 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 对Bet ...

  4. [敏捷软工团队博客]Beta阶段测试报告

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 Beta阶段测试报告 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 对Bet ...

  5. [敏捷软工团队博客]Beta设计和计划

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 Beta设计和计划 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 对Beta ...

  6. [敏捷软工团队博客]The Agiles 团队介绍&团队采访

    项目 内容 课程:北航-2020-春-敏捷软工 博客园班级博客 作业要求 团队作业-团队介绍和采访 团队名称来源 The Agile is The Agile. 敏捷就是敏捷.我们只是敏捷的践行者罢了 ...

  7. [敏捷软工团队博客]项目介绍 & 需求分析 & 发布预测

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 了解项目整体情况 ...

  8. [软工顶级理解组] Beta阶段项目展示

    目录 团队成员 软件介绍 项目简介 预期典型用户 功能描述 预期目标用户数 用户反馈 团队管理 分工协作 项目管理 取舍平衡 代码管理 程序测试 代码规范 文档撰写 继续开发指导性 用户沟通 需求分析 ...

  9. [软工顶级理解组] Alpha阶段项目展示

    目录 团队成员 软件介绍 项目简介 预期典型用户 功能描述 预期目标用户数 用户反馈 团队管理 分工协作 项目管理 取舍平衡 代码管理 程序测试 代码规范 文档撰写 继续开发指导性 用户沟通 需求分析 ...

随机推荐

  1. pycharm 汉化

    1.首先进入pycharm,点击file,找到setting. 2.点击 plugins 搜索Chinese,找到Chinese(simplified)Language Pack EAP,点击inst ...

  2. 缓存一致性?get💡

    大家好,我是老三,今天又是被算法致郁的一天,写篇文章缓一缓. 这篇文章,我们来看看缓存一致性问题. 缓存一致性 我接下来会巴巴说一堆缓存一致性,但是-- 作为一名暴躁老哥,我先把结论撂这了! 缓存和数 ...

  3. J2EE分布式微服务云开发架构 Spring Cloud+Mybatis+ElementUI 前后端分离J2EE分布式微服务云开发架构 Spring Cloud+Mybatis+ElementUI 前后端分离

    ​ 鸿鹄云架构[系统管理平台]是一个大型企业.分布式.微服务.云架构的JavaEE体系快速研发平台,基于模块化.微服务化.原子化.热部署的设计思想,使用成熟领先的无商业限制的主流开源技术(Spring ...

  4. Linux上合理设置网卡的MTU值

    MTU:是网络的最大传输单元,通信术语:最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位).最大传输单元这个 ...

  5. Learning How to Learn 学习如何学习

    Introduction 这是 UCSD 开设在 Coursera 上的课程 Learning How to Learn 的课程笔记.这门课程主要基于神经科学和认知心理学的一些研究成果讲述高效学习的理 ...

  6. 第七章:网络优化与正则化(Part2)

    文章相关 1 第七章:网络优化与正则化(Part1) 2 第七章:网络优化与正则化(Part2) 7.3 参数初始化 神经网络的参数学习是一个非凸优化问题.当使用梯度下降法来进行优化网络参数时,参数初 ...

  7. 【PHP数据结构】线性查找与二分查找

    欢迎来到查找的世界,在学习完各种数据结构之后,总算走到了这一步,不知道大家有什么感想呢?反正我是边学边忘,现在让我去说说图的那几个算法还是在蒙圈的状态中.不过学习嘛,就是一步一步的来,暂时搞不懂的东西 ...

  8. Shell系列(19)- 正则表达式

    正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep,awk,sed等命令可以支持正则表达式. 通配符用来匹配符号条件的文件名,通配符是完全匹配.ls,find,c ...

  9. whistle抓包-数据包分析

    额,这篇忘了是来自哪位作者的了. whistle:1.14.6 这里以抓取浏览器数据包为例,分析抓取的数据. Method:Connect,对应Host:Tunnel to意思是因为网络环境受限,客户 ...

  10. sqlalchemy 查询结果转json个人解决方案

    参考了网上很多资料,自己搞了一个适合的 在model 内增加一个函数: class User(db.Model): __tablename__ = 'user' userid = db.Column( ...