201971010111-何晨泽 实验四 团队作业1:软件研发团队组建
| 项目 | 内容 |
|---|---|
| 课程班级博客链接 | 2019级卓越工程师班 |
| 这个作业要求链接 | 实验四 团队作业1:软件研发团队组建 |
| 团队名称 | 待宰的高羊 |
| 我的课程学习目标 | (1)迭代实验三项目 (2)复审优秀项目,取长补短 (3)组建软件项目研发团队 |
| 这个作业在哪些方面帮助我实现学习目标 | (1)通过测试他人优秀项目来迭代自己的项目 (2)进行团队建设,明确团队分工 |
| 团队博客链接 | 待宰的高羊 |
任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成任务
| 项目 | 内容 |
|---|---|
| 被评论作业的博客链接 | |
| 被评论作业的Github项目仓库链接 | soft3 |
- 博客评论
- 博文结构
整体结构较为简练,条目清晰,但在排版上存在一定的欠缺,背景与前景的结合导致内容阅读存在一定的困难。- 博文内容
总体上完成了要求的内容,以各任务为中心构成行文路线。- 博文结构与PSP中“任务内容”列的关系
博文结构与“内容任务”列并非完全对应。博文结构以各任务串联起内容,本博文PSP中“内容任任务”列则是以较为通用的概括条目。- PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究
可以看到实际所需相比计划时间更长,其中需求分析、学习新技术、具体编码的实际完成时间与计划差异较大。主要原因是实现项目中涉及到的新技术学习时间超过预期、对部分编码熟悉程度不足等。- 进度计划方面可以提高的具体建议
对于自己不熟悉的项目可以相应留出更长的时间,也可在一些分析的部分提高效率。
- 克隆项目,阅读并测试
- 克隆项目至本地文件夹
- 代码核查表
- 克隆项目至本地文件夹
| 项目 | 内容 |
|---|---|
| 概要部分 | |
| 代码符合需求和规格说明么? | 是 |
| 代码设计是否考虑周全? | 是 |
| 代码可读性如何? | 较好 |
| 代码容易维护么? | 易维护 |
| 代码的每一行都执行并检查过了吗? | 是 |
| 设计规范部分 | |
| 设计是否遵从已知的设计模式或项目中常用的模式? | 是 |
| 有没有硬编码或字符串/数字等存在? | 有 |
| 代码有没有依赖于某一平台,是否会影响将来的移植? | 对移植影响较小 |
| 开发者新写的代码是否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以通过调用而不用全部重新实现? | 是,代码中使用了Matplotlib库 |
| 有没有无用的代码可以清除? | 有 |
| 代码规范部分 | |
| 修改的部分符合代码标准和风格么? | 符合 |
| 具体代码部分 | |
| 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 已处理 |
| 参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是从0开始计数还是从1开始计数 | 无错误;字符的长度;从0开始 |
| 边界条件是如何处理的?switch语句和default分支是如何处理的?循环有没有可能出现死循环? | 前提分析推导边界条件;可能 |
| 有没有使用断言来保证我们认为不变的条件真的得到满足? | 否 |
| 对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露?有没有优化的空间? | 有对应的申请、释放语句;不存在;有 |
| 数据结构中有没有用不到的元素? | 有 |
| 效能 | |
| 代码的效能如何?最坏的情况是怎么样的? | 效能一般;最坏情况下回溯算法将在极长的一段时间无法给出结果 |
| 代码中,特别是循环中是否有明显可优化的部分? | 有,如动态规划可优化为一维 |
| 对于系统和网络的调用是否会超时?如何处理? | 否 |
| 可读性 | |
| 代码可读性如何?有没有足够的注释? | 没有足够的注释,但代码较为清晰,故可读性较好 |
| 可测试性 | |
| 代码是否需要更新或创建新的单元测试? | 是 |
-
阅读《现代软件工程—构建之法》第12章内容,完成分析任务
- A. 体验软件功能,简要描述软件的使用过程,上传使用软件的照片
运行软件后,首先需要点击“请选择文件”按钮选择文件,随后选择使用的算法,点击求解问题,程序将在“结果”部分显示最优解、时间以及对应的日志记录。
对数据“beibao3.in”采用遗传算法求解,并将其排序,随后绘制散点图的程序页面如下图所示。
绘制出的散点图如下图所示。
- B. 总结要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
项目 内容 要求的功能解决了吗? 已解决 优点 (1)数据量:可以处理较大范围的数据
(2)界面:简洁明了
(3)功能:实现的较为全面缺点 (1)数据量:面对较大范围的数据时处理速度不佳
(2)界面:界面相对较为朴素,不够美观
(3)功能:没有自己的扩展功能实现- C. 从学历、年龄、专业、爱好、收入等方面概括软件产品的典型用户群特征,他们表面需求,潜在需求都是什么?
学历 年龄 专业 爱好 收入 表面需求 潜在需求 学士/硕士 18+ 以计算机类为主 编程 无收入或较少收入 利用软件解决0-1背包问题 掌握各算法,提高编程能力 - A. 体验软件功能,简要描述软件的使用过程,上传使用软件的照片
-
结合上述工作,给评价作业选择一个结论: a) 非常不推荐 b) 不推荐 c) 一般 d) 好,不错 e) 非常推荐
经过上述的测试与分析,该小组在博文的撰写与软件的实现上体现出了较高的完成度,除了有一些小缺点外,其余均有较好的实现。
故给出:d) 好,不错的结论 -
迭代改进本小组实验三的任务3
- 结合上述对其它组项目的测试评估,我们优化了本小组系统散点图绘制的用户界面,使其视觉效果有所提升,如下图所示。
- 同时,更新了首页的开发进度信息,如下图所示。
- 更新后的部分GitHub项目信息
- 新提交的Commits
- 新提交的Release
- 新提交的Commits
- 结合上述对其它组项目的测试评估,我们优化了本小组系统散点图绘制的用户界面,使其视觉效果有所提升,如下图所示。
任务2:团队组建
-
团队名称
待宰的高羊 -
团队成员组成
| 成员学号 | 成员姓名 | 个人博客地址 | 备注 |
|---|---|---|---|
| 201971010111 | 何晨泽 | 博客地址 | PM |
| 201971010110 | 高杨 | 博客地址 | |
| 201971010101 | 阿丽米拉 | 博客地址 | |
| 201971010160 | 谢家俊 | 博客地址 |
- 成员风采
| 成员姓名 | 风格 | 擅长技术 | 编程兴趣 | 希望承担的软工角色 | 宣言 |
|---|---|---|---|---|---|
| 何晨泽 | 求是 | 擅长主流编程语言,算法、前端等 | 对算法、数据挖掘等方面兴趣较高 | PM(开发) | 我要上浙江大三本 |
| 高杨 | 知术欲圆,行旨须直 | C/C++ | 前端、Python | 测试 | 好好学习,天天向上 |
| 阿丽米拉 | 喜欢动手,善于查找 | C | 前端开发 | 文档 | 知识就是力量 |
| 谢家俊 | 积极思考,擅于发现 | Web前端开发 | 喜欢前端开发 | 开发 | 坚持不懈,加油 |
-
阅读《现代软件工程—构建之法》第7章,理解MSF的9点基本原则
- 推动信息共享与沟通(Foster open communications)
所有信息都保留并公开,讨论要包括所有涉及的角色,决定要公开并告知所有人。当然,对牵涉到的技术机密、安全性等信息要采取必要的保护措施。 - 为共同的远景而工作(Work toward a shared vision)
这个目标必须是明确的,没有二义性;这个目标不是当前就能达到,必须是通过努力才能达到的;这个目标不是空泛的,它应该对项目成员每天的工作都有指导作用。 - 充分授权和信任(Empower team members)
平等协作---成员之间、团队之间是平等协作的关系;充分授权给团队和成员。 - 各司其职,对项目共同负责(Establish clear accountability and shared responsibility)
无责任的旁观者和有重大责任的当局者的看法自然是不一样的。对此事负责的角色要自己拿主意。 - 重视商业价值(Focus on delivering business value)
如果你还没有能说清楚你的产品解决了什么问题,为谁解决问题,为什么你的产品会解决这些问题,以及客户怎样付钱让你解决问题,那你就不应该贸然创业。 - 保持敏捷,预期变化(Stay agile,expect change)
软件工程,唯一不变的是变化。所以干脆别幻想客户的需求会在第一-时刻很明确,然后保持不会变。但要注意,我们是预期变化,不是期望变化。 - 投资质量(Invest in quality)
不是质量第一,而是解决用户的问题第一。 - 学习所有的经验(Learn from all experiences)
把经验总结出来;分享经验。是为了:让团队成员从别人的成果和失败的例子中学到东西;帮助新项目重复以往成功的做法;培育团队总结的习惯和“批评与自我批评”的文化。 - 与顾客合作(Partner with internal and external customers)
MSF强调产品团队与顾客的交流与合作,并不是产品团队拿到合同之后,就闭门造车,直到产品完成才告诉用户,给他们一个惊喜。
- 推动信息共享与沟通(Foster open communications)
-
组建团队企业微信群
群成员如下图所示。
- 团队特色描述
- 团队特点:团队成员性格各不相同,但不会互相冲突,能从多角度看待、解决问题。
- 核心竞争力:编程能力较强。
任务3:完成《实验四 团队作业1:软件研发团队组建》博文作业
- 完成各项任务实际花费的时间
| 任务内容 | 实际花费的时间(min) |
|---|---|
| 任务1 | 120 |
| 任务2 | 50 |
| 确定团队成员 | 3 |
| 确定团队各项信息 | 8 |
| 收集成员信息 | 16 |
| 组建群聊、申请团队博客、加入班级博客 | 23 |
| 学习MSF | 30 |
| 任务3 | 30 |
- 完成本次作业的感受和体会
本次作业是我第一次按照规程条目组织团队,虽然此前已有多次担当队长的经历,但感受到这次团队的组建相比此前更有组织性,相信能够进一步提升自己的能力。