201671010426 孙锦喆 实验二词频统计软件项目报告
课程<o:p></o:p> 名称<o:p></o:p> | 2016级计算机科学与工程学院软件工程(西北师范大学)<o:p></o:p> |
作业<o:p></o:p> 要求<o:p></o:p> | 实验二 软件工程个人项目<o:p></o:p> |
课程<o:p></o:p> 目标<o:p></o:p> | 尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。<o:p></o:p> |
作业<o:p></o:p> 意义<o:p></o:p> | (1)掌握软件项目个人开发流程。<o:p></o:p> (2)掌握Github上发布软件项目的操作方法。<o:p></o:p> <o:p> </o:p> |
需求分析<o:p></o:p>
1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个。<o:p></o:p>
2.程序需要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。<o:p></o:p>
3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。<o:p></o:p>
4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。<o:p></o:p>
5.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。<o:p></o:p>
功能设计(基于JavaScript语言)<o:p></o:p>
1.需手动输入文档(复制),点击搜索即可统计全文词汇。
2.需手动输入需要查询的词汇,点击搜索即可统计在文章中出现的次数。
3.程序健壮,已用《哈利波特之魔法石》第一章(近3万词)试验,不存在卡顿。
4.因为规定浏览器不可直接访问用户计算机内容,所以无法直接导入文本文件。<o:p></o:p>
设计实现<o:p></o:p>
1.该函数主要以从input输入框中获取文本从而获取字符长度length和我们所需要查询的单词的value值。
2.在给予文章、单词赋值后,利用循环和遍历获取我们需要的信息。
3.获取信息后,再由document.getElementById从JavaScript中输出到html中。
4.最后利用button按钮的show()功能将结果展示出来。<o:p></o:p>
测试运行(以哈利波特第一章为文本)<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
代码
<o:p></o:p>
function show() {<br />
var a = document.getElementById("txt1").value;<br />
var b = document.getElementById("txt2").value;><br />
document.getElementById("resut1").innerHTML = a.length;<br />
var n = (a.split(b)).length - 1;<br />
document.getElementById("resut2").innerHTML = n;<br />
}<br />
总结
改程序本应该使用Java语言进行设计,因对Java掌握程度很浅,所以改为使用JavaScript设计。设计时,将程序分为输入、分析、遍历、输出四部分,这四部分并不是相互独立的,下一级对上一级有依赖,如没有获取文本,就无法获取字符长度从而导致功能无法使用。发觉自身能力的欠缺而导致程序很简陋,在设计过程中也遇到了很多问题。在以后的学习过程中会更多的弥补欠缺,并掌握更多有关编程的知识与技巧。
PSP
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 15 | 40 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 15 | 40 |
Development | 开发 | 40 | 60 |
Analysis | 需求分析 (包括学习新技术) | 10 | 10 |
Design Spec | 生成设计文档 | 15 | 10 |
Design Review | 设计复审 (和同事审核设计文档) | 3 | 5 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 3 | 3 |
Design | 具体设计 | 20 | 25 |
Coding | 具体编码 | 30 | 60 |
Code Review | 代码复审 | 15 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 25 | 20 |
Reporting | 报告 | 25 | 30 |
Test Report | 测试报告 | 10 | 15 |
Size Measurement | 计算工作量 | 5 | 5 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 10 | 10 |
一些代码分享