软件开发生命周期
- 软件定义时期:包括可行性研究和详细需求分析过程
- 软件开发时期:软件的设计与实现
- 软件运行和维护
软件系统文档
- 用户文档:描述系统功能和使用方法
- 系统文档:描述系统设计、实现和测试等各方面的内容
软件系统工具
- 软件开发工具:需求分析工具、设计工具、编码和排错工具
- 软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
- 软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择
软件设计
四个活动
- 数据设计
- 架构(体系结构)设计
- 人机界面(接口)设计
- 过程设计
能力成熟度模型
CMM(能力成熟度模型)
CMM(Capability Maturity Model) 是一个用于评估和改进软件开发过程成熟度的模型。最初由美国卡内基梅隆大学软件工程研究所(SEI)提出,主要用于软件开发过程的改进,后来发展为 CMMI(能力成熟度模型集成),应用范围更广。CMM 将软件开发过程的成熟度划分为五个级别,每个级别代表更高水平的过程优化和控制能力。
1. 初始级(Initial,Level 1)
- 过程是无序的、不可预测的,依赖个人能力。
- 成功取决于个人英雄主义,而不是组织的标准化流程。
- 项目可能会超预算、延期,质量难以保证。
2. 可重复级(Repeatable,Level 2)
- 组织建立了基本的项目管理流程,能够重复过去成功的经验。
- 采用软件项目管理实践,如需求管理、配置管理、质量保证等。
- 过程可重复,但仍然依赖于具体项目或个人,可能缺乏一致性。
3. 已定义级(Defined,Level 3)
- 组织已制定和文档化标准的软件开发过程,并在全组织范围内执行。
- 过程标准化,不同项目遵循统一的方法,减少依赖个人经验。
- 强调软件工程管理和组织级的过程改进。
4. 已管理级(Managed,Level 4)
- 组织使用量化数据监控和控制软件开发过程,关键过程变量(如质量、生产率)可预测。
- 过程绩效的度量和分析成为核心,数据驱动决策,减少过程的变异性。
- 目标是提升可预测性,提高软件产品质量。
5. 优化级(Optimizing,Level 5)
- 组织持续优化软件开发过程,能够自适应变更,持续改进。
- 采用先进的技术和方法,如根因分析、缺陷预防、过程自动化等。
- 关注创新,持续提升生产率和质量。
敏捷模型
开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划
逆向工程
软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是程序的恢复过程。逆向工程的四个级别
- 实现级
- 结构级
- 功能级
- 领域级
其中,领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高