201671030119 唐盖强《英文文本统计分析》结对项目报告

项目 内容
这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学)
这个作业的要求在哪里 实验四 软件工程结对项目
课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程。
2.掌握Github上增量发布软件的操作方法。
本次作业在哪个具体方面帮助我们实现目标 第一次体验完整的工程

任务1:两两自由结对,对结对方的《实验二 软件工程个人项目》的项目成果进行评价:

  • 点评:
    • 点评201671030106 词频统计软件项目报告
    • 结对方Github
    • 博文编写格式十分符合任务要求,这点值得我们学习。在PSP中,任务预计完成时间和实际完成时间差距最大的是开发,这也是很多人开发项目会遇到的,开发是一个项目最重要的部分,需要我们很缜密的去思考,明确需求,进行具体设计以及编码测试。其中,具体编码的时间差又是较大的,主要原因应该就是博主在总结中提到的对java编程的不熟悉造成的。
      运行博主的程序后,程序以命令行方式执行,程序结构较清晰,但代码的规范性还需要再改进,对任务要求的实现不是很完整,只完成了三个部分,希望博主有时间的话去完善下这个项目。
    • 阅读心得:阅读201671030106 词频统计软件项目报告 后,我认真的反思了我博文的不足,其项目报告博文中的格式、信息量、排版等方面很完整,我需要向其学习。以后的博文编写会更加用心的。

任务2:开发英文文本统计分析软件:

  • 项目源码仓库

  • 需求分析:
    (1)程序可输出文本单词及对应的词频数;
    (2)可查看并输出指定单词的单词及词频数;
    (3)可将单词及词频存入文件result.txt中
    (4)单词频数可视化柱状图要求是以下样式:
    (5)统计该文本行数及字符数;
    (6)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
    (7)可处理任意用户导入的任意英文文本;
    (8)人机交互界面要求GUI界面(WEB页面、APP页面都可);
    (9)附加分功能:统计文本中除冠词、代词、介词之外的高频词;
    (10)附加分功能:统计前10个两个单词组成的词组频率。

  • 软件设计:
    类之间的关系:

  • 核心功能代码展示:
    • 例:统计文本中除介词的高频词:
                            for(Entry<String,Integer> entry : aMap2.entrySet()) 
               { 
                       F=0;
                       for(int s=0;s<Preposition.length;s++)    /* 数组Preposition中存放介词*/
                       {
                           if(Preposition[s].equals(entry.getKey()))
                           { 
                               F=1;
                           } 
                       }
                       if(F==0)
                       {
                           text.append("单词: " +entry.getKey() + "      次数   :" + entry.getValue()+"\r\n"); 
                           count=count+1; 
                       }
                       if(count==Integer.parseInt(num.getText()))
                           break;
                   }
    • 统计文本行数与字符数:
                  StringBuffer sb1=  new  StringBuffer();
                  try {
                      String file1 =file_.getText();
                      BufferedReader in = new BufferedReader(new FileReader(file1));
                      while ((str = in.readLine())!= null) 
                      {
                          str = str.toLowerCase();
                          sb1.append(str);
                          line++;
                      }
                      text.append("文件行数  :  "+line  +"\n");
    
                      in.close();
                      String str2 = sb1.toString();
                      String[] wordsArr1 = str2.split("[^a-zA-Z]");  //过滤出只含有字母的  
                      for (String word : wordsArr1) 
                      {  
                          wordCount++;
                      } 
                      text.append("字符数  :"+ wordCount  + "\n");
                  } catch (IOException e1) 
                  {
                      e1.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
                  }
  • 程序运行结果:
    • 登陆界面:
    • 菜单界面:
    • 统计该文本行数及字符数:
    • 将单词及词频存入文件result.txt中
    • 查看并输出指定单词的单词及词频数:
    • 附加任务1:统计文本中除冠词、代词、介词之外的高频词:

  • 结对过程:

  • PSP:

PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 10 20
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 20 30
Development 开发 300 420
Analysis 需求分析(包括学习新技术) 120 100
Design Spec 生成设计文档 120 120
Design Review 设计复审 30 20
Coding Standard 代码规范(为目前的开发制定合适的规范) 10 8
Design 具体设计 90 120
Coding 具体编码 120 180
Code Review 代码复审 30 35
Test 测试(自我测试,修改代码,提交修改) 30 40
Reporting 报告 60 70
Test Report 测试报告 20 25
Size Measurement 计算工作量 20 20
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 20 30
  • 总结:
    在这次项目设计中,我感受到了结对编程的优秀,它极大的提高了我们项目的进度。结对编程的优点在于两个人合作,一人编程,一人观察程序的正误,这样使程序的错误率大幅度的降低。结对编程对于开发人员也是很有帮助的,这一点我深有体会,在定义有歧义的变量或无用变量时,观察者总是可以发现,进而改变我编程的一些不好的习惯。完美诠释了“当局者迷,旁观者清”这句话。结对编程对我的编程很有帮助,以后会经常使用。而此次项目设计中遗憾的是在项目的实现中,柱状图和计时功能由于时间和技术原因,没能实现。

猜你喜欢

转载自www.cnblogs.com/tanggq/p/10641988.html