结对项目

北城余情 提交于 2020-01-26 03:53:59

写在最开始:

         在这里我想特别感谢我的搭档,王玉同学,如果没有同伴,我估计已经进精神病院了。

         首先不得不说,两个搞前端的菜鸡结对绝对是个错误。当我们大眼瞪小眼地看着报错信息的时候,我感到了绝望。后端知识的匮乏导致时间不协调,前端都没做好。

而写着博客的我,现在依然是崩溃的,短短两周,学了GUI,学了数据库,但是依然不够,毕竟智商这东西,我发现它是学不来的。

这次作业让我感觉到清明节应有的悲伤。在此祭奠我逝去的头发和脑细胞。

一、    代码地址

1、 coding.net地址:https://git.coding.net/sikiqk/teamworkassis.git

 

2、 url测试地址:http://localhost:8080/index.jsp

二、psp表格

PSP2.1

任务内容

估计需要完成的时间

(张慧)(min)

估计需要完成的时间

(王玉)(min)

Planning

计划

30

30

·        Estimate

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

30

30

Development

开发

300

300

·        Analysis

·         需求分析 (包括学习新技术)

120

120

·        Design Spec

·         生成设计文档

20

20

·        Design Review

·         设计复审 (和同事审核设计文档)

0

0

·        Coding Standard

·         代码规范 (为目前的开发制定合适的规范)

45

45

·        Design

·         具体设计

90

90

·        Coding

·         具体编码

360

360

·        Code Review

·         代码复审

60

60

·        Test

·         测试(自我测试,修改代码,提交修改)

240

240

Reporting

报告

60

60

·         Test Report

·         测试报告

0

0

·         Size Measurement

·         计算工作量

24*2

24*4

·         Postmortem & Process Improvement Plan

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

120

120

 

三、Information Hiding, Interface Design, Loose Coupling

 对于面向对象的程序设计而言,信息隐藏是一种重要的软件开发手段,它与对象的封装(encapsulation)与模块化(modularity)密切相关。在我看来,信息隐藏使得一个类把复杂的、敏感的、一旦被外界捕获可能会引起不良后果的内容封装在自身内部,这个类以外的代码得不到此类信息(通过反射等手段可能对得到),以提高程序的安全性与健壮性。

资料链接:https://blog.csdn.net/gongchuangsu/article/details/53895916
interface design与loose coupling
我个人感觉,这两个概念是相辅相成的,后者是前者的目的,前者是后者的实现手段。  面向接口编程是软件工程领域常用的设计手段,这对于一个团队而言,也是非常重要的,在做一个团队项目时,有人可能负责领域模型M(Model),有人负责前台V(View),有人负责业务逻辑C(Controller),在这种MVC的设计模式驱动下,我们首先想到的就是:定义一套公共的接口,方便各个模块之间的通讯。面向接口的程序设计思想是一种有效的手段。比如一个做业务逻辑的Team,他们并不清楚业务数据的CURD实现,但他们只要通过面向于数据组提供的一整套接口进行编程即可,同时,数据组的开发可以并行进行,这样,不需要等待一个模块的完成就可以预先“使用”这个模块,极大的提高了团队的效率
而对于loose coupling(松耦合),它现在几乎已经与interface design等价了,很多项目中,loose coupling就是interface design,虽然向Spring等模块提供了IOC(Inverse of Control)等更高端的方法,但这些还是基于面向接口编程的。
资料链接:https://www.cnblogs.com/magiccode1023/archive/2012/10/23/2736257.html

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

session变量有:fanwei(出题范围)、tishu(题目数)。

index.jsp从用户获得fanwei、tishu和题目类型,传到xuanze.jsp进行处理,xuanze.jsp将fanwei和tishu设为全局变量,并根据题目类型重定向到ZSAssis.jsp、YSCFAssis.jsp或KHAssis.jsp,三个页面接收题目数和出题范围输出题目并用eval()函数进行计算,并记录页面时间,将正确结果和用户答案储存在数据库中并分别比较,得到正确题目数并设为全局变量,在result.jsp中反馈给用户正确题目数和答题时间。


(1)    介绍求最大公约数与最小公倍数的方法的博客连接:https://blog.csdn.net/tingzhiyi/article/details/52058710
(2)    介绍检测输入的重复数据博客链接:
https://blog.csdn.net/carolcoral/article/details/78745159

