[BUAA软工第三次]结对编程

这篇博客详细介绍了北京航空航天大学软件工程课程中的一次结对编程作业,涉及结对编程的原则和实践,包括信息隐藏、接口设计和松耦合等编程原则的实施。博主分享了计算模块接口的设计与实现过程,以及在性能改进、单元测试、异常处理等方面的具体做法。此外,还探讨了界面模块的设计,包括CLI和GUI的实现,并总结了结对编程的优点和缺点。
摘要由CSDN通过智能技术生成
项目 内容
这个作业属于哪个课程 课程社区的链接
这个作业的要求在哪里 作业要求的链接
我在这个课程的目标是 掌握软件开发中常用的结对编程模式
这个作业在哪个具体方面帮助我实现目标 了解软件团队中如何利用结对编程来提升开发效率

[BUAA软工第三次]结对编程

结对编程作业

发表在你的个人博客上,也可以同时转发到你的团队博客上来增加你们团队博客的人气。博客共 50 分,具体要求如下:

班级及项目地址

  • 教学班级:周五班
  • 项目地址:GitHub库

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 60
· Estimate · 估计这个任务需要多少时间 60 60
Development 开发 940 850
· Analysis · 需求分析 (包括学习新技术) 60 90
· Design Spec · 生成设计文档 60 60
· Design Review · 设计复审 (和同事审核设计文档) 30 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 10
· Design · 具体设计 120 150
· Coding · 具体编码 180 150
· Code Review · 代码复审 180 120
· Test · 测试(自我测试,修改代码,提交修改) 300 240
Reporting 报告 170 200
· Test Report · 测试报告 120 150
· Size Measurement · 计算工作量 20 20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 30
合计 1170 1110

编程原则

Information Hiding

在计算机科学中,信息隐藏(Information Hiding)是将计算机程序中最有可能发生变化的设计决策隔离开来的原则,从而保护程序的其他部分在设计决策发生变化时不被大量修改。这种保护包括提供一个稳定的接口,保护程序的其余部分不受实现(其细节可能会改变)的影响。

在我们的实现中,我们依照这个原则将两大关键板块分割开来,IO系统和计算模块两者互不干扰。在这两个关键板块之内我们也细分了更精密的信息隐藏方法,比如在IO系统中,读取文件和手动输入两个方法互不耦合,只对最终的借口提供一个字符串;在计算模块中,字符串处理和核心方法互不干涉,核心方法只需要接受一个处理妥当的字符串,而不需要关心其具体处理方法;同时在最终的结果输出,针对GUI和CLI,我们只需要在输出系统接受一个结果并且根据具体环境来实现输出方法,完全没有和计算模块耦合。这三个例子只是我们实现方法中很小的一部分体现信息隐藏原则的地方。

Interface Design

用户界面设计(Interface Design)的重点是最大限度地提高可用性和用户体验。在计算机或软件设计中,用户界面设计是建立具有美感的界面的过程;UI设计师建立易于使用和使用感良好的界面,在完成用户目标的前提下,使用户的交互尽可能的简单和有效(以用户为中心的设计)。一个良好的图形用户界面(GUI)往往可以增强软件的可用性,让用户摆脱命令行界面(CLI)的繁琐。

关于我们的UI设计请移步后文GUI

Loose Coupling

在计算和系统设计中,松耦合指:

  • 其中组件之间的联系很弱(有可中断的关系),因此,一个组件的变化对另一个组件的存在或性能影响很小。
  • 在这个系统中,每个组件对其他独立组件的定义知悉甚少或一无所知。

我们在实现功能时候尽可能地遵守松耦合的原则,除了在上面信息隐藏的过程中实现的松耦合,我们在核心计算模块更加重视松耦合。我们的核心计算模块Processor.cs主要有以下两个关键部分:ConcatTree.csResGen.cs,他们完全独立。其中:

  • ConcatTree.cs产生我们的方法依赖的单词树
  • ResGen.cs处理单词树以生成结果

另外,我们在Core.cs中封装所有的方法,其内容和具体的实现方法也是相互独立的,只需要传入一个Processor并且接受ResGen的返回值。

计算模块接口的设计与实现过程

方法设计

我们的方法主要基于建立和维护一个由多叉树组成的森林(Wikipedia: Forest is a collection of disjoint trees. In other words, we can also say that forest is a collection of an acyclic graph which is not connected. Here is a pictorial representation of a forest)。一个叶节点的构造为:一个子叶节点群和一个自身的值。用 C# 描述为:

class ConcatTree
{
    private List<ConcatTree> _kids;
    private string _val;
}

在建立森林之前,我们先处理输入。对于输入,我们建立一个单词字典,将词语和首字母联系起来,其构造用 C# 描述为 Dictionary<char, List<string>>。比如,若输入为:

Heaven!#@(*$element TABLE:teach!0tAlK

我们则将其处理为:

{
    ['e': "element"], 
    ['h': "heaven"], 
    ['t': "table", "teach", "talk"]
}

在建立森林的过程中,我们以给定的单词组中的每一个单词为根,分别建树。即有 n n n 棵树就有 n n n 棵树。在建立时,我们采取这样的方法:对于一个单词树节点,将其值的尾字母作为子节点群的首字母;在字典中检索这个字母的单词,将它们依次加入子节点;对所有子节点重复该操作。
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 【优秀课程设计】主要针对计算机相
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值