1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第1章 软件工程介绍,意外效应法则与计算机软件,软件的角色,软件的特性,软件的分类,软件危机,软件生存期的概念,软件工程的概念及其要素,软件工程项目的基本目标,软件工程知识体,软件神话,意外效应法则与计算机软件,某些新科技的发明创造会给其他一些看似无关的技术领域、给商务企业、给公众甚至整个社会文化带来深远而出人意料的影响和作用。这就是所谓的“,意外效应法则,(the law of unintended consequences)”。,计算机软件已经成为世界舞台上最为重要的科技领域,并且是“,意外效应法则,
2、的一个最好的体现。,软件的角色,现在的软件具有,产品和产品生产载体,的双重作用。,作为一个,产品,,它显示了由计算机硬件体现的计算能力。无论是在手机还是在大型计算机中,软件都扮演着信息转换的角色:产生、管理、查询、修改、显示或者传递各种不同的信息。,作为,产品生产的载体,,软件提供了计算机控制(操作系统)、信息通信(网络)、以及应用程序开发和控制(软件工具和环境)的基础平台。,软件的特性,软件是设计开发的,而不是传统意义上的生产制造,。软件产品成本主要在于开发设计,不能像管理制造项目那样管理软件开发项目。,软件不会“磨损”,。磨损的硬件部件可以用备用的器件替换。而软件却不存在备用器件。每个软
3、件的错误都暗示了设计的缺陷或者在从设计转化到机器可执行代码的过程中产生的错误。因此,软件维护比硬件维护更为复杂。,虽然整个工业向着基于组件组装的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的,。在硬件设计中,器件复用是工程进程中通用的方法。而在软件设计中,大规模的复用还刚刚开始尝试。,软件的分类,系统软件,应用软件,工程科学软件,嵌入式软件,产品线软件,Web应用软件,人工智能软件,软件危机,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。,概括地说,软件危机包含下述两个方面
4、的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。,具体来说,软件危机主要有以下一些典型表现,:,对软件开发成本和进度的估计常常很不准确。,用户对“已完成的”软件系统不满意的现象经常发生。,软件产品的质量往往靠不住。,软件常常是不可维护的。,软件通常没有适当的文档资料。,软件成本在计算机系统总成本中所占的比例逐年上升。,软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。,以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些。,如何摆脱软件危机?,按工程化的原则和方法组织软件开发工作。,软件生存
5、期 life cycle,软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期,软件生存期的六个步骤,即,制定计划,、,需求分析,、,设计,、,程序编码,、,测试,及,运行维护,软件工程的定义,Boehm,:,运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料,IEEE,:,软件工程是开发、运行、维护和修复软件的系统方法,Fritz Bauer,:,建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法,软件工程三要素:方法、工具和过程,软件工程方法为软件开发提供了“如何做”的技术,软件工具
6、为软件工程方法提供了自动的或半自动的软件支撑环境,软件工程过程定义了:,方法使用的顺序,要求交付的文档资料,为保证质量和适应变化所需要的管理,软件开发各个阶段完成的里程碑,软件工程项目的基本目标,付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使,用,软件工程知识体,(Software Engineering Body of Knowledge,SWEBOK),2001,年由,IEEE_CS,发布的,SWEBOK,对软件工程学科的边界进行了定义,将软件工程划分为,10,个知识域(,KA,),,并详细列出了每个知识域
7、中的知识点,,2004,年,IEEE_CS,又发布了新版的,SWEBOK,的框架。,需求基础,需求过程,需求提取,需求分析,需求规范,需求管理,需求确认,设计基础,关键问题,体系结构,设计质量分析和评估,测试基础,测试级别,测试技术,SWEBOK指南,软件,需求,软件,设计,软件,构造,软件,测试,软件,维护,软件配置,管理,软件工程,管理,软件工程过程,软件工程,工具和方法,软件,质量,软件设计符号,软件设计,策略方法,测量措施,测试过程,维护基础,维护过程,关键问题,维护技术,SCM过程管理,配置标识,配置控制,软件发行版本管理,软件构造基础,软件维护,构造,实践考虑,配置状态,报告,启动
8、域定义,项目规划,配置控制,软件工程,度量,审核评估,终止,过程实施,过程变更,过程定义,过程评估,过程度量,产品度量,软件质量基础,软件质量,管理过程,实践考虑,软件工具,软件方法,需求工具,设计工具,构造工具,测试工具,配置工具,工程管理工具,过程管理工具,质量管理工具,其它工具,启发式方法,形式化方法,原型法,除了上述知识域之外,还列出了相关学科的知识域,主要包括:计算机工程、计算机科学、管理、数学、系统工程等。,软件神话,引起软件危机的诸多原因可以追溯到软件开发的早期阶段产生的神话。软件神话具有一些特征使得它们很有欺骗性:例如,它们表面上看很有道理(有时含有一定真实的成分);它们符合
9、人的直觉;它们常常是有经验的实践者发布出来的。,神话,1,:我们已经有了关于建造软件的标准和规程的书籍,难道它们不能给人们提供所有其需要知道的信息吗?,事实:不错,关于标准的书籍已经存在,但真正用到了它们吗?软件实践者知道它们的存在吗?它们完整吗?很多情况下,对于这些问题的答案均是“不”。,神话,2,:如果我们已经落后于计划,可以增加更多的程序员来赶上进度。,事实:软件开发并非象制造一样是一个机械过程。用,Brooks,的话来说:“给一个已经延迟的软件项目增加人手只会使其更加延迟”。看起来,这句话与人的直觉正好相反。但实际上,增加新人,原来正在工作的开发者必须花时间来培训新人,这样就减少了他们花在项目开发上的时间。人手可以增加,但只能是在计划周密、协调良好的情况下。,神话,3,:一旦我们写出了程序并使其正常运行,我们的工作就结束了,事实:有人说过:“越早开始写程序,就要花越长时间才能完成它”,产业界的数据表明在一个程序上所投入的,50,到,70,的努力是花费在第一次将程序交给用户之后。,神话,4,:一个成功项目唯一应该提交的就是运行程序,事实:运行程序仅是软件配置的一部分,软件配置包括:程序、文档和数据。文档是成功开发的基础,更重要的是,文档为软件维护提供了指导。,Thats All!,






