软工结对作业
1.本次作业项目github地址
2.PSP表格,预计开发时间
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | |
· Estimate | · 估计这个任务需要多少时间 | 5 | |
Development | 开发 | 2170 | |
· Analysis | · 需求分析 (包括学习新技术) | 500 | |
· Design Spec | · 生成设计文档 | 150 | |
· Design Review | · 设计复审 (和同事审核设计文档) | 100 | |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 80 | |
· Design | · 具体设计 | 200 | |
· Coding | · 具体编码 | 700 | |
· Code Review | · 代码复审 | 240 | |
· Test | · 测试(自我测试,修改代码,提交修改) | 200 | |
Reporting | 报告 | 400 | |
· Test Report | · 测试报告 | 300 | |
· Size Measurement | · 计算工作量 | 20 | |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 80 | |
合计 | 2590 |
3.看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节,说明你们在结对编程中是如何利用这些方法对接口进行设计的
Information Hiding
信息隐藏即通过采用定义良好的接口,对代码模块进行封装,使得这些模块的内部结构,对外部是不可见的。
应用:
- 类与类之间设置接口类,通过接口类相互访问。
- 类里的数据尽量采用private变量,所有访问通过访问函数实现。
Interface Design
UI设计原则(用户界面设计原理)目的:
设计一个让用户感到舒心,使用方便的界面。
应用:
- 设计简单清晰的界面,用户能快速地识别和长久地使用。
- 设计促进交互的界面,是用户和软件之间高效地交互。
Loose Coupling
-
松耦合的目的:实现最小化依赖,并处理可伸缩性、灵活性和容错等需求。
-
引入中间层,减小函数之间的依赖。
4.计算模块接口的设计与实现过程。 设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处
- 首先判断是否有环,如果有环,就用dfs算法,如果没有环,创建一个26*26的二维数组,记录26个字母之间每两个字母之间的最长距离,初始时每两个字母的距离即为以该两个字母为首尾的最长的一个单词,按照入度进行拓扑排序,再创建一个点连接所有入度为0的点,一个点连接所有出度为0的点,所以最长单词链即为这两个点的最长路径,根据拓扑排序的顺序依次求初始点到该点的最长距离,保存到该二维数组中,在遍历过程中保存父节点即可记录下路径。
12.描述结对的过程,提供非摆拍的两人在讨论的结对照片
- 一人负责当领航员,一人负责当驾驶员,当疲惫时就互换工作。当思路不一时,先讨论,如果不能说服对方,就各自按照自己的想法先实践,然后对比方案优劣。
13.说明优点和缺点
结对编程:
-
优点:分析问题时,通过讨论,能够迅速地找到新思路或者找到错误,此外一份代码经过两个人一起编程,降低了bug的出现率,保证了代码质量。
-
缺点:当两个人想法不同时,需要一些时间讨论,有时会降低效率,此外有时会对对方的代码产生误解。
我的优缺点: -
工作积极性高,乐于实践,认真负责
-
对新知识的理解不深,有时陷入困局
队友的优缺点:
- 主动交流,认真务实,思维严谨
- 不乐于探索未知
14.PSP表格,实际开发时间
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 60 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 60 |
Development | 开发 | 2220 | |
· Analysis | · 需求分析 (包括学习新技术) | 420 | 420 |
· Design Spec | · 生成设计文档 | 120 | 120 |
· Design Review | · 设计复审 (和同事审核设计文档) | 120 | 120 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 60 |
· Design | · 具体设计 | 240 | 240 |
· Coding | · 具体编码 | 720 | 720 |
· Code Review | · 代码复审 | 300 | 300 |
· Test | · 测试(自我测试,修改代码,提交修改) | 240 | |
Reporting | 报告 | 360 | |
· Test Report | · 测试报告 | 240 | |
· Size Measurement | · 计算工作量 | 60 | |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | |
合计 | 2610 |