结对项目作业

结对成员:唐杰2016012058  于鑫宇2016012029

一、代码仓库地址:https://git.coding.net/jyuegq/project2.git

 

二、PSP

 

PSP

任务内容

计划时间(min)

完成时间(min)

Planning

计划

60

 

     Estimate

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

60

 

Development

开发

300

 

    Analysis

    需求分析

100

 

    Design Spec

    生成文档

0

 

    Design Review

    设计复审

120

 

    Coding Standard

    代码规范

30

 

    Design

    具体设计

100

 

    Coding

    具体编码

540

 

    Code Review

    代码复审

300

 

    Test

    测试

30

 

Reporting

报告

120

 

    Test Report

    测试报告

30

 

    Size Measurement

    计算工作量

30

 

   Postmortem& ProcessImprovement Plan

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

120

 

三、Information Hiding, Interface Design, Loose Coupling

 

信息隐藏(Information Hiding)

        信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。

 

  在结对项目中,使用命令行模式执行和使用GUI界面执行出题部分时调用了同一部分核心代码,在这里我将出题这一部分信息隐藏,当改变人机交互模式的时候就不会给系统带来全局性的影响。在我的程序中避免了A类调用B类的程序,B类有调用A类的程序这种情况,这也是所谓的“循环依赖”,这种情况会阻碍信息隐藏。

 

接口设计(Interface Design)

 

  在本项目设计接口过程中,使用有意义的命名方式使接口的功能一目了然,增强了可读性;类名和方法名也都使用了有意义的命名方式;在开发过程中加好了注释,方便自己和他人看懂代码

 

松耦合(Loose coupling)

 

  在结对项目中,我尽量减少一个模块向另一个模块传递的数据量,如:是否有乘除法通过在主函数中判断调用不同的类,而不是通过传递参数。

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

在计算模块,由于计算模块中所设计到的操作有运算符的优先级判断以及堆栈,因此放在同一个类中足以实现,包含的函数有运算符优先级判断函数、运算数和运算符的判断函数、中缀表达式转后缀表达式函数等。在计算模块中算法的关键是中缀表达式转后追表达式和计算结果时的堆栈算法,其中中缀表达式转后缀表达式算思路大致为:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级不高于栈顶符号则栈顶元素一次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止,计算是的堆栈算法思路大致为:从左到右遍历后缀表达式的每个数字和字符,遇到是数字就进栈,遇到是符号,就将处于栈顶两个数字出栈进行运算,运算结果进栈,一直到最终获得结果。

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

用JProfiler做的效能分析 内存分析

 

 

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

 

import java.io.IOException;
import java.util.ArrayList;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import IO.anwser;
import Jisuan.creat;
import Jisuan.creat2;
import Jisuan.creat3;
import Jisuan.dangejisuan;
import Jisuan.jisuanshi;
import Jisuan.pinjie;
import entity.SuiJiShu;
import entity.YunSuanFu;

public class test {
	public static void main(String[] args) {
		creat c=new creat();
		String flag="yes";
		c.Create(7,4, 56, 5,flag);
		
		

 

  

 

 

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

题目数目异常处理:

 

	for (int i = 0; i < args.length; i++) {
			if (args[i].equals("-n")) {
				isN = 1;
				try {
					n = Integer.parseInt(args[i + 1]);
					if (n <= 0 || n > 10000) {
						System.out.println("n的范围不在[1,10000]内,请重新输入");
						return;
					}
				} catch (Exception e) {
					System.out.println("n的格式不合法,请重新输入!");
				}
			}

 

 界限的异常处理: 

if (args[i].equals("-m")) {
				isM = 1;
				try {
					m1 = Integer.parseInt(args[i + 1]);
					m2 = Integer.parseInt(args[i + 2]);
					if (m1 <= 0 || m1 > 100) {
						System.out.println("m1的范围不在[1,100]内,请重新输入");
						return;
					}
					if (m2 < 50 || m2 > 1000) {
						System.out.println("m1的范围不在[50,1000]内,请重新输入");
						return;
					}
				} catch (Exception e) {
					System.out.println("m的格式不合法,请重新输入!");
				}
			}

  括号与符号的异常处理:

if (args[i].equals("-o")) {
				try {
					o = Integer.parseInt(args[i + 1]);
					if (o <= 0 || o > 10) {
						System.out.println("o的范围不在[1,10]内,请重新输入");
						return;
					}
				} catch (Exception e) {
					System.out.println("o的格式不合法,请重新输入!");
				}
			}
			if (args[i].equals("-b")) {
				b = 1;// 括号
			}
			if (args[i].equals("-c")) {
				c = 1;// 乘除
			}

  

 

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

我们用的是网页端来展示界面模块,所以主要是html,css,bootstrap样式库来实现的界面模块设计。通过网页前端输入参数如图,然后传到后台生成一个四则运算的txt文件

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

我们用的网页前端,所以我们前后端的连接与数据传输主要是通过前台js和后台servlet。用mvc模式,servlet做控制器。

十、描述结对的过程

 

做项目过程中,和搭档一起分析、设计项目,互相讨论项目的难点。很多不懂的地方在我们的交流中得到解决,知识面欠缺的地方也得到改善。整个过程虽然是很痛苦的,但是项目结尾还是有点收获的

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

结对项目的优点:两个人在一起交流各自的想法和心得,在讨论中或许会迸发出不一样的思想火花,有利于两人的进步。

缺点:有时与搭档之间又产生观点分歧,导致项目难以进行,就会很浪费时间,而且如果没有一个好的解决方法的话,会影响搭档之间合作关系。

十二、PSP

 

PSP

任务内容

计划时间(min)

完成时间(min)

Planning

计划

60

120

     Estimate

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

60

120

Development

开发

300

550

    Analysis

    需求分析

100

120

    Design Spec

    生成文档

0

0

    Design Review

    设计复审

120

200

    Coding Standard

    代码规范

30

50

    Design

    具体设计

100

150

    Coding

    具体编码

540

600

    Code Review

    代码复审

300

350

    Test

    测试

30

45

Reporting

报告

120

320

    Test Report

    测试报告

30

60

    Size Measurement

    计算工作量

30

60

   Postmortem& ProcessImprovement Plan

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

120

240

 

 

 



posted on 2018-04-10 07:59  杰克007  阅读(142)  评论(1编辑  收藏  举报