[2017BUAA软工助教]结对项目小结

2017BUAA结对项目小结

一、作业链接

http://www.cnblogs.com/jiel/p/7604111.html

二、评分细则

1.注意事项

  • 按时间完成并提交——正常评分
  • 晚交一周以内——0分
  • 晚交一周以上或不交——倒扣本次作业分数
  • 抄袭——倒扣本次作业分数

勿谓言之不预也

2.博客细则

博客共五十分

项目 分值 是否两人共享
在文章开头给出Github项目地址 1'
在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间 0.5'
看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节,
说明你们在结对编程中是如何利用这些方法对接口进行设计的
5'
计算模块接口的设计与实现过程。
设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?
说明你的算法的关键(不必列出源代码),以及独到之处
7'
阅读有关UML的内容:
https://en.wikipedia.org/wiki/Unified_Modeling_Language
画出UML图显示计算模块部分各个实体之间的关系(画一个图即可)
2'
计算模块接口部分的性能改进。
记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2015/2017的性能分析工具自动生成),
并展示你程序中消耗最大的函数
3'
看Design by Contract, Code Contract的内容:
http://en.wikipedia.org/wiki/Design_by_contract
http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx
描述这些做法的优缺点, 说明你是如何把它们融入结对作业中的
5'
计算模块部分单元测试展示。
展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。
并将单元测试得到的测试覆盖率截图,发表在博客中。
要求总体覆盖率到90%以上,否则单元测试部分视作无效
6'
计算模块部分异常处理说明。
在博客中详细介绍每种异常的设计目标。
每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景
5'
界面模块的详细设计过程。
在博客中详细介绍界面模块是如何设计的,并写一些必要的代码说明解释实现过程
5'
界面模块与计算模块的对接。
详细地描述UI模块的设计与两个模块的对接,并在博客中截图实现的功能
4'
描述结对的过程,提供非摆拍的两人在讨论的结对照片 1'
看教科书和其它参考书,网站中关于结对编程的章节,例如:
http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html
说明结对编程的优点和缺点,结对的每一个人的优点和缺点在哪里 (要列出至少三个优点和一个缺点)
5'
在你实现完程序之后,在附录提供的PSP表格记录下你在程序的各个模块上实际花费的时间 0.5'

3.程序细则

