当前位置:
文档之家› 软件工程(第4版)01第一章:软件工程概述
软件工程(第4版)01第一章:软件工程概述
软件工程是:①把系统化的、规范的、 可度量的途径应用于软件开发、运行和 维护的过程,也就是把工程化应用于软 件中;②研究①中提到的途径。
1.2.2 软件工程的基本原理
软件工程专家B.W.BOEHM 提出软件工程 的七条原理:
1.用分阶段的生命周期计划严格管理 2.坚持进行阶段评审 3.实行严格的产品控制 4.采用现代程序设计技术 5.结果应能清楚地审查
鉴于软件危机的长期性和症状不明显的 特征,近年来有人建议把软件危机更名 为“软件萧条(depression)”或“软件 困扰(affliction)”。不过“软件危机” 这个词强调了问题的严重性,而且也已 为绝大多数软件工作者所熟悉,所以本 书仍将沿用它。
软件危机的特征表现
1 对软件开发成本和进度的估计常常很不准确。 2 用户对“已完成的”软件系统不满意的现象经
上述种种软件维护工作,以令人吃惊的 比例耗费资源。更严重的是,许多程序 的个体化特性使得它们最终成为不可维 护的。“软件危机”就这样开始出现了 。1968年北大西洋公约组织的计算机科 学家在联邦德国召开国际会议,讨论软 件危机问题,在这次会议上正式提出并 使用了“软件工程”这个名词,一门新 兴的工程学科就此诞生了。
1.1.3 产生软件危机的原因
在软件开发和维护的过程中存在这 么多严重问题,一方面与软件本身 的特点有关,另一方面也和软件开 发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统 中的逻辑部件而不是物理部件。
软件不同于一般程序,它的一个显著特 点是规模庞大,而且程序复杂性将随着 程序规模的增加而呈指数上升。
1.1.2 软件危机介绍
软件危机是指在计算机软件的开发和维 护过程中所遇到的一系列严重问题。这 些问题绝不仅仅是不能正常运行的软件 才具有的。实际上,几乎所有软件都不 同程度地存在这些问题。概括地说,软 件危机包含下述两方面的问题:如何开 发软件,以满足对软件日益增长的需求 ;如何维护数量不断膨胀的已有软件。
3. Fritz Bauer给出了下述定义:“软件 工程是为了经济地获得可靠的且能在实 际机器上有效地运行的软件,而建立和 使用的完善的工程化原则。”这个定义 不仅指出软件工程的目标是经济地开发 出高质量的软件,而且强调了软件工程 是一门工程学科,它应该建立并使用完 善的工程化原则。
4. 1993年IEEE进一步给出了一个更全面 的定义:
软件工程
吕云翔 Email: yxlu_2000@
软件学院
1.1.1 计算机系统的发展历程
早期(20世纪60年代中期以前):通用硬件已经相当 普遍,软件却是为每个具体应用而专门编写的,大多 数人认为软件开发是无须预先计划的事情。这时的软 件实际上就是规模较小的程序,程序的编写者和使用 者往往是同一个(或同一组)人。由于规模小,程序 编写起来相当容易,也没有什么系统化的方法,对软 件开发工作更没有进行任何管理。这种个体化的软件 环境,使得软件设计往往只是在人们头脑中隐含进行 的一个模糊过程,除了程序清单之外,根本没有其他 文档资料保存下来。
软件作坊
“软件作坊”是计算机系统发展的第二 代的重要特征。但是,“软件作坊”基 本上仍然沿用早期形成的个体化软件开 发方法。
随着计算机应用的日益普及,软件数量 急剧膨胀。在程序运行时发现的错误必 须设法改正;用户有了新的需求时必须 相应地修改程序;硬件或操作系统更新时 ,通常需要修改程序以适应新的环境。
软件本身独有的特点确实给开发和维护 带来一些客观困难,但是人们在开发和 使用计算机系统的长期实践中,也确实 积累和件危机的途径
1.技术措施 使用更好的软件开发技术、开发工具、开
发工具。 2.组织管理措施 (1)创造良好的组织、严密的管理与协调
工作的机制软件开发不是某种个体劳动 的神秘技巧,而应该是一种组织良好、 管理严密、各类人员协同配合、共同完 成的工程项目。
1. 1983年IEEE给软件工程下的定义是: “软件工程是开发、运行、维护和修复 软件的系统方法。”这个定义相当概括 ,它主要强调软件工程是系统方法而不 是某种神秘的个人技巧。
2. Fairly认为:“软件工程学是为了在成 本限额以内按时完成开发和修改软件产 品所需要的系统生产和维护技术及管理 学科。”这个定义明确指出了软件工程 的目标是在成本限额内按时完成开发和 修改软件的工作,同时也指出了软件工 程包含技术和管理两方面的内容。
(2)摆脱软件危机的主要出路是,按工程 化的原则和方法组织软件的开发工作。
(3)强调文档的重要性。 “口说无凭, 立字为据! !”是解决软件危机的格言 。
1.1 软件危机与软件工程的起源 1.2 软件工程 1.3 软件工程包含的领域 1.4 小结与习题
1.2.1软件工程的定义
概括地说,软件工程是指导计算机软件 开发和维护的工程学科。采用工程的概 念、原理、技术和方法来开发与维护软 件,把经过时间考验而证明正确的管理 技术和当前能够得到的最好的技术方法 结合起来,经济地开发出高质量的软件 并有效地维护它,这就是软件工程。
常发生。 3 软件产品的质量往往靠不住。 4 软件常常是不可维护的。 5 软件通常没有适当的文档资料。
6 软件成本在计算机系统总成本中所占 的比例逐年上升。
7软件开发生产率提高的速度,既跟不上 硬件的发展速度,也远远跟不上计算机 应用迅速普及深入的趋势。
以上列举的仅仅是软件危机的一些明显 的表现,与软件开发和维护有关的问题 远远不止这些。
第二代(20世纪60年代中期到70年代中期): 在这10年中计算机技术有了很大进步。多道程 序、多用户系统引入了人—机交互的新概念, 开创了计算机应用的新境界,使硬件和软件的 配合上了一个新的层次。实时系统能够从多个 信息源收集、分析和转换数据,从而使得进程 控制能以毫秒而不是分钟来进行。在线存储技 术的进步导致了第一代数据库管理系统的出现 。