《英文文本统计分析》结对项目报告:

||
|:--|:--|
|项目|内容|
|这个作业属于哪个课程|西北师范大学软件工程|
|这个作业的要求在哪里|实验四 软件工程结对项目|
|我在这个课程的目标是?|熟悉软件开发整体流程,提升自身能力|
|本次作业在哪个具体方面帮助我们实现目标|第一次体验一个完整的工程|

一:给出所点评作业的博客、github链接地址,点评内容和点评心得

二:结对项目源码在Github的仓库主页链接地址

点我查看源码

1.需求分析

  • 实验2要求的功能:点我查看实验二
  • 单词频数可视化柱状图
  • 统计该文本行数及字符数
  • 各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms)
  • 可处理任意用户导入的任意英文文本
  • 人机交互界面要求GUI界面(WEB页面、APP页面都可)
  • 附加分功能:统计文本中除冠词、代词、介词之外的高频词
  • 附加分功能:统计前10个两个单词组成的词组频率

2.软件设计:使用类图

3.核心功能代码展示:展示核心功能代码

  • 代码片段:


//高频词的统计 整数k
		 public ArrayList gaopin(TreeMap<String,Integer> tm,int k){
			
			 ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(tm.entrySet());
			 
			 Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){  
			  public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {  
			   return o2.getValue() - o1.getValue(); 
			    }  
			   }); 
			     //输出前k个数
			    for(int i = 0; i<k; i++){  
			     System.out.println(list.get(i).getKey()+ ": " +list.get(i).getValue());  
			        }     
			   return list;
		 }
		 
		 //统计文本行数与字符
		 public List  statistics(String fileName) throws IOException{
		 
			String line = fileName;
			System.out.println(fileName);
			File file = new File(line);
			InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
			BufferedReader br = new BufferedReader(isr);
		  int charNum= 0 ;//字符数
		  int wordsNum= 0;//数字数
		  int lineNum = 0;//行数
		  //以流的形式读入文件
		  
		  while( br.read()!= -1){
		  String s = br.readLine();
		  charNum+=s.length();
		  wordsNum +=s.split(" ").length;
		  lineNum ++;
		  }
		  isr.close();//关闭
		  List list=new ArrayList();
		  list.add(charNum);
		  list.add(wordsNum);
		  list.add(lineNum);
		  
		 // System.out.println("字符数:"+charNum+"\n单词数:"+wordsNum+"\n行数:"+lineNum);
		  return list;
		 }}
     




4.程序运行时每个功能界面截图

JSP主页面

浏览文件

统计完成


柱状图显示

relust.txt中存放显示

5. 描述结对的过程,提供两人在讨论、细化和编程时的结对照片(非摆拍)

在结对过程中,从一开始对结对作业进行讨论,然后分配任务,由于我们两人并不属于同一宿舍,我们作业的完成尽量在有空的时候两人见面进行讨论。
由于是第一次进行结对编程,缺乏经验,开始的效率并不是很高,我们也经常会出现进度不同步进度滞后的情况。
在经历了坎坷和磨合的过程之后,我们两人的配合效率也得到了提高,双方互相反馈各自主要负责部分的问题,进行修改,最终也是顺利完成了结对项目。
总体来说这次结对过程给了我很新鲜的体验,第一次与比较陌生的人配合一起完成一个项目,两人通过不断地磨合最终也算是磕磕绊绊地完成了这次作业,对我来说算是一次收获颇丰的体验。


6. 此次结对作业的PSP表格

||||
|:--|:--|:--|:--|
|PSP2.1|任务内容|计划共完成需要的时间(min)|实际完成需要的时间(min)|
|Planning|计划|15|18|
|Estimate| 估计这个任务需要多少时间,并规划大致步骤|20|20|
|Development|开发|200|250|
|Analysis|需求分析(包括学习新技术)|10|10|
|Design Spec|生成设计文档|30|25|
|Design Review|设计复审(和同事审核设计文档)|8|10|
|Coding Standard|代码规范(为目前的开发制定合适的规范)|15|20|
|Design|具体设计|20|15|
|Coding|具体编码|180|200|
|Code Review|代码复审|20|15|
|Test|测试(自我测试,修改代码,提交修改)|10|15|
|Reporting|报告|30|25|
|Test Report|测试报告|30|25|
|Size Measurement|计算工作量|5|3|
|Postmortem & Process Improvement Plan|事后总结,并提出过程改进计划|10|8|

7.小结感受:两人合作真的能够带来1+1>2的效果吗?通过这次结对合作,请谈谈你的感受和体会。

结对编程反思

  • 两个人合作真的可以达到1+1>2的效果,收获的不仅是一个项目,一次作业,而是团体合作的宝贵的过程和经历。
    结对编程的优点:
  • 在结对过程中,通过两人的讨论配合,可以更高效的确定方案,尤其是在确定程序处理算法的过程中两人可以共同收集可用的算法并讨论确定最终算法,结对的过程很大的提升了这一过程完成的效率。
  • 两人在结对过程中可以学习并养成更好地代码规范,来确保自己的搭档可以顺畅的阅读并理解对方的代码。
  • 两人可以从对方可以互补缺点,从对方身上学到自己所不具备的技能。
    结对编程的缺点:
  • 结对过程中两人会对某一问题出现摩擦,无法统一意见的情况会降低效率,延长时间
  • 结对过程由于两人所了解熟悉的方面不同可能会演变成各自完成各自的工作而难以顾及对方的工作。
    队友的优缺点
  • 优点:非常刻苦努力,工作能力很强,完成工作的效率很高,很负责,经常提醒我完成进度。学习能力很强,不了解的内容能够在短时间内完成学习。
  • 缺点:因为对Java语言不够了解和熟练,在编程及算法的能力上有很多欠缺。
    自己的优缺点
  • 优点:身为计算机学院的学生,对算法和语言有积累,在对方给自己提出要求和提醒后及时的反馈并完成自己的任务。
  • 缺点:能力薄弱,很多功能和相关知识不会,需要查大量资料。能动性较低,如不是队友提醒,可能会使进度滞后很多。