个人第三次作业——结对编程(黄耀萱、孙颖)
个人第三次作业 | 结对作业 |
---|---|
Github项目地址 | Github项目地址 |
结对伙伴的博客地址 | 小黄博客地址 |
一、PSP表格
PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
·Estimate | · 估计这个任务需要多少时间 | 840 | 900 |
Development | 开发 | 720 | 810 |
· Analysis | · 需求分析 (包括学习新技术) | 80 | 120 |
· Design Spec | · 生成设计文档 | 10 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 10 | 10 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 30 | 60 |
· Coding | · 具体编码 | 360 | 360 |
· Code Review | · 代码复审 | 60 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 180 | 180 |
Reporting | 报告 | 130 | 190 |
· Test Report | · 测试报告 | 60 | 120 |
· Size Measurement | · 计算工作量 | 8 | 8 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 60 |
合计 | 2578 | 2918 |
●有关PSP的更多内容,请自行阅读邹欣老师的博客:
http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html
二、计算模块的设计与实现过程
1.设计
该项目运用C#语言将学生信息录入,登录后进行数据加载,并实现实现点名功能。
这些功能总体由这几个部分组成:
(1)FrmLogin(登陆窗体)
(2)FrmStudent(学生随机点名系统窗体)
(3)Student、StudentDataset、StudentDAO类
2.原则
(1)Design By Contract(契约式设计):契约式设计就是按照某种规定对一些数据等做出约定,如果超出约定,程序将不再运行,例如要求输入的参数必须满足某种条件。
如何体现:设计在正确的输入下,能够得到正确的输出,否则程序将报错。
参考链接:https://baike.baidu.com/item/%E5%A5%91%E7%BA%A6%E5%BC%8F%E8%AE%BE%E8%AE%A1/2180000?fr=aladdin
该项目实现过程中的应用如图:
(2)Information Hiding(信息隐藏):信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。
如何体现:C#中的访问修饰符分为public 、private、protected 、internal等,而修饰类的只有public和internal。
●public:公开的、公共的;
●private:私有的,只能在当前类的内部访问;
●protected:受保护的,只能在当前类的内部及该类的子类中访问;
●interal:只能在当前项目中访问。
(3)Interface Design(接口设计):对接口的名字,功能,接口与接口间的继承关系进行设计;好的接口设计可以增强代码可读性,易用性,可更改性。
如何体现:我们用的是项目之间的引用,并没有涉及到接口。
(4)Loose Coupling (松耦合):软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
如何体现:目前并没有达到很熟练的程度,模块之间联系并不是很紧密,耦合性较差。
3、实现
(1)登录界面代码设计
(2)FrmStudent代码设计(学生随机点名系统窗体)
(3)创建学生表并实现调用,完成随机点名
三、代码复审过程
1、C#代码编写规范:https://blog.csdn.net/VS18703761631/article/details/94615734
2、在代码复审过程中,我们互相检查排版是否正确,命名是否规范,包括方法的命名、控件的命名、类的命名等。
四、运行结果
五、单元测试展示
我们对 WinformControlUse 进行单元测试,结果如图:
六、结对的过程及讨论的结对照片
1、结对过程:我们本为室友,上课及平时活动都在一起,讨论起来比较方便,因此结对。
2、讨论的结对照片:
七、总结与感想
☛☛该项目是我们第一次接触结对编程,虽然上课的时候老师带领我们一起完成了一遍窗体与代码的设计,但是当想到要自己独立完成时仍然有一些心理压力。在完成过程中,因为项目类型创建错误以及其他各种原因,我们进行了一次又一次的修改,最终也得到了期望的结果,还是有一点点小欣慰的。在本次结对过程中,我们两人分别负责不同的部分,在遇到困难时相互帮助,解决困难,体会到了1+1>2的感受,也让我们对结对编程的理解更加深入。