当前位置:文档之家› 软件开发与应用-第1章 软件工程学概述

软件开发与应用-第1章 软件工程学概述

软件开发与应用
胡俊敏
Email:wingoner@ 2009.2
集美大学工商管理学院信息管理与信息系统系
课程总体安排
第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 软件工程学概述 可行性研究 需求分析 形式化说明技术 总体设计 详细设计 实现 维护 面向对象方法学引论 面向对象分析 面向对象设计 面向对象实现 软件项目管理
软件工程——一种层次化技术
软件工程的定义
• 1968年第一届NATO会议:“软件工程就是为了经济
地获得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。” • 1993年IEEE:“软件工程是:①把系统的、规范 的、可度量的途径应用于软件开发、运行和维护过 程,也就是把工程应用于软件;②研究①中提到的 途径。” • 概括来说,软件工程就是:采用工程的概念、原理、 技术和方法来开发与维护软件,把经过时间考验证 明正确的管理技术和当前能够得到的最好的技术方 法结合起来,以经济地开发出高质量的软件并有效 地维护它。
软件危机
软件危机原因
• 软件的规模加大、复杂性提高、性能增强;
• 软件是逻辑产品, 尚未完全认识其本质和特点; • 缺乏有效的、系统的开发、维护大型软件项
目的技术手段和管理方法;
软件危机
软件危机原因
• 用户对软件需求的描述和软件开发人员对
需求的理解往往存在差异,用户经常要求 修改需求,开发人员很难适应;
“软件开发与应用”课程教学的目标 转变对软件的认识: 上升
程序 系统
转变思维定式: 上升
程序员 工程化训练 系统工程师 (系统分析员)
第1章 软件工程学概念
软件危机 软件工程 软件生命周期
软件的发展过程 软件危机的表现 软件危机产生的原因 消除软件危机途径
软件过程
小结
• 若干年前开发的应用软件经过几十次修改已无人
认识它的内部结构,己经不可维护。(遗留软件)
• 由于经济原因,嵌入式系统存在许多怪现象,企业
不愿意投入资源再生产,而采取打补丁+时髦界 面的方法。
软件
软件是计算机系统的重要组成部分; 软件是逻辑产品,需要计算机硬件和系统软 件的支撑; 软件是计算机控制系统的指挥中枢; 软件是信息转换器,它能对信息进行加工、 处理或变换; 软件是工具,在人们的生活、工作、休闲, 在社会的经济、军事、政治、文化、科学技 术、教育中发挥具大作用;
软件的发展
软件发展的四个阶段
1950---1965
没有系统的软件开发方法和管理机制、自定义软件、 批处理、有限分布。
1965---1975
产生人机交互的新概念、新技术软件产品、多用户、 实时、数据库。
软件的发展
软件发展的四个阶段
1973---1988
微处理器的出现并广泛应用 分布式系统、嵌入智能、低成本硬件、消 费者的影响。 1986---2000
这么容易, 没问题!
你们到底做 过没,会不 会做啊?
你看你们 都怎么做 的?
一个屋顶 搞得坑坑 洼洼!!!
这个,要有个工 序,不是光有力 气就可以的. 钱,不给了!
之前没做过,不 过这个有把子力 气不是就可以?
干这么辛苦 竟然没有钱!
讨论问题
一.应该给工人工钱么?
二.这个工程为什么失败了? 三.你能从中得到什么样的经验?
软件工程——一种层次化技术
软件工程的基本原理--坚持进行阶段评审
• 据统计,在软件生存周期各阶段中,编码阶段之
前的错误约占63%,而编码错误仅占37%。另外, 错误发现并改正得越晚,所花费的代价越高。坚 持在每个阶段结束前进行严格的评审,就可以尽 早发现错误,从而可以最小的代价改正错误。因 此,这是一条必须坚持的重要原理。
软件工程——一种层次化技术
软件工程的基本原理 --结果应能清楚地审 查

