1. 需求
需求一般分为,用户需求和软件需求
- 用户需求(User Requirements):是从最终用户或业务方角度提出,描述他们希望能够实现的的功能、性能、体验等方面的目标。它关注的是“用户想要什么”。
- 特点:
- 通过使用自然语言描述,避免技术术语
- 强调用户的实际业务场景和期望
- 不涉及具体的实现方式或技术细节
- 是软件需求的基础来源
- 特点:
- 软件需求(Software Requirements):也称系统需求(System Requirements)或功能需求(Functional Requirements),软件需求是从技术角度出发,是对用户需求的进一步细化和具体化,明确系统应该具备哪些功能、接口、行为等,以便开发人员可以据以进行设计和编码
- 特点:
- 使用更结构化的语言或文档格式表达
- 包含功能需求与非功能性需求
- 可测试、可验证
- 是设计和测试工作的依据
- 分类:
- 功能性需求(Functional Requirements):描述系统应执行的具体操作或功能
- 非功能性需求(Non-functional Requirements):描述系统的质量属性或运行环境
- 特点:
2.开发模型
软件开发模型(Software Development Models):开发模型是用于指导软件开发过程的框架或方法,它定义了需求分析到维护整个生命周期中各个阶段的工作流程和顺序。
2.1 软件的声命周期
软件的生命周期(Software Life Cycle):是指一个软件从最初的概念构想到最终退役、停止使用所经历的所有阶段。它涵盖了软件的需求分析、设计、开发、测试、部署、维护以及最终的淘汰等全部过程。
生命周期的阶段:需求分析阶段 —> 设计阶段 —> 编码阶段 —> 测试阶段 —> 部署阶段 —> 维护阶段 —>退役阶段
- 需求分析阶段(Requirement Analysis)
- 目标:明确用户需求什么功能、性能、界面、安全性等方面的要求。
- 主要工作内容:
- 收集用户需求
- 分析可行性(技术、经济、法律)
- 编写 《需求规格说明书》(SRS)
- 测试:
- 确保需求清晰、完整、可测试
- 为后续测试用例设计打基础
- 系统设计阶段(System Design)
- 目标:根据需求文档,设计系统的整体架构和模块划分。
- 主要工作内容:
- **概要设计(High-Level Design):**系统结构、模块划分、接口定义
- **详细设计(Low-Level Design):**每个模块内部的逻辑、算法、数据结构
- 测试:
- 审查设计是否满足需求
- 初步规划测试策略和测试环境
- 编码与实现阶段(Implementation / Coding)
- 目标:按照设计文档编写程序代码,完成系统功能
- 主要内容:
- 使用编程语言开发
- 遵循编码规范
- 进行单元你测试(Unit Testing)
- 测试
- 开发人员自测(白盒测试)
- 提交可测试版本给测试团队
- 测试阶段(Testing)
- 目标:确保软件质量,发现并修复缺陷
- 主要测试类型包括:
- 单例测试(Unit Test)
- 集成测试(Integration Test)
- 系统测试(System Test)
- 验收测试(Acceptance Test)
- 测试
- 根据需求文档和设计文档编写测试用来
- 执行测试、记录缺陷、跟踪修复
- 输出测试报告,评估产品测试
- 部署阶段(Deployment)
- 目标:将通过测试软件部署到生产环境,供用户使用
- 主要工作内容:
- 安装配置系统
- 数据迁移(如有)
- 上线发布(灰度/全量)
- 测试
- 验证上线后系统是否正常运行
- 进行冒烟测试(Smoke Test)或回归测试(Regression Test)
- 维护阶段(Maintenance)
- 目标:在软件投入使用后,持续修复问题、优化性能、更新功能
- 维护类型包括:
- 纠错性维护(修复BUG)
- 适应性维护(适配新平台、系统)
- 完善性维护(增加功能、提升性能)
- 预防性维护(防止未来问题)
- 测试
- 对每次变更进行回归测试
- 确保新功能不影响已有功能
- 退役阶段(Retirement / Disposal)
- 目标:当软件不再满足业务需求或维护成本过高时,决定停用或替换该软件
- 主要工作内容:
- 数据归档或迁移
- 用户通知
- 停止支持服务