zoukankan      html  css  js  c++  java
  • 软件工程个人作业(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

    三、解题思路

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

    四、设计实现过程

    主要涉及与实现

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

    流程图如下

    五、测试

    单元测试

    测试代码

    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: est_txtEmpty.txt"
    测试结果:

    文件字符数为:0
    文件单词数为:0
    文件行数为:1
    

    只有一个字符的文件测试

    命令:java -jar wc.jar -c -w -l "D: est_txtOnlyOneChar.txt"
    测试结果:

    文件字符数为:1
    文件单词数为:0
    文件行数为:1
    

    只有一个词的文件测试

    命令:java -jar wc.jar -c -w -l "D: est_txtOnlyOneWord.txt"
    测试结果:

    文件字符数为:4
    文件单词数为:1
    文件行数为:1
    

    只有一行的文件测试

    命令:java -jar wc.jar -c -w -l "D: est_txtOnlyOneLine.txt"
    测试结果:

    文件字符数为:59
    文件单词数为:3
    文件行数为:1
    

    一个典型的源文件测试

    命令:java -jar wc.jar -c -w -l "D: est_txtCurrent.txt"
    测试结果:

    文件字符数为:27
    文件单词数为:6
    文件行数为:2
    

    -x参数测试

    命令:java -jar wc.jar -x -c -w -l
    测试结果:

    D:	est_txtOnlyOneChar.txt
    文件字符数为:1
    文件单词数为:0
    文件行数为:1
    

    测试图片


    总结

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

    1. 要加大前期计划与分析的时间投入
    2. 拒绝拖延症,早开始,早结束
  • 相关阅读:
    从书上学的东西(顺带总结一发)
    网上讲的好的知识点汇总
    土地征用题解(兼斜率优化详解)
    Blocks题解(区间dp)
    高精度模板汇总
    动态规划总结
    异或序列(题解)(莫队)
    小Z的袜子(题解)(莫队)
    小B的询问(题解)(莫队)
    凸包模板——Graham扫描法
  • 原文地址:https://www.cnblogs.com/hzhTech/p/11588200.html
Copyright © 2011-2022 走看看