Image not found

Unfolding of the Sophon

研发工作一件过程中,一些新需求输入往往会增加工作量,一个小任务变一个大项目。这种情景下我们有时会碎碎念说工作量几何级上升。

下面我们假设要计一个做加法的程序,准确的说是一个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;
}

为了加深印象,我挖个坑。我找时间把以上表格中的文件都做一遍。