zoukankan      html  css  js  c++  java
  • 结对项目报告

    一、仓库地址:https://git.coding.net/Enther/newTeamwork.git

    二、预计PSP及实际PSP对比展示

     

    SP2.1

        Personal Software

           Process Stages

                Time

         SeniorStudent(h)

     Time

    SDE(h)

               Planning

                     计划

    5

          6

    Estimate

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

                          1

                       1

             Development

                      开发

                          200

                      240

               Analysis

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

                           98

                       130

             Design Spec

               生成设计文档

                            0.5

                        1.5

            Design Review

                   设计复审 

                             0

                        0

             Coding Standard

                   代码规范 

                            1

                        1.5

                 Design

                   具体设计

                            2

                        2.5

                 Coding

                   具体编码

                           93  

                       98

               Code Review

                   代码复审

                            2

                        5

                  Test

                      测试

                            1.5

                        2

               Reporting

                      报告

                            4         

                        6

    •  Test Report

                    测试报告

                            3

                       3.5 

    •  Size Measurement

                  计算工作量

                            1

                         1.5   

    • Postmortem& ProcessImprovement Plan

                    事后总结

           并提出过程改进计划

            1

    三、看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节收获

    (1)information hiding:看了这篇博客  https://blog.csdn.net/gongchuangsu/article/details/53895916 

    1. 隐藏复杂度:这样你就不用再去应付它,除非你要特别关注的时候;
    2. 隐藏变化源:这样当变化发生时,其影响就能被限制在局部范围内。复杂度的根源包括复杂的数据类型、文件结构、布尔判断以及晦涩的算法等等
    3. 信息隐藏的价值:信息隐藏有着独特的启发力,它能够激发出有效的设计方案。信息隐藏同样有助于设计类的公开接口。在设计的所有层面上,都可以通过询问该隐藏些什么来促成好的设计决策 养成问“我该隐藏些什么?”的习惯,你会惊奇的发现,有很多棘手的设计难题都会在你面前化解

    (2)Interface Design:运用接口编程,对出题模块和计算模块设计接口增强了程序的可扩展性,可维护性

    (3)Loose Coupling:Loose Coupling即松耦合,耦合程度越高,模块与模块之间的联系性就更高,系统的灵活性就越低,报错率就更高。我们在设计过程中尽可能地让算式的产生和计算,优先级判断相互独立,但是我们目前使用的算法还可能出现性能方面的不稳定性(一般出现在加减乘除带括号运算的情况中),在程序设计中将出题模块、计算模块、运算符判断模块等均封装到不同的方法中,降低程序的耦合度

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

    运用了GUI,代码中通过类之间的相互调用实现了相应的功能

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


     

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

    代码覆盖率:

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

    1.输出值异常

    :

    2.运算符异常

    八、界面模块的详细设计过程

    系统结构图:

    预计实现的界面:

     

    九、界面模块与计算机模块对接

    以下是部分GUI代码展示:

    private void language1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_language1ActionPerformed
    // TODO add your handling code here:
    language = 1;
    title1.setText("四则运算");
    //title1.setText("WELCOM TO USE THE SYSTEM");
    title2.setText("请输入出题数目:");
    title7.setText("输入范围:");
    title3.setText("语言");
    title4.setText("问题:");
    title5.setText("请输入答案:");
    title6.setText("正确答案!:");
    start.setText("出题");
    finish.setText("结束");
    }//GEN-LAST:event_language1ActionPerformed
    private void finishActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_finishActionPerformed
    // TODO add your handling code here:
    rightanswer.setText("");
    int correct = 0;
    int fault = 0;
    String[] anslist = enter2.getText().split(" ");
    for (int i = 0; i < Answer.size(); i++) {
    if (Answer.get(i).equals(anslist[i])) {
    correct++;
    rightanswer.append( "正确!答案是:"+Answer.get(i)+" ");
    } else {

    rightanswer.append( " 错误!正确答案是:"+Answer.get(i)+" ");
    fault++;

    }
    }
    String toDate = simpleFormat.format(new Date());
    try {
    to = simpleFormat.parse(toDate).getTime();
    } catch (ParseException ex) {
    Logger.getLogger(sizeyunsuan.class.getName()).log(Level.SEVERE, null, ex);
    }
    System.out.println((float) ((to - from) / (1000 * 60 * 60)));
    if (language == 1) {
    resultprintf.setText("答对" + correct + "题,正确率:" + (float) correct / (correct + fault) * 100 + "%,花费时间:" + (int) ((to - from) / (1000)) + "秒");
    } else if (language == 2) {
    resultprintf.setText("答對" + correct + "題,正確率:" + (float) correct / (correct + fault) * 100 + "%,花費時間:" + (int) ((to - from) / (1000)) + "秒");
    } else if (language == 3) {
    resultprintf.setText("Answer correct " + correct + "questions, correct rate:" + (float) correct / (correct + fault) * 100 + "%,Spend time:" + (int) ((to - from) / (1000)) + "s");
    }
    // for (int i = 0; i < Answer.size(); i++) {
    // Answer.remove(i);
    // anslist = null;
    }
    // }//GEN-LAST:event_finishActionPerformed
    private void startActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startActionPerformed
    // TODO add your handling code here:
    String num = enter1.getText();
    int n = 0;
    try {
    n = Integer.parseInt(num);
    } catch (NumberFormatException e) {
    if (language == 1) {
    resultprintf.setText("输入错误!请重新输入");
    } else if (language == 2) {
    resultprintf.setText("輸入錯誤!請重新輸入");
    } else if (language == 3) {
    resultprintf.setText("input error! please enter again");
    }
    }

    int m = (int) (Math.random() * n);//随机整数题目和分数题目的题量
    for (int i = 0; i < (n - m); i++) {//先随机出整数题型
    Random random = new Random();

    
    

    十、描述结对过程并提供照片

    描述结对过程: 对于此次结对项目,我们在互相进步在完成。由于时间之间不好协调,因此我们共同作业的部分不多,前后台我们没有很细致的分工。在一起作业的过程中,感觉不再是孤军奋战。在两个人思维碰撞中,共同努力完成此次作业

    十 一、结对项目优缺点

    结对的优点:

    1. 程中遇到困难时双方可以互相鼓励,这要比一个人闷头苦想好的多

    2. 相监督,避免了在做项目过程中有惰性

    3. 替写代码,既减少了产生的bug,两个人又不会很累,效率有所提高

    4. 彼此的团队协作和沟通交流的能力

    结对的缺点:

    1. 偶尔会出现分歧,会让效率下降

    2. 时间问题,我们两个人都有各自的时间课程安排,彼此进度不一致,两个人可以一起做项目的时间不多

    我(赵瑞雪)的优点:比较有耐心,曾过项目经验识,能出一些新颖的点子,合作过程中积极向上+乐观

    我(赵瑞雪)的缺点:我的选修课比较多,时间分配上更多是需要对方来配合我的时间

    王怡镔的优点:性格温和,做事踏实,善于合作,在写代码的过程中特别细心

    王怡镔的缺点:Java语言基础不是特别好

    最后总结:

    首先,我要谢谢我的小伙伴,因为她带给我学习过程中相互讨论相互学习的感觉,使我们都能投入到学习当中去,用我们共同的力量去寻求更好的解决问题的方法。通过结对学习,使我们之间受益匪浅。  两个人合作还可以发现多方身上的优点,找出自己身上的不足,并能相互监督让彼此变得更好,还可以彼此分享好的学习经验,所以我们认为两个人合作的效率远远大于一个人。在交流与学习的过程中,既掌握了知识,又学到了他人的一些思想与方法,这是我觉得本次实验中学到的最重要的东西!通过这次结对编程的经历我对编程也有了更进一步的了解:

    1. 每个人对编写代码的想法都是不同

    2. 对同一个问题(即使很小的问题)从多个角度思考,能有不同的认识

    4. 结对编程对程序的质量有明显的提升

    5. 在编写程序中多个人的想法、思路对程序功能有不同的实现方法

    通过这次编程,我觉得能够带来1+1>2的效果,之前一个人做的时候,遇到不懂得问题时,就会陷入迷茫。当两个人一起编程时,有不懂的还可以一起讨论,说出自己的意见,也为整个编程过程节约了时间,除此之外,两个人一起合作时就会产生更多更好的想法,可以更好的优化整个项目的设计,遇到问题时可以相互帮助解决问题,效率也比较高!

  • 相关阅读:
    virtmanager 的 internal error Cannot find suitable emulator for x86_64 错误
    django 判断mysql中的bit(1)
    eucalyptus volume 的一些创建流程以及理解
    将eucalyptus数据库更改为Mysql
    ftp虚拟用户添加
    通过shell读取mysql数据
    Java webservice
    axis2之webservice
    基础巩固(二) log4j的使用
    基础巩固(一)
  • 原文地址:https://www.cnblogs.com/mrxueren/p/8766719.html
Copyright © 2011-2022 走看看