结对项目作业
写在最开始:
在这里我想特别感谢我的搭档,张慧同学,她没有因为我什么都不会而嫌弃我。一直告诉我说,成绩不重要,重要的是学到东西了。
提交了这次作业之后,我想我就应该去理发店找tony老师了,这样下去,头发不剪,也会掉光的。
这次作业发布于3月27日,到它的截止日期中间包括了一个周末与一个清明小长假。在这段期间里,我完成了week4个人作业与团队作业。等我完成了这两份作业我发现,已经没有几天可以供我来做这份结对作业了。在这里,说句实话,这个项目,这么短的时间,我是做不出来的。我的队友一直给我鼓励,告诉我,学到东西就好。如果没有她,我可能早都放弃了这次作业。到今天,这个时候我才开始写博客,每次到了deadline都觉得自己筋疲力尽。就本次作业来说,我们项目的完成度是远远不够的但我想就我学到的,跟我们项目已经完成的地方写下来。
只要有学到东西,我觉得就很开心了。
一、代码地址
1、 coding.net地址: https://git.coding.net/sikiqk/teamworkassis.git
2、 url测试地址:http://localhost:8080/assistant/login.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
引用于:http://www.bubuko.com/infodetail-1129041.html
Information Hiding 信息隐藏
信息隐藏(Information hiding)是程序设计过程中的一种隔离原则,可以防止用户接触到一个类的某些部分。一个程序模块可以将它的信息隐藏起来,对外仅仅展现出一种接口。当这个模块的具体实现发生改变时,只要保证它的接口不发生变化,则就算不修改模块外的其他代码,程序依旧可以正确执行。这种接口的设计保证了整个工程的稳定性。
信息隐藏体现了面向对象编程中的封装原则,在具体的实现过程中可以用以下方式实现:
1 多层设计中的层与层之间加入接口层;
2 所有类与类之间都通过接口类访问;
3 类的所有数据成员都是private,所有访问都是通过访问函数实现的;
Interface design 接口设计
界面设计能够使得软件的交互更为人性化,同时使得软件更易于使用。在设计交互界面时,应当充分考虑程序的合法输入以及用户的需求。
Loose Coupling 松耦合
松耦合降低了软件在结构上的相互依赖程度,通过以接口的方式实现软件模块间的调用使得部分模块在发生改变时软件的其他部分可以保持不变。为了实现松耦合可以编写专门的接口类,降低不同类之间的耦合度。
四、计算模块接口的设计与实现过程。
public String shengcheng(int fanwei1)//自动生成数的函数
public String shuchu()//定义输出函数
public String jisuan(int a,int b,int c,int d,int m)//计算结果的函数
public int Gongbei(int a,int c)//求最小公倍数的函数
public int Gongyue(int gongbei,int s3)//求最大公约数的函数
public int jianyan(String a[],int l)//检验是否生成重复计算式的函数
public String shengcheng(int fanwei1)//定义生成函数
public String shuchu()//生成输出函数
public int jianyan(String a[],int l)//检验是否重复的函数
(1) 介绍求最大公约数与最小公倍数的方法的博客连接:https://blog.csdn.net/tingzhiyi/article/details/52058710
(2) 介绍检测输入的重复数据博客链接:
https://blog.csdn.net/carolcoral/article/details/78745159
但在项目中我们使用了eval()实现计算
五、计算模块部分单元测试展示。
有学到东西的博客:
单元测试与覆盖率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或工具栏上的选项运行特定模式的测试。)
六、界面模块的详细设计过程。
界面展示
Login界面
通过连接数据库,验证用户登陆。数据库名:sizeyunsuan
Register界面
注册信息储存于数据库内。
四则运算生成器
输入题目数选择数值范围与题目类型,session成全局变量,有利于后面的开发。选择了题目的类型,分别进入不同的界面。我们分三个界面输出不同的运算类型。
答题界面
将题目和答案储存于数据库中,再进行对比得到正确的题目数,用js的setInterval函数编写计时器,记录用户从页面打开开始到提交题目所用的时间即为答题时间。
成绩界面
从全局变量session中获得答对题目个数和答题时间,反馈给用户。
七、界面模块与计算模块的对接。
在前端页面中嵌入后端内容。
八、结对照片
九、说明结对的优缺点
优点
(1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。
(2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。
(3)在企业管理层次上,结对能更有效地交流,相互学习和传递经验,能更好地处理人员流动。因为一个人的知识已经被其他人共享。
(4)结对编程的过程也是一个互相督促的过程,每个人的一举一动都在别人的视线之内,所有的想法都要受到对方的评价。由于这种督促的压力,使得程序员更认真地工作。结对编程“迫使”程序员必须频繁地交流,而且要提高自己的技术能力以免被别人小看。
(5)结对编程让两个人所写的代码不断地处于“复审”的过程。复审是不断地审核,提高设计和编码质量的过程,这样能够及时地发现问题和解决问题,避免把问题拖到后面的阶段。
(6)结对编程中驾驶员和领航员的互换可以让程序员轮流工作,从而避免出现过度思考而导致观察力和判断力下降。
缺点
(1)结对编程是一个相互学习、相互磨合的渐进过程。开发人员需要时间来适应这种新的开发模式。刚开始的结对编程很可能不比单独开发效率更高。
(2)如果团队的人员要在多个项目中工作,不能充分保证足够的结对编程时间,那么成员要经常处于等待的状态,反而影响效率。
(3)当两个人的技术水平或经验不均衡的时候,那么水平较弱或缺乏经验的一方往往会成为旁观者,或者需要对方给予一定的讲解,这无疑拖延了编程的进度。
(4)当其中一人希望独自思考一段时间时,有可能会被认为是一种不合作的表现。
评价
姓名 |
张慧 |
王玉 |
优点 |
学习努力刻苦呕心沥血 |
乐观 |
在崩溃中容易找到希望 |
容易沟通交流,容易合作 |
|
鸡汤本人,在队友几欲想放弃的崩溃边缘用鸡汤解救队友,告诉她,分不重要,学到东西最重要。 |
态度积极热爱学习 |
|
缺点 |
容易崩溃 |
编程经验不足 |
十、在你实现完程序之后PSP表格
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文件