软件工程-个人项目作业
个人项目作业
1.Github项目地址
2.实现程序前,预计开发时间
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | |
· Estimate | · 估计这个任务需要多少时间 | 10 | |
Development | 开发 | 130 | |
· Analysis | · 需求分析 (包括学习新技术) | 25 | |
· Design Spec | · 生成设计文档 | 10 | |
· Design Review | · 设计复审 (和同事审核设计文档) | 0 | |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 5 | |
· Design | · 具体设计 | 10 | |
· Coding | · 具体编码 | 60 | |
· Code Review | · 代码复审 | 10 | |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | |
Reporting | 报告 | 30 | |
· Test Report | · 测试报告 | 10 | |
· Size Measurement | · 计算工作量 | 10 | |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | |
合计 | 170 |
3.思路
语言选择
通过观察原程序及需求,发现项目量不是很大,可直接使用C语言快速开发。
需要学的新知识
文件读写已经忘得差不多了,需要重新学习。
结构思路
- 命令行操作 可用C的命令行参数实现
- 计算行数 可通过读取'\n'计数
- 计算字符 逐一读取字符即可,注意排除换行及结束符
- 计算词数 可通过读取连续字符计数
遇到的困难
C语言的文件输入输出比较麻烦,写的时候有不少小bug需要修改。
4.关键代码
- 获取字符数
void CountLetter(FILE *fp)
{
int ltr=0,count=0;
while(!feof(fp))
{
ltr=fgetc(fp);
if(ltr=='\n') continue;//识别非换行符
count++;
}
count--;//减去末尾eof
printf("共%d字符\n",count);
}
- 获取词数
void CountWord(FILE *fp)
{
int ltr=0,count=0;
int mk=0;//判断当前状态:0为空,1为字符串
while(!feof(fp))
{
ltr=fgetc(fp);
if(ltr=='.') continue;//防止误判
if((ltr>='a'&<r<='z')||(ltr>='A'&<r<='Z')||ltr=='_')
{
if(mk==0) mk=1;
}
else
{
if(mk==1)
{
count++;
mk=0;
}
else continue;
}
}
printf("共%d词\n",count);
}
- 获取行数
void CountLine(FILE *fp)
{
int ltr=0,count=0;
while(!feof(fp))
{
ltr=fgetc(fp);
if(ltr=='\n')
count++;
}
printf("共%d行\n",count);
}
5.测试运行
测试功能
本程序完成了基本需求-c -w -l。
测试样例
#include <stdio.h>
int main()
{
printf( "Hello,World!\n" );
return 0;
}
测试效果
6.实际花费时间
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 5 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 5 |
Development | 开发 | 130 | 150 |
· Analysis | · 需求分析 (包括学习新技术) | 25 | 30 |
· Design Spec | · 生成设计文档 | 10 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 0 | 0 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 5 | 5 |
· Design | · 具体设计 | 10 | 10 |
· Coding | · 具体编码 | 60 | 75 |
· Code Review | · 代码复审 | 10 | 10 |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 30 | 40 |
· Test Report | · 测试报告 | 10 | 15 |
· Size Measurement | · 计算工作量 | 10 | 15 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
合计 | 170 | 195 |
7.小结
- 这是学习软件工程课程以来首次较为正式的开发,过去的开发都是直接写代码,而无任何开发规范,经过此次个人项目作业,使我更加近距离体验到以后出来工作后进行正式开发时的情况,让我意识到了规划的重要性。
- 遗憾的是未能完成其他需求,个人对此不是很满意,希望以后有时间把这个项目补充一下,继续努力。