201971010117-刘春丽 实验四 团队作业1:软件研发团队组建
201971010117-刘春丽 实验四 团队作业1:软件研发团队组建
项目 | 内容 |
---|---|
课程班级博客链接 | 班级博客 |
这个作业要求链接 | 实验四 |
团队名称 | 繁星 |
我的课程学习目标 | (1)继续熟练github的相关操作 (2)根据文档和团队交流确立开发流程 (3)团队相互学习交流提升个人技术水平 (4)通过阅读他组的软件项目,总结和反思自己,总而得以提高自己的水平 |
这个作业在哪些方面帮助我实现学习目标 | (1)在程序设计方面提高了自己的编程能力 (2)让我了解了团队协作、分工的重要性; (3)组队编程、和同伴如何分工以及与同伴如何更好的交流。 |
团队博客链接 | 繁星队博客 |
任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务
项目 | 内容 |
---|---|
被评论作业的的博客链接 | 201971010117-陈玉英 |
被评论作业的Github项目仓库 | 仓库地址 |
1. 对博文作业进行阅读,并结合评分要求进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,给出这个结对小组在进度计划方面可以提高的具体建议。将以上评论内容发布到博客评论区。
2. 克隆任务3项目源码到本地机器,阅读并运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录。
- 克隆任务3项目源码到本地机器,阅读并运行代码
- 代码核查表
概要部分 | |
代码符合需求和规格说明么? | 代码基本符合需求和规格说明 |
代码设计是否考虑周全? | 代码设计有周全的考虑 |
代码可读性如何? | 代码可读性还不错 |
代码容易维护么? | 代码容易维护 |
代码的每一行都执行并检查过了吗? | 代码的每一行都执行并检查过了 |
设计规范部分 | |
设计是否遵从已知的设计模式或项目中常用的模式? | 代码遵从已知的设计模式或项目中常用的模式 |
代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)? | 代码没有依赖于某一平台,不会影响将来的移植 |
开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现? 在本项目中是否存在类似的功能可以调用? |
代码基本能用已有的Library/SDK/Framework中的功能实现 |
有没有无用的代码可以清除? | 没有无用的代码可以清除 |
修改的部分代码符合标准和风格吗? | 符合标准和风格 |
具体代码部分 | |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 对所出现的错误进行了修改,对于调用的外部函数检查了返回值并且处理了异常 |
参数传递有无错误,字符串的长度是字节还是字符的长度? 是以0开始计数还是以1开始计数? |
参数传递无误,字符串的长度是字节的长度,是以0开始计数的 |
边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | switch语句的default分支返回false,没有出现死循环。 |
有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足? | 无。 |
对资源的利用是在哪里申请的, 在哪里释放的?有没有可能导致资源泄露?有没有优化的空间? | 都在内存中完成,很有可能泄露 |
数据结构中有没有用不到的元素? | 无,整体比较简洁 |
效能 | |
代码的效能(Performance)如何?最坏的情况如何? | 达到了具体任务的要求。 |
代码中,特别是循环中是否有明显可优化的部分? | 有 |
对于系统和网络调用是否会超时?如何处理? | 未出现超时现象 |
可读性 | |
代码可读性如何?有没有足够的注释? | 可读性较强,有足够的注释 |
可测试性 | |
代码是否需要更新或创建新的单元测试? | 可以接着开发,增加更多的功能 |
3. 阅读《现代软件工程——构建之法》第12章内容,完成分析任务。
-
A.体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片
-
软件的使用过程:运行软件后,进入首页面,首界面有两个功能,一个是算法选择,里面包含四种算法的选择,另一个是其他,里面包含绘制散点图和排序,这两个功能选择是分开的。当选择算法功能,将对读入的数据进行计算,然后将最优解和时间保存在结果部分;如果选择其他里面的绘制散点图,将得到一张以价值重量为横轴、价值为纵轴的数据散点图。
-
首页面:
-
功能页面:
(1)以beibao0.in数据作为测试,采用动态规划算法,运行结果如下:
(2)以价值重量为横轴、价值为纵轴的数据散点图如下:
-
-
B.总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见。
- 软件产品基本解决了功能需求,但是无法承受过大的数据量。
- 优点:每个功能都很详细的标明,用户需要什么功能可以选择。
- 缺点:同一类功能零散的放在页面上,导致页面不整洁,不美观,并且页面之间的跳转并不流畅。
- 改进方法:可以为按钮增添监听事件onclick,以实现多个页面之间的跳转。
- C.从学历、年龄、专业、爱好、收入等方面概括实验三任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求都是什么?
(1)职业:学习计算机专业的学生和编程人员或者计算机相关方面的老师
(2)学历:本科以上
(3)年龄:18岁以上
(4)专业:计算机相关专业或者与编程有关的其它学科
(5)爱好:对计算机深入研究或者编程爱好者
(6)收入:月薪8000+
(7)表面需求:熟悉算法,解决{0-1}背包问题
(8)潜在需求:融合知识,提高思维和编程能力。
任务2:团队组建
1. 在实验三结对基础上,结对小组两两自由组合,组建软件项目研发团队
成员学号 | 成员姓名 | 个人博客 |
---|---|---|
201971010106 | 陈玉英 | 陈玉英 |
201971010125 | 李涛 | 李涛 |
201971010117 | 刘春丽 | 刘春丽 |
2. 申请开通团队博客,点击链接(https://www.chaojibiaoge.com/U/url/7lxwx4sx)提交团队信息,将团队博客加入到班级博客
- 已完成
3. 阅读《现代软件工程—构建之法》第5章内容
- 团队的特点:
(1).团队有一致的集体目标,团队要一起完成这个目标。一个团队的成员不一定要同时工作。
(2).团队成员有各自的分工,互相依赖合作,共同完成任务。 - 软件团队的模式:
(1).主治医师模式:首席程序员“主刀”(负责处理主要模块的设计和编码),其他成员“为主刀医师服务”(从各种角度支持他的工作)。
(2).明星模式:主治医生模式运用到极致,可以蜕化为明星模式。
(3).社区模式:社区很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。
(4).业余剧团模式:个人在团队中听从一个中央指挥的指导和安排。
(5).秘密团队:软件团队进行一些秘密的软件项目。
(6).特工团队:软件行业的一些团队由一些有特殊技能的专业人士组成,负责解决一些棘手而紧迫性的问题。
(7).交响乐团模式:家伙多,门类齐全;各司其职,各自有专门场地,演奏期间没有聊天、走动等现象;演奏都靠谱,同时看指挥的;演奏的都是练习过多次的曲目,重在执行。
(8).爵士乐模式:不靠谱;没有现场指挥;人数较少。
(9).功能团队模式:具备不同能力的同事们平等协作,共同完成一个功能。
(10).官僚模式:几个人报告给一个小头目,几个小头目报告给中头目,依次而上。 - 开发流程
- 写了再改模式适用于以下任务:
(1).只用一次的程序
(2).看过了就扔的原型
(3).一些不实用的演示程序 - 瀑布模型适用于以下情况:
(1)如果产品的定义非常稳定,但是产品的正确性非常重要,需要每一步的验证
(2)产品模块之间的接口、输入和输出能很好地用形式化的方法定义和验证
(3)使用的技术非常成熟,团队成员都很熟悉这些技术
(4)负责各个步骤的子团队分属不同的机构,或在不同的地理位置,不可能做到频繁的交流
- 写了再改模式适用于以下任务:
任务3:完成《实验四 团队作业1:软件研发团队组建》博文作业
1.团队博客地址
2.实际花费时间:
任务内容 | 计划完成时间(min) | 实际完成时间(min) |
---|---|---|
任务 | 60 | 60 |
任务分配 | 20 | 15 |
团队创建 | 30 | 35 |
团队信息了解 | 60 | 60 |
阅读构建之法 | 120 | 100 |
任务一 | 80 | 90 |
任务二 | 60 | 80 |
任务三 | 60 | 50 |
个人总结
- 这次作业和之前做的作业都不同,让我们选择实验三的结对项目作业进行评价、学习,感受到了不一样的体验。首先,在那么多的优秀作业中选择一个自己想要分析的,这就要考虑自己的兴趣和自己的专业技能,选择很高级的项目的话,有的知识完全没有了解过,分析起来也不上手。在这次实验中,通过阅读别人的代码和查看别的团队的合作,更加理解了团队之间的合作的重要性,让我在以后的实践中获得了更多的经验。