项目 | 内容 |
---|---|
课程名称 | 2016级计算机科学与工程学院软件工程(西北师范大学) |
做业要求 | 实验四 软件工程结对项目 |
课程学习目标 | 熟悉软件开发总体流程,提高自身能力 |
本次结对项目的意义 | 第一次体验一个完整的工程 |
如下是我读完这篇博文以后,本身的一些拙见。html
不一样的同窗有不一样的思惟方式,对同一个问题的认知也有各自的独特之处。经过阅读其余同窗的博文,我受益不浅,深入认识到了本身的不足之处,懂得了应该善于互相学习,汲取他人的精华,不断改善本身的学习。同时,对于编码规范有了必定的认识,之前编写代码的时候,会为所欲为地按照本身的方式来写,经过阅读代码规范,发现本身存在不少问题,之后会多加注意去改正。此外,我对软件工程的内涵有了更深入的体会,感觉到了文档在项目开发过程当中的重要性。阅读其余同窗的博文,发现问题并进行适当的评价,实际上是一种很好的学习方式,从别人的问题中能够反射出本身存在的问题。所以,咱们在日常的学习中,要善于去评价他人,评价本身。java
一、实验2要求的功能
二、单词频数可视化柱状图
三、统计该文本行数及字符数
四、各类统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms)
五、可处理任意用户导入的任意英文文本
六、人机交互界面要求GUI界面(WEB页面、APP页面均可)
七、附加分功能1:统计文本中除冠词、代词、介词以外的高频词
八、附加分功能2:统计前10个两个单词组成的词组频率git
一、柱状图功能——单词频数可视化柱状图
二、计时功能——各类统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms)
三、显示功能——人机交互界面GUI界面
四、统计功能——统计文本行数、字符数、大小写字母、汉字、数字、字节数等github
一、本次项目设计一共使用了三个类,分别为Main.java,Result.java,Histogram.java
二、程序整体流程图以下:
编程
一、首先咱们对实验二中对方的代码进行了仔细研读,了解了对方的编码习惯,根据老师所给的代码规范肯定了本次项目的代码规范。
二、本次项目是在实验二的基础上添加、修改部分功能而实现的,所以在实验二的基础上,咱们对本次项目进行了需求分析,肯定了基本的框架。
三、对统计文本行数、字符数、大小写字母、汉字、数字、字节数等功能,计时功能,统计文本中除冠词、代词、介词以外的高频词功能等进行了分工。
四、共同编写了GUI界面。
五、代码编写结束后,咱们根据代码规范进行了代码复审。
六、最后咱们根据完成该项目的实际状况填写了PSP中各个阶段实际所用时间,并各自撰写了博客。
数组
public void paint(Graphics g) { int Width = getWidth(); int Height = getHeight(); int leftMargin = 50;//柱形图左边界 int topMargin = 50;//柱形图上边界 Graphics2D g2 = (Graphics2D) g; int ruler = Height-topMargin; int rulerStep = ruler/20;//将当前的高度平分为20个单位 g2.setColor(Color.WHITE);//绘制白色背景 g2.fillRect(0, 0, Width, Height);//绘制矩形图 g2.setColor(Color.BLACK); for(int i=0;i<rulerStep;i++){ g2.drawString((3000-150*i)+"个", 8, topMargin+rulerStep*i);//绘制Y轴上的数据 } g2.setColor(Color.YELLOW); int m=0; for (Entry<String, Integer> entry : map.entrySet()) { int value =entry.getValue(); int step = (m+1)*40;//设置每隔柱形图的水平间隔为40 g2.fillRoundRect(leftMargin+step*2,Height-value/50-5, 40, value, 40, 10);//绘制每一个柱状条 g2.drawString(entry.getKey(), leftMargin+step*2, Height-value/50-5); //标识每一个柱状条 m++; } }
long time=System.currentTimeMillis() - start; JOptionPane.showConfirmDialog(null,print+"\n"+"所用时间为:"+(System.currentTimeMillis() - start)+"ms","结果",JOptionPane.DEFAULT_OPTION); Histogram histogram=new Histogram(map1,input.length);
while ((str = in.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行 i++;//每循环一次就进行一次自增,用于统计文本行数 c += str.length();//用于统计总字符数 byte[] bytes=str.getBytes();//求出该行的字节数组 d += bytes.length;//用于统计总字节数 for (int j = 0; j < str.length(); j++) {//for循环的条件,当j小于该行长度时就一直循环并自增 b = Character.toString(str.charAt(j));//返回一个字符串对象 if (b.matches("[\\u4e00-\\u9fa5]")) {//if语句的条件,判断是否为汉字 c1++;//若为汉字则c1自增 } else if(b.matches("[A-Z]")){//if语句的条件,判断是否为大写字母 c2++;//若为大写字母则c2自增 } else if(b.matches("[a-z]")){//if语句的条件,判断是否为小写字母 c3++;//若为小写字母则c3自增 } else if(b.matches("[0-9]")){//if语句的条件,判断是否为数字 c4++;//若为数字则c4自增 } else {//不然可判断为其余字符 c5++;//若为其余字符则c5自增 } } }
PSP2.1 | 任务内容 | 计划共完成须要的时间(min) | 实际完成须要的时间(min) |
---|---|---|---|
Planning | 计划 | 15 | 10 |
Estimate | 估计这个任务须要多少时间,并规划大体工做步骤 | 8 | 10 |
Development | 开发 | 130 | 150 |
Analysis | 需求分析 (包括学习新技术) | 18 | 20 |
Design Spec | 生成设计文档 | 10 | 12 |
Design Review | 设计复审 | 15 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
Design | 具体设计 | 15 | 20 |
Coding | 具体编码 | 250 | 280 |
Code Review | 代码复审 | 20 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 25 | 30 |
Reporting | 报告 | 20 | 20 |
Test Report | 测试报告 | 10 | 15 |
Size Measurement | 计算工做量 | 12 | 15 |
Postmortem & Process Improvement Plan | 过后总结 ,并提出过程改进计划 | 20 | 20 |
“他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一块儿工做。他们一块儿分析,一块儿设计,一块儿写测试样例,一块儿编码,一块儿作单元测试,一块儿作集成测试,一块儿写文档,等等。”
——《构建之法》框架
本次实验是第一次结对项目实验,所以感触颇深。两人结对完成一个软件工程项目首先须要进行需求分析,对项目需求研究理解到位,对一个项目有总体的认知,而后再由两人分工互助实现所需的功能。因为每一个人都有本身编写程序的习惯和风格,所以为了不实验过程当中产生分歧,首先咱们对实验二中对方的文档和代码进行了仔细研读和评价,了解了对方的编码习惯,分析并指出了各自项目的优势和不足,最终达成了一致的代码规范。在具体的实现过程当中也遇到了不少问题,可是经过咱们一块儿讨论,相互协助,反复修改反复测试,最终都解决了这些问题。经过本次结对项目,本身的我的能力有所提高,同时明白了两人合做的重要性以及1+1>2的深入内涵。此外,还体会到告终对编程能够提升设计质量和代码质量以及两我的合做解决问题的能力,同时能够互相交流学习经验,提升本身的总体水平。“一千个读者眼中就有一千个哈姆雷特”,经过两我的思想的交融,最终的成果才会显得更加有意义。编辑器