软工概论

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

瀑布模型
特点
阶段的顺序性和依赖性 推迟实现的观点 质量保证的观点 文档 评审
存在问题
不适合需求模糊的系统
28
快速原型模型
基本思想
在获得用户基本需求说明的基础上,投入少量人力和物力,快速 建立一个原始模型,使用户及时运行和看到模型的概貌和使用效
果,并对需求说明进行补充和精化,提出改进意见,开发人员进
Windows95有1000万行代码
Windows2000有5000万行代码
Exchange2000和 Windows2000开发人员结构
Exchange2000 Windows2000
项目经理
开发人员
25人
140人
约250人
约1700人
测试人员
350人
约3200人
4
软件开发的发展过程
计算机应用发展
1 软件工程学概述
1.1 软件与软件危机
1.2 软件工程 1.3 软件生命周期
1.4 软件过程
1
软件
软件就是程序?×
一定要纠正软件就是程序, 开发软件就是编写程序的 错误观念!
程序的构成: 面向过程的程序=算法+数据结构 面向对象的程序=对象+消息 面向构件的程序=构件+框架
软件定义:软件是能够完成预定功能和性 能的可执行的计算机程序和使程序正常执行 所需要的数据,加上描述软件开发过程及其 管理、程序的操作和使用的有关文档。
个体化软件开发方法 软件数量多 规模大 软件成本高 质量低
软件维护困难
软件危机
软件工程
5
软件的特征
1. 软件是一种逻辑实体,不是物理实体,他具有抽象 性 2. 软件不会磨损和老化
3. 软件主要是研制,生产是简单的拷贝
4. 软件成本昂贵,其开发方式至今尚未摆脱手工方式 5. 软件维护不同于硬件维修,易产生新的问题 6. 软件具有“复杂性”,其开发和运行常受到计算机 系统的限制,即受环境影响大
17
1.2 软件工程
1983年B.W.Boehm提出了软件工程的七条基本原理:
1. 用分阶段的生存周期计划严格管理; 2. 坚持进行阶段评审;
3. 严格实施的产品控制;
4. 采用现代程序技术; 5. 结果应能清楚地审查; 6. 开发小组的成员应该少而精; 7. 承认不断改进软件工程的必要性。
18
23
1.4 软件过程
软件过程
为了获得高质量的软件所需要完成的一系列任务框架, 他规定了完成各项任务的工作步骤。 有若干个模型
24
1.4
瀑布模型 增量模型一过程
25
瀑布模型
计划 时期
问题定义 可行性研究 需求分析
(目标与范围说明书) (可行性论证论告) (需求说明书) (设计文档) (程序) (测试报告) (运行日志, 维护报告)
2
软件
软件的简要定义: 软件=程序+数据+文档
程序:按事先设计的功能和性能需求执行的指令序列 数据:是程序能正常操纵信息的数据结构 文档:与程序开发及过程管理、维护和使用有关的图 文材料 程序、软件与软件产品: 独唱—>>小合唱—>>合唱—>>万人大合唱 | | | 简单程序 较复杂程序 软件
3
软件规模越来越大
于1968年在联邦德国召开的北大西洋公约软件可靠性会 议(NATO)上,首次提出 “软件工程”的概念,提出了 在软件生产中采用工程化的方法,采用一系列科学的、
现代化的方法技术来开发软件。这种工程化的思想贯穿
到软件开发和维护的全过程。 了解有关软件、软件生存期及软件工程过程等重要的概
念,对掌握、学习和应用软件工程的方法、技术等对于
推出的一种全新的软件开发方法,被誉为90年代软件的核心技术
之一。 尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可
能接近人类认识世界解决问题的方法与过程,以更接近人类通常
思维的方式建立问题领域的模型,以便对客观的信息实体进行结 构和行为的模拟,从而使设计的软件更直接地表现问题的求解过 程。
界面 主要功能
优点
反映真实需求 线性开发
30
快速原型模型的要点
功能选择
构造原型
运行和评价原型
修改和完善原型
原型的目的
31
快速原型模型
需求分析 原型开发
原型评价 用户 反馈 最终系统设计
最终系统实现
快速原型模型
32
快速原型模型
特点
快速开发工具 循环 低成本
种类
渐进型 抛弃型
33
快速原型模型
原型法具有明显的优点,它的开发周期短,见效
快,可以边开发边使用,较适合于开发环境和管 理体制多变、系统结构不稳定的情况。但是开发 系统采用原型法,需要有交互式开发环境和第四 代语言及自动编程系统的支持,其初始原型设计
较为困难,开发过程尚缺乏有效的管理方法和控
制手段。
34
增量模型
21
1.2 软件工程
• 面向对象的定义
面向对象=对象+类+继承+通信
OO=Objects+Classes+Inheritance + Communication with messagees
两种方法学的差别与比较
22
1.3 软件生存周期
① 问题定义 ② 可行性研究 ③ 需求分析阶段 ④ 系统分析与设计阶段 ⑤ 系统实现阶段 ⑥ 测试阶段 ⑦ 维护阶段
6
软件
一、软件的分类
1、按照软件功能划分 系统软件 — 如操作系统、设备驱动程序等。 支撑软件(实用软件) — 协助用户开发的工具 软件,如编辑程序、程序库、图形软件包等。 应用软件 — 如工程与科学计算软件、CAD/CAM 软件、CAI软件、信息管理系统等。
7
软件
2、按照软件规模划分
类 别 微 型 小 型 中 型 参加人数 1 1 2-5 研制期限 1 –4 周 1–6月 1–2年 产品规模(源代码行) 0.5K 1K – 2K 5 – 50 K
26
开发 时期
设 计
编 码
测 试
运行 时期
运行与维护
瀑布模型的生存周期
实际的瀑布模型
计划 时期
问题定义 可行性研究 需求分析
(目标与范围说明书) (可行性论证论告) (需求说明书) (设计文档) (程序) (测试报告) (运行日志, 维护报告)
27
开发 时期
设 计
编 码
测 试
运行 时期
运行与维护
实际的瀑布模型
一步修改完善,如此循环迭代,直到得到一个用户满意的模型为 止。 从原型法的基本思想中可以看到,用户能及早看到系统模型,在 循环迭代修改和完善过程中,使用户的需求日益明确,从而消除 了用户需求的不确定性,同时从原型到模型的生成,周期短、见 效快,对环境变化的适应能力较强。
29
快速原型模型
常见的原型实例
每个阶段都采用科学的管理技术和良好的技术方法,每个阶段结
束之前都要从管理和技术角度进行严格的审查。采用的技术方法 是结构分析或结构设计技术。
20
1.2 软件工程
两种软件工程方法学(第2种)
1. 面向对象软件工程方法学 OOSD(Object-Oriented Software Development)法这是80年代
有若干个模型14软件过程25瀑布模型快速原型模型增量模型螺旋模型rup统一过程14软件过程26瀑布模型问题定义问题定义需求分析需求分析设设可行性研究可行性研究运行与维护运行与维护试试开发时期运行时期计划时期目标与范围说明书可行性论证论告测试报告程序设计文档需求说明书瀑布模型的生存周期运行日志维护报告27实际的瀑布模型问题定义问题定义需求分析需求分析设设可行性研究可行性研究运行与维护运行与维护试试开发时期运行时期计划时期目标与范围说明书可行性论证论告测试报告程序设计文档需求说明书实际的瀑布模型运行日志维护报告28阶段的顺序性和依赖性推迟实现的观点质量保证的观点文档评审不适合需求模糊的系统瀑布模型29基本思想在获得用户基本需求说明的基础上投入少量人力和物力快速建立一个原始模型使用户及时运行和看到模型的概貌和使用效果并对需求说明进行补充和精化提出改进意见开发人员进一步修改完善如此循环迭代直到得到一个用户满意的模型为从原型法的基本思想中可以看到用户能及早看到系统模型在循环迭代修改和完善过程中使用户的需求日益明确从而消除了用户需求的不确定性同时从原型到模型的生成周期短见效快对环境变化的适应能力较强
1.2 软件工程
两种软件工程方法学
1. 传统软件工程方法学 2. 面向对象软件工程方法学
19
1.2 软件工程
两种软件工程方法学(第1种)
1. 传统软件工程方法学
传统软件工程方法学就是从时间的角度对软件开发和维护的复杂 问题进行分解,把软件生命的周期划分为若干阶段,每个阶段有 相对独立的任务,然后逐步完成每个阶段的任务。
8
软件危机
定义
计算机软件的开发和维护过程所遇到的一系列严重问题
表现
对软件开发成本和进度的估算很不准确 用户很不满意 质量很不可靠 没有适当的文档 软件成本比重上升 供不应求:软件开发生产率跟不上计算机应用迅速深入的 趋势
9
硬件/软件成本变化趋势
100%
硬件
软件
0%
1955 1970 1985
35
增量模型
增量模型
36
增量模型
增量模型的要点:
37
增量模型
增量模型的优缺点:
38
螺旋模型
软件开发几乎总要冒一定的风险
如何降低风险
构建原型是一种能使某些类型的风险降至最低的方法。
理解这种模型的一个简易方法,是把它看
作在每个阶段之前都增加了风险分析过程
的快速原型模型
39
简化的螺旋模型
14
软件工程具有的本质特性
1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化
4. 开发软件的效率非常重要
5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是由具有一种文化背景的人替具有另 一种文化背景的人
15
1.2 软件工程
计算机科学与技术专业的学生都是非常必要的。
16
1.2 软件工程
IEEE【IEE83】给出的软件工程定义:
“软件工程是开发、运行、维护和修 复软件的系统方法。” IEEE【IEE93】给出了一个更加综合的定义:
“将系统化的、规范的、可度量的方法 应用于软件的开发、运行和维护的过程, 即将工程化应用于软件中。”
40
41
螺旋模型
42
各种模型的比较
43
思考
什么是软件?
软件危机的产生原因 软件危机的表现 软件工程的概念 软件工程的发展阶段 软件的生存周期 各种开发模型的特点及比较
44
大 型
甚大型 极大型
5 - 20
100 - 1000 2000 -5000
2–3年
4–5年 5 – 10 年
50 – 500 K
1M 1M – 10 M
3、按照软件工作方式划分 实时处理软件 交互式软件 批处理软件 4、按照软件服务对象的范围划分 项目软件 — 由客户委托开发的软件。 产品软件 — 由软件开发机构开发,提供给市场的。
11
软件危机
原因
客观:软件本身特点 逻辑部件
规模庞大
主观:不正确的开发方法 忽视需求分析 错误认为:软件开发=程序编写 轻视软件维护
12
软件危机
解决途径
组织管理
系统工程项目管理方法
技术措施
软件开发技术与方法
软件工具
13
1.2 软件工程
软件工程
• 指导计算机软件开发和维护的工程学科 • 是运用工程的、数学的、计算机等科学概念、 方法和原理来指导软件开发、管理和维护的一 门工程学科,把良好的管理技术和开发技术结 合进来,以得到高质量的软件。 • 工程管理+开发技术
相关文档
最新文档