主题切换
软件生命周期
1.3 软件工程的概念
1.3.1 软件开发三大发展阶段
为解决软件危机,软件开发历经50多年演进,分为三个阶段:
- 程序设计阶段:约20世纪50~60年代
- 程序系统阶段:约20世纪60~70年代
- 软件工程阶段:20世纪70年代以后
1.3.2 软件工程三要素
方法、工具、过程,三者共同构成软件工程核心三要素。
1.3.3 软件工程目标
在既定成本、进度约束下,产出满足用户需求,同时具备以下特性的软件: 可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性、可互操作性。
目标间关系
- 互补关系:低开发成本、易于维护、高可靠性、高性能、按时交付可互相促进
- 互斥关系:部分目标存在冲突,如极致高性能会拉高开发成本
1.3.4 软件工程研究内容
分为两大板块:软件开发技术、软件工程管理
- 软件开发技术
- 软件开发方法学
- 软件工具
- 软件工程环境
- 软件工程管理
1.4 软件生存周期及软件开发模型
1.4.1 软件生存周期定义
软件拥有孕育、诞生、成长、成熟、衰亡完整生命周期,全程分为计划、开发、运行维护三大时期,每个时期拆分多个细分阶段。
a. 计划时期
核心工作:调研与分析,包含2个阶段
- 问题定义
- 可行性研究
b. 开发时期
核心任务:设计、实现,分为4个阶段
- 需求分析 解决核心问题:系统需要做什么。明确软件功能、性能、外部接口、约束条件,输出《需求规格说明书》并评审。
- 软件设计 软件工程技术核心,将需求转化为系统架构;分为总体设计、详细设计。
- 编码 使用编程语言,将设计方案转换为可执行源代码,输出源程序清单。
- 测试 保障软件质量的核心手段,设计测试用例校验软件各模块功能。
c. 运行时期
软件交付上线后进入本阶段,可持续数年至数十年;核心工作为软件维护,根据使用需求持续修改迭代程序。
1.4.2 软件生存周期模型概述
定义:覆盖软件从需求定义到废弃全流程,包含全部开发、运维、维护活动的标准化框架。 常见模型:瀑布模型、演化模型、螺旋模型、智能模型。 所有模型统一包含三类核心活动:
- 定义(计划):明确软件「做什么」
- 开发:解决软件「怎么做」
- 维护:负责软件后期「修改迭代」
1.4.3 瀑布模型
- 别称:线性顺序模型、软件生存周期模型,1970年由W.Royce提出
- 核心规则:阶段自上而下、线性顺序推进,不可回溯,流程如同流水瀑布逐级下落
- 阶段划分:计划时期、开发时期、运行维护时期
1.4.4 演化模型(原型模型)
- 开发思路:先开发试验性原型,探索业务可行性、理清模糊需求;基于原型迭代完善,产出最终正式软件。
- 优势:弥补瀑布模型缺陷,大幅降低需求不明确带来的开发风险。
- 概念:首次产出的试验版本称为「原型」。
1.4.5 螺旋模型
- 设计思路:融合瀑布模型与演化模型,新增二者缺失的风险分析环节,弥补两类模型短板。
- 四大核心活动(螺旋循环每一圈均执行)
- 制定计划:确定软件目标、实施方案、项目约束条件
- 风险分析:识别、评估、消除开发潜在风险
- 实施工程:落地软件开发、编码测试
- 客户评估:客户验收评价,提出修改优化建议
- 运行形式:沿螺旋循环迭代,每一轮循环产出增量版本,逐步完善产品。