软件工程个人作业(wc.exe项目)
一、项目Github地址
https://github.com/huangzihaohzh/WordCounter
二、PSP表格
| PSP2.1 | Personal Software Process Stages |
预估耗时(分钟) | 实际耗时(分钟) |
| Planning | 计划 | 60 | 90 |
| · Estimate | · 估计这个任务需要多少时间 | 60 | 90 |
| Development | 开发 | 1260 | 1320 |
| · Analysis | · 需求分析 | 60 | 45 |
| · Design Spec | · 生成设计文档 | 60 | 90 |
| · Design Review |
· 设计复审 | 60 | 45 |
| · Coding Standard |
· 代码规范 | 30 | 90 |
| · Design | · 具体设计 | 60 | 150 |
| · Coding | · 具体编码 | 540 | 480 |
| · Code Review | · 代码复审 | 90 | 60 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 360 | 360 |
| Reporting | 报告 | 180 | 160 |
| · Test Report | · 测试报告 | 120 | 120 |
| · Size Measurement |
· 计算工作量 | 30 | 20 |
| · Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 | 30 | 20 |
| 合计 | 1500 | 1570 | |
三、解题思路
- 阅读需求文档(个人项目文档),大致了解题目的要求。由需求文档可知,题目要求编写一个根据用户输入的参数,对文本文件进行字符、单词、行数的技术并显示。此外还需要对所编程序进行测试,并按要求填写PSP表格以及撰写博文;
- 为了更合理地进行设计,决定先阅读下《构建之法》,了解了PSP表格的制订、回归测试的设计以及软件工程的工作量和质量的衡量标准等;
- 对于本项目,对用户的输入需要进行检查和分为参数组和文件名两项,考虑用正则表达式来进行处理,对于各类计数功能的实现也考虑用正则表达式去实现,对于“-a”选项对应的代码行 / 空行 / 注释行的处理则相对复杂一点,需要进一步寻找资料。
四、设计实现过程
主要涉及与实现
- 用户输入检查:使用正则表达式对用户输入的参数和地址进行检查,检查输入是否符合参数格式以及地址格式是否正确;
- 参数提取与存储:对用户输入进行分类存储,用户输入参数存到参数列表中,地址/文件名存入到一个字符串字段中。
- 按用户参数进行不同的操作:遍历参数列表,对不同的参数调用对应的方法获取计数值并加以显示。
流程图如下

