软件工程讲稿01.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 讲稿 01
- 资源描述:
-
*,TM,*,大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有,软件工程导论,主 讲 人:软件工程研究所 蒋波 教授课程时间,:2011,年,8,月,-2012,年,1,月联系方式:,bojiang,0411-84729698,办公地点,:,扬帆楼,509,室,1.,课程目的,通过本课程的学习,使学生掌握软件工程的概念和技术方法,提高其基本的软件能力和软件过程能力,提高软件生产率、提高软件质量、降低软件成本。,2.,课程对象,软件工程专业、计算机科学与技术专业本科生、研究生等。,3.,教材构成,软件工程导论,(,第,5,版,),,张海藩 编著,清华大学出版社,软件工程导论学习辅导,,同上,软件工程,Ian,Sommerville,程成等译,机械工业出版社,软件工程,,曾强聪 编著,高等教育出版社(针对专科),前言,前言,1.,什么是软件?,首先讨论几个相关的概念,许多人把,软件,这一术语等同于,计算机程序,,这种理解是很狭隘的。,软件是程序和所有使程序能够正确地运行所需要的相关文档与配置信息的集合。,一个软件系统通常包含大量独立的程序,以及用于设置这些程序的配置文件、描述系统结构的系统文档、如何使用该系统的用户文档,以及告知用户下载最新产品信息的,Web,站点等。,概括地说,软件是程序、数据及相关文档的完整集合。,Boehm,认为,:软件 程序 文档。,前言,2.,软件的特点是什么,?,软件是一种逻辑实体,它具有抽象性。,软件的开发过程没有明显的制作过程。软件是通过人们的智力,活动,把知识与技术转化为信息的一种产品。软件产品研制成,功后可以复制使用,但不可以像硬件产品那样可以重复制造。,软件在使用期内没有磨损、老化问题,但也有退化的问题。,前言,软件的开发与运行常常受到计算机系统的限制,对计算机系统,有着不同程度的依赖。,软件的开发至今为止尚未完全摆脱手工艺的开发方式。虽然近,年来软件复用技术、自动生成技术、软件开发工具等有了新的,进展,但这些技术和工具在软件开发中所占的比率仍然很少。,软件本身是复杂的,而且随着应用规模的扩大,软件变得越来,越复杂。有人认为,软件是人类能够制造的最为复杂的产物。,软件的成本相当昂贵。软件的技术落后于应用需求,软件成本,占计算机系统总成本的比率在逐渐加大。,相当多的软件工作涉及到社会因素。由于对软件的认识不同,,导致软件在开发过程中得不到应有的重视,也是导致软件开发,失败的关键因素之一。,从以上分析可以看出,出现,软件危机,是必然的,软件的特点决定了软件危机的产生。,60,年代以来人们所担心的,软件危机,问题到目前为止并没有真正被排除。,前言,3.,软件的分类,通用软件产品,由软件开发机构制作,在市场上公开销售,可以独立使用。,通用软件有时也称为缩卷软件,(shrink wrapped software),。,定制软件产品,这些产品受特定客户的委托,由软件承包商专门为其开发。,按软件的功能可以将软件划分为:,系统软件;支撑软件;应用软件。,按软件工作方式可以将软件划分为:,实时处理软件;分时处理软件;交互式软件;批处理软件。,其它划分方法:,按规模划分(大、中、小型软件);,按服务对象范围划分(项目软件、产品软件)等。,系统软件,支撑软件,应用软件,前言,4.,软件危机,人们通常所指的软件危机,主要是指出现如下几个现象:,由于缺乏软件开发的经验和有关软件数据的积累,使得开发工,作的计划很难制订,在,进度、费用,上估计不准确,使用户不满。,软件需求很难确定或不确定。这一点是非常关键的。,开发过程缺乏统一、公认的方法论或规范指导,缺乏规范文,档,使得软件很难维护。,测试工作不充分,导致软件错误很多,软件可靠性降低。,有很多的软件测试方法已经被广泛采纳,如黑盒测试、白盒测试、逻辑覆盖、等价类划分、边界值划分、错误猜测、,Alpha,测试、,Beta,测试,等技术,这些概念将在后面的章节中详细介绍。在此,举两个例子说明软件测试的重要性。,前言,例,1,,,1963,年美国的火箭控制系统程序。,在该程序中,把,FORTRAN,语句,DO 5 I=1,,,3,写成了,DO 5 I=1.3,,,结果使得发往火星的火箭爆炸,造成,1000,多万美元的损失。,例,2,:,1966,年开发的,IBM360,机的操作系统。,该操作系统花费了,5000,人年的工作量,写出了近,100,万行源程序,但是却得到了一个很不成功的软件。每更新一次版本,都能找到,1000,多个错误,成为用之不灵、弃之可惜的软件系统。,由于上述种种原因,产生了软件危机。,解决软件危机的方法之一是:按工程化的原则和方法组织软件开发工作,同时,要制定相应的标准。,需要软件工程的技术、方法指导,!,软件工程过程规定了获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。目的是为各类人员(,项目干系人,)提供一个公共的框架,以便使用相同的语言进行交流。,这个框架由几个重要过程组成,这些主要过程包括用来获取、供应、开发、操作和维护软件时所采用的基本的、一致的要求。,该框架还可用来控制和管理软件的开发过程。,各种组织和开发机构可以根据具体情况进行选择和剪裁,可在一个机构的内部或外部实施。,5.,软件工程过程,前言,软件工程过程中,没有规定,一个特定的生存周期模型或软件开发方法,各软件开发机构可为其开发项目选择一种生存周期模型,并将软件工程过程所包含的过程、活动和任务映射到该模型中,也可选择和使用软件开发方法来执行适合该软件项目的活动和任务。,软件工程过程包含如下,7,个过程:,1.,获取过程,为需方按合同获取一个系统、软件产品或服务的活动。,2.,供应过程,为供方向需方提供合同中确定的系统、软件产品或服务所需的活动。,3.,开发过程,为开发者和机构定义开发软件或服务时所需的活动。此过程包括需求分析、,设计、编码、集成、测试、软件安装和验收等活动。,4.,操作过程,为操作者和机构定义在规定的运行环境中为其用户运行一个计算机系统所,需要的活动。,5.,维护过程,为维护者和机构管理软件的修改,使之处于良好运行状态所需要的活动。,6.,管理过程,为软件工程过程中所做的各项管理活动,包括项目开始和范围定义、项目,管理计划、实施与控制以及评审与评价、项目完成等。,7.,支持过程,对项目生存周期过程给予支持的所有活动,它有助于项目的成功并能提高项,目的质量。,前言,第一章 软件工程概论,1,软件工程的背景和历史,1,Evolution of software,早期,面向批处理,有限的分布,自定义软件,1968,年由,NATO(,北大西洋公约组织,),在德国,Garmish,召开的学术会议上,,Feitz,Bauer,首先提出了“软件工程”的概念。,1950,1960,1970,1980,1990,现在,第二阶段,多用户,实时,数据库,软件产品,第三阶段,分布式系统,嵌入,“,智能,”,低成本硬件,消费者的影响,第四阶段,强大的桌面系统,面向对象技术,专家系统,人工神经网络,并行计算,网络计算机,复杂系统,软件工程再工程,2,软件危机的主要,特征,软件开发周期大大超过规定日期,;,软件开发成本严重超标,;,软件质量难于保证,。,第一章 软件工程概论,Successfully,Challenged,Canceled,31%,53%,16%,Yet,,,Success,Hasn,t,Come Easily,前言,2.1,软件危机概述,软件危机是指在计算机软件的,开发,和,维护,过程中所遇到的一系列严重问题。,这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都在不同程度上存在这些问题。,概括地说,软件危机,包含下述两方面的问题,:,如何开发软件,以满足对软件日益增长的需求?,如何维护数量不断膨胀的已有软件?,前言,具体地说,软件危机主要有以下一些典型表现:,(1),对软件开发成本和进度的估计常常很不准确。,(2),用户对,“,已完成的,”,软件系统不满意的现象经常发生。,(3),软件产品的质量往往靠不住。,(4),软件常常是不可维护的。,(5),软件通常没有适当的文档资料。,(6),软件成本在计算机系统总成本中所占的比例逐年上升。,(7),软件开发生产率提高的速度,远远跟不上计算机应用迅速,普及深入的趋势。,开发软件的实际成本,估计成本;,实际进度,比,预期进度慢很多,造成软件开发机构的信誉下降,为了赶进度和节约成本,可能,“偷工减料”,导致软件产品的质量下降,最终,不可避免地引起用户的不满。,软件开发人员常常在对用户要求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就,匆忙着手编写程序。,软件开发人员和用户之间的信息交流往往很不充分,,“,闭门造车,”,必然导致最终的,产品不符合用户的实际需要,。,软件可靠性和质量保证的确切的定量概念刚出现不久;,软件质量保证技术,(,审查、复审和测试,),还没有坚持不懈地应用到软件开发的全过程中。,所有这些都可能导致软件产品发生质量问题。,很多程序中的,错误是非常难改正的,,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些新的功能。,“,可重用的软件,”,还是一个没有完全做到的、正在努力追求的目标,人们仍然在重复地开发类似的或基本类似的软件。,前言,具体地说,软件危机主要有以下一些典型表现:,(1),对软件开发成本和进度的估计常常很不准确。,(2),用户对,“,已完成的,”,软件系统不满意的现象经常发生。,(3),软件产品的质量往往靠不住。,(4),软件常常是不可维护的。,(5),软件通常没有适当的文档资料。,(6),软件成本在计算机系统总成本中所占的比例逐年上升。,(7),软件开发生产率提高的速度,远远跟不上计算机应用迅速,普及深入的趋势。,软件产品,“,供不应求,”,的现象,使人类不能充分利用现代计算机硬件系统提供的巨大潜力。,计算机软件,=,程序,+,文档资料。,不仅仅是程序!,这些文档资料应该是在软件开发过程中产生的,与程序代码保持完全一致。管理人员使用这些文档资料作为,“,里程碑,”,,来管理和评价软件开发工程的进展状况;,软件开发人员利用它们作为通信工具,在软件开发过程中准确地交流信息;,对于软件维护人员而言,这些文档资料更是必不可少的。,缺乏必要的文档资料或者文档资料不合格,,必然给软件开发和维护带来许多严重的困难和问题。,硬件成本逐年下降,而软件开发由于需要大量人力,使得,软件成本随着通货膨胀以及软件规模与数量的不断扩大而持续上升。,美国在,1985,年软件成本大约已占计算机系统总成本的,90%,。,前言,2.2,产生软件危机的原因,在软件开发和维护的过程中存在这么多严重问题,不仅与软件本身的特点有关,而且与软件开发、维护的方法不正确也有关。,概括而言,产生软件危机的原因有如下两个方面:,客观原因:,软件缺乏可见性,软件规模庞大,软件是,逻辑部件,,因而缺乏,“,可见性,”,。,在代码被试运行之前,软件开发过程的进展情况较难衡量,软件质量也较难评价,因此,管理和控制软件开发过程相当困难。,软件在运行过程中不会因使用时间过长而被,“,用坏,”,,若运行中发现了错误,则该错误很可能是开发时期引入但在测试中未被检测出的错误。因此,软件维护通常意味着改正或修改原来的设计,因而在客观上造成软件较难维护。,软件的一个显著特点是,规模庞大,,且程序复杂性将随着程序规模的增加而呈指数上升。为了在预定时间内开发出规模庞大的软件,必须由许多人进行分工合作,但如何保证每个人完成的工作组合在一起确实能构成一个高质量的大型软件系统,更是一个极端复杂的问题,它不仅涉及到诸如分析方法、设计方法、形式说明方法、版本控制等许多技术问题,更重要的是必须有严格而科学的管理措施与手段。,软件本身独有的特点的确给开发和维护带来一些客观上的困难,但是人们在开发和使用计算机系统的长期实践中,已经积累和总结出了许多成功的经验。若坚持不懈地使用经过实践证明是正确的技术方法,许多困难是可以克服的。,事实上,确实存在着一些成功的范例。,但是,,目前相当多的软件专业人员对软件开发和维护还存在不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,,这可能是导致软件危机的主要原因。,前言,2.2,产生软件危机的原因,在软件开发和维护的过程中存在这么多严重问题,不仅与软件本身的特点有关,而且与软件开发、维护的方法不正确也有关。,概括而言,产生软件危机的原因有如下两个方面:,客观原因:,软件缺乏可见性,软件规模庞大,主观原因:,认识错误,技术错误,需求的不断变化,与软件开发和维护相关的许多错误认识和做法的形成,可归因于在计算机发展早期阶段软件开发的个体化特点。这些认识和做法主要表现为:,忽视软件需求分析的重要性;,认为软件开发就是写程序并设法使之运行;,轻视软件维护。,在没有完整准确地掌握用户需求的情形下就匆忙着手编写程序,是许多软件项目失败的主要原因之一。,另外,必须认识到程序只是软件产品的一个组成部分,在软件生命周期的每个阶段都要给出最终产品的一些组成部分,(,通常以文档资料形式呈现,),。,只重视程序而忽视软件配置其余成分的观念是错误的。,技术上的错误常常表现为开发人员的软件能力不足。,需求不断的变化常常使软件难以维护,(,后期引入的变化所需的代价更大,),。,前言,软件产品也存在从定义、开发、使用和维护,到被废弃的漫长生命周期。,问题定义就是确定待求解问题是什么?并通过可行性研究确定该问题是否存在一个可行的解决办法。然后进行需求分析,深入、具体地了解用户需求,取得与用户完全一致的认识。,开发阶段可分为概要设计、详细设计、编码实现与测试等。,测试工作的工作量通常占软件开发全部工作量的,40%,50%,。,编写程序的工作量通常只占软件开发全部工作量的,15%,20%,。,统计数据表明,用于软件维护的费用占软件总费用的,55%-70%,。有的资料认为高达,90%,。,做好软件定义时期的工作是降低软件成本提高软件质量的关键。,如果软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或软件交付使用后才发现“已完成的”软件不完全符合用户的需要,这时再修改软件就为时已晚了,而且花费的代价也将大幅度增加。,前言,项目,计划,软件功能,软件项目计划,评审,需求分析或原型,需求规格,说明书,原型,评审,A,定义阶段,源程序代码,概要设计,规格说明,数据与,结构设计,评审,评审,评审,过程,设计,程序,编码,原型,详细设计,规格说明,B.,开发阶段,修改过的,源代码,测试过程,与结果,单元测试,组装测试,确认测试,调试,评审,(QA),评审,交付,与,销售,维护,操作过程,用户文档,修改的,文档,C,测试、交付与维护阶段,改正错误的代价随着软件开发的进程大幅度增加,改正一个问题需付出的代价,需,求,分,析,结构设计,详细设计,编码,集成测试,系统测试,现场,改正一个问题的估计费用,改正一个问题估计的工作量,20,200,2000,1000,5.0,2.5,0.05,0.5,(,美元,),(,人天,),第一章 软件工程概论,前言,在软件开发的不同阶段进行修改需要付出的代价是很不相同的。,引入同一变更付出的代价,随时间变化的趋势,在早期引入变更,涉及的面较少,因而代价也比较低;,在中期,软件配置的许多成分已经完成,引入一个变更需要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;,在软件“已经完成”时再引入变更,当然需要付出更高的代价。,据美国一些软件公司的统计资料,在后期引入一个变更比在早期引入相同变更所需付出的代价高,2,3,个数量级。,右图定性地描绘了不同时期引入一个变更需要付出的代价变化趋势。,前言,通过上面的讨论不难认识到,轻视维护是一个最大的错误。许多软件产品的使用寿命长达,10,年甚至,20,年,在这样漫长的时期中,不仅要改正使用过程中发现的每一个潜在错误,而且当环境发生变化时,(,如硬件或系统软件更新换代,),,还必须相应地修改软件以适应新的环境,特别是要经常改进或扩充原来的软件以满足用户不断变化的需要。所有这些改动都属于维护工作,而且是在软件已经完成之后进行的,因此维护是极端艰巨复杂的工作,需要花费很大代价。,软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。,前言,2.3,消除软件危机的途径,(1),正确认识什么是软件,?,为了消除软件危机,首先应该对计算机软件有一个正确的认识。应该彻底消除在计算机系统早期发展阶段形成的,“,软件就是程序,”,的错误观念。一个软件必须由一个完整的配置组成,,事实上,软件是程序、数据及相关文档的完整集合,。其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。,1983,年,IEEE,为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。虽然表面上看来在这个定义中列出了软件的,5,个配置成分,但是,方法和规则通常是在文档中说明并在程序中实现的。,(2),正确认识软件开发过程,应充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种,组织良好、管理严密、各类人员协同配合、共同完成的工程项目,。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,同时在管理上要下功夫。,前言,(3),充分利用被实践证明是成功的技术与方法,应该推广使用在实践中总结出来的成功的开发软件技术和方法,并研究探索更有效的技术和方法,屏弃一些错误的概念和做法。,(4),充分利用好的软件开发工具,应该开发和使用更好的软件工具。正如机械工具可以“放大”人类的体力一样,软件工具可以“放大”人类的智力。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。,如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。,总之,为了解决软件危机,既要有,技术措施,(,方法和工具,),,又要有必要的,组织管理措施,。,软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,3,成功软件的标准,用户在,用,,用户的使用是最关键的因素;,用户可以很容易做完要做的事。,第一章 软件工程概论,开发人员开发出软件达不到用户要求,(,人的问题、技术问题,),4,失败的根本原因,5,处在十字路口的中国软件产业,主权大国必须建立基于自主技术的、完整的软件产业体系。,软件本国提供率:中国,1/3,左右,美国,97%,。,“,印度模式,”,还是,“,中国模式,”,?,“,中国模式,”,是什么?,软件人才结构不合理;,缺乏中高级软件人才;,软件人员缺乏软件工程化的概念。,6,软件工程,的定义,Fritz Bauer,在,NATO,会议上给出的定义:,“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。”,IEEE【IEE83】,给出的软件工程定义:,“,软件工程是开发、运行、维护和修复软件的系统方法。,”,IEEE【IEE93】,给出了一个更加综合的定义:,“,将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。,”,本书的定义:,软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。,第一章 软件工程概论,6.1,软件工程,的内涵,第一章 软件工程概论,概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而被证明是正确的管理技术与当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。,人们曾经给软件工程下过许多定义,下面给出两个典型的定义。,1968,年在第一届,NATO,会议上曾经给出了软件工程的一个早期定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”这个定义不仅指出了软件工程的,目标是,经济地开发出高质量,的软件,而且强调了,软件工程是一门工程学科,,它应该建立并使用完善的工程原理。,1993,年,IEEE,进一步给出了一个更全面更具体的定义:“软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究中提到的途径。”,第一章 软件工程概论,虽然关于软件工程的定义的描述不尽相同,所强调的重点也有差异,但是,人们普遍认为软件工程应具有下述几个本质的特性。,软件工程主要关注于大型程序的构造,“大”与“小”的分界线并不十分清晰。,通常把一个人在较短时间内写出的程序称为小型程序,而把多人合作用时半年以上才写出的程序称为大型程序。,传统的程序设计技术和工具是支持小型程序设计的,不能简单地将这些技术和工具用于开发大型程序。,事实上,在这里使用术语“程序”并不十分恰当,现在的软件开发项目通常构造出包含若干个相关程序的“系统”。,软件工程的中心课题是控制复杂性,通常,软件所解决的问题十分复杂以致于不能把问题作为整体来通盘考虑。人们不得不把问题分解开来,使得每个部分都是可理解的,且各部分之间保持着简单的通信关系。用这种方法并不能降低问题的整体复杂性,但却可使问题变成是可以管理的。注意,许多软件的复杂性主要不是由问题的内在复杂性造成的,而是由必须处理的大量细节造成的。,第一章 软件工程概论,软件经常变化,绝大多数软件都模拟了现实世界的某一部分。现实世界在不断变化,软件为了不被很快淘汰,必须随着所模拟的现实世界一起变化。因此,在软件系统交付使用后仍然需要耗费成本,而且在开发过程中必须考虑软件将来可能的变化。,开发软件的效率非常重要,目前,社会对新应用系统的需求超过了人力资源所能提供的限度,软件供不应求的现象日益严重。因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具。,和谐地合作是开发软件的关键,软件处理的问题十分庞大,必须多人协同工作才能解决这类问题。为了有效地合作,必须明确地规定每个人的责任和相互通信的方法。事实上仅有上述规定还不够,每个人还必须严格地按规定行事。,为了迫使大家遵守规定,应该运用标准和规程。通常,可以用工具来支持这些标准和规程。,总之,纪律或规章是成功地完成软件开发项目的一个关键。,第一章 软件工程概论,软件必须有效地支持它的用户,开发软件的目的是支持用户工作。软件提供的功能应能有效地协助用户完成其工作。如果用户对软件系统不满意,可以弃用该系统,或者立即提出新的需求。因此,,仅仅用正确的方法构造系统还不够,还必须构造出正确的系统。,有效地支持用户意味着必须仔细地研究用户以确定适当的功能需求、可用性要求及其他质量要求,(,如可靠性、响应时间等,),。有效地支持用户还意味着不仅应该提交软件产品,而且应写出用户手册和培训材料。此外,还必须注意建立使用新系统的环境。,在软件工程领域中,是由具有一种文化背景的人替具有另一种文化背景的人创造产品,这个特性与前两个特性紧密相关。软件工程师是诸如,Java,程序设计、软件体系结构、测试或统一建模语言,(UML),等方面的专家,他们通常并不是领域专家,但他们又不得不为这些领域开发应用系统。,缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。,软件工程师不仅缺乏应用领域知识,而且还缺乏该领域的文化知识。例如,软件开发者通过访谈、阅读书面文件等方法了解到用户的“正式”工作流程,并用软件实现该工作流程。但决定软件系统成功与否的关键问题是用户组织是否真正遵守这个工作流程。对于局外人来说,这个问题更难回答。,6.2,软件工程,的基本原理,第一章 软件工程概论,自从,1968,年在联邦德国召开的国际会议上正式提出并使用了“软件工程”术语以来,学术界陆续提出了,100,多条关于软件工程的准则或“信条”。著名的软件工程专家,B.W.Boehm,综合这些学者们的意见并总结了,TRW,公司多年开发软件的经验,于,1983,年在一篇论文中提出了软件工程的,7,条基本原理。他认为这,7,条基本原理是确保软件产品质量和开发效率的原理的最小集合。,这,7,条原理是互相独立的,其中任意,6,条原理的组合都不能代替另一条原理,因此,它们是缺一不可的最小集合。然而,这,7,条原理又是相当完备的,人们虽然不能用数学方法严格证明它们是一个完备的集合,但是,可以证明在此之前已经提出的,100,多条软件工程原理都可以由这,7,条原理的任意组合蕴含或派生出来。,软件工程的,7,条基本原理可描述如下:,第一章 软件工程概论,采用分阶段的生命周期计划实现对项目的严格管理,有人经统计发现,不成功的软件项目中有一半左右是由于计划不周造成的,因此把,建立完善的计划作为第一条基本原理,提出,是吸取了前人的经验与教训。,在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作。这条基本原理意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。,不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。,坚持进行阶段评审,以确保软件产品的质量,当时已经认识到,软件的质量保证工作不能等到编码阶段结束之后再进行。这样说至少有两个理由:,第一,大部分错误是在编码之前造成的,例如,根据,Boehm,等人的统计,,设计错误占软件错误的,63%,,编码错误仅占,37%,;,第二,,错误发现与改正得越晚,所需付出的代价也越高。,因此,在每个阶段都要进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。,第一章 软件工程概论,实行严格的产品控制,在软件开发过程中改变需求是难免的,只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成份的一致性,必须实行严格的产品控制,其中主要是,实行基准配置管理,。所谓基准配置又称为基线配置,它们是经过阶段评审后的软件配置成份。基准配置管理也称为变动控制:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格规程进行评审,获得批准后才能实施修改,绝不能随意进行修改。,采用现代程序设计技术,从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术,并进一步研究各种先进的软件开发与维护技术。实践表明,采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。,结果应能清楚地审查,软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员,(,或开发小组,),的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使所得到的结果能够清楚地被审查。,第一章 软件工程概论,开发小组的人员应该少而精,这条基本原理的含义是,,软件开发小组的组成人员的素质应该好,且人数不宜过多。,开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,随着开发小组人员数目的增加,因为交流情况讨论问题而造成的通信开销也急剧增加。当开发小组人员数为,N,时,可能的通信路径有,N(N-1)/2,条,可见随着人数,N,的增大,通信开销将急剧增加。因此,组成少而精的开发小组是软件工程的一条基本原理。,承认不断改进软件工程实践的必要性,遵循上述,6,条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但是,仅有上述,6,条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,能跟上技术的不断进步。因此,,Boehm,提出应把承认不断改进软件工程实践的必要性作为软件工程的第,7,条基本原理。按照这条原理,不仅要积极主动地,采纳新的软件技术,而且要注意不断总结经验,。,7,软件工程是一门交叉学科,第一章 软件工程概论,软件工程的主要研究内容:,软件开发,技术,:,软件开发方法学,软件开发过程,软件工具和软件工程环境,软件工程,管理,:,软件管理学,软件经济学,软件心理学,软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制、开发与生产的理解,软件工程的含义将会发生变化。,应用发展的眼光看待软件工程。,第一章 软件工程概论,软件工程包括,技术,和,管理,两方面的内容,是技术与管理紧密结合所形成的工程学科。,所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。,通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,(methodology),,也称为范型,(paradigm),。在软件工程领域中,这两个术语的含义基本相同。,目前使用得最广泛的软件工程方法学,分别是,传统方法学,和,面向对象方法学,。,第一章 软件工程概论,传统方法学也称为,生命周期方法学,或,结构化范型,。它采用结构化技术,(,结构化分析、结构化设计和结构化实现,),来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。,采用这种方法学开发软件时,从对问题的抽象逻辑分析开始,逐个阶段进行开发。前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的实现细节。每一个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束;如果没通过检查,则必须进行必要的返工,而且返工后还要再经过审查。,审查的一条主要标准就是每个阶段都应该交出“最新式的”,(,即和所开发的软件完全一致的,),高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。文档是通信的工具,它们清楚准确地说明了到目前为止,关于该项工程已经知道了什么,同时奠定了下一步工作的基础。此外,文档也起备忘录的作用,如果文档不完整,那么一定是某些工作忘记做了,在进入生命周期的下一个阶段之前,必须补足这些遗漏的细节。,7.1,传统方法学,第一章 软件工程概论,把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度。,在软件生命周期的每个阶段都采用科学的管理技术和良好的技术方法,而且在每个阶段结束之前都从技术和管理两个角度进行严格的审查,合格之后才开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。,总之,采用生命周期方法学可以大大提高软件开发的成功率,软件开发的生产率也能明显提高。,目前,传统方法学仍然是人们在开发软件时使用得十分广泛的软件工程方法学。这种方法学历史悠久,为广大软件工程师所熟悉,而且在开发某些类型的软件时也比较有效,因此,在相当长一段时期内这种方法学还会有生命力。,此外,如果没有完全理解传统方法学,也就不能深入理解这种方法学与面向对象方法学的差别以及面向对象方法学为何优于传统方法学。因此,在软件工程领域,不仅要讲述面向对象方法学,也要讲述传统方法学。,第一章 软件工程概论,当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候,使用传统方法学开发软件往往是不成功的。此外,使用传统方法学开发出的软件,维护起来仍然很困难。,结构化范型只能获得有限成功的一个重要原因是:这种技术要么面向行为,(,即对数据的操作,),,要么面向数据,,还没有既面向数据又面向行为的结构化技术。,众所周知,,软件系统本质上是信息处理系统。,离开了操作便无法更改数据,而脱离了数据的操作是毫无意义的。数据和对数据的处理原本是密切相关的,把数据和操作人为地分离成两个独立的部分,自然会增加软件开发与维护的难度。与传统方法相反,,面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。,7.2,面向对象方法学,概括地说,面向对象方法学具有下述,4,个要点:,(1),把对象,(object),作为融合了数据及在数据上的操作行为的统一的软件构件。,面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。也就是说,,用对象分解取代了传统方法的功能分解。,第一章 软件工程概论,(2),把所有对象都划分成类,(class),。,每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义。数据用于表示对象的静态属性,是对象的状态信息,而施加于数据之上的操作用于实现对象的动态行为。,(3),按照父类,(,或称为基类,),与子类,(,或称为派生类,),的关系,把若干个相关类组成一个层次结构的系统,(,也称为类等级,),。,在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承。,(4),对象彼此间仅能通过发送消息互相联系。,对象与传统数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是数据处理的主体,必须向它发消息请求它执行它的某个操作以处理它的数据,而不能从外界直接对它的数据进行处理。也就是说,对象的所有私有信息都被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。,面向对象,=,对象,+,类,+,继承,+,基于消息的通信,第一章 软件工程概论,面向对象方法学的出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间,(,也称为问题域,),与实现解法的解空间,(,也称为求解域,),在结构上尽可能一致。,传统方法学强调自顶向下、顺序地完成软件开发的各阶段任务。事实上,人类认识客观世界解决现实问题的过程是一个渐进的过程。人的认识需要在继承已有的有关知识的基础上,经过多次反复才能逐步深化。在认识深化过程中,既包括了从一般到特殊的演绎思维过程,也包括了从特殊到一般的归纳思维过程。,用面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。面向对象方法在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑,(,即无缝,),过渡。对象分类的过程,支持了从特殊到一般的归纳思维过程;通过建立类等级而获得的继承性,支持从一般到特殊的演绎思维过程。,正确地运用面向对象方法学开发软件,则最终的软件产品由许多较小的、基本上独立的对象组成,每个对象相当于一个微型程序,而且大多数对象都与现实世界中的实体相对应。因此,降低了软件产品的复杂性,提高了软件的可理解性,,简化了软件的开发和维护工作,。对象是相对独立的实体,容易在以后的软件产品中重复使用,因此,面向对象范型的另一个重要优点是促进了软件重用。面向对象方法特有的继承性和多态性,进一步,提高了软件的可重用性,。,8,软件工程,一种层次化技术,工具,方法,过程,质量焦点,软件工程三个要素:方法、工具、过程,Software engineering layers,第一章 软件工程概论,软件工程的三个基本要素,软件工程的目标,软件工程目标间的相互关系,9,软件工程的目标,第一章 软件工程概论,软件工程,的,三个基本要素,软件工程包括三个基本要素,即方法、工具和过程。,方法:,主要研究如何做的问题;,工具:,是为了软件开发提供一个支撑环境;,过程:,是将软件工程的方法和展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




软件工程讲稿01.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/13353115.html