软件工程结对作业
项目 | 内容 |
---|---|
作业所属课程 | 软件工程班级博客 |
作业要求请点击链接查看 | 作业要求 |
我在这个课程的目标 | 学习如何用工程化方法构建和维护软件 |
这个作业在哪个具体方面帮助我实现目标 | 学习并实践,与他人协调合作,共同编写代码 |
1.Github项目地址:Wordlist
2.PSP表格,预计开发时间
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | |
· Estimate | · 估计这个任务需要多少时间 | 30 | |
Development | 开发 | 2220 | |
· Analysis | · 需求分析 (包括学习新技术) | 420 | |
· Design Spec | · 生成设计文档 | 120 | |
· Design Review | · 设计复审 (和同事审核设计文档) | 120 | |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | |
· Design | · 具体设计 | 240 | |
· Coding | · 具体编码 | 720 | |
· Code Review | · 代码复审 | 300 | |
· Test | · 测试(自我测试,修改代码,提交修改) | 240 | |
Reporting | 报告 | 360 | |
· Test Report | · 测试报告 | 240 | |
· Size Measurement | · 计算工作量 | 60 | |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | |
合计 | 2610 |
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 |