1.Fork仓库的Github项目地址:
https://github.com/bronzeonestar/PairProgramming.git
结对伙伴作业地址:
https://www.cnblogs.com/swpulc/p/11613262.html
2.PSP表格记录
psp2.1 | Personal Software Process Stages | 预估耗时(分钟)) |
---|---|---|
Planning | 计划 | 20 |
·Estimate | · 估计这个任务需要多少时间 | 5 |
Development | 开发 | 480 |
·Analysis | · 需求分析 (包括学习新技术) | 30 |
·Design spec | · 生成设计文档 | 120 |
· Design Review | · 设计复审 (和同 学设计文档) | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 40 |
· Design | · 具体设计 | 60 |
· Coding | · 具体编码 | 90 |
· Coding Review | · 代码复审 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 90 |
Reporting | 报告 | 20 |
Test Report | · 测试报告 | 20 |
· Size Measurement | · 计算工作量 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 |
-- | 合计 | 1135 |
3. 程序设计
Team Members
140 刘川:负责项目的主要开发。
122 张新明·:负责项目各个环节的设计,测试,评估。
窗体设计
一个程序要想受到用户欢迎,就必须做好UI设计,虽然现阶段我们的程序还是太烂,但还是要做好用户界面。我们首先创建了一个登陆界面,(但由于没能连接数据库,所以做了一个任何用户名都可登陆的界面)。除去常规的窗体控件以外,我们加入了一个名为testQuanity的窗体,可实现多个缺席一次记录的功能。
代码设计
刚拿到项目时,由于用过很多点名系统(但是那些点名系统都开发了移动端,所以很难)脑袋里有很多想法,但却不知道如何入手。但老师在班群里发过这次作业的相关资料,并且课堂上也有展示,给了我们很好的思路。
本次代码设计与老师思路相同使用四层设计,分别为表现层(用户界面层)、业务逻辑层、数据访问层。还有一个实体类库。总共有5个层,窗体类实现人机交互。本项目共有7个函数,函数与函数之间会存在调用的关系。关键函数不需要画出流程图。我们的算法的独到关键之处在于可以同时随机出几个同学同时进行点到以及缺勤记录。
Information Hiding 原则
信息隐藏原则是结构化设计与面向对象编程的基础,面向对象的封装便来自于这个原则。我们的算法通过类之间的访问级别实现使类和成员的可访问性最小化,在类的调用中要添加引用以及使用using,达到信息隐藏的原则。
Design by Contract 原则
契约式设计原则,使一个软件中的各个要素基于相互的义务与责任相互合作。在类之间 的调用以及传值中,调用函数者就是客户,它通过提供函数必需的参数调用此函数。如果客户提供的参数是不合适的,函数不必进行运算,只需给出异常即可。 相反,如果客户确实提供了必要的参数,而函数的实现无法给出满足末态条件的结果,函数的实现就是有问题的,需要修改。
Interface Design 原则
接口设计原则,客户端不依赖不需要的接口。建立单一接口,不要建立臃肿庞大的接口,在代码设计中,类与类的依赖关系都建立在最小的接口上。
Loose Coupling 原则
松耦合原则,在这个项目程序中,类与类之间通过接口的锲约实现服务提供者/服务请求者的模式,实现最小化依赖。
4. 代码复审
我们采用面对面复审的方式一起讨论完善代码。
zxm:如果随机抽取的人数大于班级人数怎么办?
lc:那就在调用form2前写一个判断程序,再用messageboxshow提示用户
zxm:能不能把UI部分再美化一下,不那么混乱
lc:那就及时把那些用不到的控件隐藏起来,在试着优化一下布局
lc:你写代码的时候能不能不要用汉语拼音
zxm:英语不好真的是硬伤,我尽力吧。
zxm:那个随机结果一下就把要答到的人名字写出来了,会不会出现替人答到的现象啊
lc:。。。。。
代码复审结果:
1.彼此发现了不少bug
2.合并代码时功能没有对应上然后多次修改
3.优化了界面
4.(最严重的)发现了设计时的缺陷
5. 代码测试
测试随机点到的同学是否是有重复,且是否为”真随机点到“。
测试代码设计思路:随机抽取一位同学(一共抽30次),把抽到的同学名字放到list中,在用for循环去遍历,Assert函数预言不会有重复的。最后通过测试。
测试代码节选:
``
for (int i = 0; i < Test1.Count; i++) //检验结果是否含有重复的同学
{
for (int j = i + 1; j < Test1.Count; j++)
{
if (Test1[i] == Test1[j])
{
Assert.IsFalse(true);
}
}
}
}
测试结果
测试覆盖率
6.结对过程
partner编程能力很强(那肯定要抱大腿啊),关系挺好,就一起结对编程了。
7.psp表格
psp2.1 | Personal Software Process Stage | 实际耗时(分钟) |
---|---|---|
Planning | 计划 | 10 |
·Estimate | · 估计这个任务需要多少时间 | 5 |
Development | 开发 | 600 |
·Analysis | · 需求分析 (包括学习新技术) | 50 |
·Design spec | · 生成设计文档 | 200 |
· Design Review | · 设计复审 (和同 学设计文档) | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 40 |
· Design | · 具体设计 | 80 |
· Coding | · 具体编码 | 120 |
· Coding Review | · 代码复审 | 90 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 |
Reporting | 报告 | 20 |
Test Report | · 测试报告 | 30 |
· Size Measurement | · 计算工作量 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 15 |
-- | 合计 | 1460 |
8.附加功能
1.记录学生缺勤,显示学生缺勤次数。
2.随机多人一同考勤。
3.老师登陆功能