目录简介V 模型开发阶段需求分析系统设计架构设计模块开发V 模型验证阶段适用场景简介在软件开发方法中V 模型是一种强调验证与确认、测试与开发阶段性对应的软件/系统开发过程模型。通常 V 模型的左侧主要代表了需求的分解与开发系统规范的制定。而 V 模型的右侧则代表了与之对应的集成与验证。每一级左侧的研发阶段都与之对应了一级右侧的测试验证阶段。V 模型从上至下模型描述的粒度就越细粒具体可以看下面的介绍。特别注意的是虽然 V 模型整体上是先进行左侧活动然后进行右侧活动但在实际项目管理中左右的一些活动是可以同步进行的比如右侧的测试验证验证使用的用例测试环境搭建等活动可以在左侧开发进行时同步进行。V 模型开发阶段需求分析需求分析是 V 模型的第一步主要是通过分析用户需求来拆解为系统需求旨在确定理想系统应具备的功能。常见的需求收集方法有和用户面对面沟通问卷调查原型用例等。系统设计在这一阶段系统工程师软件设计师等人员会把用户需求拆解为面向系统软件工程的业务需求同时评估需求的可行性。一般对于不明确不可实现不可验证的需求需要同客户沟通重新审议。在这里我举两个例子分别阐明什么叫做用户需求可以和不可以被转换为业务需求。例如在一个银行软件中客户希望提供这样一个功能那就是当用户在银行软件中进行定期存款业务软件系统判断该用户属于什么级别的 VIP 用户根据不同级别给与该用户 x% 的利率上浮。在将这个客户需求转换为业务需求时我们拆解为如下业务规则实现并维护客户与 VIP 等级的关系VIP 等级与利率之间的转换映射关系在这个简单的例子中我们可以看到这个需求最终是符合业务逻辑当前软件系统也能够实现的。而一个用户需求不能转换为业务需求的典型例子就是“五彩斑斓的黑”。架构设计在架构设计阶段项目中的软件架构师根据业务需求的实际情况准备好改业务需求需要的模块列表依赖关系数据库表设计模式接口关系等技术细节。模块开发模块设计是最底层的设计阶段通常和模块的代码编写一同进行具体的开发人员根据架构师准备的软件开发详细说明书完成各自模块的开发工作。当然规范的流程中开发人员最终除了交付代码外还需要交付一份包含详细模块设计的实现说明书。V 模型验证阶段验证阶段主要包含单元测试集成测试和系统测试。其中单元测试通常由开发人员自主完成近些年在单元测试的基础上出现了一种叫做开发者测试的开发者级别测试相比于函数级别的单元测试开发者测试更聚焦于验证完整功能能否正常运行。开发者测试本质上就是集成测试只不过将操作人员变为了开发者本身而非测试人员。系统测试通常由团队的解决方案团队专门的测试团队组成系统测试应该从各个方面负载测试、性能测试、压力测试、 回归测试全量对系统进行测试验证。除了上述测试过程外还有一步是客户侧进行的用户验收测试这一测试过程由用户主导。适用场景在这里我不准备写 V 模型的优点和缺点因为不同的软件开发方法适用于不同的场景没有横向比较的意义。V 模型主要使用场景有如下的特点需求明确且变更少V模型假设需求在开发早期就能完整、清晰地定义并且后续变更可控。因此它适合需求稳定的项目对质量与可追溯性要求极高V模型从需求到测试完全对应每个开发阶段都有对应的测试阶段便于进行双向追溯比如每项需求对应系统测试用例。适合安全攸关或合规性要求严格的领域项目规模中等偏大、生命周期长对于生命周期长达数年、参与团队众多如供应商、多个分包商的大型项目V模型提供了清晰的阶段里程碑和交付物便于管理和评审V 模型主要使用的行业有汽车电子航空航天工业自动化等。可以看到在倡导敏捷开发的互联网行业并不适合 V 模型来指导软件开发。