结对作业——四则运算之网页版
结对作业——四则运算之网页版
目录:
一、项目地址
二、PSP表格
三、接口设计
四、计算模块与接口的设计与实现
五、计算模块接口部分的性能改进
六、计算模块部分单元测试展示
七、计算模块部分异常处理说明
八、界面模块的详细设计过程
九、界面模块与设计模块的对接
十、描述结队的过程
十一、优缺点说明
一、项目地址
源代码的地址:https://git.coding.net/aendless/jieduizuoye.git
结对小组成员:张洪宇2016012092
谢月月2016012075
二、PSP表格
PSP | 任务内容 | 计划共完成需要的时间(min) |
Planning | 计划 | 30 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 20 |
Development | 开发 | 1000 |
Analysis | 需求分析 (包括学习新技术) | 480 |
Design Spec | 生成设计文档 | 40 |
Design Review | 设计复审 (和同事审核设计文档) | 40 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 50 |
Design | 具体设计 | 40 |
Coding | 具体编码 | 720 |
Code Review | 代码复审 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 60 |
Report | 报告 | 200 |
Test Report | 测试报告 | 120 |
Size Measurement | 计算工作量 | 50 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 40 |
三、接口设计
Information Hiding是指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他信息隐藏,也叫数据隐藏。简单地说,信息隐藏就是将秘密信息隐藏于另一非保密的载体之中,载体可以是图像、音频、视频、文本,也可以是信道,甚至编码体制或整个系统。模块来说,是不可访问的。信息隐藏的方法主要有隐写术、数字水印技术、可视密码、潜信道、隐匿协议等。
Interface Design,原意是指面向抽象协议编程,实现者在实现时要严格按协议来办。面向对象编程是指面向抽象和具象。抽象和具象是矛盾的统一体,不可能只有抽象没有具象。一般懂得抽象的人都明白这个道理。 但有的人只知具象却不知抽象为何物。 所以只有interface没有实现,或只有实现而没有interface者是没有用的的。
Loose Coupling系统通常是基于消息的系统,此时客户端和远程服务并不知道对方是如何实现的。客户端和服务之间的通讯由消息的架构支配。只要消息符合协商的架构,则客户端或服务的实现就可以根据需要进行更改,而不必担心会破坏对方。
四、计算模块与接口的设计与实现
这个是修改以前的模块
这个是修改以后的模块
首先我们通过Main类对整体的结果进行输出,在计算模块这个部分当中,我们先生成随机数和算数符,再进行单个的计算,然后进行多个的计算,在这个过程中,会对运算符、优先级等进行判断,然后再通过IO对结果进行输出,并判断对错。
计算模块当中的类:
Main类:对整体计算的结果进行输出
IO:
anwser类:对最后输出的答案进行判断设计
shuchu:对输出进行设计
Jisuan:
creat类、creat2类、creat3类:通过这三个类对这个计算进行创造
dangejisuan类:从计算式当中最简单的式子进行设计,县创造一个最简单的式子
jisuanshi类:对计算的式子进行设计,在这个过程中会对运算符、数字进行判断
pinjie类:对单个与计算式等进行拼接
entity:
Chuandi类:
duicuo类:对算数结果和做的代码计算的结果进行判断
SuiJiShu类:对生成的随机数范围等进行判断
YunSuanFul类:对运算符优先级和出现重复等进行判断
五、计算模块接口部分的性能改进
性能分析的这个软件是我接触到的一个全新的软件。之前对于自己的代码,我从没想过对它进行各方面的全面分析。而我通过这个软件学会了如何对自己的代码进行分析。首先我在eclipse当中配置了jprofiler的小插件,然后通过一段代码将我的原有的项目的分析呈现到jprofiler当中,首先第一个图是我们总的概观,也是我们最初先在jprofiler看见的内容,它从CPU等各个方面分析了代码。
这个图书最开始对各个classes进行分析的图,反应了各个classes最初在代码中运用情况
这个是截取的中间某个小阶段中classes的变化情况,可以看出各个时间段classes的运用情况,比较出各个classes的运用次数的多少
这个是最终的状态,可以看出和最开始许多的classes的运用发生了明显的变化。
六、计算模块的单元测试
下面是我们对代码的单元测试的覆盖率的一部分,从这个方面,我们做得还有一些不足,需要改进的地方还有许多,覆盖率有一部分没有达到90%这是我们代码做的不足的地方,由于我们两个的代码能力都不是很好,所以这方面我们还有待提高,在之后的学习中,我会提高自己这方面的能力。
七、计算模块部分异常处理说明
1、在编码的过程中,由于我们电脑的版本问题,从他那拿过来的代码就开始进行报错,出现异常,在这过程中,我就开始根据异常说明进行修改,但是并不能修改正确,后来我就尝试改了几次,最后消除了错误,例如:set<string> set=new hashset<>就会在我的电脑上出现异常,最后我改为set<string> set= hashset<>,然后它消除了异常,能够正常显示
2、在编程的过程中,我尝试改变参数的时候也出现异常,比如,我改变出题范围的时候,在运行之后,它输出文件出错的形式,最后我在主函数中,将出题范围进行了设定等过程,它才没有报错。
3、在将他的代码导入到我的电脑时,出现了代码基本上都报错的情况,如下图:
后来我查找了相关资料才知道,是由于我重新下载了最新版的eclipse,没有配置jdk、tomcat等出现的问题,按照网上的操作步骤,我又在自己的新版的eclipse里面配置了他们
但在配置tomcat的过程中我发现了自己的eclipse没有server,或者server中没有tomcat,在这过程中花费了许多时间来修改。
4、在出结果的过程中,我输入100道题,只出了3道题,但后来试了几次又正常了,我想这是不是这个代码出现了一个小小的bug而已
八、界面模块的详细设计过程
通过上面的界面,我们科进行题目的设置,和做题
九、界面模块与设计模块的对接
十、描述结队的过程
我们两个水平都不算高,结对项目遇到了很多挫折,我的队友很努力的在完成作业,我由于一些原因做的贡献很少,比较抱歉。首先,我们先进行了讨论,然后我们分了工,他进行web的前端的设计,我做了后端的设计,但是对于单元测试这块,由于我的电脑的问题,没能做好,所以就没上传,最近两天我会努力补齐的。而且在这过程中1,我们学习了很多知识,如单元测试,性能分析等。
十一、优缺点说明
结对编程的优点:
1、在结对项目中,可以取长补短,也有很好的促进作用,既能督促我们学习新技术,也能促进我们更加的努力,还能和同学沟通交流。
2、结对项目可以在两个人的交流下,使项目更加的完美。
3、结对项目是一个很好的交流方式‘能促进同学之间的感情,又能使整个年级更加的充满朝气,凝聚力。
结对编程的缺点:
在这次编程中,我们两个沟通比较少,前期我们这是相对独立的做,结果在最后发现这样会出现很多问题,刚开始的时候,将他的代码拷过来就报错,然后改了很久,才解决。后面也出现了许多问题,比如说代码异常、软件版本不符等
张宏宇的优点:
1、学习能力强,他能够在短时间内将一样新的技术运用到项目中,是十分值得我学习的
2、做事积极主动,而且比较有责任心,在这次结对项目中,他在我有问题的时候,积极的帮我解决,而且在做项目的过程中,比较积极的去完成
3、能为他人着想,他昨天在我出现问题时,主动的揽下我的活,开始完成我们的结对作业,但是我们未完成的作业的内容太多,以至于我们没能及时的完成,下次我们会尽量在前期就沟通好,不会出现后期压力大的现象
他的缺点:自制力差
我的优点:有耐心
我的缺点:技术能力不足,有很多的技术没有掌握,做结对作业的时候太拖沓,学习能力比较差
十二:PSP表格
SP |
任务内容 |
实际时间(min) |
Planning |
计划 |
75 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
45 |
Development |
开发 |
3000 |
Test |
测试 |
200 |
Algorithm Optimization |
算法优化 |
200 |
Interface Design |
接口设计 |
300 |
Coding Standard |
代码规范 |
300 |
Design |
具体设计 |
120 |
Coding |
具体编码 |
800 |
Code Review |
代码复审 |
100 |
Test |
测试 |
200 |
Reporting |
报告 |
30 |
Test Report |
测试报告 |
120 |
Size Measurement |
计算工作量 |
30 |
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
120
|