结对作业

Posted boscojk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对作业相关的知识,希望对你有一定的参考价值。

一、项目

源代码地址:https://git.coding.net/mal123/arithmetic.git

网页版测试地址:

结对成员: 马玲 2016012054

      王雪 2016012013

二、PSP展示

PSP

任务内容

计划时间(min)

Planning

计划

60

 Estimate

 估计这个任务需要多少时间,并规划大致工作步骤

30

Development

开发

1200

Test

测试

90

Algorithm Optimization

算法优化

180

Interface Design

接口设计

150

Coding Standard

代码规范

240

Design

具体设计

120

Coding

具体编码

450

Code Review

代码复审

90

Test

测试

60

Reporting

报告

180

Test Report

测试报告

120

Size Measurement

计算工作量

30

Postmortem & Process Improvement Plan

事后总结, 并提出过程改进计划

120

三、 看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节,说明你们在结对编程中是如何利用这些方法对接口进行设计的。

1)关于Information Hiding:信息隐藏

对于面向对象的程序设计而言,信息隐藏是一种重要的软件开发手段,它与对象的封装与模块化相关。信息隐藏是开发整体程序结构时使用的法则,将每个程序的隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。把信息隐蔽用作模块化系统的一个设计标准,在后面项目调试过程中,编程人员的任务量能够得以减轻,提高代码可读性。

本次结对项目,我们将生成题目和计算两个模块设计成接口,用户只需在页面输入自己所想要的参数的值,点击提交,后台就会调用生成题目这个接口,将生成的题目输出出来。计算接口也是同样的调用,就会将结果与输入框中的结果进行核对正确性。在后期项目优化过程中,我们只需要修改接口中的方法来实现功能,不必修改其他地方,极大程度上减轻了我们的任务量。

2)Interface Design:接口设计

设计接口的时候,我们也有讨论接口该如何设计会更加合理。接口在设计的时候应当尽量的详细划分,使得每一个接口中方法应该尽量少,将功能实现在接口中,所以我们决定讲生成题目与计算功能分开,分成两个接口。在层与层之间调用接口,类之间通过接口访问。

3)Loose Coupling:降低耦合

模块与模块之间总会存在一些“联系”,这就会提升我们维护过程中的复杂度和任务量。松耦合通过接口的方式实现各个模块之间的调用,可以使模块在发生改变时,其他的部分可以保持不变,减少模块间的相互“联系”,降低耦合。

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

我们将生成题目和计算设计成了两个接口。

 技术分享图片

生成题目接口:

技术分享图片

方法间的关系:

技术分享图片

计算接口:

技术分享图片

 

五、计算模块接口部分的性能改进

 

六、计算模块部分单元测试展示

在单元测试中,我们首先对两个接口的基本功能进行了测试,在确保基本功能都可以正确实现之后,我们对Command类进行了单元测试。

  Command类测试代码如下:

import org.junit.Test;

import static org.junit.Assert.*;

public class CommandTest {
    @Test
    public void main() throws Exception {
        Command command = new Command();
        String[]  args1  = {"-m","3","800","-n","7"};//正确的参数类型(默认模式)
        String[]  args2  = {"-m","50","400","-n","100000"};//参数范围不合法
        String[]  args3  = {"-m","3","800","-n","7","-o","3","-b","-c"};//正确的参数范围(不默认)
        String[]  args4  = {"-m","3","800","-n","7","-o","你","-b","-c"};//参数类型错误
        String[]  args5  = {"-m","L","800","-n","7"};//参数类型错误
        String[]  args6  = {"-m","3","800","-n","、"};//参数类型错误
        String[]  args7 = {"-m","3","800","-n","7","M"};//输入参数不合法
        String[]  args8  = {"-m","3","800"};//缺少参数
        Command.main(args1);
        Command.main(args2);
        Command.main(args3);
        Command.main(args4);
        Command.main(args5);
        Command.main(args6);
        Command.main(args7);
        Command.main(args8);

    }

}

 代码覆盖率如下:

 接口类测试覆盖率:

