软件工程 软件工程概述_第1页
软件工程 软件工程概述_第2页
软件工程 软件工程概述_第3页
软件工程 软件工程概述_第4页
软件工程 软件工程概述_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程(第软件工程(第4 4版)版)0101第一章:软件工程概述第一章:软件工程概述n早期早期(20世纪60年代中期以前):通用硬件已经相当普遍,软件却是为每个具体应用而专门编写的,大多数人认为软件开发是无须预先计划的事情。这时的软件实际上就是规模较小的程序,程序的编写者和使用者往往是同一个(或同一组)人。由于规模小,程序编写起来相当容易,也没有什么系统化的方法,对软件开发工作更没有进行任何管理。这种个体化的软件环境,使得软件设计往往只是在人们头脑中隐含进行的一个模糊过程,除了程序清单之外,根本没有其他文档资料保存下来。1.1.1 计算机系统的发展历程n第二代第二代(20世纪60年代中期到7

2、0年代中期):在这10年中计算机技术有了很大进步。多道程序、多用户系统引入了人机交互的新概念,开创了计算机应用的新境界,使硬件和软件的配合上了一个新的层次。实时系统能够从多个信息源收集、分析和转换数据,从而使得进程控制能以毫秒而不是分钟来进行。在线存储技术的进步导致了第一代数据库管理系统的出现。n“软件作坊”是计算机系统发展的第二代的重要特征。但是,“软件作坊”基本上仍然沿用早期形成的个体化软件开发方法。n随着计算机应用的日益普及,软件数量急剧膨胀。在程序运行时发现的错误必须设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需要修改程序以适应新的环境。软件作坊n上述种种

3、软件维护工作,以令人吃惊的比例耗费资源。更严重的是,许多程序的个体化特性使得它们最终成为不可维护的。“软件危机”就这样开始出现了。1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,在这次会议上正式提出并使用了“软件工程”这个名词,一门新兴的工程学科就此诞生了。n软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的。实际上,几乎所有软件都不同程度地存在这些问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。1.1.2 软件危机介绍n鉴于软件

4、危机的长期性和症状不明显的特征,近年来有人建议把软件危机更名为“软件萧条(depression)”或“软件困扰(affliction)”。不过“软件危机”这个词强调了问题的严重性,而且也已为绝大多数软件工作者所熟悉,所以本书仍将沿用它。n1 对软件开发成本和进度的估计常常很不准确。n2 用户对“已完成的”软件系统不满意的现象经常发生。n3 软件产品的质量往往靠不住。n4 软件常常是不可维护的。n5 软件通常没有适当的文档资料。软件危机的特征表现n6 软件成本在计算机系统总成本中所占的比例逐年上升。n7软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。n

5、以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些。n在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。n软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。1.1.3 产生软件危机的原因产生软件危机的原因n软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。n软件本身独有的特点确实给开发和维护带来一些客观困难,但是人们在开发和使用计算机系统的长期实践中,也确实积累和总结出了许多成功的经验。n1.技术措施 使用更好的软件开发技术、开发工具、开发工具。

6、n2.组织管理措施 (1)创造良好的组织、严密的管理与协调工作的机制软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。1.1.4 消除软件危机的途径 (2)摆脱软件危机的主要出路是,按工程化的原则和方法组织软件的开发工作。 (3)强调文档的重要性。 “口说无凭,立字为据! !”是解决软件危机的格言。 n1.1 软件危机与软件工程的起源n1.2 软件工程n1.3 软件工程包含的领域n1.4 小结与习题n概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术

7、和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.2.1软件工程的定义n1. 1983年IEEE给软件工程下的定义是:“软件工程是开发、运行、维护和修复软件的系统方法。”这个定义相当概括,它主要强调软件工程是系统方法而不是某种神秘的个人技巧。n2. Fairly认为:“软件工程学是为了在成本限额以内按时完成开发和修改软件产品所需要的系统生产和维护技术及管理学科。”这个定义明确指出了软件工程的目标是在成本限额内按时完成开发和修改软件的工作,同时也指出了软件工程包含技术和管理两方面的内容。n3. Fritz Bauer给出了下述定义:“软件工程是为

8、了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用的完善的工程化原则。”这个定义不仅指出软件工程的目标是经济地开发出高质量的软件,而且强调了软件工程是一门工程学科,它应该建立并使用完善的工程化原则。n4. 1993年IEEE进一步给出了一个更全面的定义: 软件工程是:把系统化的、规范的、 可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;研究中提到的途径。n软件工程专家B.W.BOEHM 提出软件工程的七条原理:n1用分阶段的生命周期计划严格管理n2坚持进行阶段评审n3实行严格的产品控制n4采用现代程序设计技术n5结果应能清楚地审查1.2.2 软件工程的基

9、本原理软件工程的基本原理n6开发小组的人员应该少而精n7承认不断改进软件工程实践的必要性n这7条原理是互相独立的,其中任意6条原理的组合都不能代替另一条原理,因此,它们是缺一不可的最小集合。n1.1 软件危机与软件工程的起源n1.2 软件工程n1.3 软件工程包含的领域n1.4 小结与习题nIEEE在2004年发布的软件工程知识体系指南中将软件工程知识体系划分为以下10个知识领域。n 软件需求(software requirements)。n 软件设计(software design)。n 软件构建(software construction)。n 软件测试(software testing)