五、测试
单元测试
测试代码
public class Test {
private TextFile textFile = null;
//Constructor
public Test(String filePath) throws Exception{
this.textFile = new TextFile(filePath);
}
//测试TextFile.charNumCounter()
public void testCharNumCounter(){
int charNum = textFile.charNumCounter();
if(charNum>=0)
System.out.println("文件字符数为:"+charNum);
else
System.out.println("字符数计算出错");
}
//测试TextFile.wordNumCounter()
public void testWordNumCounter(){
int wordNum = textFile.wordNumCounter();
if(wordNum>=0)
System.out.println("文件单词数为:"+wordNum);
else
System.out.println("单词计算出错");
}
//测试TextFile.lineNumCounter()
public void testLineNumCounter() throws IOException {
int lineNum = textFile.lineNumCounter();
if(lineNum>=0)
System.out.println("文件行数为:"+lineNum);
else
System.out.println("行数计算错误");
}
}
测试结果
D:\123.txt
文件字符数为:80
文件单词数为:6
文件行数为:2
整体测试
空文件测试(内有一空行,文件大小0KB)
命令:java -jar wc.jar -c -w -l "D:\test_txt\Empty.txt"
测试结果:
文件字符数为:0
文件单词数为:0
文件行数为:1
只有一个字符的文件测试
命令:java -jar wc.jar -c -w -l "D:\test_txt\OnlyOneChar.txt"
测试结果:
文件字符数为:1
文件单词数为:0
文件行数为:1
只有一个词的文件测试
命令:java -jar wc.jar -c -w -l "D:\test_txt\OnlyOneWord.txt"
测试结果:
文件字符数为:4
文件单词数为:1
文件行数为:1
只有一行的文件测试
命令:java -jar wc.jar -c -w -l "D:\test_txt\OnlyOneLine.txt"
测试结果:
文件字符数为:59
文件单词数为:3
文件行数为:1
一个典型的源文件测试
命令:java -jar wc.jar -c -w -l "D:\test_txt\Current.txt"
测试结果:
文件字符数为:27
文件单词数为:6
文件行数为:2
-x参数测试
命令:java -jar wc.jar -x -c -w -l
测试结果:
D:\test_txt\OnlyOneChar.txt
文件字符数为:1
文件单词数为:0
文件行数为:1
测试图片
总结
在本次项目开发过程中,有以下几点总结与教训:
- 要加大前期计划与分析的时间投入
- 拒绝拖延症,早开始,早结束
软件工程个人作业(wc.exe项目)的更多相关文章
- 个人项目作业——wc.exe
一.Github项目地址 https://github.com/PIPIYing/wc 二.项目概况 项目描述 Word Count 1. 实现一个简单而完整的软件工具(源程序特征统计程序). 2. ...
- 软工作业1:wc.exe项目开发(java)
Github地址:https://github.com/Zzhaomin/learngit 项目相关要求 : wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...
- 软件工程团队作业-Alpha阶段项目复审
Alpha阶段项目复审 复审人:黄杰 复审总结表 小组的名字和链接 优点 缺点,bug/140字 最终名次 项目 一个普通的团队 https://www.cnblogs.com/clsgghost/p ...
- 【软件工程Ⅱ】作业四 |个人项目-小学四则运算 “软件”之初版(C语言)
本次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186 本次作业代码的github地址:https://gith ...
- 软件工程 wc.exe 代码统计作业
软件工程 wc.exe 代码统计作业分享 1. Github 项目地址 https://github.com/EdwardLiu-Aurora/WordCount 更好地阅读本文,可点击这里 基本要求 ...
- 个人项目作业(wc.exe)
1.GitHub项目地址 https://github.com/QiuBin666/WC 项目介绍: 题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行 ...
- 个人项目作业WC(JAVA)
GitHub地址:https://github.com/1666403186/WC 一.题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行单元测试.回归 ...
- 软工作业1—java实现wc.exe
github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数 ...
- 软工作业No.1。Java实现WC.exe
网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...
随机推荐
- Object-C一日速成——环境搭建
要我说,想要学习一门语言,搭建好相关的环境可以达到事半功倍的效果,那么今天我们就来聊一聊关于在windows系统上搭建Object-C语言编程环境的那些事. 文章目录 一.基于CodeBlocks的O ...
- Spring,SpringMvc,MyBatis用到的设计模式
1.MyBatis: 首先看MyBatis执行流程: (1)首先,SqlSessionFactoryBuilder 去读取 mybatis 的配置文件,然后 build 一个 DefaultSqlSe ...
- windows linux 通过SSH X11Forwrding 使用图形化界面
有时候,我们需要在命令行中使用远程的GUI程序,这样我们就需要x11转发的来进行访问: Linux平台下不需要特别的配置,假如我们要远程的机器是centos机器,只要做如下配置即可: #vi /etc ...
- vue 组件之纯表格渲染--没有事件交互
组件 名称小写==> 用-链接 02===> 属性==> empty-text="暂无数据" 当表格中没有数据 就会显示 暂无数据 <el-table-co ...
- HTTP 与HTTPS 简单理解
HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因 ...
- SQL Server 创建 修改 删除数据表
1. 图形界面方式操作数据表 (1)创建和修改数据表 列名中如果有两个以上单词时,最好用下划线连接,否则可能会给将来的查询维护带来不便.我们公司美国佬做的数据库就很烦,所有列名都有空格,一旦忘记用方括 ...
- DRF--介绍和安装
前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高.这种应用模式比较适合纯网页应用,但是当后端对接 ...
- 谈谈vue.js中methods watch和compute的区别和联系
methods,watch和computed都是以函数为基础的,但各自却都不同: 1.watch和computed都是以Vue的依赖追踪机制为基础的,它们都试图处理这样一件事情:当某一个数据(称它为依 ...
- win10 x64 VS2017 PJSIP 视频通话编译流程
win10 x64 VS2017 PJSIP 视频通话编译流程 1. 下载PJSIP源码 PJSIP源码下载地址:https://www.pjsip.org/ 2. 阅读一遍官方的文档 文档地址:ht ...
- fiddler抓包-8-工作中get到的断点使用
前言小伙伴有没有遇到这样的情况呢?测试中某个页面传参错误导致关联的功能点没发测试呢?比如APP页面中点击A商品但却跳转到了B商品的页面中,一看原来是商品的id传错了,开发是写死了... 这只是个例子. ...