软件工程个人作业(wc.exe项目)

一、项目Github地址

https://github.com/huangzihaohzh/WordCounter

二、PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划6090
· Estimate· 估计这个任务需要多少时间6090
Development开发12601320
· Analysis· 需求分析 6045
· Design Spec· 生成设计文档6090
· Design Review· 设计复审 6045
· Coding Standard· 代码规范3090
· Design· 具体设计60150
· Coding· 具体编码540480
· Code Review· 代码复审9060
· Test· 测试(自我测试,修改代码,提交修改)360360
Reporting报告180160
· Test Report· 测试报告120120
· Size Measurement· 计算工作量3020
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划3020
合计 15001570

三、解题思路

  1. 阅读需求文档(个人项目文档),大致了解题目的要求。由需求文档可知,题目要求编写一个根据用户输入的参数,对文本文件进行字符、单词、行数的技术并显示。此外还需要对所编程序进行测试,并按要求填写PSP表格以及撰写博文;
  2. 为了更合理地进行设计,决定先阅读下《构建之法》,了解了PSP表格的制订、回归测试的设计以及软件工程的工作量和质量的衡量标准等;
  3. 对于本项目,对用户的输入需要进行检查和分为参数组和文件名两项,考虑用正则表达式来进行处理,对于各类计数功能的实现也考虑用正则表达式去实现,对于“-a”选项对应的代码行 / 空行 / 注释行的处理则相对复杂一点,需要进一步寻找资料。

四、设计实现过程

主要涉及与实现

  1. 用户输入检查:使用正则表达式对用户输入的参数和地址进行检查,检查输入是否符合参数格式以及地址格式是否正确;
  2. 参数提取与存储:对用户输入进行分类存储,用户输入参数存到参数列表中,地址/文件名存入到一个字符串字段中。
  3. 按用户参数进行不同的操作:遍历参数列表,对不同的参数调用对应的方法获取计数值并加以显示。

    流程图如下

    processImg.png

五、测试

单元测试

测试代码
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
测试图片

xTest.PNG
test.PNG

总结

在本次项目开发过程中,有以下几点总结与教训:

  1. 要加大前期计划与分析的时间投入
  2. 拒绝拖延症,早开始,早结束

转载于:https://www.cnblogs.com/hzhTech/p/11588200.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值