1.Github网址:
https://github.com/Flying123haha/Software_engineer.git
2.PSP表
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 60 |
· Estimate | · 估计这个任务需要多少时间 | 40 | 60 |
Development | 开发 | 1060 | 1200 |
· Analysis | · 需求分析 | 60 | 60 |
· Design Spec | · 生成设计文档 | 40 | 60 |
· Design Review | · 设计复审 | 40 | 60 |
· Coding Standard | · 代码规范 | 60 | 60 |
· Design | · 具体设计 | 100 | 100 |
· Coding | · 具体编码 | 400 | 480 |
· Code Review | · 代码复审 | 60 | 50 |
· Test | · 测试(自我测试,修改代码,提交修改) | 300 | 300 |
Reporting | 报告 | 250 | 290 |
· Test Report | · 测试报告 | 100 | 140 |
· Size Measurement | · 计算工作量 | 50 | 50 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 100 | 100 |
合计 | 1350 | 1850 |
3.解题思路
一、这是软工课程布置的第一个作业,也就是编写出一个程序WC.exe可以直接统计出一个文件的字符数、词数和行数;一开始我觉得真的是很简单,因为之前学过java的String类,使用这个类能轻易地计算出一个字符串的各种长度因此我很有信心、但是因为是软工的作业,因此我希望能好好利用已学知识:加强PSP的时间安排以及代码的规范。
二、我起初编了两个类,分别一个是主类一个是函数类,但是后来我发现函数类只是为了使用方法而没有其他意义、然后如果这样调用方法就还需要在主类实例化一个对象来实现,于是我将类中的方法都迁移到了主类,从而直接实现类中的方法而无需定义新类。
三、为了实现程序的GUI体验,我重温了一边Java的Swing各种组件的知识,还记得去年Java课程曾经要求我们写过一个记事本,但是这次我就只实现了一个功能,窗口就显得特别简陋。
四、为了对目录进行查询,我使用了一个函数lists对目录进行递归的查询。
五、在命令中,可以输入最多两个指令的融合:第一个指令为[-calhe],第二个指令为[-sa],具体可见下面的测试。
4.设计流程
5、测试
一、命令行初始界面:
二、查询某一文件的字符数:
三、查询不存在文件的字符数:
四、查询一个目录中各个文件词数:
五、查询一个文件的各个行数及词数:
六、使用GUI查询文件的数据信息
七、代码覆盖率检测
6、个人总结
这次的软工作业让我受益匪浅,虽然这次的作业并不复杂,但是我从中学习到了许多软件工程的知识:
1、使用PSP表记录各个流程的时间,这使我对psp中各个流程加深了印象;在完成工程时,当我觉得迷茫时我就会打开流程表进行核对、这让我顿时回到了工作状态;
2、这次的作业我为了避免麻烦只使用了一个类就完成了各个函数的定义以及主函数的实现,后来经过与别人的交流我发现原来我这样是忽略了Java经典的面向对象的思想,使用多个类定义方法主要是为了能让外部类也能更好地使用该对象的方法、可以直接使用接口,希望下次我使用面向对象的思想去完成作业。