一、项目Coding.net原码仓库地址:https://git.coding.net/caoying/Teamwork.git

队员:

卢琪:2016011986

曹滢:2016012102

二、PSP表格之时间规划

PSP

任务内容

计划时间(min

Planning

计划

30

Estimate

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

30

Development

开发

2880

Analysis

需求分析

30

Design Spec

生成文档

40

Design Review

设计复审

20

Coding Standard

代码规范

10

Design

具体设计

40

Coding

具体编码

2000

Code Review

代码复审

30

Test

测试

30

Reporting

报告

180

Test Report

测试报告

30

Size Measurement

计算工作量

20

Postmortem & Process Improvement Plan

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

30

三、接口设计介绍

Information Hiding, Interface Design, Loose Coupling

信息隐藏(Information Hiding)

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

接口设计(Interface Design)

接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。

松耦合(Loose Coupling)

松耦合系统通常是基于消息的系统,此时客户端和远程服务并不知道对方是如何实现的。客户端和服务之间的通讯由消息的架构支配。只要消息符合协商的架构,则客户端或服务的实现就可以根据需要进行更改,而不必担心会破坏对方。

四、计算模块接口的设计及实现(独立完成)

1.类和函数的组成及关系

我们设计了一些函数,例如生成只含加减号的四则运算还有包括加减乘除的四则运算,还可以控制括号的有无,生成题目的时候就有对这些函数的调用

2.函数流程图

4.算法的关键及独到之处

我们的独到之处是界面模块简洁、功能齐全,算法易懂易理解。

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

1.性能改进思路及时间花费

为确保软件满足或超过设计的期望值,有必要分析应用程序的性能以发现潜在的问题。这个过程被称为“性能分析”。它包括检查应用程序以确保每个组件有效地工作,并根据设计密切注视处理器的使用、网络和系统服务、存储和输入/输出(I/O)。

在运行代码的性能分析中,我们发现资源回收不完全。经过各种调试,我们发现是输入输出流的关系,所以我们关闭输出流、修改了代码。整个过程花费了接近三个小时。

2.性能分析图展示及程序中消耗最大函数

展示图:

程序中消耗最大的函数无疑是包含过程最多、工程量最大的函数Calculate。

六、单元测试展示(展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。只需要测试命令行部分,且该部分覆盖率到90%以上。)

1.单元测试代码及函数

单元测试的代码:(这里就以算分这个类为例,其余测试类似)

public class CoreTest extends TestCase {

    public void testNewExpSome() {
Core.newExpSome(true, 50, 1, 3);
} public void testNewExpAll() {
Core.newExpAll(false, 50, 1, 3);
} public void testDivideExactly() {
Core.divideExactly(48, 8,5);
} }

单元测试的函数:(这里就以算分这个类为例,其余测试类似)

2.构造测试数据的思路

我们的思路是从要测试的对象出发:首先,我们有一个生成加减乘除类、有一个可以计算式子并返回结果的类、有一个判断优先级的类;接下来我们就要对它们测试。其次我们还有GUI窗口,因此也要进行测试。

3.测试覆盖率截图

在同学的帮助下,使得我们团队的测试覆盖率达到了97%。如下图

七、异常处理说明(详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景)

1.输入数判断是否超范围

这里用try——catch方法来捕获异常:

try {
n = Integer.parseInt(n.getText());
if (n<0 || n > 10000) {
n.setText("n不在范围内,需重输");
return;
}
flag0 = 1;
} catch (Exception a) {
n.setText("n异常,需重输");
}

2.文件处理异常

这里同样用try——catch方法来捕获异常:

try {
Ffile = new PrintStream("result.txt");
System.setOut(Ffile);
} catch (Exception e) {
System.out.println("文件生成错误");
}

八、界面设计过程(详细介绍界面模块是如何设计的,并写一些必要的代码说明解释实现过程)(独立完成)

1.设计思路

我们要设计各个界面的GUI,就要弄清楚分几个界面、各个界面要包含哪些组件、要实现什么具体的功能。所以我们根据分析,有这些:首页GUI设计,分为两块,出题和做题、出题界面GUI的设计、答题界面GUI的设计及文件上传界面GUI的设计。

2.实现过程

首页界面GUI代码:

static class Hello extends JPanel {
JLabel title = new JLabel("欢迎来到四则运算小程序!");
JLabel l = new JLabel();
JButton timu = new JButton("生成题目");
JButton finish = new JButton("完成题目");

出题界面GUI代码:

static class InMakeExp extends JPanel{
JLabel timunum = new JLabel("题目数量");
JLabel timulower = new JLabel("数值的下界范围");
JLabel timuupper = new JLabel("数值的上界范围");
JLabel most = new JLabel("运算符最多个数");
JCheckBox chenchu = new JCheckBox("乘除法",false);
JCheckBox bracket = new JCheckBox("括号",false);
JButton ok = new JButton("提交");<br>
JTextField num = new JTextField(10); <br>
JTextField lower = new JTextField(10); <br>
JTextField upper = new JTextField(10); <br>
JTextField most_ = new JTextField(10);

答题界面GUI代码:

  timu = new JLabel("题目:");
timu.setSize(100, 40);
timu.setLocation(650, 100);
l.add(timu);
timu.setVisible(false); daan = new JLabel("答案:");
daan.setSize(100, 40);
daan.setLocation(650, 160);
l.add(la22);
daan.setVisible(false); question = new JTextArea();
question.setSize(150, 30);
question.setLocation(700, 100);
l.add(question);
question.setVisible(false); answer = new JTextArea();
answer.setSize(70, 30);
answer.setLocation(700, 160);
l.add(answer);
answer.setVisible(false); tijiao= new JButton("提交");
tijiao.addActionListener(this);
tijiao.setSize(70, 30);
tijiao.setLocation(780, 160);
tijiao.setFont(new Font("Dialog", 1, 14));
l.add(next);
tijiao.setVisible(false);
}

文件上传界面GUI代码:

 shangchuan= new JButton("上传文件");
shangchuan.addActionListener(this);
shangchuan.setFont(new Font("Dialog", 1, 18));
shangchuan.setSize(120, 30);
shangchuan.setLocation(515, 140);
l.add(upload);

九、界面模块与计算模块的对接(详细地描述UI模块的设计与两个模块的对接,并截图实现的功能)(独立完成)

1.对接描述

我们GUI界面与计算模块的对接是通过获取参数,调用方法来实现的。出题时,将题目写入文件,然后文件下载到本地。做题时,上传题目后,将题目和答案封装到result集合中。

2.功能截图

首页:

出题界面:

答题界面:

文件上传截图:

生成题目截图:

做题判断结果:

十、结对过程描述及合照

和曹滢同学结对打代码是一件令人开心的事,虽然我们俩对java都不是特别了解,但是我们互相陪伴互相鼓舞,也是完成了这份作业。请教了室友吕晓真同学,本来我和曹滢同学准备做前后台网页版的,但是请教过周围一些同学,发现我们俩都比较倾向于前端,而后端代码不是很熟悉,无法做到与前台紧密结合,也很抱歉曹滢同学已经完成一份前台样式代码了,所以我们改战GUI。

合照:

图左是我,图右是曹滢同学~

十一、结对编程的优缺点(同时指出结对的每一个人的优点和缺点在哪里 (至少三个优点和一个缺点))

结对编程的优点:1.两个人有商有量,可以各自分担项目的一半;

2.两个人互相学习,可以相互鼓励增加彼此信心;

3.两个人更有动力,可以促进各自写代码的效率。

结对编程的缺点:1.两个人商量可能会出现意见有分歧;

2.两个人分开完成项目的一部分,可能会导致事倍功半,比如我们之前做web项目却中途进行不下去了;

3.两个人之中有一个更厉害的,那么另一人可能会产生依赖、付出也较少。

我的队友曹滢同学的优点:1.为人和善,易沟通;2.前端技术掌握的好,善于学习;3.做事认真负责   缺点:对后端java不是特别熟悉

我的优点:1.易于沟通;2.认真学习;3.虚心请教。 缺点:对技术方面掌握的不好;缺乏耐心;有时候碰到困难会不知道怎样解决

十二、总结与反思

通过这次的结对项目,让我清晰地体会到自己的不足,还有很多地方欠缺,希望在今后的学习中能够有所提升!

PSP

任务内容

实际完成时间(min

Planning

计划

60

Estimate

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

60

Development

开发

3000

Analysis

需求分析

30

Design Spec

生成文档

60

Design Review

设计复审

30

Coding Standard

代码规范

20

Design

具体设计

50

Coding

具体编码

2100

Code Review

代码复审

40

Test

测试

50

Reporting

报告

185

Test Report

测试报告

35

Size Measurement

计算工作量

30

Postmortem & Process Improvement Plan

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

40

团队作业之四则运算GUI展示的更多相关文章

  1. 团队作业9——Beta版本展示博客

    一. 骆杰宁(组长) 风格:少说话,多做事. 擅长技术:Jsp 编程兴趣:GUI 希望角色:PM 一句话宣言:年轻是本钱,不努力就不值钱. 胡丹丹 风格:不断沉淀自己 擅长技术:擅长TCP/IP协议模 ...

  2. 【集美大学1411_助教博客】团队作业8——第二次项目冲刺(Beta阶段)

    写在前面的话 此次团队作业8可以拆分成两部分:1.beta阶段冲刺计划安排,2.7天敏捷冲刺."我们很低调"没有使用leangoo,经过与张老师的商议,张老师同意他们不使用lean ...

  3. 【集美大学1411_助教博客】团队作业10——项目复审与事后分析(Beta版本)

    写在前面的话 软件工程课结束了,大家开心吗?是不是再也不用熬夜写代码了?如果这门课你真的熬夜写代码了,相信你一定有收获,如果这门课结束了你觉得是自己一个全新的开始,那么这门课的意义就实现了.团队作业全 ...

  4. 【1414软工助教】团队作业6——展示博客(Alpha版本) 得分榜

    题目 团队作业6--展示博客(Alpha版本) 作业提交情况情况 为所欲为 团队没有提交,其余都按时提交. 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2: ...

  5. 【集美大学1411_助教博客】团队作业1——团队展示&选题 成绩

    第一次团队作业已经新鲜出炉啦,各位同学请查收.截止日期前,全班都按时提交了作业,而且有的团队还提交了两次呢,下次不要这样啦~ 题目 团队作业1--团队展示&选题 回顾 个人作业1--四则运算题 ...

  6. 【集美大学1411_助教博客】团队作业6——展示博客(Alpha版本)

    写在前面的话 工作还真是应该抓紧做呢,以下评分是助教在出差前评的,但出差回来就忘记了大部分内容.同学们都在预期时间内完成了自己的alpha项目.由于助教的频繁出差,评分工作落下一大截,在此表示欠意,会 ...

  7. 团队作业6——展示博客(Alpha)

    一.团队简介 李永豪(PM):项目经理,后台开发人员,协调团队内部的工作及开发团队之间的工作 杨海亮:后台开发人员,测试人员,熟悉java语言,编写java代码 郑靖涛:后台开发人员,测试人员,安卓程 ...

  8. 【2017集美大学1412软工实践_助教博客】团队作业6——展示博客(Alpha版本)

    题目 团队作业6: http://www.cnblogs.com/happyzm/p/6791211.html 团队成绩 团队成员简介 项目地址 项目目标,包括典型用户.功能描述.预期用户数量 如何满 ...

  9. 团队作业9——测试与发布(Beta版本)(含展示博客)

    团队作业9--测试与发布(Beta版) http://www.cnblogs.com/newteam6/p/6938504.html 团队作业9--展示博客 http://www.cnblogs.co ...

随机推荐

  1. redis持久化机制之AOF与RDB

    什么是redis Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. redis为何需要 ...

  2. 大数据入门第一天——基础部分之Linux基础(环境准备与先导知识)

    一.Linux环境安装 1.VM的安装 参考Linux环境搭建随笔:http://www.cnblogs.com/jiangbei/p/7248054.html 2.CentOS的安装 同参考上述随笔 ...

  3. 2017-2018-2 20155315《网络对抗技术》Exp4:恶意代码分析

    实验目的 是监控你自己系统的运行状态,看有没有可疑的程序在运行. 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systracer套件 ...

  4. Codeforces VK Cup 2018 Div.2

    总题面传送门 这次考试只过了3题,前三题题目难度并不大,但是第三题的代码细节卡了我两个半小时(基本上整场考试),所以以后要合理把握时间,注意把握代码细节,并更加完善我的代码风格,使其更加简练.(赛外话 ...

  5. RAC建立过程回顾--建立用户和组

    一共需要建立6个组: oinstall dba asmadmin asmdba asmoper oper 要建立两个用户: oracle 和 grid 然后还要给各个用户建立各自的环境变量. 以下的操 ...

  6. 3、计数排序,电影top100

    1.计数排序 # -*- coding: utf-8 -*- # @Time : 2018/07/31 0031 11:32 # @Author : Venicid def count_sort(li ...

  7. Xshell6远程访问linux及Xftp6远程针对linux系统中文件操作(附图文详解)

    1.首先我们需要先做好前期准备工作,需要到XManager6官网上将Xshell及Xftp下载并安装,安装过程一直下一步就好了.这里是其官网:http://www.xshellcn.com/.安装完成 ...

  8. Java SE练习题——求奇数

    欢迎来到Java SE练习题频道,我是Fishing,今天我带来的练习题是(做题会有不足之处,可评论,说出更好的方法): 通过键盘输入两个整数,计算这两个整数之间的所有奇数之和,并输出计算结果. 看到 ...

  9. Netty源码分析第2章(NioEventLoop)---->第1节: NioEventLoopGroup之创建线程执行器

    Netty源码分析第二章: NioEventLoop 概述: 通过上一章的学习, 我们了解了Server启动的大致流程, 有很多组件与模块并没有细讲, 从这个章开始, 我们开始详细剖析netty的各个 ...

  10. Spring入门学习笔记(1)

    目录 Spring好处 依赖注入 面向面编程(AOP) Spring Framework Core Container Web Miscellaneous 编写第一个程序 IoC容器 Spring B ...