软件工程-1-概述XXXX
软件生存期
二、 软件工程概念及原理
❖ 软件工程的定义
▪ 软件工程是用工程、科学和数学的原则与方法研制、维护计 算机软件的有关技术和管理方法。
❖ 软件工程三要素
▪ 过程
• 为建造高质量的软件所需完成的任务框架
▪ 方法
• 为软件开发提供了“如何做”的技术
▪ 工具
• 为软件工程方法提供了自动的或半自动的软件支撑环境
三、 软件生命周期
❖软件生命周期的概念
▪ 软件产品从形成概念开始,经过开发、使用和维护, 直到最后退役的全过程称为软件生存周期
▪ 软件有一个孕育、诞生、成长、成熟、衰亡的生存 过程。这个过程即为计算机软件的生命周期
❖生命周期阶段的划分原则
▪ 各阶段的任务相对独立 ▪ 同一阶段任务的性质相同
❖软件的生存期划分的几个阶段
们需求的增长
这就是软件危机!
❖软件危机
▪ 是指在计算机软件的开发和维护过程中所遇到的一 系列严重问题。
▪ 即包含两方面的问题:如何开发软件、如何维护软 件。
是什么原因导致的这个结果?
❖ 软件危机产生原因 【软件开发成本估计不准,开发成本超出预算】 【开发进度不能保证,交付时间一再拖延】 【开发出来的产品不符合用户的需求】 ▪ 忽视软件开发前期的调研和分析工作
Software Engineering
软件工程
第一章 软件工程概述
本章内容
❖软件工程的历史 ❖软件工程的概念 ❖软件生存周期 ❖软件开发过程模型
场景互动
❖请谈谈你在进行软件开发过程中都遇到过什么样的 问题?
❖软件的开发经常伴随着一些问题
▪ 软件开发成本估计不准,开发成本超出预算 ▪ 开发进度不能保证,交付时间一再拖延 ▪ 开发出来的产品不符合用户的需求 ▪ 软件产品质量无法保证 ▪ 软件的可维护程度低 ▪ 软件开发生产率的发展跟不上硬件的发展速度和人
▪ 1968年北大西洋公 约组织的计算机科 学家在联邦德国召 开国际科学会议, 讨论软件危机问题, 在这次会议上正式 启用“软件工程” 这个名词。
❖消除软件危准化 为特征。
▪ 采用工程化方法和工程途径来研制与维护软件。 ▪ 摆脱软件危机的途径就是软件工程生成的过程
❖ RUP可以根据项目的具体情况进行适当裁减,以 适应不同规模的开发。
▪ 一个完整的RUP过程是很庞大的(重量级)。
❖优点
▪ 与用户见面快;开发成功率高,适合于需求不确定 的大系统。
❖缺点
▪ 周期长,开发成本高。
原型模型
3.螺旋模型
❖ 螺旋模型(spiral model)
▪ 沿着螺线旋转(一个螺旋式周期 ),在四个象限上分别表达 四个方面的活动
▪ 制定计划
• 确定软件目标,选定实施方案,弄清项目开发的限制,选定完 成目标的策略
1.瀑布模型
❖瀑布模型(生存周期模型)
▪ 就是传统的生命周期方法学(既自顶向下结构化开 发模型方法)。
❖优点
▪ 奠定了软件工程方法的基础;流水依赖;便于分工 协作;推迟实现;文档易修改;有复审质量保证。
❖缺点
▪ 用户需求明确困难;用户见面晚;纠错慢;难于克 服系统分析员不懂专业领域的知识,用户不懂计算 机的困难,成功率低。适合于系统要求明确的小系 统
▪ 软件定义:
• 问题定义 • 可行性研究(软件计划) • 需求分析
▪ 软件开发:
• 系统设计 • 软件实现 • 软件测试
▪ 软件使用、维护和退役
软件生命周期中各阶段负责的任务
❖软件的生命周期
周期序号 1 2 3 4 5
周期名称 立项(或签订合同)、下达任务书
可行性分析 需求分析 概要设计 详细设计
工具 方法 过程 质量保证
以质量保证为根本动力的软件工程三要素
组织实施软件工程项目,从技术上和管理上采 取了多项措施以后,最终希望得到项目的成功。
❖软件工程项目的基本目标
▪ 能按时完成开发任务,及时交付使用; ▪ 付出较低的开发成本; ▪ 需要较低的维护费用; ▪ 达到要求的软件功能; ▪ 取得较好的软件性能; ▪ 开发的软件易于移植; ▪ 开发的软件可靠性高。
【软件产品质量无法保证】 ▪ 没有统一的、规范的方法论指导 ▪ 忽视测试阶段的工作
【软件的可维护程度低】 ▪ 文档资料不齐全,忽视人与人的交流 ▪ 忽视测试阶段的工作 ▪ 忽视软件的维护
【软件开发生产率的发展跟不上硬件发展速度和人们需求的增长】 ▪ 没有统一的、规范的方法论指导
一、 软件工程历史
❖“软件工程”的诞生
▪ 消除软件危机,既要有技术措施又要有必要的组织 管理措施
❖软件工程出现在软件发展的阶段
▪ 程序设计阶段 — 20世纪50至60年代 ▪ 程序系统阶段 — 20世纪60至70年代 ▪ 软件工程阶段 — 20世纪70年代以后
❖软件发展阶段中最根本的变化
▪ 人们改变了对软件的看法 ▪ 软件的需求是软件发展的动力 ▪ 软件工作的范围从考虑程序的编写扩展到设计整个
▪ 风险分析
• 分析所选方案,考虑如何识别和消除风险,风险角度分析该策 略
▪ 实施工程
• 实施软件开发,启动一个开发阶段
▪ 客户评估
• 评价前一步开发工作,提出修正建议,计划下一轮的工作
❖ 特点
▪ 瀑布模型+快速原型+风险分析 ▪ 迭代过程
4.统一过程模型-RUP
❖统一过程
▪ 是一个通用的过程框架,可用于各种不同类型的软 件系统,各种不同的应用领域,各种不同类型的组 织,各种不同功能级别以及不同的项目规模。
周期序号 6 7 8 9 10
周期名称 编码实现 软件测试 软件发布与实施 软件维护 版本更新或退役
五、 软件开发过程模型
❖软件开发过程模型
▪ 软件开发(过程)模型或软件工程规范,是跨越整 个生存期的系统开发、运作和维护所实施的全部过 程、活动和任务的结构框架.
❖常用的开发过程模型
▪ 瀑布模型 ▪ 原型(演化)模型 ▪ 螺旋模型 ▪ 统一过程模型RUP
软件生存期的瀑布模型
2.原型模型
❖原型模型(rapid prototype model)
▪ 是为了确定需求而提出的实际模型。打破传统的自 顶向下结构化开发模型方法,在计划和需求分析后, 把系统主要功能接口做为设计依据,快速开发出软 件样机,及时征求用户意见,正确确定系统需求, 然后再进一步准确地进行系统设计与实现。