- 一、软件与软件工程的概念
- 软件定义
- 程序、数据、及其相关文档的完整集合
- 软件分类
- 系统软件:与硬件紧密结合
- 应用软件:在指定领域开发,为特定目的服务
- 软件危机
- 软件开发周期长、成本高、质量差、维护困难
- 软件工程
- 正确的管理技术
- 最好的技术方法
- 目标:以周期短、低成本生产高质量的软件产品,最终实现工业化生产
- 软件工程方法学三要素:方法、工具、过程
- 软件定义
- 二、软件生存期模型
- 瀑布模型(V模型)
- 核心
- 文档
- 特点
- 1、具有顺序性和依赖性
- 2、推迟实现的观点
- 3、质量保证的观点
- 每个阶段都必须完成规定的文档,每个阶段结束前对文档评审
- 优点
- 1、可强迫开发人员采用规范化的方法
- 2、严格的规定了每个阶段必须提交的文档
- 3、每个阶段所交出的所有产品经过评审的
- 缺点
- 几乎完全依赖书面规格说明,很可能导致最终开发出的软件产品不能真正满足用户需要
- 只适用于项目开始时需求已确定的情况
- 核心
- 快速原型模型
- 核心
- 满足用户真实需求
- 特点
- 在瀑布模型的开始增加了快速原型的设计
- 按线性顺序进行
- 优点
- 有助于满足用户的真实需求
- 后续不会因为规格说明文档的错误进行较大返工
- 缺点
- 快速建立起的系统结构加上连续的修改可能导致产品质量低下
- 使用此模型前提要有一个展示性的产品原型,在一定程度上可能限制开发人员的创新
- 核心
- 增量模型
- 核心
- 确定增量
- 特点
- 分成多个模块,完成各模块的过程为瀑布模型
- 优点
- 较短时间内向用户提交一些有用的工作产品
- 逐步增加产品功能,让用户有充裕时间学习和适应,减少全新软件给用户、组织带来的冲击
- 项目失败风险较低
- 优先级最高的服务首先交付
- 缺点
- 需要更加精心的设计
- 核心
- 螺旋模型
- 核心
- 风险分析
- 特点
- 在快速原型模型的基础上,给每个环节增加了风险分析
- 优点
- 有利于对软件的重用
- 减少了过多测试或测试不足所带来的风险
- 维护和开发之间没有本质的区别
- 缺点
- 风险驱动要求开发人员必须有丰富的风险评估经验和这方面的专业知识
- 核心
- 喷泉模型
- 核心
- 迭代
- 特点
- 迭代和无间隙特性,两个活动之间存在重叠
- 优点
- 提高软件项目开发效率,节省开发时间
- 室友面向对象的软件开发过程
- 缺点
- 需要大量开发人员,不利于项目的管理
- 要求严格管理文档,使得审核难度加大
- 核心
- 统一过程
- 六个核心工作流
- 业务建模工作流、需求工作流、分析与设计工作流、实现工作流、测试工作流、部署工作流
- 四个阶段
- 初始阶段、细化阶段、构造阶段、移交阶段
- 六个核心工作流
- 敏捷过程
- 个体交互、可工作软件、客户合作、响应变更
- 极限编程(XP)
- 策划
- 核心:用户故事
- 设计
- 核心:保持简洁
- 编码
- 核心:结对编程
- 测试
- 核心:每时每刻测试
- 策划
- 瀑布模型(V模型)