结对作业

一、结对作业(祁晨2016012057,王晓哲2016012052)项目地址:https://git.coding.net/lvgx/wsz.git

二、PSP:

PSP2.1

任务内容

计划共完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

15

15

Estimate

估计这个任务需要多少时间

并规划大致工作步骤

15

15

Development

开发

4225

5350

 Analysis

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

15

 20

Design Spec

生成设计文档

10

 10

Coding Standard

代码规范 

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

10

 15

Design

具体设计

25

45

 Coding

具体编码

4000

5000

Code Review

代码复审

45

60

 Test

测试

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

120

200

Reporting

报告

55

60

Test Report

测试报告

15

 15

 Size Measurement

计算工作量

10

 5

Postmortem & Process Improvement Plan

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

30

 40

 三、说明在结对编程中是如何利用这些方法(Information Hiding, Interface Design, Loose Coupling)对接口进行设计的?

       通过查询资料了解到 information-hiding(信息隐藏):采用MATLAB实现图像信息隐藏。将文本信息,通过DCT和LSB算法嵌入到二维图像中实现信息隐藏。 interface_design(接口设计):提供给其他模块或者系统使用的一种约定或者规范。Loose Coupling(松散耦合):意味着DM系统将使用DB或DW系统的某些设施,从这些系统管理的数据库中提取数据,进行数据挖掘,然后将挖掘的结果存放到计算机中。

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

       在模块接口的设计与实现过程中,我们两人在编程时一共用了7个类和9个函数。

        其中Main函数作为程序执行的起点,程序是从main函数开始执行的,从而负责接收参数判断参数是否合法。

       在我们的程序中,Operation类是生成并计算不带括号的式子,Operation1类是生成带括号并且带乘除的式子,Operation2类是生成并计算带括号只带加减的式子。

       并且在GUI(图形用户界面指采用图形方式显示的计算机操作用户界面)中,我们分别使用了复选框监听器和按钮监听器。复选框监听器,创建复选框按键,并设置快捷键和选定, 并且设置一个panel,将复选框放入同一个panel,最后添加复选框的监听事件。按钮监听器,定义为静态变量以便main使用,该面板用来放置按钮组件,定义按钮组件,新建按钮,添加按钮到面板。

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

        从目前完成进度来说,我们这次作业完成度只有百分之六七十左右。毕竟能力有限,而且编程这种技术性极高的能力也不是一朝一夕能够加强的。但在之后补充时,我们花费了4个小时左右,在此我们还界面程序的性能进行分析,和优化,改进,尽量减少除法中随机数,以减少代码因随机数生成的无效循环,按F4再一次查看,内存占用率明显减少,但是仍有内存没释放,我们会继续改进的。

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

      在此次项目中,对五个类进行了测试,采用结合或者独立的测试方法,下面是代码覆盖率的展示;

      1、Operation1生成带括号并且带乘除的式子:
 
      2、GUi界面

      3、Judge判断括号的优先级

     4、Operationa2生成并计算带括号只带加减的式子

     5、Choose简单的加减乘除

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

       1、判断输入的出题数、运算符个数、范围等是否合法或者超出其范围(展示了对数的范围的处理,代码结果如下)

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

        2、文件处理异常:点击出题时,如果文件生成错误,将不再生成。

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

八、界面模块的详细设计过程:使用GUI设计该程序出题、答题界面

public static void main(String[] args) {
     Gui frame=new Gui();
     frame.pack();
     frame.setSize(500, 300);
     frame.setLocationRelativeTo(null);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
     frame.setVisible(true);
    }

九、界面模块与计算模块的对接:GUI按钮监听器

       1、出题界面:通过按钮监听器——出题按钮实现

          2、做题界面:通过按钮监听器——下一题按钮实现,并且在此按钮下进行判断、继续出题,最重要的是根据此按钮调用统计界面

         3、最终界面:通过按钮监听器——提交按钮实现,出现最终页面,展示做题总数、正确数以及你所用的时间,并且在下面展示整个卷面

十、描述结对的过程

       我(祁晨)与我结对作业的队友(王晓哲)是同一个寝室的室友,因此我们在老师发布这个作业的时候,就不约而同的选择了对方。因为是室友,所以我们在一起的时间比较多,对于这次作业的讨论与交流也会比较方便。由于我的项目经验不足,所以此次项目中的结构框架、所用的技术等等都是由我的队友主要负责,而我就负责对于项目的测试,以及一些简单的编码。

 

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

        现代软件产业经过几十年的发展,一个软件由一个人单枪匹马完成,已经很少见了,软件都是在相互合作中完成的。合作的最小单位是两个人,两个工程师在一起,做的最多的事情就是“看代码”,每个人都能看“别人的代码”,并发表意见。   ————《构建之法》第四章

       通过这次两人结对项目也让我亲身体会到了上面这句话的意思,并且在这次项目中也感受到了更多的道理。那么下面我就说一说我通过这次结对作业对结对编程的感受。

       结对编程的优点:提高了工作效率,一个编程项目从一个人变为两个人去完成,不仅减轻了每个人的工作负担,也提高了编程的效率。更多奇思妙想的碰撞,一个人的想法也许比较单一,但是有两个人合力去思考就会发现一条与众不同的道路。编程氛围变得有趣,一个人的枯燥不见了,取而代之的是两个人的彼此鼓励与交流,出现任何的负面情绪也不再孤单,有人去倾听你的烦恼,你也能够帮助你的队友解决忧愁。

        结对编程的缺点:奇思妙想的碰撞容易摩擦出火花,每个人的思考不同,很有可能对彼此的意见产生疑问与抗拒。并且每个人的编程习惯不同,如果不能很好地融合就会导致彼此的代码之间出现间隙。最重要的是,有了队友之后自己容易出现依赖心理,全权依靠队友自己什么事情都不做。从而,导致工作效率降低,甚至项目无法完成。

十二、指出结对的每一个人的优点和缺点在哪里 (要列出至少三个优点和一个缺点)?

      1、 队友优点:工作能力超强,对于她的part总是完成的及时并且有质量;十分勤奋,对于她不懂的问题肯花时间、费心思的去查阅资料和询问老师同学;很有自己的想法,对于项目的每一步都有思考。 

            队友缺点:过于细致。

       2、自身优点:队友安排的工作尽全力完成;能够及时与队友沟通交流自己的想法与问题;气氛担当。

             自身缺点:缺乏项目经验,无法给予队友更多的帮助。

posted @ 2018-04-10 08:17  晨子  阅读(220)  评论(1编辑  收藏  举报