技术分享图片

 Command类的测试覆盖率:

技术分享图片

 

在单元测试中,每个类对应一个测试类,测试类中每个测试方法对应一个方法。构造测试数据时,根据方法中每个分支对应的情况,设置相应的参数,确保测试会进入到每一个分支,达到测试的目的。

七、计算模块部分异常处理说明

 在计算模块中,用户如果传入不合法参数,程序会捕获异常,显示异常类型并提示错误参数。由于我们的项目是用web实现的,对于不合法的参数(如汉字,符号)以及参数为空这些问题都会在前端进行判断,并提醒用户,所以在异常处理的得上设计中,只做了参数范围不合法一种异常类型,由于题目会有上下界的要求,但当上下界范围较小时,无法产生题目,因此我们设定当上下界只差小于30时,抛出异常,提示用户扩大范围。

       当符号数量不在合理范围内时:

 

@Test
    public void createCharacter() throws Exception {

        System.out.println(createArithmetic.CreateCharacter(56,true));

    }

 

 技术分享图片

当上下界不在合理范围时:

 

 @Test
     public void createNumber() throws Exception {
         System.out.println(createArithmetic.CreateNumber(4,-9,800));
     }

 

 技术分享图片

当上下界范围太小时:

 

 @Test
     public void createFile() throws Exception {
         System.out.println(createArithmetic.createFile(-9,true,true,10,1000,4));
 
     }

 

 技术分享图片

当题目数量不在合理范围时:

 

@Test
     public void createFile() throws Exception {
         System.out.println(createArithmetic.createFile(-9,true,true,10,1000,4));
 
     }

 

 技术分享图片

八、界面模块的详细设计过程

 

九、界面模块与计算模块的对接

 

十、描述结对的过程

本次作业,我们两个人在工作室完成结对编程的。本次编程过程中,我们两个人都有明确的分工,一人负责一个模块,过程虽然有点困难,但是我们也充分的感受到了合作的重要性。尤其是在编程过程中,明白了自己设计的东西要简单易懂,让人能一眼看懂。

技术分享图片

 

技术分享图片

十一、说明结对编程的优点和缺点

结对编程优点: 1.结对编程就是两个程序员互相审查的过程,在编程过程中能够尽早发现问题并解决问题,提高了编程效率。

        2.编程过程中遇到瓶颈两个人相互鼓励,极大的提高了编程的积极性。

        3.两个人在编程过程中不断磨合,相互学习,使双方的代码能力得到了一定程度上的增强,同时也有了合作意识。

结对编程缺点: 1.一个人独立钻研的时候,两个人思路会不同,编程方法也不同,需要时间来抉择用哪一个方法,需要磨合时间

马玲优点: 1.编程能力强,认真

      2.对于模块独立化有独特的见解

      3.逻辑思维能力强,编程严谨

马玲缺点: 1.

王雪优点: 1.遇到bug有耐心解决

      2.注重细节,努力

      3.态度积极,乐于学习

王雪缺点: 1.编程经验不足,对程序把握不够

十二、PSP表格

PSP

任务内容

实际时间(min)

Planning

计划

50

 Estimate

 估计这个任务需要多少时间,并规划大致工作步骤

30

Development

开发

1560

Test

测试

110

Algorithm Optimization

算法优化

200

Interface Design

接口设计

160

Coding Standard

代码规范

60

Design

具体设计

160

Coding

具体编码

600

Code Review

代码复审

60

Test

测试

150

Reporting

报告

120

Test Report

测试报告

100

Size Measurement

计算工作量

30

Postmortem & Process Improvement Plan

事后总结, 并提出过程改进计划

150


以上是关于结对作业的主要内容,如果未能解决你的问题,请参考以下文章

结对编程作业

结对编程第一次作业

《结对作业》——软件工程作业

结对-结对编程项目作业名称-结对项目总结

结对作业(软件工程第四次作业)

结对作业