源代码管理评分(5')

三者都有给五分,缺一项扣两分,某一项完成不好扣一分

  1. 源代码管理中的commit注释信息
  2. 增量修改的内容,是否有运行说明,
  3. 每个阶段是否打上了标签

命令行参数的正确性测试(20')

参数 具体测试
-c -c 1
-c 1000
-c 100000
-s -s 1.txt
-s 1000.txt
-s 100000.txt
-n -n参数不单独使用
搭配-m -n 100 -m 1
-n 1000 -m 1
-n 10000 -m 1
-n 100 -m 2
-n 1000 -m 2
-n 10000 -m 2
-n 100 -m 3
-n 1000 -m 3
-n 10000 -m 3
搭配-r -n 100 -r 20~40
-n 100 -r 40~50
-n 100 -r 50~55
-n 1000 -r 20~40
-n 1000 -r 40~50
-n 1000 -r 50~55
-n 10000 -r 20~40
-n 10000 -r 40~50
-n 10000 -r 50~55
搭配-u -n 100 -u
-n 1000 -u
-n 10000 -u
搭配-r,-u -n 100 -r 30~40 -u
-n 1000 -r 30~40 -u
-n 10000 -r 30~40 -u

命令行参数的错误测试(20')

将针对上述六个参数进行鲁棒性测试,可能测试的内容包括且不限于:

错误的命令、错误的参数、大小写、错误的参数组合、错误的文件格式等。

要求必须正常结束,崩溃不得分。

错误无任何提示,不得分。

错误种类较多,提示合理,得正分。

以下测试每个0.8分

.\sudoku.exe -c -100
.\sudoku.exe -c abc
.\sudoku.exe -c
.\sudoku.exe abc
.\sudoku.exe -m 2 -n 1 -r 20~30
.\sudoku.exe -m 2 -u -n 1 -r 20~30
.\sudoku.exe -m 2 -n 1 -u
.\sudoku.exe -m 2 -u
.\sudoku.exe -m 2 -n
.\sudoku.exe -m 22 -n 100
.\sudoku.exe -n -1 -r 20~30
.\sudoku.exe -n 1 -r 40~30
.\sudoku.exe -n 1 -r -4~30
.\sudoku.exe -n 1 -r 20~30
.\sudoku.exe -n 1 -r 2 0~30
.\sudoku.exe -n 1 -r 2D~30 -u
.\sudoku.exe -n 1 -r 40~30 -u
.\sudoku.exe -n 1 -r 2.0~30 -u
.\sudoku.exe -n 1 -r 20~-30
.\sudoku.exe -n 1 -r 20~30 -o
.\sudoku.exe -n 1000000000 -r 20~30 -u
.\sudoku.exe -n 1 -u 5~20
.\sudoku.exe -n 10 -r 20~~20
.\sudoku.exe -n 10 -r 20
.\sudoku.exe -n 10

游戏体验

项目 分值
随机生成数独游戏的功能,将会从用户体验角度对随机性进行测试 6'
每盘游戏用户都可以选择 容易/中等/难 三个等级,将会从用户体验角度对不同难度的游戏进行测试 7'
用户不会的时候可以在某个空格上点击‘提示’,程序会提示该空格处需要填什么数字 6'
计时功能,能够记录用户解数独棋盘的耗时,并保持用户的最佳记录 6'

附加题1

在结对项目博客中按照阶段四的博客要求添加相应内容(5')

最终的对接效果(5')

附加题2

在结对项目博客中按照阶段五的博客要求添加相应内容(5')

可玩性(5')

三、博客分数列表

学号 分组 Github 1‘ PSP 1’ IH\ID\LC 5‘ CORE 7‘ UML 2’ 性能改进 3‘ DC/CC 5’ 单元测试 6‘ 异常 5’ UI 5‘ 对接 4’ 照片 1‘ 优缺点 5’ 博客成绩
15061132 1 1 1 4 4 2 3 3 6 4 3 3 1 3 38
15061151 1 1 1 4 4 2 3 3 6 4 3 3 1 3 38
15061188 2 1 1 3 5 2 2 4 6 4 5 4 1 3 41
15271106 2 1 1 3 5 2 2 4 6 4 5 4 1 3 41
15061180 3 1 1 3 7 2 3 4.5 6 5 4 4 1 5 46.5
15231058 3 1 1 3 7 1 3 3 6 6 4 4 1 3 43
14011100 4 1 1 5 7 2 3 5 6 5 5 4 1 4 49
15061199 4 1 1 3 7 2 3 3 6 5 5 4 1 4 45
15061183 5 1 1 5 6 2 3 3 6 5 5 3 1 4 45
15231177 5 1 1 5 6 2 3 5 6 5 3 3 1 4 45
15061075 6 1 1 3 6 2 2 3 6 5 4 4 1 4 42
15061186 6 1 1 5 6 2 2 4 6 5 4 4 1 4 45
14061213 7 1 1 3 4 2 2 3 4 5 4 2 1 4 36
15061101 7 1 1 3 4 2 2 3 4 5 4 2 1 4 36
15061122 8 1 1 3 5 2 3 3 6 5 4 4 1 3 41
15061144 8 1 1 4 5 2 3 4 6 5 4 4 1 4 44
15061077 9 0 0 0 0 0 0 0 0 0 0 0 0 0 -50
15231196 9 1 1 4 7 2 3 3 6 3 5 4 1 3 43
15061080 10 1 1 3.5 3 2 2 2.5 5 3 2 2 1 4 32
15061085 10 1 1 3.5 3 2 2 2.5 5 3 2 2 1 3 31
15061067 11 1 1 3 6 2 2 3 6 3.5 3 3 1 2 36.5
15061069 11 1 1 3 6 2 2 2.5 5 3.5 3 3 1 3 36
15061187 12 1 1 3 7 2 2 3 5 5 5 3 1 3 41
15061189 12 1 1 3.5 7 2 2 3 5 5 5 3 1 4 42.5
15061111 13 1 1 3.5 7 2 3 3 5 5 3 3 1 3 40.5
15061129 13 1 1 5 7 2 3 4 5 5 3 3 1 3 43
15061104 14 1 1 2 5 2 2 2.5 6 4 5 4 1 4 39.5
15061119 14 1 1 5 5 2 2 4 6 4 5 4 1 5 45
15061074 15 1 1 3 5 2 1 3 5 2.5 5 4 1 3 36.5
15061175 15 1 1 3 5 2 1 3 5 2.5 5 1 1 3 33.5

四、程序部分得分列表

以下分组顺序按博客下评论顺序排序。

分组 源代码 “-c” “-s” “-n -r” “-n -u” “-n -u -r” “-n -m” 鲁棒性测试 随机 难度等级 提示 计时 附加题1 附加题2 总分(不计附加) 总分
分值 5 2 2 4 4 4 4 20 6 7 6 6 10 10 70 90
1 5 0 2 2 2 2 2 17.6 6 7 6 4 10 0 55.6 65.6
2 5 2 2 4 2 4 2 19.2 6 7 4 5 0 7 62.2 69.2
3 5 0 2 4 4 4 2.5 20 6 7 5 4.5 10 0 64 74
4 5 2 2 4 0 4 4 20 6 7 6 5 10 10 65 85
5 5 2 2 4 0 4 4 20 6 7 8 8 10 10 70 90
6 5 2 2 0 4 4 4 20 6 7 6 5 10 10 65 85
7 5 2 2 3 0 3 3.5 10.4 6 7 5 5 0 0 51.9 51.9
8 5 2 2 4 4 4 4 20 6 6.5 6 4.5 0 0 68 68
9 4 2 2 3.5 4 4 3.5 20 6 7 6 5 0 0 67 67
10 2 1.5 2 2 2 2 2 13.6 0 0 0 0 0 0 27.1 27.1
11 5 2 2 0.5 4 4 3 18.4 6 6 4.5 5 0 0 60.4 60.4
12 4 2 2 4 4 4 4 19.2 6 6.5 6 6 10 10 67.7 87.7
13 3 2 2 4 0 4 4 20 6 6.5 6 5 10 8 62.5 80.5
14 5 2 2 2.5 4 3 3.5 20 6 7 6 3 10 7 64 81
15 4 2 2 4 2 4 3 19.2 6 5 4 4 0 0 59.2 59.2

五、总分

学号 结对分组 博客成绩 程序得分 附加题得分 总分(不计附加) 总分(计附加)
15061132 1 38 55.6 10 93.6 103.6
15061151 1 38 55.6 10 93.6 103.6
15061188 2 41 62.2 7 103.2 110.2
15271106 2 41 62.2 7 103.2 110.2
15231058 3 43 64 10 107 117
15061180 3 46.5 64 10 110.5 120.5
15061199 4 45 65 20 110 130
14011100 4 49 65 20 114 134
15061183 5 45 70 20 115 135
15231177 5 45 70 20 115 135
15061075 6 42 65 20 107 127
15061186 6 45 65 20 110 130
14061213 7 36 51.9 0 87.9 87.9
15061101 7 36 51.9 0 87.9 87.9
15061122 8 41 68 0 109 109
15061144 8 44 68 0 112 112
15061077 9 -50 67 0 17 17
15231196 9 43 67 0 110 110
15061085 10 31 27.1 0 58.1 58.1
15061080 10 32 27.1 0 59.1 59.1
15061069 11 36 60.4 0 96.4 96.4
15061067 11 36.5 60.4 0 96.9 96.9
15061187 12 41 67.7 20 108.7 128.7
15061189 12 42.5 67.7 20 110.2 130.2
15061111 13 40.5 62.5 18 103 121
15061129 13 43 62.5 18 105.5 123.5
15061104 14 39.5 64 17 103.5 120.5
15061119 14 45 64 17 109 126
15061175 15 33.5 59.2 0 92.7 92.7
15061074 15 36.5 59.2 0 95.7 95.7

六、每组的问题&点评

1组:李金奇+杨艺媛

命令行程序部分

  1. 生成了大量的等价数独
  2. -n 10000 -u花费超过1200秒

游戏体验部分

  1. 对1366*768的屏幕不友好
  2. 数字太小,可想而知对1920的屏幕更不友好
  3. 打开、关闭后记录不会保存
  4. 最高记录没有与难度对应
  5. 右键tip的设置很好,相比其他组减少了点击tip鼠标需要移动的距离

2组:方科栋+刘子渊

命令行程序部分

  1. -n -u-n -m参数都使用了外部的文件储存数独
  2. 错误提示做得很细致,但是-n 10的时候,程序跪了。。

游戏体验部分

  1. 一开始也是提交了一个缺少依赖的exe,不过后来修改了
  2. 能够自定义数独的挖空数,能自定义数独
  3. 虽然是键盘输入但是不能输入中英文字符
  4. 能实时提示用户的错误
  5. 右键能够直接填写正确的数字,但是这个功能没有在程序中得到说明
  6. 完成数独后需要点击完成,才会停止计时

3组:索一奇+王子铭

命令行程序部分

  1. -c生成的几乎全是等价数独
  2. -n -r生成了极少的等价数独
  3. -n -m 2没有生成数独

游戏体验部分

  1. 提供了暂停功能
  2. 填数->暂停->返回之后不能回到原来的数独
  3. 空格内可填写非数字
  4. 关闭游戏后记录不能保存
  5. 填写完数独,程序告知正确后,计时器仍然在计时,但时间已记录
  6. 建议数独面板按宫分块
  7. 填写完数独后,程序告知错误,之后不允许修改,只能重来

4组:赵奕+李奕君

命令行程序部分

  1. 不支持-n -u
  2. -n -r-n -m生成了极少量的等价数独
  3. -help功能,很好

游戏体验部分

  1. 游戏标题字体跟第12组风格有点相似
  2. 点击一个格子会把这个格子对应的行列宫中的数字全部标记
  3. 支持点击按钮与键盘输入
  4. 键盘不能输入中英文字符
  5. UI风格有点不统一,背景为扁平拉丝风格,数独面板却是偏立体的
  6. 给了联系方式
  7. exe有一个小图标

5组:刘畅+王辰昱

命令行程序部分

  1. 不支持-n -u,其他很好

游戏体验部分

总评:细节很精彩

  1. 设计了快捷键
  2. 毫秒级计时
  3. 当填写了错误的数字后点击CHECK会告诉你错在哪里
  4. 当使用了tip之后,填写完毕不会触发排行榜
  5. 使用了tip填写的格子会变为不可修改
  6. track和filter功能
  7. UI整体看来很清新美观
  8. 甚至使用了data base file来保存记录

    但是
  9. check正确时没有反馈
  10. help中关于track操作的提示出现了错误(描述错误)

6组:安万贺+张安澜

命令行程序部分

  1. 不支持-n -r
  2. 错误提示很细致

游戏体验部分

  1. 修改了程序的小图标
  2. 可以暂停,暂停时不能看到数独面板
  3. 可以输入中英文字符
  4. 使用hint填写的数字会变为不能修改
  5. 记录会保存,每个难度分别有各自的记录
  6. UI风格有点不统一
  7. 可执行文件为什么要叫GUITest

7组:杨森+赵晓宇

命令行程序部分

  1. -r时生成了部分空数不在范围内的数独
  2. -n -r时生成了少部分等价数独
  3. -n 10000 -m 3花费约400s
  4. 不支持-n -u

游戏体验部分

  1. difficulty = 1是什么意思?
  2. 左上角的前进后退符号是什么意思?
  3. 提示的数字和自己填写的数字是两个颜色
  4. 可以同时开启多个数独终局
  5. GUI有点粗糙,数独面板的部分比较美观
  6. 缺少数独简介之类的东西
  7. easy的难度相对其他组都大一些

8组:夏欣怡+陈鑫

命令行程序部分

没有问题

游戏体验部分

  1. 一开始也是提交了一个缺少依赖的exe,不过后来修改了
  2. 虽然也是键盘输入的,但是不能输入字母或中文字符,这里很好
  3. 右键tip的设置很好,相比其他组减少了点击tip鼠标需要移动的距离
  4. 一款轻量级数独,有点像扫雷
  5. 简单模式是不是太简单了。。
  6. 程序有小图标

9组:蔡帜+王梓嘉

命令行程序部分

  1. -n -m生成了部分等价数独, -n -r生成了小部分等价数独
  2. -n 10000 -m 3花了2400+秒的时间

游戏体验部分

  1. 游戏对720p电脑不友好
  2. Easy和计时数字被遮住了一部分
  3. 可点击的按钮没有让人知道这就是按钮
  4. 会实时提示错误
  5. 可以保存,填到一半然后退出
  6. 最小化窗口时计时会停止
  7. 整体风格很赞
  8. 程序有小图标

10组:石奇川+刘亚洲

命令行程序部分

  1. 预留了一个文件用于保存题目和解,本次结对要求的所有新功能均从文件中提取
  2. -c 100000中生成了50%等价数独

游戏体验部分

  1. 对接失败

11组:游心+张华杰

命令行程序部分

  1. -n -r 命令几乎全错(大部分数独的挖空数均不在范围内)但是-n -r -u正确的

游戏体验部分

  1. 提供了一个缺少依赖的exe文件
  2. 提示翻译成Remind Me会不会有点不太好?
  3. 数独面板的风格跟13组为什么这么相似

12组:窦鑫泽+李欣泽

命令行程序部分

没有问题

游戏体验部分

  1. 游戏窗口大小对720p屏幕不友好
  2. 待选数字框下的长方形不知道有什么功能
  3. 修改了程序小图标,但是小图标的对比度太低,看不出来是个数独
  4. 字体很赞,但不同页面的字体没有统一
  5. 点击每一个数字可以实时显示其他宫内该数字的情况
  6. "Function is not open yet",期待这个function有一天能open
  7. Check后弹出的反馈窗口排版有些粗糙
  8. 可以更换背景,但是重启不会保存
  9. GUI总体来说较为精致
  10. 游戏标题跟第4组风格有点相似

13组:刘斯盾+解小锐

命令行程序部分

  1. 不支持-n -u

游戏体验部分

  1. 可选的游戏模式共有六种,与其他组相比多出了是否有唯一解的选项
  2. help中“如果有什么意见可以联系我们”,但是没有给出联系的方式
  3. 提示翻译成Remind Me会不会有点不太好?
  4. Record和help没有对齐,且数独面板左边有较多留白
  5. Remind me共有检查错误和提示当前空格两个功能
  6. 填写一个数后,程序能实时高亮其他宫中该数的位置
  7. 暂停时不会显示数独题目,这一点很好
  8. 个人记录的弹窗排版可以更好一些

14组:易子沐+辛德泰

命令行程序部分

  1. 生成了少量的等价数独
  2. -n 100 -r 20~20时程序会崩溃,作业要求中明确规定了[upper] >= [lower]

游戏体验部分

  1. 界面较为精致,较为美观,有统一的风格
  2. 提供了SAVE&LOAD的功能
  3. 对720p屏幕十分不友好,我甚至不能填数字
  4. 填空时会实时标红错误
  5. 填空时,填完一个空后,用户想再填这个空,需要再次点击
  6. Hint能告知用户正确的答案
  7. 找不到解题时间记录,同目录下有一个timerecord.txt,不知道有什么功能

15组:王嘉睿爵+李煦通

命令行程序部分

  1. 程序提前存储了一些高难度数独,需要时直接读取文件输出。
  2. -n -m 3时会读取文件
  3. 在测试-n 10 -u-n 100 -u-n 1000 -u时共生成了580个有重复解的数独。

游戏体验部分

  1. 左上角hint按钮的设置很不错
  2. hintbox造成了给用户可以点击填写的假象,实际上要使用键盘输入
  3. hintbox只缩小了可选数的范围,不能告诉用户应该填什么
  4. 可以输入英文字符或中文字符
  5. 在打开exe的瞬间就自动选择了中等难度并且开始计时
  6. 没有help功能
  7. 使用txt文件保存rank,很容易被篡改
  8. 排行榜easy和hard的部分会覆盖部分边框

七、小结

  1. 十分抱歉结对项目小结跳票了这么久,有任何问题请在下方留言:)
  2. 这次大家的提交记录都规范了很多:D,请继续努力
  3. 最后完成的exe有很多GUI的依赖,请自行在文件中打包好所有依赖。难道用户使用你们提供的软件还需要自行下载安装配置Qt?XP
  4. 一款游戏,比如英雄联盟,比如扫雷,能够适配不同的屏幕。这次作业有几组的数独程序,对720P的屏幕不很友好,游戏界面或多或少都超出了屏幕范围
  5. 这次作业有两组同学的作业令人眼前一亮:

    刘畅和王辰昱:程序界面清新,提供了很多额外的功能,另外,毫秒级计时这一创意十分出彩:D,这是他们的博客:http://www.cnblogs.com/slontia/p/7669797.html,http://www.cnblogs.com/wangchenyu1996/p/7669125.html

    蔡帜和王梓嘉:虽然对720P不很友好,但是使用了Cocos2dx这一用于2d游戏开发的引擎,设计了美观且风格统一的UI,并且没有使用默认字体:D(这个还挺影响用户体验的),这是他们的博客:http://www.cnblogs.com/wzjb/p/7667822.html
  6. 但是,蔡帜同学(虽然结对项目程序部分完成得很好),继个人项目迟交了作业之后,结对项目又迟交了XP,同时在规定的时间内没有补交,根据注意事项中的要求,对其进行倒扣本次博客作业全部分数的惩罚。
  7. 第七组与第十组,博客中要求独立完成的部分雷同
  8. 本次作业有三组同学使用了将题目保存至文件中,等到需要时再读取文件的方法。[捂脸]虽然没有做这方面的要求XP
  9. 另外推荐以下的博客:

    http://www.cnblogs.com/Aria-K-Alethia/p/7668980.html

    http://www.cnblogs.com/StonesA/p/7659378.html

    http://www.cnblogs.com/ohazyi/p/7670382.html
上一篇:苹果Mac OS系统修改Hosts文件的方法


下一篇:《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。附小文:招.NET开发,结果他转JAVA了,一切都是为了生活