软件工程结对作业博客
Github项目原地址 (https://github.com/BillDior/BUAA_SE_01)
Github项目现地址 (https://github.com/kenyin123/WordChains)
作业介绍
项目 | 内容 |
---|---|
作业所处课程 | 班级博客 |
作业要求介绍 | 作业要求 |
我在这个课程的目标 | 初步了解结对编程的规范,增加协作编程经验 |
这个作业在哪个具体方面帮助我实现目标 | 加深了对于C++的了解,学习了图论算法等 |
psp表格
Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|
计划 | 60 | |
· 估计这个任务需要多少时间 | 60 | |
开发 | 2910 | |
· 需求分析 (包括学习新技术) | 600 | |
· 生成设计文档 | 100 | |
· 设计复审 (和同事审核设计文档) | 30 | |
· 代码规范 (为目前的开发制定合适的规范) | 20 | |
· 具体设计 | 240 | |
· 具体编码 | 1500 | |
· 代码复审 | 120 | |
· 测试(自我测试,修改代码,提交修改) | 300 | |
报告 | 150 | |
· 测试报告 | 60 | |
· 计算工作量 | 30 | |
· 事后总结, 并提出过程改进计划 | 60 | |
合计 | 3120 |
接口设计
Information Hiding:设计了private参数
Interface Design:接口封装得还可以。
Loose Coupling:没有实现
计算模块接口的设计与实现过程
UML图
计算模块接口部分的性能改进
第一张图是30个单词左右的时候。第二张图是增加到了36个。测试数据内有很多环,增加了六个就极大地影响了整体时间。图内搜索最长链的算法还可以进一步优化。
Design by Contract
契约式设计,优点是可以保证程序的正确性,缺点是过于繁琐。我并未使用这种编程思想。
计算模块部分单元测试展示
我学习了单元测试的知识,并尝试写了一些测试数据。
测试覆盖率的检测暂未实现。
计算模块部分异常处理说明
这里我处理了当没有r参数时发现环的异常。
这里我处理了文件名缺失和参数逻辑错误。
命令行模块的详细设计过程
读取命令行参数,先判断参数是否有逻辑或者格式错误。如果有错误给出错误信息。
命令行模块与计算模块的对接
使用了一个github上的工具,cxxopts
将得到的参数判断后传给wlOption
描述结对的过程
在结对后我们没能有效地沟通。首先是我对题目感到畏惧觉得自己没有能力完成,然后队友可能事情比较忙,也不是很主动。后来我因为个人原因没能在规定时间内继续完成作业。后续是我单独完成的作业。
结对编程的优缺点
优点:
1、自己不会的地方可以请教队友
2、两个人沟通顺利的情况下,比多人团队轻松
3、分配任务、交流进度方便及时
缺点:
当两个人沟通不顺利、闹矛盾的时候,相比团队编程,会更加消极,难以处理问题。多人团队的队员之间矛盾相对来说会小很多。
我的优点:
1、性格温和
2、愿意出力
我的缺点:
1、不够自律,喜欢拖延
2、编程能力弱
3、沟通能力差
我的结对对象优点:
1、编程能力好
2、耐心
我的结对对象缺点:
1、不够努力
2、不主动交流
psp表格
Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|
计划 | 60 | 60 |
· 估计这个任务需要多少时间 | 60 | 60 |
开发 | 2910 | 2550 |
· 需求分析 (包括学习新技术) | 600 | 360 |
· 生成设计文档 | 100 | 30 |
· 设计复审 (和同事审核设计文档) | 30 | 0 |
· 代码规范 (为目前的开发制定合适的规范) | 20 | 10 |
· 具体设计 | 240 | 300 |
· 具体编码 | 1500 | 1500 |
· 代码复审 | 120 | 60 |
· 测试(自我测试,修改代码,提交修改) | 300 | 300 |
报告 | 150 | 180 |
· 测试报告 | 60 | 120 |
· 计算工作量 | 30 | 30 |
· 事后总结, 并提出过程改进计划 | 60 | 30 |
合计 | 3120 | 2790 |
最后,感谢老师和助教一直以来对我的关心和帮助。也感谢结对编程作业,让我收获很多。