软件开发生命周期
- 软件定义时期:包括可行性研究和详细需求分析过程
- 软件开发时期:软件的设计与实现
- 软件运行和维护
软件系统文档
- 用户文档:描述系统功能和使用方法
- 系统文档:描述系统设计、实现和测试等各方面的内容
软件系统工具
- 软件开发工具:需求分析工具、设计工具、编码和排错工具
- 软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
- 软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择
软件设计
四个活动
- 数据设计
- 架构(体系结构)设计
- 人机界面(接口)设计
- 过程设计
能力成熟度模型
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)
- 组织持续优化软件开发过程,能够自适应变更,持续改进。
- 采用先进的技术和方法,如根因分析、缺陷预防、过程自动化等。
- 关注创新,持续提升生产率和质量。
敏捷模型
开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划
逆向工程
软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是程序的恢复过程。逆向工程的四个级别
- 实现级
- 结构级
- 功能级
- 领域级
其中,领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高
系统设计
系统设计的主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法
系统设计方法:结构化设计方法、面向对象设计方法
系统设计的主要内容:概要设计、详细设计
概要设计基本任务:又成为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图,产出概念设计说明书
详细设计基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书,评审
系统设计基本原理:抽象化、自顶而下,逐步求精、信息隐蔽(封装)、模块独立(高内聚低耦合)
系统设计原则:保持模块的大小适中、尽可能减少调用的深度、多扇入少扇出(扇入:其他模块调用我,扇出:我调用其他模块)、单入口单出口、模块的作用域应该在模块之内、功能应该是可预测的
系统结构图(SC):又称为模块结构图,它是软件概要设计阶段的工具,反应系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构
内聚性
针对单个模块,内聚程度
耦合性
针对模块之间,耦合程度
详细设计
基本步骤:
- 分析并确定**输入/输出数据的逻辑结构
- 找出输入数据结构和输出数据结构中有对应关系的数据单元
- 按一定的规则由输入、输出的数据结构导出程序结构
- 列出基本操作与条件,并把它们分配到程序结构图的适当为止
- 用伪代码写出程序
详细设计的表示工具有图形工具、表格工具和语言工具。其中图形工具有业务流图、程序流程图、PAD图、NS流程图
- 程序流程图:又称为程序框图。用方框表示一个处理步骤,菱形表示一个逻辑条件,箭头表示控制流向。其优点是:结构清晰、易于理解、易于修改。其缺点是:只能**描述执行过程而不能描述有关的数据
- NS流程图:又称为盒图。是一种强制使用结构化构造的图示工具,也称为方框图。其具有以下特点:功能域明确、不可能任意转移控制、很容易确定局部和全局数据的作用域、很容易表示嵌套关系及模块的层次关系
- PAD图:一种改进的图形描述方式,可以用来取代程序流程图,相比程序流程图更直观,结构更清晰。其最大的优点是能够反应和描述自顶向下的历史和过程。PAD图提供了5种基本控制结构的图示,并允许递归使用
人机界面设计
三大黄金原则
- 置于用户控制之下
- 减少用户的记忆负担
- 保持界面的一致性