项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/2018CST/ |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/14660499.html |
团队名称 | 永远的Ace |
团队的课程学习目标 | 1.掌握如何更好地组建团队,合作发挥每个人的优势; 2.通过沟通合作组建团队; 3.进行代码审查,取长补短。 |
这个作业在哪些方面帮助团队实现学习目标 | 1.熟练Github的基本操作; 2.通过理论学习,组建团队进行沟通合作,最大化地发挥个人优势,更好地推动团队协作; 3.建立企业微信群进行沟通,并开通团队博客。 |
团队博客链接 | 链接 |
一、实验目的与要求
(1)实验三作业互评。
(2)组建软件项目研发团队。
二、实验内容和步骤
-
任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务,具体要求如下:
1. 阅读博文,进行评论。
评价博客链接 评论作业的Github项目仓库链接 链接 仓库链接1 仓库链接2 2. 克隆任务3项目源码到本地机器,阅读并运行代码,找出项目代码的5个以上bug,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录。
- clone项目源码:在clone的过程中经常出现Github等待超时的问题。
(注:仓库链接2是私有的,通过与同学沟通后成功运行。)
- 运行代码
- 平台功能
- 代码核查表
- 平台功能
- clone项目源码:在clone的过程中经常出现Github等待超时的问题。
1. 概要部分 | 代码能符合需求和规格说明么? 代码设计是否有周全的考虑? 代码可读性如何? 代码容易维护么? 代码的每一行都执行并检查过了吗 |
符合需求 基本周全,但有一些细节暂未考虑到 可读性好 比较容易维护 已每行都进行执行检查 |
---|---|---|
2.设计规范部分 | 设计是否遵从已知的设计模式或项目中常用的模式? 有没有硬编码或字符串/数字等存在? 代码有没有依赖于某一平台,是否会影响将来的移植? 开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? 有没有无用的代码可以清除? |
遵循 没有 代不依赖某一单一平台 有类似功能可以直接调用 没有 |
3.代码规范部分 | 修改的部分符合代码标准和风格么? | 符合 |
4.具体代码部分 | 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? 参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数? 边界条件是如何处理的?Switch语句的Default是如何处理的?循环有没有可能出现死循环? 有没有使用断言(Assert)来保证我们认为不变的条件真的满足? 对资源的利用,是在哪里申请,在哪里释放的?有没有可能导致资源泄露?有没有可能优化? 数据结构中是否有无用的元素? |
处理了错误 参数传递无错误 未发现死循环 没有 没有资源泄露 没有 |
5.效能 | 代码的效能(Performance)如何?最坏的情况是怎样的? 代码中,特别是循环中是否有明显可优化的部分? 对于系统和网络调用是否会超时?如何处理? |
效能良好,达到了具体任务的要求 暂无 不会超时 |
6.可读性 | 代码可读性如何? 有没有足够的注释? |
可读性好 注释足够 |
7.可测试性 | 代码是否需要更新或创建新的单元测试? | 暂时不需要 |
- 在阅读代码后,我觉得该小组代码非常规范。但是个人觉得有关软件的运行方法阐述较少,如果把软件如何运行的文档写的更详细一些会更好。
bug:1.在遗传算法中没有保存日志文件;
2.绘制散点图时,若数据区间过大,但坐标较小时,数据的位置可能会超出坐标轴的范围;
3.测试的代码类型较单一;
4.暂未完成遗传算法解决D{0-1}背包问题。
3. 阅读《现代软件工程—构建之法》第12章内容:
-
《现代软件工程—构建之法》第12章是用户体验。这是在我的学习中首次关注到软件的使用者的感受,通过学习,我的收获非常大。总结核心内容如下:
(1)应该考虑的问题:目标用户是谁?第一次体验时提高用户的满意度。
(2)站在用户的角度考虑:“同理心”;
(3)用户体验设计:分阶段设计和讨论;
(4)评价标准:尽快提供可感触的反馈;系统界面符合现实惯例;用户有控制权;一致性和标准化;适合各种类型的用户;帮助用户识别诊断并修复作用;有必要的提示或帮助文档 -
任务
A. 体验任务3实现软件功能,使用软件的照片;
编辑器使用Idea。- 第一组排序
- 散点图
- 测试代码
- 遗传算法
B. 总结任务3要求的功能软件,软件在数据量/界面/功能上的优缺点并对该软件产品功能提出改进意见。
功能 界面 意见 基本实现,但遗传算法只实现了0-1背包问题 页面也比较美观,操作简单方便 散点图可以绘制的更美观一些 该组任务3要求的功能基本实现,但遗传算法只实现了0-1背包问题。除此之外,软件功能较全面,页面也比较美观,操作简单方便,可以绘制散点图、排序。通过运行代码后发现,绘制散点图时,有时候数据会过于集中,我觉得散点图可以绘制的更美观一些。
C. 概括任务3所研发软件产品的典型用户群特征。
- 第一组排序
职业 | 学历 | 年龄 | 专业 | 收入 | 表面需求 | 潜在需求 |
---|---|---|---|---|---|---|
编程能力的学生或编程业余爱好者 | 本科或研究生 | 20+ | 多为计算机 | 5000+ | 了解D{0-1}背包问题,测试代码,动态规划算法,回溯算法,遗传算法 | 拓宽思维,学习写更好性能的代码 |
4. 评价作业的结论:
(d)非常推荐。该小组无论是在完成度还是在代码规范上都具有很好的学习价值,故推荐。
5. 结合1—3的评论体会,迭代改进本小组实验三任务3。
-
本小组任务3的Github项目仓库链接、项目迭代改进要点说明。
- 本小组在借鉴其他团队的优秀作业后,对项目进行修改功能如下:
(1)美化页面,可以自适应; (2)显示已开发的项目。
- 小组Github项目仓库链接:链接
- 本小组在借鉴其他团队的优秀作业后,对项目进行修改功能如下:
-
任务2:团队组建
1. 在实验三结对基础上,结对小组两两自由组合,组建软件项目研发团队;
2. 申请开通团队博客,点击以下链接提交团队信息,将团队博客加入到班级博客;
- 开通团队博客:已开通,详见团队博客;
- 提交团队信息:已提交,详见团队博客;
- 加入班级:已加入,详见团队博客。
3. 阅读《现代软件工程—构建之法》第5章内容。
- 《现代软件工程—构建之法》第5章是团队和流程。总结核心内容如下:
(1)软件团队模式:主治医师模式,明星模式,社区模式,业余剧团模式,特工模式,秘密模式,交响乐模式,爵士乐,功能团队,官僚模式。
(2)开发模式:改了再改,瀑布,RUP,老板驱动,渐进交付。
(3)RUP:初始阶段,细化阶段,构造阶段,交付阶段。- 完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间;
任务 花费的时间(h) 任务1 4 任务2 1 任务3 1 总结:通过本次实验,我们成功组建了小组,并对优秀的作业进行了代码审查。使我感受最深的是核查其他项目组的代码。切身体验了“一千个读者就有一千个哈姆雷特”,并且理解他人的代码思路困难较多,但这也拓宽了我的思维,发现自己的不足。在后续的学习中,要不断改进。
附录:研读任务2中的第5,7,17章内容
第5章:团队和流程,内容详解
(1)软件团队模式:主治医师模式,明星模式,社区模式,业余剧团模式,特工模式,秘密模式,交响乐模式,爵士乐,功能团队,官僚模式。
(2)开发模式:改了再改,瀑布,RUP,老板驱动,渐进交付。
开发模式 | 详情 |
---|---|
写了再改 | 一窝蜂,难以符合实际需求 |
瀑布 | 单项不可逆,后修改 |
RUP | 将各个阶段整合在一个框架 |
老板驱动 | 由行政领导主导,或老板主导 |
渐进交付 | 不断演进循环 |
(3)RUP:初始阶段,细化阶段,构造阶段,交付阶段。
第7章:实战中的软件工程
MSF:微软解决方案框架
MSF的9条原则:
MSF团队模型:
MSF过程模型:
第17章:人、绩效与职业道德