研发工作一件过程中,一些新需求输入往往会增加工作量,一个小任务变一个大项目。这种情景下我们有时会碎碎念说工作量几何级上升。
下面我们假设要计一个做加法的程序,准确的说是一个C语言的加法函数。
以下这个几行代码应该就够了,不能再多了。手速快的不用一分钟就能完成代码的编写。
int16_t add(int8_t a, int8_t b)
{
return a+b;
}
可是,如果要依循软件过程。那么我们设计、评审。。我们先忽略当中的开会,列一个表格看最后会输出那些资料。
交付文件 | 存档 |
---|---|
1. 需求规格说明书 | (RS-001) |
2. 软件架构文档 | (SAD-001) |
3. 详细设计文档 | (DDD-001) |
4. 源代码 | (arithmetic.c, arithmetic.h) |
5. 单元测试代码 | (test_add.c) |
6. 单元测试报告 | (UTR-001) |
7. 集成测试报告 | (ITR-001) |
8. 确认测试报告 | (VVR-001) |
9. 质量审计报告 | (QA-001) |
10. 项目计划与状态报告 | (PP-001) |
附件 | 存档 |
---|---|
1. 缺陷跟踪报告 | DEF-003-report |
2. 详细测试结果 | ITR-001-details |
3. 项目章程 | PP-001-Charter |
4. 项目资源计划 | PP-001-Resources |
5. 项目风险管理计划 | PP-001-RiskManagement |
6. 项目工作分解结构 | PP-001-WBS |
7. 质量保证缺陷跟踪报告 | QA-001-Defects |
8. 质量保证计划 | QA-001-Plan |
9. 质量保证评审记录 | QA-001-Review |
10. 质量保证测试总报告 | QA-001-TestReport |
11. 确认测试缺陷清单 | VVR-001-defects |
12. 确认测试详情表 | VVR-001-details |
13. 确认测试性能指标详情 | VVR-001-performance |
最终的头文件
#ifndef ARITHMETIC_H
#define ARITHMETIC_H
// 函数声明
int add(int a, int b);
int subtract(int a, int b); // 未实现
int multiply(int a, int b); // 未实现
float divide(int a, int b); // 未实现
#endif // ARITHMETIC_H
最终的C文件
#include <stdio.h>
// 加法函数
int add(int a, int b) {
return a + b;
}
// 减法函数, 待实现
// 乘法函数, 待实现
// 除法函数, 待实现
int main() {
int num1, num2;
printf("请输入两个整数:");
if (scanf("%d %d", &num1, &num2) != 2) {
printf("输入错误,请输入有效的整数!\n");
return 1;
}
printf("\n加法结果:%d + %d = %d\n", num1, num2, add(num1, num2));
return 0;
}
测试用例
#include <stdio.h>
#include <assert.h>
#include "arithmetic.h"
int main() {
printf("开始测试add函数...\n");
// 测试用例1: 两个正数相加
assert(add(5, 3) == 8);
printf("测试用例1通过: 5 + 3 = 8\n");
// 测试用例2: 正数和负数相加
assert(add(5, -3) == 2);
printf("测试用例2通过: 5 + (-3) = 2\n");
// 测试用例3: 两个负数相加
assert(add(-5, -3) == -8);
printf("测试用例3通过: (-5) + (-3) = -8\n");
// 测试用例4: 包含零的加法
assert(add(0, 0) == 0);
printf("测试用例4通过: 0 + 0 = 0\n");
assert(add(1000000, 2000000) == 3000000);
printf("测试用例5通过: 大整数相加\n");
printf("所有测试用例均通过!\n");
return 0;
}
为了加深印象,我挖个坑。我找时间把以上表格中的文件都做一遍。