第1章 软件工程学概述(山东师范大学)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
30
几个关于软件工程本质特性和基本原理的问题
问题五:怎样理解“在软件工程领域中是由具有一 种文化背景的人替具有另一种文化背景的人创造产 品”这句话? 问题六:某软件开发,由于时间和资金都非常紧迫, 在需求分析人员非常认真、仔细地做完需求分析之 后,说:我们可以保证我们的需求分析正确性,不 用花时间检查了,设计人员可以直接拿着这份分析 报告,马上开始设计。如果你是项目负责人,你会 如何决定?为什么? 问题七:在需求分析完成并获得了用户的肯定,也 通过了评审,进入软件设计阶段之后,用户的想法 有了改变,提出了一个新的要求,此时如果你是项 目负责人,应该怎样做?
1 )只要是编程高手,即使是不懂软件工程, 也能编出很好的软件。
软件是服务于大众,却是由个性化的开发人员 完成的。如果个性化太强,程序就无法阅读,其 他人员也就无法维护。 例:国内 80 年代涌现出来的众多汉字操作系 统均是由编程高手完成的。
22
思考题( 2 )
2 )只要拥有一套讲述如何开发软件的书籍, 并了解了书中的标准与示例,就可以解决软 件开发中遇到的任何问题。
开发成本逐年上升,软件开发生产率提高的速度, 远远跟不上计算机应用迅速普及深入的趋势。
6
7
几个软件危机的著名案例
① 1966年,IBM 360 机的操作系统。花费 5000 人一年的 工作量,写了近 1 万行代码。错误百出,每次的新版本就 是从前一版本中找 1 000个程序错误而修正的结果。 ② 1963 年,美国用于控制火星探测器的计算机软件中的一 个 “ , ”号被误写为“.”,而致使飞往火星的探测器发生 爆炸,造成高达数亿美元的损失。 ③ 美国丹佛新国际机场自动化行李系统软件。投资 1. 93 亿美元,计划 1993 年万圣节启用。但开发人员一直为系统 错误困扰,屡次推后启用时间,直到 1994 年 6 月,机场 计划者承认无法预测何时能启用。 ④ 1996 年,欧洲阿里亚纳 5 型运载火箭坠毁,造成 5 亿美元损失。原因是控制软件中的一个错误。
32
§1 . 2 . 2 软件工程的基本原理
B.W.Boehm, 1983 年提出: 1 )用分阶段的生命周期计划严格管理 2 )坚持进行阶段评审 3 )实行严格的产品控制基线
基线(baseline)控制
4 )采用现代程序设计技术 5 )结果应能清楚地审查 6 )开发小组的人员应该少而精 7 )承认不断改进软件工程实践的必要性
10
失效率曲线
11
改正一个问题需付出的代价
12
2 、软件与一般程序不同(1)
① 软件远比一般程序规模庞大,复杂性高
软件所反映的实际问题的复杂性 程序逻辑结构的复杂性。 例 1 : Windows95 , 1000 万行代码; Windows2000, 5000 万行代码 例 2 : Exchange 2000 和 windows 2000 开 发人员
31
二、软件工程本质特性(2)
1 )软件工程关注于大型程序的构造。 2 )软件工程的中心课题是控制复杂性
主要考虑:如何分解和集成 为什么要分解: G .Miller, “7士 2 ” 原则
3 )软件经常变化 4 )开发软件的效率非常重要 5 )和谐地合作是开发软件的关键 6 )软件必须有效地支持它的用户 7 )在软件工程领域中是由具有一种文化背景的人 替具有另一种文化背景的人创造产品 扩展定义:软件=知识+程序+数据+文档
20
总结:“软件工程”的方法理论是摆脱软件 危机的一个主要出路。
计算机和软件科学家为解决软件危机问题,尝 试将在其它领域中行之有效的工程学知识运用到 软件开发工作中来,经过不断实践和总结,最后
得出一个结论;按工程化的原则和方法组织软件 开发工作是有效的,是摆脱软件危机的一个主要 出路。
21
思考题( 1 )
软件是用来解决现实问题的,现实问题的特殊 性对规范提出了挑战(要进行适应)。 软件技术是发展的,没有祖传秘方。 就像拥有食谱并不能成为名厨一样,软件开发 需要实践。
23
思考题( 3 )
3 )只要拥有最好的开发工具、最好的计算 机,一定能做出优秀的软件。
硬件环境只是必要条件,人才是充分条件,软 件是人在一定的约束条件下创造出来的。因人因 事而异。
要素三:软件工程工具 计算机辅助软件工程 CASE ( computer Aided sottware Engineering ) ,为软件工 程方法提供自动或半自动的 软件支撑环境。
35
二、软件工程方法学思想
两种: 1、 传统方法学(生命周期方法学或结构化 范型) 2、面向对象方法
36
1.传统方法学(生命周期方法学或结构化范型) 采用结构化技术(结构化分析、结构化设 计和结构化实现)来完成软件开发的各项任 务; 把软件生命周期划分为若干个阶段,按顺 序完成每个阶段的任务; 每个阶段开始和结束都有严格的标准,对 任何两个相邻的阶段而言,前一个阶段的结 束标准就是后一阶段的开始标准; 每一个阶段结束之前都必须进行正式严格 的技术审查和管理复审
27
3 ) 其他学者的定义
Boehm :运用现代科学技术知识来设计并构 造计算机程序及为开发、运行和维护这些程 序所必需的相关文件资料。 Fritz Bauer: 建立并使用完善的工程化原则, 以较经济的手段获得能在实际机器上有效运 行的可靠软件的一系列方法 所有定义都强调在软件开发过程中,应用工 程化原则的重要性
37
传统方法学的优点: 分解任务,分工合作,降低整个软件开发 工程的困难; 采用科学的管理技术和良好的技术方法对 每个阶段成果都进行严格的审查。保证了软 件的质量。 传统方法学的缺点: 把数据和操作人为地分离成两个独立的部分, 增加了软件开发与维护的难度。
2
软件危机与软件工程学
软件工程学的产生要从“软件危机”说起
1968 年,第一届 NAT0 (北大西洋公约组织的计算机科 学家的国际会议)会议,“软件工程”的慨念作为一 种有效解决“软件危机”的途径被正式提出。
什么是软件危机? 软件危机有什么典型表现? 为什么会产生软件危机? 怎么解决软件危机?
15
二、软件开发维护方法中存在的问题(1)
① 对用户需求的获取不正确
用户的原因 分析人员的原因
对分析人员的要求:沟通能力、归纳总结能力、经验
越是早期产生的错误,付出的代价越大。
图:不同时期引入同一变 动 的代价
16
二、软件开发维护方法中存在的问题( 2 )
② 软件开发就是编写程序。
一个完整的软件产品由一整套完整的配置组成,程序 只是其中的一个组成部分。 软件开发过程包括多个阶段,每个阶段的产品都是最 终的完整的软件产品的一部分。
33
§1 . 2 . 3 软件工程方法学
软件工程包括“管理”和“技术”两方面内 容: 管理—— 对人、财、物的合理使用和配置; 技术—— 指软件开发中采用的方法、工具和 过程。 什么是软件工程方法学? 通常把在软件生命周期全过程中使用的一整套 技术方法的集合称为方法学(methodology), 也称为范型(paradigm)。
8
§1 . 1 . 2 产生软件危机的原因
主要两个原因: 1 、与软件本身的特点有关 2 、与软件开发与维护的方法不正确有关。
9
一 、软件本身的特点 ( 1)
软件与硬件、一般程序存在很多不同之处。 1 、软件与硬件不同 抽象性。软件生产没有明显的制造过程,难 以衡量开发进展,也难以控制软件质量。 问题的隐蔽性。没有硬件的磨损、老化问题, 但存在开发早期在分析、设计阶段的错误, 修改难度较大。
24
思考题 (4)
4 )软件开发时,如果进度慢,落后于计划, 可以增加更多的程序员来解决。
增加人力可以减少开发时间吗? 新手!任务的重新划分!沟通更加复杂! 必须依靠科学地计划来解决这样的问题。
25
思考题(5)
5 )争议:如果软件运行较慢,是换一台更 快的计算机,还是设计一种更快的算法? 软件的性能问题; 应用级别→算法的合理性; 系统级别→操作系统、数据库系统、系统软 件等; 硬件级别→机器性能
28
几个关于软件工程本质特性和基本原理的问题 问题一: 软件工程适用范围? 问题二:软件工程如何控制系统开发的复杂 性的? 问题三:以你的经验,举例说明一个成熟的 软件通常采用什么方法来适应现实世界的变 化的?
29
几个关于软件工程本质特性和基本原理的问题 问题四:假设某软件公司,能为同一个用户 开发两个不同层次的软件:一个层次的软件 功能非常强大,在满足用户所有需求的基础 上,还能提供大大超过用户需求的其他更多 更强的功能;另一个层次的软件仅仅能满足 用户需求,但没有提供其他额外的功能。请 问如果你是项目负责人,你会选择为客户开 发那个层次的软件? 问题五:协同工作有什么重要性?
第 1 章 软件工程学概述
1 . 1 软件危机 1 . 2 软件工程 1 . 3 软件生命周期 1 . 4 软件过程 1 . 5 小结 习题
1
学习重点
1、软件危机、软件工程产生的原因 2、软件工程过程和软件生命周期 3、软件生命周期模型
掌握几个基本概念
软件危机 软件工程 软件过程 软件生命周期 软件生命周期模型
13
软件的规模
软件产品的特殊性和人类智力的局限性, 导致人们无力处理“复杂问题”。
14
2 、软件与一般程序不同( 2 )
② 大型软件开发既有技术问题,还有社会问 题。
社会因素:组织机构、体制、管理方式、观念、 人的心理素等。
开发团队成员分工合作 技术与管理的矛盾 软件开发人员对软件应用的领域知识的了解
难以改正程序中的错误; 难以根据用户的需要在原有程序中增加一些新 的功能。
5
软件危机有什么典型表现?
通常没有保留适当的文档资料。 文档的作用:
软件开发管理人员:用于管理和评价软件开发工程的 进展状况 软件开发人员:用于开发人员对各个阶段的工作都进 行周密思考、全盘权衡、从而减少返工。并且可Βιβλιοθήκη Baidu开发 早期发现错误和不一致性,便于及时加以纠正 软件维护人员:软件维护的依据
软件的“可移植性”就是指的软件对硬件的依 赖程度。好的可移植性依赖少。
19
§1 . 1 . 3 消除软件危机的途径
1 、彻底消除“软件就是程序”的错误观念。 2 、充分认识到软件开发是一种组织良好、 管理严密、各类人员协同配合、共同完成的 工程项目,不是个人独立的劳动。 3 、推广和使用在实践中总结出来的软件开 发的成功技术和方法。 4 、开发和使用更好的软件工具
③ 软件开发只要依靠个别编程高手就能完成。 ④ 轻视软件维护
软件维护约占软件费用 55 一 75 % ,包括修改软件运 行的错误;对软件进行改进和功能扩充。
17
软件维护在软件费用的比例
18
三、其他产生软件危机的原因
①软件开发尚未完全摆脱手工艺的开发方式。 ② 软件成本相当昂贵,主要依靠大量复杂的、 高强度的脑力劳动 ③ 软件的开发和运行常常受到计算机系统的 限制,对计算机系统有着不同程度的依赖性。
26
§1 . 2 软件工程
§1 . 2 . 1 软件工程介绍 一、“软件工程”的典型定义 1 )1968 年,第一届 NATO 会议 为了经济地获得可靠的且能在实际机器上有效地运 行的软件,而建立和使用完善的工程原理。 2 ) IEEE/CS(电气电子工程师协会/计算机科学分会) ① 1993 年,将系统化的、规范的、可度量的方法 应用于软件的开发、运行和维护的过程,即将工程 化应用于软件中。 ② 对 ① 中提到的各种方法的研究
3
§1 软件危机
§ 1 . 1 . 1 软件危机介绍 什么是软件危机? 软件危机指在计算机软件的开发和维护过 程中,所遇到的一系列严重问题。 软件危机主要包括的问题(两方面) : ① 如何开发软件 ② 如何维护软件
4
软件危机有什么典型表现?(1)
开发费用和进度难以估算和控制,大大超过 预期的资金和规定日期; 软件需求分析不够充分,用户不满意“已经 完成”的软件系统。 软件质量难于保证; 软件维护困难;
34
一、软件工程方法学三要素:工具、 方法和过程
要素一:软件工程过程 规定了完成各项任务的工作 步骤。 要素二:软件工程方法 完成软件开发的各项任务的 技术方法,为软件开发提供 了“如何做”的技术。
如项目计划与估算、软件系 统需求分析、数据结构、系 统总体结构的设计、算法过 程的设计、编码、测试以及 维护等。
相关文档
最新文档