6)计算模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。只需要测试命令行部分,且该部分覆盖率到90%以上,否则单元测试部分视作无效。(6')

单元测试与覆盖率https://www.cnblogs.com/xiongmaopanda/p/3314660.html

IntelliJ IDEA单元测试入门https://blog.csdn.net/u011138533/article/details/52165577

单元测试流程(使用IntelliJ IDEA)

1、        创建新的项目

2、        创建一个新的类用于测试()

3、        创建测试源根目录

4、        创建一个测试类(IntelliJ IDEA提供了一个快捷操作Cmd + Shift + T作为类和测试之间的导航。同时允许用户在那里创建一个测试类。)

选择JUnit 4作为单元测试库。IntelliJ IDEA将提供到件这个库添加到模块中。

5、        运行测试(可以通过右键菜单在这个类上运行'MyClassTest'来进行测试)

6、        收集覆盖(运行覆盖收集覆盖率,需要通过Run → Run 'MyClassTest' with Coverage或工具栏上的选项运行特定模式的测试。)

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

 

8)界面模块的详细设计过程。在博客中详细介绍界面模块是如何设计的,并写一些必要的代码说明解释实现过程。(5')

界面展示

Login界面

 

 

通过连接数据库,验证用户登陆。数据库名:sizeyunsuan

Register界面

 

 

注册信息储存于数据库内。

四则运算生成器

 

 

 

输入题目数选择数值范围与题目类型,session成全局变量,有利于后面的开发。选择了题目的类型,分别进入不同的界面。我们分三个界面输出不同的运算类型。

 

答题界面

 

 

 

将题目和答案储存于数据库中,再进行对比得到正确的题目数,用js的setInterval函数编写计时器,记录用户从页面打开开始到提交题目所用的时间即为答题时间。

 

成绩界面

 

 

 

从全局变量session中获得答对题目个数和答题时间,反馈给用户。

 

 

 

九、界面模块与计算模块的对接。详细地描述UI模块的设计与两个模块的对接,并在博客中截图实现的功能。(4')

在前端页面中嵌入后端代码,没有模块化,没有对接。

 

十、结对照片

 

 

十一、说明结对的优缺点

优点

(1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。

(2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。

(3)在企业管理层次上,结对能更有效地交流,相互学习和传递经验,能更好地处理人员流动。因为一个人的知识已经被其他人共享。

(4)结对编程的过程也是一个互相督促的过程,每个人的一举一动都在别人的视线之内,所有的想法都要受到对方的评价。由于这种督促的压力,使得程序员更认真地工作。结对编程“迫使”程序员必须频繁地交流,而且要提高自己的技术能力以免被别人小看。

(5)结对编程让两个人所写的代码不断地处于“复审”的过程。复审是不断地审核,提高设计和编码质量的过程,这样能够及时地发现问题和解决问题,避免把问题拖到后面的阶段。

(6)结对编程中驾驶员和领航员的互换可以让程序员轮流工作,从而避免出现过度思考而导致观察力和判断力下降。

缺点

(1)结对编程是一个相互学习、相互磨合的渐进过程。开发人员需要时间来适应这种新的开发模式。刚开始的结对编程很可能不比单独开发效率更高。

(2)如果团队的人员要在多个项目中工作,不能充分保证足够的结对编程时间,那么成员要经常处于等待的状态,反而影响效率。

(3)当两个人的技术水平或经验不均衡的时候,那么水平较弱或缺乏经验的一方往往会成为旁观者,或者需要对方给予一定的讲解,这无疑拖延了编程的进度。

(4)当其中一人希望独自思考一段时间时,有可能会被认为是一种不合作的表现。

评价

姓名

张慧

王玉

 

优点

学习努力刻苦呕心沥血

乐观

在崩溃中容易找到希望

容易沟通交流,容易合作

鸡汤本人,在队友几欲想放弃的崩溃边缘用鸡汤解救队友,告诉她,分不重要,学到东西最重要。

态度积极热爱学习

缺点

容易崩溃

编程经验不足

 

 

 

12)在你实现完程序之后,在附录提供的PSP表格记录下你在程序的各个模块上实际花费的时间。(1')

PSP2.1

任务内容

实际需要完成的时间

(张慧)(min)

实际需要完成的时间

(王玉)(min)

Planning

计划

20

20

·        Estimate

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

0

0

Development

开发

1200

1200

·        Analysis

·         需求分析 (包括学习新技术)

360

660

·        Design Spec

·         生成设计文档

60

60

·        Design Review

·         设计复审 (和同事审核设计文档)

0

0

·        Coding Standard

·         代码规范 (为目前的开发制定合适的规范)

90

90

·        Design

·         具体设计

360

360

·        Coding

·         具体编码

1200

1200

·        Code Review

·         代码复审

600

600

·        Test

·         测试(自我测试,修改代码,提交修改)

1200

1200

Reporting

报告

30

90

·         Test Report

·         测试报告

0

0

·         Postmortem & Process Improvement Plan

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

90

90

 

 

 

如何用eclipse生成jar exe文件

https://blog.csdn.net/luoweifu/artic

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!