10、。n 软件维护(software maintenance)。n软件配置管理(software configuration management)。n 软件工程管理(software engineering management)。n软件工程过程(software engineering process)。n软件工程工具和方法(software engineering tools and methods)。n软件质量(software quality)。n软件需求表达了为解决某些真实世界问题而施加在软件产品上的要求和约束。软件需求的主要类型包括:产品与过程,功能性与非功能性,突出的属性。软件需求

11、知识领域涉及软件需求的抽取、分析、规格说明和确认。软件工业界一致认同的就是如果这些工作完成得不好,软件工程项目就很容易失败。1软件需求n软件设计是一个过程和这个过程的结果,此过程对一个系统或组件定义架构(architecture,也叫体系结构)、组件、接口以及其他特征。在这项活动中分析软件需求以产生一个软件内部结构的描述,此描述将成为软件构建的基础。2软件设计n软件构建指的是如何创建产生软件的详细步骤,这其中包括编码、验证、单元测试、集成测试和调试。3软件构建软件构建 测试是一个标识产品的缺陷和问题的活动。测试的目的是为了评估和改进产品质量。 软件测试通过使用有限的测试用例来动态地验证程序是否

12、能达到预期的行为。有限的测试用例是从通常情况下有无限可能性的执行领域中适当地选取出来的。4软件测试软件测试n软件开发工作的结果就是交付一个满足用户需求的软件产品。软件产品一旦投入运行,产品的缺陷就会被逐渐地暴露出来,运行的环境会逐渐发生变化,新的用户需求也会不断地浮出水面。软件维护就是要针对这些问题而对软件产品进行相应地修改或演化,从而修正错误,改善性能或其他特征,以及使软件适应变化的环境。5软件维护n软件配置管理(Software Configuration Management,SCM)是一项跟踪和控制软件变更的活动。6软件配置管理软件配置管理n软件工程管理是软件的开发和维护的管理活动,为

13、了达到系统的、遵循规程的和可量化的目标,它包括计划、协调、度量、监控、控制和报表。7软件工程管理软件工程管理n可以在两个层次上分析软件工程过程领域,第1个层次包括软件生命周期过程中技术的和管理的活动,它们是在软件获取、开发、维护和退出运行中完成的。第2个层次是元层次,涉及软件生命周期过程本身的定义、实现、评估、管理、变更和改进。8软件工程过程软件工程过程 软件开发工具是用于辅助软件生命周期过程的基于计算机的工具,工具可以将重复并明确定义的动作自动化,减少了软件工程师的认知负担,使软件工程师可以集中在开发过程的创造性方面。 软件工程方法的目标是使软件工程活动系统化并最终更可能成功。9软件工程工具

14、和方法n对于Phil Crosby,质量就是“遵从用户需求”,Watts Humphrey认为质量就是“达到适合使用的卓越层次”。IBM发明了术语“市场驱动的质量”,它基于达到全面的客户满意,关于组织质量的Baldrige准则使用了一个类似的短语“客户驱动的质量”,将客户满意作为主要的考虑。在ISO9001-00中,质量被定义为“一组内在特征满足需求的程度”。10软件质量软件质量n1.1 软件危机与软件工程的起源n1.2 软件工程n1.3 软件工程包含的领域n1.4 小结与习题n计算机软件工程学的简短概述。n计算机系统发展简史n开发软件的一些错误方法和观念的形成n软件危机n开发和维护软件的科学

15、技术小结n1什么是软件危机?为什么会出现软件危机?n2假设你是一家软件公司的总工程师,请把图1.1给软件工程师们看,告诉他们及早发现并改正错误的重要性。其中有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不合理的,并指出“如果一个故障是编码错误造成的,那么一个人怎样能在设计阶段清除它呢?”你怎么反驳他?习题n3什么是软件工程?怎样运用软件工程消除(至少是缓解)软件危机?n4简述结构化范型和面向对象范型的要点,并比较这两种范型的优缺点。5根据历史数据可以做出如下的假设。(1)对计算机存储容量的需求大致按下面公式描述的趋势逐年增加: M = 4 080e0.28(Y1960)(2)存储器

16、的价格按下面公式描述的趋势逐年下降: P1=0.30.72Y1974(美分/位)如果计算机字长为16位,则存储器价格下降的趋势为: P2=0.0480.72Y1974(美分/字)在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。基于上述假设可以比较计算机硬件和软件成本的变化趋势。 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少? 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4 000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。 假设在1995年存储器字长为32位,一名程序员每天可开发出30条

17、指令,程序员的月平均工资为6 000美元,重复、题所问。6美国某科幻电影中有一个描写计算机软件错误的故事,很富于戏剧性。故事情节如下: 由计算机HAL控制的宇宙飞船在飞往木星的旅途中,飞行指挥员鲍曼和HAL之间有一段对话。鲍曼命令道:“HAL,请对备用舱进行故障预报测试。”10s后HAL报告:“一切正常”。 但是,地面上的飞行指挥中心在重复做了故障预报测试后,却得出了相反的结论:“鲍曼,我是飞行指挥中心,你的计算机在预报故障时可能犯了错误,我们的两台HAL计算机都得出了和你的计算机相反的结论”。鲍曼用手指敲着控制台说:“HAL,是不是有什么东西干扰了你,以致出了这个差错?”“听着,鲍曼,我知道你很想帮助我,但是我的信息处理是正常的。不信就查看我的记录吧,你会看到它是完全正确的。”“我看过你的服务记录,但是谁都可能犯错误啊。”“我并不固执己见,但是,我是不可能犯错误的”“喂,我是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论