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

本文档介绍了2016级计算机科学与工程学院软件工程课程中的结对编程项目经验,包括项目背景、需求分析、软件设计及实现等关键环节,并通过具体案例展示了结对编程的优势。
项目内容
这个作业属于哪个课程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个两个单词组成的词组频率。

  • 软件设计:
    类之间的关系:
    1619949-20190402203717995-1767248515.png

  • 核心功能代码展示:
    • 例:统计文本中除介词的高频词:
                            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()方法是打印异常信息在程序中出错的位置及原因
                  }
  • 程序运行结果:
    • 登陆界面:
      1619949-20190402152855439-422090630.png
    • 菜单界面:
      1619949-20190402152938895-417275424.png
    • 统计该文本行数及字符数:
      1619949-20190402153122054-444301121.png
    • 将单词及词频存入文件result.txt中
      1619949-20190402153214935-809148013.png
    • 查看并输出指定单词的单词及词频数:
      1619949-20190402153300184-1875125371.png
    • 附加任务1:统计文本中除冠词、代词、介词之外的高频词:
      1619949-20190402153342818-219775540.png
      1619949-20190402153401267-896636770.png
  • 结对过程:
    1619949-20190402204201605-2106398509.jpg

  • PSP:

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

转载于:https://www.cnblogs.com/tanggq/p/10641988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值