201971010203-曹永兴 实验四 团队作业1:软件研发团队组建
项目 | 内容 |
---|---|
班级博客 | 2019级卓越工程师班 |
作业要求 | 实验四 团队作业1:软件研发团队组建 |
团队名称 | 奋起上进组 |
课程学习目标 | (1)迭代改进实验三; (2)组建软件项目研发团队; |
学习目标实现 | (1)通过复审优秀项目改进自己的项目; (2)组建自己的团队并熟悉团队; |
团队博客链接 | 奋起上进组 |
任务一:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务
一、作业的选择
项目 | 内容 |
---|---|
被评论作业博客 | 201971010235-阮凯 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告 |
被评论作业GitHub地址 | 仓库连接 |
二、克隆项目
三、项目运行与博客评价
1、项目运行过程与结果展示:
程序正常运行后,点击页面中下部的选择文件按钮选择文件后,点击左上角的下拉框选择算法,点 解求解问题,结果显示在右上角的文本框中,并在最下方的日志文本框中输出相应的操作,点击重 量比排序按钮后,在平台的右边显示排序前后的结果,点击画散点图按钮显示相应的散点图。
下图是对数据”beibao5.in“进行贪心算法进行处理的显示图与散点图。
2、项目功能的评价
项目 | 内容 |
---|---|
任务3要求的功能软件解决了吗? | 已解决 |
优缺点总结 | |
优点 | (1)数据量:对任何大小与数量的数据进行处理。 (2)界面:界面布局整洁。 (3)功能:较好的实现了所有的功能。 |
缺点 | (1)数据量:面对较多和较大的数据较为耗时。 (2)界面:界面颜色的搭配 (3)功能:拓展功能没有体现出来。 |
改进意见 | |
对该软件产品功能的改进意见 | 可以对求解重量比的数据进行处理后输出。 |
3、概括实验三任务3所研发软件产品的典型用户群特征与需求
项目 | 内容 |
---|---|
用户群特征 | |
学历 | 本科 |
年龄 | 19+ |
专业 | 计算机科学与技术 |
爱好 | 算法设计与计算机编程 |
收入 | 部分人员无收入 |
需求分析 | |
表面需求 | 基于GUI界面的{0-1}背包问题的解决 |
潜在需求 | 对GUI界面与解决{0-1}背包算法的熟悉与运用 |
四、代码复审表
项目 | 内容 |
---|---|
概要部分 | |
代码符合需求和规格说明么? | 是 |
代码设计是否考虑周全? | 是 |
代码可读性如何? | 较好 |
代码容易维护么? | 易维护 |
代码的每一行都执行并检查过了吗? | 是 |
设计规范部分 | |
设计是否遵从已知的设计模式或项目中常用的模式? | 是 |
有没有硬编码或字符串/数字等存在? | 有 |
代码有没有依赖于某一平台,是否会影响将来的移植? | 不会影响 |
开发者新写的代码是否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以通过调用而不用全部重新实现? | 是 |
有没有无用的代码可以清除? | 没有 |
代码规范部分 | |
修改的部分符合代码标准和风格么? | 符合 |
具体代码部分 | |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 没有错误 |
参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是从0开始计数还是从1开始计数 | 无错误;字符的长度;从0开始 |
边界条件是如何处理的?switch语句和default分支是如何处理的?循环有没有可能出现死循环? | 可能 |
有没有使用断言来保证我们认为不变的条件真的得到满足? | 否 |
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露?有没有优化的空间? | 有对应的申请、释放语句;不存在;有 |
数据结构中有没有用不到的元素? | 无 |
效能 | |
代码的效能如何?最坏的情况是怎么样的? | 效果就比较好,动态规划法对于较大的数据运行会出现关闭程序的可能。 |
代码中,特别是循环中是否有明显可优化的部分? | 有 |
对于系统和网络的调用是否会超时?如何处理? | 否 |
可读性 | |
代码可读性如何?有没有足够的注释? | 注释较少,代码清晰,可读性较好 |
可测试性 | |
代码是否需要更新或创建新的单元测试? | 是 |
五、博客评价
博文结构:
通过阅读可以感受到文章语言流程,博主在撰写博文的过程中思路连贯,文章整体结构严谨,条目清晰。但文章中表哥的运用不够的美观,段落的缩进使文章的排版显得紊乱。
博文内容:
博文中明确的体现了实验要求的实现,博文中使用了公式与文字的结合解释算法的原理,使读者有了更好的理解。博文对实验平台所使用的核心技术做了详细的解释说明,使用图片的方式将实验结果清晰地展现了出来。
博文结构与PSP中“任务内容”列的关系:
博文结构与PSP中“任务内容”列基本对应,反映出了博主在进行该项目过程中主要面临的困难在哪一部分,对应其所耗费的时间较长。
PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究:
总体来看,可以清晰地看出,博主在进行项目的过程中计划的是远小于实际使用的时间。
通过分析不难看出,博主主要在开放阶段计划时间与完成时间差异较大,其中具体编码与测试阶段的差异占比最大。
主要原因:在开发过程中,需要学习新的知识以及对编程语言不够熟悉。
进度计划方面可以提高的建议:
可以将具体编码过程中可能遇见的问题在最初讨论的过程中多花费一点时间,从而提高项目的进度与效率。
六、项目总体评价
通过对项目进行复审以及对博主博客的阅读可以看出,博主不论是项目的实现还是博文的撰写都很好的完成。在项目实现方面,完成了实验三所要求的功能,但缺乏属于自己的拓展功能;博客撰写方面,全文语言流畅,博主思路清晰,但在博文的美观上还需要提升。综合上述评价,给其 d) 好,不错的评价
七、迭代改进小组实验三的任务三
对小组实验三的实验平台进行了美化,使GUI界面的色彩没有那么单一,并增加了平台说明标签。下图为对仓库更新情况。
任务二:团队组建
一、阅读《现代软件工程—构建之法》第5章内容
1、团队的特点:
团队有一致的集体目标,团队要一起完成这个目标。
团队成员有各自的分工,互相依赖合作,共同完成任务。
2、软件团队的模式:
- 主治医师模式 (Cheif Programmer Team, Surgical Team)
- 明星模式 (Super-star Model)
- 社区模式 (Community Model)
- 业余剧团模式 (Amateur Theater Team)
- 秘密团队 (Skunk Work Team)
- 特工团队 (SWAT)
- 交响乐团模式 (Orchestra)
- 爵士乐模式 (Jazz Band)
- 功能团队模式 (Feature Team)
- 官僚模式 (Bureaucratic Model)
3、开发流程:
(1) 软件开发流程概念:
我们在开发、运营、维护的过程中有很多的技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫做“软件开发流程”。
(2) 软件开发流程的目的:
为了提高软件开发、运营和维护的效率,以及提高用户的满意度、软件的可靠性和可维护性。
(3) Rational Unified Process统一流程(RUP):
- 业务建模
- 需求
- 分析和设计
- 实现
- 测试
- 部署
- 配置和变更管理
- 项目管理
- 环境
- 初始阶段
- 细节阶段
- 构造阶段
- 交付阶段
(4) Team Software Process (TSP) 的原则:
二、团队组建
1、队名:
奋起上进组
2、成员组成:
成员学号 | 成员姓名 | 个人博客地址 | 备注 |
---|---|---|---|
201971010203 | 曹永兴 | 冷眸逃夭 | PM |
201971010216 | 李斌 | 是小朋友啊 | |
201971010237 | 尚洁 | FIRE卡卡 | |
201975060130 | 张蓉星 | sunflowerXM |
3、成员风采:
成员姓名 | 风格 | 擅长技术 | 编程习惯 | 软工角色 | 宣言 |
---|---|---|---|---|---|
曹永兴 | 积极主动,及时反思,稳抓重点 | C、python | 对图形界面化与小游戏开发情有独钟 | 开发与测试 | 态度决定一切,习惯成就而未来 |
李斌 | 积极思考,喜欢动手 | C、java | 对算法编写和见面研发有了解 | 检测与编写 | 坚持不懈,精益求精 |
尚洁 | 喜欢动手,善于自己解决问题 | C,java | 喜欢前端,人工智能方面 | 开发与测试 | 不积跬步无以至千里 |
张蓉星 | 主动自学,善于沟通,认真反思 | python数据分析与可视化 | 对数据进行预处理以及清洗 | 文档与资料收集 | 对的,坚持;错的,改进! |
4、阅读《现代软件工程—构建之法》第7章,理解MSF的9点基本原则 :
Basic principle | 基本原则 | 解释 |
---|---|---|
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强调产品团队与顾客的交流与合作,并不是产品团队拿到合同之后,就闭门造车,直到产品完成才告诉用户,给他们一个惊喜。 |
5、团队企业微信图:
6、GitHub团队:
7、团队描述:
团队特点;各成员热情真诚,利于交流学习
核心竞争力:自学能力较强
任务三:完成《实验四 团队作业1:软件研发团队组建》博文作业
一、PSP项目计划表
PSP | 任务内容 | 计划完成需要时间(min) | 实际完成需要时间(min) |
---|---|---|---|
Planning | 计划 | 10 | 9 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 240 | 318 |
Recheck | 复审 | 100 | 135 |
Test | 测试(测试他人项目) | 30 | 35 |
Evaluate | 评价(自我反思与对测试项目评价) | 30 | 40 |
Amend | 改进(迭代改进项目) | 40 | 60 |
Team building | 团队组建 | 60 | 84 |
Researchers determined | 确定成员 | 10 | 9 |
build platform | 讨论平台搭建(建立企业微信群、申请团队博客、建立GitHub小组) | 20 | 35 |
Platform construction | 信息完善(成员信息及其他有用信息) | 30 | 40 |
Report | 报告 | 70 | 90 |
Personal blog | 个人博客 | 40 | 80 |
Team blog | 团队博客 | 30 | 10 |
二、实验总结:
通过此次实验,与他人项目的对比感受到了与他们之间的差距,学习到了一些新的东西,扩充了自己的知识。同时通过组建团队,使团队成员之间的配合得到了磨合,为以后项目中的配合打好了坚实的基础。