201671010427 孙苗坤 实验四 软件工程结对项目
博文简要信息表
|||||||||||
|:----|:----|
| 项目| 内容|
| 这个作业属于哪个课程 |http://www.cnblogs.com/nwnu-daizh/|
| 这个作业的要求在哪里 | https://www.cnblogs.com/nwnu-daizh/p/10569690.html|
| 课程学习目标 | 熟悉软件开发整体流程,提升自身能力。|
| 本次作业在哪个具体方面帮助我们实现目标 | 第一次体验一个完整的工程|
任务1
所点评作业的博客:https://www.cnblogs.com/zhangqiong/p/10544766.html
github链接地址:https://github.com/ZhangQiong1/program1
点评内容:
博文结构比较规范,博文内容比较紧凑,博文结构与PSP中“任务内容”列的关系比较一致,通过PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的比较可以看出在开发和编码的过程中所需的时间差异较大。代码中软件结构不是很严谨、代码规范做的不是很好、柱状图和高频词功能没有实现、人机交互功能不是很完善。但在总结中也看出了自己的不足,平时要多提高自己的编程能力。
点评心得:
通过看张琼同学的博客,我发现她对博客的整体结构做的很清晰,同时也意识到编程能力的重要性,若编程能力不足,博文写的再好也没用,所以后期要努力提高自己的编程能力。
任务2
-
a.需求分析
(1)实验2要求的功能;
(2)单词频数可视化柱状图
(3)统计该文本行数及字符数;
(4)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
(5)可处理任意用户导入的任意英文文本;
(6)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(7)附加分功能:统计文本中除冠词、代词、介词之外的高频词;
(8)附加分功能:统计前10个两个单词组成的词组频率。
-
b.软件设计:
- c.核心功能代码展示:
//开始时间
long startTime=System.currentTimeMillis();
TreeMap<String,Integer> map1 = new TreeMap<String, Integer>();
WordCount wordCount = new WordCount();
map1= wordCount.bijiao(map, words);
//结束时间
long endTime=System.currentTimeMillis();
float excTime=(float)((endTime-startTime)/1000)*1000;
//向jsp页面传参数
request.setAttribute("map1", map1);
request.setAttribute("excTime", excTime);
System.out.println("执行时间:"+excTime+"ms");
request.getRequestDispatcher("index.jsp").forward(request, response);//重定向
}else if(id.equals("2")){
//高频词的统计
//开始时间
long startTime=System.currentTimeMillis();
WordCount wordCount = new WordCount();
int k=Integer.parseInt(wordnum);
ArrayList gaopin=wordCount.gaopin(map, k);
//结束时间
long endTime=System.currentTimeMillis();
float excTime2=(float)((endTime-startTime)/1000)*1000;
request.setAttribute("gaopin", gaopin);
request.setAttribute("excTime2", excTime2);
request.getRequestDispatcher("html/WordCount.jsp").forward(request, response);
}else if(id.equals("3")){
//行数统计
//开始时间
long startTime=System.currentTimeMillis();
WordCount wordCount = new WordCount();
List list=wordCount.statistics(fileName);
//结束时间
long endTime=System.currentTimeMillis();
float excTime3=(float)((endTime-startTime)/1000)*1000;
request.setAttribute("excTime3", excTime3);
request.setAttribute("list", list);
request.getRequestDispatcher("html/index.jsp").forward(request, response);
}
}
/* 获取文件名的函数 */
function one() {
var fileName = document.getElementById("file").value;
location.href = "../WordCountServlet?fileName=" + fileName + "&id=0";
}
function two() {
var word = document.getElementById("word").value;
location.href = "../WordCountServlet?word=" + word + "&id=1";
}
function three() {
var wordnum = document.getElementById("wordnum").value;
location.href = "../WordCountServlet?wordnum=" + wordnum + "&id=2";
}
function four() {
var wordlines = document.getElementById("wordlines").value;
location.href = "../WordCountServlet?wordlines=" + wordlines + "&id=3";
}
function five() {
var result = document.getElementById("result").value;
location.href = "../WordCountServlet?result=" + result + "&id=4";
}
- d. 程序运行:
- e. 结对的过程:
张琼 | 对实验二的java代码进行适当的修改 |
孙苗坤 | 进行前端页面设计 |
合作完成 | 一起完成前后台的交互 |
- f. 此次结对作业的PSP
||||||||||||||
|:--|:--|:--|:--|
|PSP2.1|任务内容|计划共完成需要的时间(min)|实际完成需要的时间(min)|
|Planning|计划|15|15|
|· Estimate|· 估计这个任务需要多少时间,并规划大致工作步骤|15|15|
|Development|开发|146|218|
|·· Analysis |需求分析 (包括学习新技术)|160|200|
|· Design Spec|· 生成设计文档|25|35|
|· Design Review|· 设计复审 |10|15|
|· Coding Standard |代码规范 |20|20|
|· Design| 具体设计|30|50|
|· Coding| 具体编码|200|300|
|· Code Review|· 代码复审|15|20|
|· Test|· 测试(自我测试,修改代码,提交修改)|30|50|
|Reporting|报告|25|30|
|·· Test Report|· 测试报告|30|40|
|· Size Measurement |计算工作量|10|10|
|· Postmortem & Process Improvement Plan|· 事后总结 ,并提出过程改进计划|30|35|
- g. 小结感受:
这次的结对项目我们是合作完成的,过程虽然有些坎坷,但最终还是有了一定的成果。首先是对于上一个实验的互评,我们取长补短,把可以借鉴的技术总结出来,然后把不足也找出来。在本次实验中加以利用和改进。刚开始的时候因为有了实验二的基础,所以很快的需求分析和软件设计就出来了。因为我们没有具体学习过java,所以对一些相关的技术不是很熟悉,导致web页面和后台的交互不是很顺利,通过查阅资料,询问其他小组的同学,才实现了人机交互功能,基本完成了这次作业,并且花费了较长的时间在实现前后台的交互上。在合作的过程中,我们不断的讨论,不断的权衡利弊,也借鉴了一些参考资料,加强了我们的学习能力和沟通能力。本次和伙伴合作很愉快,团队的作品也更让我们有成就感。 - GitHub链接地址:https://github.com/sunmiaokum/projest4