实验四 软件工程结对项目
||||||||||||||
|:--|:--|
|这个作业属于哪个课程|软件工程任教教师|
|实验四|软件工程结对项目|
|点评的博客地址|201671010452周海瑞 词频统计软件项目报告|
|GitHub结对仓库链接|https://github.com/zhouyanghaha/experiment|
|课程学习目标|熟悉软件开发整体流程,提升自身能力|
|作业帮我们所实现的目标|让我们体验结对完成一个项目|
|点评内容|(1)你的GitHub中不含有src文件夹,没有符合老师的要求(2)博文结构较为完整(3)博文内容整体清晰明了|
心得体会:
PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化明显,明显感受到自己预估的时间与实际完成的时间出入很大,根本原因是自己没有很好的掌握Java编程语言,也不是很熟练,会积极的补充知识,再一个就是有了PSP流程之后,一个好处就是,你知道每一步应该做什么,接下来应该做什么,相对来说,是比较有条理性的,节约了很多时间。对Java编程语言不是很熟悉,目前也只是初步掌握。将他的GitHub中上传的内容复制运行了,实验二所要求的功能均实现了,代码整齐,添加了注释,让人清晰明了。软件结构大体不错,代码也是较为规范的,基本的功能也实现了,人机交互功能目前还是有待继续学习的。
a.需求分析:
(1)实验2要求的功能
(2)单词频数可视化柱状图:
(3)统计该文本行数及字符数;
(4)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
(5)可处理任意用户导入的任意英文文本;
(6)人机交互界面要求GUI界面(WEB页面);
b.软件设计:使用类图
类图:显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。
c.核心功能代码展示:展示核心功能代码
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
//接受页面数据
String id=null;
//Servlet就是一个连接前台和后台的界面
fileName = request.getParameter("fileName");//文件名
String words = request.getParameter("word");//指定单词
System.out.println(words);
String wordnum = request.getParameter("wordnum");//高频数
String wordlines = request.getParameter("wordlines");//行数
String result = request.getParameter("result");//存放
id=request.getParameter("id");//功能编号的获取
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/WordCount.jsp").forward(request, response);
}
d. 程序运行:程序运行时每个功能界面截图
前台页面截图
前台代码截图
上传文件功能截图
上传成功功能截图
高频词统计功能截图
绘制柱形图功能截图
存放成功截图
e. 描述结对的过程,提供两人在讨论、细化和编程时的结对照片
结对照片:
PSP流程:
||||||||||||||
|:--|:--|:--|:--|
|PSP|任务内容|计划共完成需要的时间(min)|实际完成需要的时间(min)|
|Planning|计划|10|15|
|Estimate|估计这个任务需要多少时间,并规划大致工作步骤|12|10|
|Development|开发|265|280|
|Analysis| 需求分析 (包括学习新技术)|30|35|
| Design Spec| 生成设计文档|6|10|
|Design Review|设计复审 (和同事审核设计文档)|6|9|
|oding Standard|代码规范 (为目前的开发制定合适的规范)|15|20|
|Design|具体设计|25|30|
|Coding|具体编码|50|55|
|Code Review|代码复审|15|20|
|Test|测试(自我测试,修改代码,提交修改|30|30|
|Reporting|报告|15|15|
|Test Report|测试报告|3|8|
|Size Measurement|计算工作量|2|6|
|Postmortem & Process Improvement Plan|事后总结 ,并提出过程改进计划|10|10|
总结:
领航员是驾驶员的“指南针”,他为驾驶员提供准确的方向。少了领航员的导航,驾驶员就如同盲人一样失去了对方向的辨别。领航员特别需要工作细心负责,并且需要很强的判断能力和果断的决策能力。我在前端类似于一个领航员,指导着我的队友怎么设计前台页面以及链接后台Java,而我的队友在后台中是一个领航员,引领着我,指导着我方向,有什么问题可以一起学习一起成长,多练多问多出错,然后解决它,这是一个成长的过程。在结对项目中,PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化还是比较明显,是因为结对两个人思想是有差异的,期间有一些争吵,会耽误一点时间,后面慢慢的思想统一,然后行事效率有一些提高,总体来说比一个人完成项目所花费的时间少一些。