201671010435-王潇-软件工程结对项目

  • 博客任务
任务1要给出所点评作业的博客、github链接地址,点评内容和点评心得
任务2需要给出结对项目源码在Github的仓库主页链接地址;
任务3博文作为结对项目实施过程的文字资料,请完整包含下面7个部分:



  • 作业互评
点评的博客地址https://www.cnblogs.com/jessiyx/p/10506954.html
github链接地址https://github.com/jessiyx/jessiyx
评论与心得这位同学非常清楚的将实验的内容清楚的展现出来,并且该实现的功能基本上都实现了出来,思路清晰明了,结构清晰易懂,感觉是下足了功夫的,该同学的学习态度值得学习,但是就是柱状图的功能还没有完全的实现,总体非常不错,值得学习和借鉴。



  • 实验目的与要求
项目内容
软件工程任课教师博客主页链接
作业要求 作业链接地址
课程学习目标熟悉软件开发整体流程,提升自身能力
本次作业在哪个具体方面帮助我们实现目标第一次体验一个完整的工程





  • 需求分析
    • 实验2要求的功能;
    • 单词频数可视化柱状图要求是以下样式:


      1614543-20190402132426359-189067773.jpg
    • 统计该文本行数及字符数;
    • 各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
    • 可处理任意用户导入的任意英文文本;
    • 人机交互界面要求GUI界面(WEB页面、APP页面都可);
    • 附加功能:统计文本中除冠词、代词、介词之外的高频词;
    • 附加功能:统计前10个两个单词组成的词组频率。
  • 软件设计(类图表示)


  • 核心功能代码展示
    • 统计每个功能运行的时间:
    while (num != 0) {
              switch (num) {
              case 1:
                  long startTime1=System.currentTimeMillis();
                  Find rs = new Find();
                  rs.find(wordsCount);
                  long endTime1=System.currentTimeMillis();
                  double time1=(endTime1-startTime1)/1000;
                  //long time1=endTime1-startTime1;
                  System.out.println("功能1实现的运行的时间为:"+time1+"秒");
                  break;
              case 2: 
                  long startTime2=System.currentTimeMillis();
                  Valuesort vs = new Valuesort();
                  vs.valuesort(wordsCount);
                  long endTime2=System.currentTimeMillis();
                  long time2=endTime2-startTime2;
                  System.out.println("功能2实现的运行的时间为:"+time2+"毫秒");
                  break;
              case 3: 
                  //实现统计每一行的单词数量
                  long startTime3=System.currentTimeMillis();
                  SortWords sortword=new SortWords();
                  sortword.SortWords();
                  long endTime3=System.currentTimeMillis();
                  long time3=endTime3-startTime3;
                  System.out.println("功能3实现的运行的时间为:"+time3+"毫秒");
                  break;
              case 4: 
                  //实现统计文本文档的行数
                  long startTime4=System.currentTimeMillis();
                  //EnterCount ec=new EnterCount();
                  //ec.
                  EnterCount entercount=new EnterCount();
                  entercount.enterCount();
                  long endTime4=System.currentTimeMillis();
                  long time4=endTime4-startTime4;
                  System.out.println("功能4实现的运行的时间为:"+time4+"毫秒");
                  break;
              }
              System.out.println("再次选择想要了解的:");
              num = in.nextInt();
              if (num > 2) {
                  System.out.println("请输入正确问题序号");
              }
          }
    
      }
    • 统计文档的行数和字符数:
try{
            if(file.exists()){
                FileReader fr = new FileReader(file);
                LineNumberReader lnr = new LineNumberReader(fr);
                int lineNum = 0;
                    while (lnr.readLine() != null){
                    lineNum++;
                    }
                    System.out.println("该文本文档的总行数为 : " + lineNum);
                    lnr.close();
            }else{
                 System.out.println("File does not exists!");
            }
        }catch(IOException e){
            e.printStackTrace();
        }


while((line = reader.readLine()) != null)
        {
            if(line.equals(""))
            {
                paragraphCount++;
            }
            if(!(line.equals("")))
            {
                
                characterCount += line.length();
                
                // \s+ is the space delimiter in java
                String[] wordList = line.split("/s+");
                
                countWord += wordList.length;
                whitespaceCount += countWord -1;
                
                // [!?.:]+ is the sentence delimiter in java
                String[] sentenceList = line.split("[!?.:]+");
                
                sentenceCount += sentenceList.length;
            }
            
        }


  • 程序运行(功能界面截图)

人机交互界面首页.
1614543-20190402194249301-161495558.png

细节功能.
1614543-20190402194322486-2023448910.png

页面设计.
1614543-20190402194343759-1677587437.png

实现的功能.
1614543-20190402194355908-396917304.png

功能实现结果.
1614543-20190402194406948-1817513339.png


  • 描述结对的过程,提供两人在讨论、细化和编程时的结对照片

1)结对编程
结对编程场景:两位学习伙伴坐在一起,面对着同一台显示器,使用着同一键盘,同一个鼠标,他们一起思考问题,一起分析问题,一起编写程序。

1614543-20190402125636557-782816009.jpg


  • PSP描述


PSP2.1任务内容计划共完成需要的时间(min)实际完成需要的时间(min)
Planning计划3060
· Esitimate估计这个任务需要多少时间,并规划大致工作步骤200400
· Development开发200300
· Analysis需求分析(包括学习新技术)6050
· Design Spec生成设计文档2015
· Design Review设计复审(和同事审核设计文档)1515
· Coing Standard代码规范(为目前开发制定合适的规范)2020
· Design具体设计2030
· Coding具体编码200300
· Code Review代码复审79
· Test测试(自我测试,修改代码,提交修改)1725
· Reporting报告1015
· Test Report测试报告1522
· Size Measurement计算工作量21
· Postmortem&Process Improvement Plan事后总结,并提出过程改进计划32


  • 小结感受
    感受和体会:
    (1)两人合作真的可以大于每个人所付出的工作量和思考问题的能力,两人结对编程,不仅可以分配巨大的工作量,而且还可以将两个人人互看成需求人员,也就是用户,使得项目的需求分析能够更加的完整,需求更加详细。
    (2)另外对于两人结对编程不仅使得每个人锻炼了思考问题的能力而且可以锻炼团队如何合作的能力。对于这次结对合作,我觉得我学会了如何进行小团队之间进行合作,以及汲取队员的优秀之处,弥补自己的不足。所以两人合作我觉得是可以起到1+1大于2的作用。


转载于:https://www.cnblogs.com/wangxiaoLAUGH/p/10612561.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值