项目 | 内容 |
这个做业属于哪一个课程 | 西北师范大学软件工程 |
这个做业的要求在哪里 | 实验四 软件工程结对项目 |
我在这个课程的目标是? | 熟悉软件开发总体流程,提高自身能力 |
本次做业在哪一个具体方面帮助咱们实现目标 | 第一次体验一个完整的工程 |
点我查看源码html
- 实验2要求的功能:点我查看实验二
- 单词频数可视化柱状图
- 统计该文本行数及字符数
- 各类统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms)
- 可处理任意用户导入的任意英文文本
- 人机交互界面要求GUI界面(WEB页面、APP页面均可)
- 附加分功能:统计文本中除冠词、代词、介词以外的高频词
- 附加分功能:统计前10个两个单词组成的词组频率
//高频词的统计 整数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; }}
在结对过程当中,从一开始对结对做业进行讨论,而后分配任务,因为咱们两人并不属于同一宿舍,咱们做业的完成尽可能在有空的时候两人见面进行讨论。
因为是第一次进行结对编程,缺少经验,开始的效率并非很高,咱们也常常会出现进度不一样步进度滞后的状况。
在经历了坎坷和磨合的过程以后,咱们两人的配合效率也获得了提升,双方互相反馈各自主要负责部分的问题,进行修改,最终也是顺利完成告终对项目。
整体来讲此次结对过程给了我很新鲜的体验,第一次与比较陌生的人配合一块儿完成一个项目,两人经过不断地磨合最终也算是磕磕绊绊地完成了此次做业,对我来讲算是一次收获颇丰的体验。git
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 |
结对编程反思github
- 两我的合做真的能够达到1+1>2的效果,收获的不只是一个项目,一次做业,而是团体合做的宝贵的过程和经历。
结对编程的优势:- 在结对过程当中,经过两人的讨论配合,能够更高效的肯定方案,尤为是在肯定程序处理算法的过程当中两人能够共同收集可用的算法并讨论肯定最终算法,结对的过程很大的提高了这一过程完成的效率。
- 两人在结对过程当中能够学习并养成更好地代码规范,来确保本身的搭档能够顺畅的阅读并理解对方的代码。
- 两人能够从对方能够互补缺点,从对方身上学到本身所不具有的技能。
结对编程的缺点:- 结对过程当中两人会对某一问题出现摩擦,没法统一意见的状况会下降效率,延长时间
- 结对过程因为两人所了解熟悉的方面不一样可能会演变成各自完成各自的工做而难以顾及对方的工做。
队友的优缺点- 优势:很是刻苦努力,工做能力很强,完成工做的效率很高,很负责,常常提醒我完成进度。学习能力很强,不了解的内容可以在短期内完成学习。
- 缺点:由于对Java语言不够了解和熟练,在编程及算法的能力上有不少欠缺。
本身的优缺点- 优势:身为计算机学院的学生,对算法和语言有积累,在对方给本身提出要求和提醒后及时的反馈并完成本身的任务。
- 缺点:能力薄弱,不少功能和相关知识不会,须要查大量资料。能动性较低,如不是队友提醒,可能会使进度滞后不少。