软件产品是一种看不见、摸不着的逻辑产品。因 此,软件开发小组的工作进展情况可见性差,难 于评价和管理。为了更好地进行评价与管理,应 根据软件开发的总目标和完成期限,尽量明确地 规定软件开发小组的责任和产品标准,从而使所 得到的结果能清楚地审查。
• 软件开发的技术人员和管理人员缺乏软件
工程化的素质和要求,对工程化的开销认 识不足;
软件危机
软件危机仍在继续 ---影响软件质量的糊 涂认识
• 在项目的初始阶段对系统若明若暗就开
始写程序;
• 认为软件是灵活的容易修改,对软件需
求的改变不以为然;
• 程序调试成功标志着工作的结束;
软件危机
软件危机仍在继续 ---影响软件质量的糊涂 认识
软件工程——一种层次化技术
软件工程的基本原理 --用分阶段的生存周期计划严格管理
• 这条基本原理是应该把软件生存周期划分成若
干个阶段,并相应地制定出切实可行的计划, 然后严格按照计划对软件开发与维护工作进行 管理。应该制定的计划有项目概要计划、里程 碑计划、项目控制计划、产品控制计划、验证 计划和运行维护计划等。各级管理人员都必须 严格按照计划对软件开发和维护工作进行管理。 据统计,不成功的软件项目中,有一半左右是 由于计划不周造成的。
软件工程——一种层次化技术
软件工程的基本原理--实行严格的产品控制
• 决不能随意改变需求,只能依靠科学的产品控制技术来顺应
用户提出的改变需求的要求。为了保持软件各个配臵成分的 一致性,必须实行严格的产品控制。其中主要是实行基准配 臵管理(又称为变动控制),即凡是修改软件的建议,尤其 是涉及基本配臵的修改建议,都必须按规程进行严格的评审, 评审通过后才能实施。
软件危机
例如1:Therac-25事件(1985-87 年)
带有软件控制器的放射线疗法仪器抛弃了硬件 互锁,但软件没有互锁。 由于程序员对并发编 程没有经验,软件不能维持必要的不变量,电 子束模或是强烈的光线和金属板干扰,产生X 射线。因为灼伤导致了几起死亡。
例如2: 1996年Atlantic奥运会,IBM赞助的
名为Info’96网络,由于数据传输只有9600位/ 秒,经常因为设计时的考虑不周而使下图“大 塞车”,造成比赛中断。
软件危机
软件危机的典型表现




对软件开发成本、进度以及工作量的估计常常很不 准确 用户对“已完成的”软件系统不满意的现象经常发 生 软件产品的质量往往靠不住 软件常常是不可维护的 软件通常没有适当的文档资料 软件成本在计算机系统总成本中所占的比例逐年上 升 软件开发生产率提高的速度远远跟不上计算机应用 迅速普及深入的趋势
支撑软件 应用软件 微型、小型、中型、大型等 分时处理、实时处理、 批处理、交互处理
按规模划分
按工作方式划分 按服务对象划分
项目软件和产品软件
软件
关于软件的几个认识问题
你同意以下几种说法么?
需求分析和写需求文档不重要,可以程序都写好了,再回头
补充。 既然需求分析很困难,不管三七二十一先把软件做了再 说,反正软件是灵活的,随时可以修改。 软件编写完成以后就万事大吉了。 如果我们落后于计划,可以增加更多的程序员来解决。
软件
计算机世界的软件
软件是能够完成预定功能和性能,并对相应 数据进行加工的程序和描述程序及其操作的 文档。 软件 = 程序+数据+文档 程序 = 算法+数据结构
思考:软件= 程序 ?
软件
软件与硬件的相比的特点
软件 硬件
展现形状
失效率 制造过程 质量控制
逻辑实体
与开发阶段相关 设计、编写程序 设计各环节
《人月神话》开篇
史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场 面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣 扎。它们挣扎得越是猛烈,油纠缠得越紧,没有任何猛兽足够 强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑 底。 过去几十年的大型系统开发就犹如这样一个焦坑,很多大 型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可 运行的系统——不过,其中只有非常少数的项目满足了目标、 时间进度和预算的要求。各种团队,大型的和小型的,庞杂的 和精干的,一个接一个淹没在了焦油坑中。表面上看起来好像 没有任何一个单独的问题会导致困难,每个都能被解决,但是 当它们相互纠缠和累积在一起的时候,团队的行动就会变得越 来越慢。对问题的麻烦程度,每个人似乎都会感到惊讶,并且 很难看清问题的本质。不过,如果我们想解决问题,就必须试
软件工程——一种层次化技术
软件工程的本质


以工程化的思想来约束软件本身特点所带来的不规范. 两个基本点: 控制 变化性 复杂性 协调 效率
产品
团队
用户
软件工程——一种层次化技术
软件工程的基本原理
著名的软件工程专家B. W. Boehm于1983年综 合了软件工程专家学者们的意见并总结了开发软 件的经验,提出了软件工程的7条基本原理。这7 条原理被认为是确保软件产品质量和开发效率的 原理的最小集合,又是相互独立、缺一不可、相 当完备的最小集合。
• 这里的“基准配臵”是指经过阶段评审后的软件配臵成分,
即各阶段产生的文档或程序代码等。
软件工程——一种层次化技术
软件工程的基本原理--采用现代程序设计 技术

实践表明,采用先进的程序设计技术既可以提高 软件开发与维护的效率,又可以提高软件的质量。 多年来,人们一直致力于研究新的“程序设计技 术”。比如,20世纪60年代末提出的结构程序设 计技术;后来又发展出各种结构分析(SA)和结 构设计(SD)技术;之后又出现了面向对象分析 (OOA)和面向对象设计(OOD)技术等等。
相关主题