实验四 软件工程结对项目
博文简要信息表:
||||
|:--|:--|
|项目|内容|
|这个作业属于哪个课程|(https://www.cnblogs.com/nwnu-daizh/)|
|这个作业的要求在哪里|(https://www.cnblogs.com/nwnu-daizh/p/10569690.html)|
|课程学习目标|熟悉软件开发整体流程,提升自身能力|
|本次作业在哪个具体方面帮助我们实现目标|第一次体验一个完整的工程|
点评信息
点评博客:(https://www.cnblogs.com/sixinjie/p/10562250.html)
Github链接地址:(https://github.com/1615087343/cipin/find/master)
点评内容:博主你好,阅读完你的博文后,博文结构很完善。博文内容方面较为完善,基本上实现了实验要求所达到的目标。对于词频统计方面没有实现柱状图这一点,相信博主在之后的开发过程中加以改进,最后实现。从PSH展示环节可以看出,博主的计划明确,时间分配合理,可以顺利地开发出软件,从PSP“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化可以看出,实际所用时间总是超出计划时间,对开发的不熟练和对程序语言的差异化导致实际时间总是超过计划时间。在以后的学习中继续努力共同进步。
点评心得:通过点评,我发现,我存在很多不足。互评这种方式,可以让我们彼此之间相互学习,共同进步,也可以发现对方的优点自己的不足,取长补短,节省时间,最后开发之后的结对软件。
源码地址:(https://github.com/healer-devil/ydm)
结对项目实施过程
需求分析
1.可处理用户任意输入的英文文本
2.统计该文本的行数及字符数功能
3.指定单词词频统计功能
4.前k个高频词的输出
5.统计该文本的单词数,然后输出到result.txt文件。
6.统计功能耗时
7.GUI人机交互界面
8.统计文本除冠词、代词、介词之外的高频词
- 核心功能代码展示
setLayout(null);
setBackground(Color.cyan);
setSize(600, 300);
setVisible(true);
btn1 = new Button("打开");
btn2 = new Button("保存");
btn3 = new Button("关闭");
tarea = new TextArea("");
add(btn1);
add(btn2);
add(btn3);
add(tarea);
tarea.setBounds(30, 50, 460, 220);
btn1.setBounds(520, 60, 50, 30);
btn2.setBounds(520, 120, 50, 30);
btn3.setBounds(520, 180, 50, 30);
op = new FileDialog(this, "打开", FileDialog.LOAD);
sv = new FileDialog(this, "保存", FileDialog.SAVE);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
});
//统计该文本行数及字符数
public int[] allCount(String fileName) throws IOException {
long a =System.currentTimeMillis();//初始化开始时间
String line = fileName;
File file = new File(line);
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
BufferedReader br = new BufferedReader(isr);
int charNum = 0;// 字符数
int wordsNum = 0;// 数字数
int lineNum = 0;// 行数
// 以流的形式读入文件
while (br.read() != -1) {
String s = br.readLine();
charNum += s.length();
wordsNum += s.split(" ").length;
lineNum++;
}
isr.close();// 关闭
int[] linenum = { charNum, wordsNum, lineNum, };
for (int i = 0; i < linenum.length; i++) {
System.out.println(linenum[i]);
}
System.out.println("字符数:"+charNum+"
单词数:"+wordsNum+"
行数:"+lineNum);
System.out.println("
执行耗时:"+(System.currentTimeMillis()-a+"ms"));//输出耗时时间
return linenum;
}
程序运行
柱状图
显示程序耗时
读入文件及人机交互
附加功能无能为力啊啊啊啊啊啊啊啊啊啊
结对照片
PSP展示
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 55 | 60 |
· Esitimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 350 | 400 |
· Development | 开发 | 500 | 600 |
· Analysis | 需求分析(包括学习新技术) | 60 | 50 |
· Design Spec | 生成设计文档 | 20 | 15 |
· Design Review | 设计复审(和同事审核设计文档) | 30 | 30 |
· Coing Standard | 代码规范(为目前开发制定合适的规范) | 20 | 20 |
· Design | 具体设计 | 40 | 35 |
· Coding | 具体编码 | 500 | 600 |
· Code Review | 代码复审 | 7 | 9 |
· Test | 测试(自我测试,修改代码,提交修改) | 17 | 25 |
· Reporting | 报告 | 10 | 15 |
· Test Report | 测试报告 | 15 | 22 |
· Size Measurement | 计算工作量 | 5 | 5 |
· Postmortem&Process Improvement Plan | 事后总结,并提出过程改进计划 | 10 | 10 |