码迷,mamicode.com
首页 > 其他好文 > 详细

结对项目报告

时间:2018-04-10 10:54:52      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:padding   details   结构   esc   col   ros   学习   我的小伙伴   单元   

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

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

各个模块的主要功能:

将一些关于数据库的操作写到sql包中;jsp有三个,第一个是选择界面(选择一些简单的参数,例如整数或者分数,出题数据范围,算式运算符个数,式子个数等等),将这些参数传到第二个jsp中,在第二个jsp得到用户输入的参数,并且生成相应的算式题目,在第三个jsp中判断对错,在jsp中调用包中的类,直接使用.java中的分数整数类,在一些数据库操作中也是直接调用封装好的sql包中函数,来实现连接数据库,插入数据等操作

接口实现代码如下:

import java.util.HashMap;

import java.util.Map;

 

publicclass Main {

publicstaticvoidmain(String[] args)

  {

long st = System.nanoTime();

if(args.length < 1)

  {

  System.err.println("Please set the file name.");

  }

  IOController controller =newIOController(args[0]);

  WordCounter wc =newWordCounter();

  String line;

while((line = controller.readLine()) != null)

  {

  wc.countWord(line);

  }

  System.out.println(wc.countList.entrySet());

  controller.writeFile(wc.countList);

  System.out.println((System.nanoTime()-st) / 1e9);

  }

} 

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

技术分享图片

技术分享图片 

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

技术分享图片

技术分享图片

代码覆盖率:

技术分享图片

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

1.输出值异常

:技术分享图片

2.运算符异常

技术分享图片

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

将一些关于数据库的操作写到sql包中;jsp有三个,第一个是选择界面(选择一些简单的参数,例如整数或者分数,出题数据范围,算式运算符个数,式子个数等等),将这些参数传到第二个jsp中,在第二个jsp得到用户输入的参数,并且生成相应的算式题目,在第三个jsp中判断对错,在jsp中调用包中的类,直接使用.java中的分数整数类,在一些数据库操作中也是直接调用封装好的sql包中函数,来实现连接数据库,插入数据等操作

系统结构图:

技术分享图片

预计实现的界面:

技术分享图片

 

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

技术分享图片 技术分享图片

以下是部分js代码展示:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<
String path = request.getContextPath
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
<%@ page language="java" import="java.util.*" import ="java.sql.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@page import="entity.*"%>
<%@page import="sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>判断答案</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
    <%
    request.setCharacterEncoding("utf-8");
        Statement stmt=null;
        Connection con=null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://127.0.0.1/web_number","root","baohui");
            stmt=con.createStatement();
            //out.print("数据库连接成功");
            //out.print("<p>");
        }
        catch(Exception e)
        {
            out.print(e);
        }
    
    //Sql.lianjie();
    String sql="select * from web";
    ResultSet rs=stmt.executeQuery(sql);
        for(int i=0;i<10;i++)
        {
            //sql语句执行
            int number=0;
            String shizi=null;
            String jieguo=null;
            if(rs.next())
            {
                number=rs.getInt("number");
                shizi=rs.getString("shizi");
                jieguo=rs.getString("jieguo");
            }
            
            //进行比较,判断对错
            out.print(shizi+"=    ");
            String  name=request.getParameter("name"+i);
            out.print(name);
            String name1=jieguo;
            
            if(name.equals(name1))
            {
                out.print("        ");
                out.print("<font color=greeen face=楷体>正确</font>");
            }
            else
            {
                out.print("        ");
                out.print("<font color=red face=楷体>错误</font>");
            }
            out.print("<p>");
        }
        stmt.close();
        con.close();
     %>
  </body>
</html>

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

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

技术分享图片

十 一、结对项目优缺点

结对的优点:

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

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

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

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

结对的缺点:

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

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

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

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

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

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

最后总结:

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

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

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

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

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

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

结对项目报告

标签:padding   details   结构   esc   col   ros   学习   我的小伙伴   单元   

原文地址:https://www.cnblogs.com/mrxueren/p/8766719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!