资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,/86,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,/86,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,/86,软件工程初级教程,主讲,:,赵晓洪,邮件,1,/86,一、课程的性质、任务,“,软件工程,”,是专业核心基础课程,它是研究,软件开发,和,软件管理,的一门工程科学。,它的主要任务是掌握支持软件,开发,和,管理,的理论、方法、技术、标准以及计算机辅助软件工程的工具,(,Visio,或,Rose,),环境等知识;使学生具有软件开发能力,(包括熟练进行程序设计语言的结构化编码与可视化设计能力,;UML,的阅读和建模能力;培养用软件工程化及项目化的思想处理解决问题的能力等),。,2,/86,概括说:软件开发能力最关键的步骤有三步:,3,/86,二、通过学习应能达到如下目标:,接受一种思想。掌握软件工程的基本原理、概念与方法,-,主要包括软件系统的可行性研究、需求分析、概要设计、详细设计、编码、测试、维护、面向对象、项目管理等方面的基本知识与方法。,掌握软件工程中的一些基本技术方法,如数据流图、数据字典、结构分析方法,面向对象分析方法、集成测试方法、项目管理的基本方法等。,结合模拟案例,要求学生从实际中掌握从面向过程到面向对象思想理论的基本方法和技巧。掌握软件开发文档的组织编写等。,掌握一种工具。学期末能用,Visio,或,Rose,软件完成大作业的设计(画各种软件工程图)(指定或自找题目),把目前或以后要学的程序设计知识(,C,、,Java,、,VC+,、,C#,、,ASP.NET,)提高到一定理论高度认识。,小提示:,学会思想比掌握一种工具更为重要。,4,/86,“现在大家都已认识到,如果有哪个项目不遵循软件工程原则必定会受到实践的惩罚。”,“软件工程课是我们参加工作以后最能直接应用的一门专业课。”,一位刚毕业参加工作的计算机专业学生,三、体会:,5,/86,目 录,第,1,章 软件工程的基本概念与原理,第,2,章 软件开发过程,第,3,章 软件项目管理,第,4,章 可行性分析与初步计划,第,5,章 需求分析,第,6,章 总体设计,第,7,章 详细设计,第,8,章 软件实现,第,9,章 软件维护,第,10,章 从结构化到面向对象,第,11,章 面向对象的需求获取,第,12,章 面向对象的分析与设计,第,13,章 面向对象的测试,6,/86,第,1,章 软件工程的基本概念与原理,7,/86,先接受,2,个正确观点,1,、,“,开发软件不等于编写程序,”,开发软件应该完成的工作远远多于编写程序应该完成的工作。,设计算法,(即完成指定功能的步骤),然后用程序设计语言(例如:,C,语言),表达该算法,。,而开发软件并非就是编写程序,事实上编写程序仅仅是开发软件所应完成的工作的一部分,而且只占一小部分。,为了开发出一个符合用户需要、质量合格的软件,软件工程师必须,首先弄清楚用户面临的问题是什么,,也就是要明确软件的“主攻”方向;,接下来应该进行,可行性研究方案,,分析用户面临的问题是否有行得通的解决方案。为避免浪费资源,仅在该软件的开发是可行的前提下,才进行实质性的开发工作;,8,/86,先接受,2,个正确观点,然后应该进行,需求分析,工作,,通过与用户的反复交流,搞清楚用户对该软件的具体需求,这些需求是进行软件设计的依据;在编写程序之前需要先进行设计。,通常,大型软件的,设计工作又分成两个阶段进行,先进行,总体设计(又称为概要设计),再进行详细设计,;,编写程序,实质上是把设计结果翻译成用某种程序设计语言书写的程序;,程序编写出来之后,还需要经过严格的,测试过程,(需要的工作量通常占软件开发全部工作量的,40%,50%,),,软件确实符合用户需求而且质量合格,才能交付给用户使用。,9,/86,先接受,2,个正确观点,2,、,“,错误做法会导致软件危机,”。,开发软件不等于编写程序。但是,迄今为止,仍然有不少人错误地认为开发软件就是编写程序,或者认为开发软件主要就是编写程序。人们之所以有错误的认识并在开发软件时采用了错误的做法,主要可归因于在计算机系统发展的早期阶段“开发软件”的个体化特点。,所谓,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。,这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。,10,/86,1.1,软件,工程学,科,科的诞,生,生,软件的,特,特点,软件生,产,产的发,展,展,软件危,机,机,软件工,程,程的诞,生,生,11/86,软件的,特,特点,软件的,概,概念,:,20,世纪,60,年代提,出,出的,,(,软件,=,程序,+,文档,),程序,是指令,的,的集合,;,;,文档,有关程,序,序功能,、,、设计,、,、编程,使,使用的,文,文字或,图,图形资,料,料。,软件产,品,品的特,殊,殊性:,软件与,硬,硬件构,成,成完整,的,的计算,机,机系统,;,;,软件产,品,品与硬,件,件产品,的,的主要,区,区别包,括,括:,逻辑产,品,品、无,形,形、脑,力,力劳动,的,的结果,,,,以程,序,序和文,档,档的形,式,式体现,,,,保存,在,在特殊,介,介质上,,,,被计,算,算机执,行,行才能,体,体现出,它,它的功,能,能和作,用,用,软件生,产,产成本,集,集中在,研,研制阶,段,段;,软件不,会,会被用,坏,坏、不,存,存在磨,损,损和消,耗,耗,但,会,会过时,;,;,是脑力,创,创造的,结,结果,,还,还未完,全,全摆脱,手,手工开,发,发方式,,,,大部,分,分是”,定,定做”,;,;,软件生,产,产与维,护,护费用,不,不断增,加,加;,12/86,软件的,特,特点,软件是计算,机,机系统,中,中与硬,件,件相互,依,依存的,另,另一部,分,分,它是包,括,括程序,,,,数据,及,及其相,关,关文档,的,的完整,集,集合。,程序是按事,先,先设计,的,的功能,和,和性能,要,要求执,行,行的指,令,令序列,。,。,计算机,程,程序包,括,括源程,序,序和目,标,标程序,。,。,数据是使程序,能,能正常操,纵,纵信息的,数,数据结构,(,(即数据,的,的组织形,式,式)。,文档是与程序,开,开发,维,护,护和使用,有,有关的图,文,文材料。,13/86,软件的特,点,点,面向过程,的,的程序,=,算法,+,数据结构,面向对象,的,的程序,=,对象,+,消息,面向构件,的,的程序,=,构件,+,构架,软件,=,程序,+,数据,+,文档,14/86,软件的维,护,护曲线,修改点,图,1-3,实际的软件故障曲线图,故障率,时间,由于副作用造成故障,率的提高,15/86,1.1,软件,工程的产,生,生,软件的特,点,点,软件生产,的,的发展,软件危机,软件工程,16/86,软件生产,的,的发展,软件生产,经,经历了三,个,个阶段:,程序设计,时,时代(,46,年,-56,年),软件开发,时,时代(,56,年,-68,年),软件工程,时,时代(,68,年以后),17/86,程序设计,时,时代(,46,年,-56,年),个体手工,方,方式;,低级语言,、,、编程效,率,率低、难,,,,编程是,聪,聪明人的,事,事;,追求编程,技,技巧和程,序,序运行效,率,率;,代码不规,范,范,不易,读,读,不易,维,维护;,只重视编,码,码,不重,视,视设计和,文,文档;,硬件资源,紧,紧缺;,18/86,程序系统,时,时代(,56,年,-68,年),作坊式小,团,团队开发,;,;,出现高级,语,语言,编,程,程效率有,所,所提高;,追求写代,码,码技巧,,但,但提出了,结,结构化程,序,序设计方,法,法;,软件复杂,性,性增加,,需,需求增加,,,,但软件,开,开发方法,和,和软件项,目,目管理技,术,术跟不上,,,,开发速,度,度慢,与,计,计算机硬,件,件发展速,度,度拉大距,离,离;,软件数量,猛,猛增,但,质,质量差,,可,可维护性,差,差,维护,成,成本急剧,增,增加;,上述矛盾,越,越来越显,著,著,最终,导,导致了软,件,件危机;,19/86,软件工程,时,时代(,68,年以后),软件工程,学,学科诞生,,,,引入了,“,“工程化,”,”思想;,结构化和,面,面向对象,的,的方法成,熟,熟;,使用数据,库,库、开发,工,工具、开,发,发环境、,网,网络、分,布,布式技术,开,开发软件,;,;,软件开发,技,技术有了,很,很大进步,,,,但没有,突,突破性,,软,软件价格,不,不断上升,,,,没有完,全,全摆脱软,件,件危机;,20/86,计算机软,件,件发展的,三,三个时期,及,及特点,程序设计,程序系统,软件工程,现代软件工程,软件的范畴,程序,程序及说明书,产品软件,(项目软件),项目工程,主要程序设计语言,汇编及机器语言,高级语言,高级语言系统、程序设计语言,面向对象可,视化设计语言,软件工作范围,程序编写,包括设计和测试,软件生存期,整个软件生,存期,需求者,程序设计者本人,少数用户,市场用户,面向所有用,户,21/86,计算机软,件,件发展的,三,三个时期,及,及特点,22/86,1.1,软件,工程的产,生,生,软件的特,点,点,软件生产,的,的发展,软件危机,软件工程,诞,诞生,23/86,软件危机,软件危机,的,的产生,软件危机,的,的表现,软件危机,的,的原因,24/86,1.,软件危机,的,的产生,软件生产,的,的第二个,阶,阶段,硬,件,件生产成,本,本下降、,效,效率提高,、,、性能提,高,高,激发,了,了软件需,求,求;,软件复杂,性,性要求提,高,高、生产,效,效率低,,与,与硬件生,产,产进一步,拉,拉开距离,;,;,软件质量,差,差,难维,护,护,成本,急,急剧增加,;,;,软件项目,成,成功率低,;,;,上述矛盾,的,的进一步,激,激化,暴,发,发了软件,危,危机,25/86,软件危机,软件危机,的,的产生,软件危机,的,的表现,爆发软件,危,危机的原,因,因,26/86,2.,软件危机,的,的表现,(,1,)经费超,预,预算,项,目,目一再拖,延,延;,(,2,)开发的软,件,件不能满足,用,用户要求;,(,3,)软件可维,护,护性差;,(,4,)软件可靠,性,性差;,27/86,3.,软件危机产,生,生的原因,(,1,) 软件规,划,划越来越大,;,;,(,2,) 软件开,发,发管理困难,且,且复杂;,(,3,) 软件开,发,发费用不断,增,增加;,(,4,) 软件开,发,发技术落后,;,;,(,5,) 软件生,产,产方式落后,;,;,(,6,) 软件开,发,发工具落后,;,;,28/86,1.1,软件,工程的产生,软件的特点,软件生产的,发,发展,软件危机,软件工程的,诞,诞生,29/86,软件工程诞,生,生,软件危机促,使,使软件工程,学,学科诞生;,借鉴硬件生,产,产的“工程,化,化”思想,,1968,年,北大西,洋,洋公约组织,提,提出了“软,件,件工程”的,概,概念,主张,“,“用工程化,思,思想来开发,软,软件”。,30/86,第,1,章 软,件,件工程的基,本,本概念与原,理,理,1.1,软件,工程的产生,1.2,软件工程的,基,基本概念与,原,原理,1.,软件工程的,定,定义、性质,2.,软件工程关,注,注的主要问,题,题,3.,软件工程的,目,目标,4.,软件的生命,周,周期,5.,软件工程的,基,基本原理,31/86,软件工程定,义,义、性质,软件工程是,用,用科学知识,、,、技术、原,理,理来定义、,开,开发、维护,软,软件的一门,学,学科。,概括地说,,软,软件工程是,指,指导软件开,发,发和维护的,一,一门工程学,科,科。,软件工程学,科,科的根本要,求,求:采用工,程,程化的思想,、,、原理、技,术,术和方法来,开,开发与维护,软,软件,把好,的,的管理技术,和,和开发技术,方,方法结合起,来,来,追求可,靠,靠性、可维,护,护性、满足,用,用户需求、,高,高的开发效,率,率。,用工程学科中的观点进,行,行费用估算,、,、进度控制,、,、制定计划,和,和方案;用管理科学中的方法和,原,原理进行软,件,件生产过程,的,的管理;用数学的方法建立软件开,发,发中的各种,模,模型和算法,。,。,32/86,软件工程关,注,注的关键问,题,题,(,1,)关注于大,型,型程序的构,造,造,(,2,)中心课题,是,是控制复杂,性,性,(,3,)软件需求,经,经常变化,(,4,)开发软件,的,的效率非常,重,重要,(,5,)有效的沟,通,通是合作开,发,发软件的关,键,键,33/86,(,1,)软件工程,关,关注于大型,程,程序的构造,“大”与“,小,小”的分界,线,线并不十分,清,清晰。通常,把,把一个人在,较,较短时间内,写,写出的程序,称,称为小型程,序,序,而把多,人,人合作用时,半,半年以上才,写,写出的程序,称,称为大型程,序,序。,传统的程序,设,设计技术和,工,工具是支持,小,小型程序设,计,计的,不能,简,简单地把这,些,些技术和工,具,具用于开发,大,大型程序。,34/86,(,2,)软件工程,中,中心课题是,控,控制复杂性,通常,软件,所,所解决的问,题,题十分复杂,,,,以致于不,能,能把问题放,在,在一起试图,一,一步解决。,人,人们不得不,把,把问题分解,,,,使得分解,出,出的每个部,分,分是直观、,明,明了、可理,解,解的,而且,各,各部分之间,保,保持简单的,联,联系。用这,种,种方法并不,能,能降低问题,的,的整体复杂,性,性,但是却,可,可使它变成,容,容易解决。,注意,许多,软,软件的复杂,性,性主要不是,由,由问题的内,在,在复杂性造,成,成的,而是,由,由必须处理,的,的大量细节,,,,让人看上,去,去觉得很复,杂,杂。,结论:分解,的,的手法,是,控,控制复杂性,的,的主要手段,控制复杂性,的,的有效方法,是,是分解:,面向过程的,方,方法,是按,功,功能分解;,面向对象的,方,方法,是按,责,责任分解。,35/86,(,3,)软件需求,经,经常变化,绝大多数软,件,件都模拟了,现,现实世界的,某,某一部分。,现,现实世界不,断,断变化,人,们,们对其认识,也,也有偏差,,这,这就造成了,软,软件需求经,常,常变化的特,性,性。,这种变化不,仅,仅存在于开,发,发过程中和,也,也存在交付,使,使用以后。,前,前者要求在,开,开发过程中,,,,应能灵活,调,调整设计方,案,案,后者要,求,求软件应具,有,有可维护性,。,。,需求变更是软件开发活动与生俱来的特性,不可避免。,变更不是坏事,但它是软件开发面临的最大挑战。,软件工程追求的是、封装变更,灵活设计,应对变更,通过好的设计方法,使变更对原有设计方案和已有代码影响最小。,36/86,(,4,)开发软件,的,的效率非常,重,重要,随着社会经,济,济和文化的,发,发展,网络,及,及各类开发,与,与应用平台,的,的不断翻新,,,,计算机硬,件,件性能的不,断,断提高,社,会,会对软件的,数,数量、规模,和,和复杂性不,断,断提高,软,件,件的需求供,不,不应求的现,象,象依然日益,严,严重。,因此,寻求,开,开发与维护,软,软件的更好,、,、更有效的,方,方法和工具,,,,依然是软,件,件工程的一,个,个重要课题,。,。,不断提高软,件,件开发效率,非,非常重要,规范的开发,过,过程,好的开发环,境,境和工具、,提高软件复,用,用,是软件工程,提,提高效率的,有,有效办法。,37/86,(,5,)和谐地合,作,作是开发软,件,件的关键,软件处理的,问,问题日益复,杂,杂和庞大,,软,软件开发往,往,往是多人协,同,同工作的成,果,果,明确的,责,责任划分和,有,有效的互信,是,是团队成员,协,协作的关键,。,。,事实上仅有,上,上述规定还,不,不够,每个,人,人还必须严,格,格地按规定,行,行事。为了,迫,迫使团队成,员,员遵守规定,,,,应该运用,标,标准和规程,。,。通常,可,以,以用工具来,支,支持这些标,准,准和规程。,总,总之,纪律,是,是成功地完,成,成软件开发,项,项目的一个,关,关键。,团队合作是,必,必须的,使,用,用有效的工,具,具,进行有,效,效的沟通是,关,关键,38/86,软件工程的,性,性质,综合性、交,叉,叉性学科,涉及计算机,科,科学、工程,科,科学、管理,科,科学、数学,等,等领域。,39/86,1.2,软件工程的,基,基本概念和,原,原理,1.,软件工程的,定,定义、性质,2.,软件工程面,临,临的主要问,题,题,3.,软件工程的,目,目标,4.,软件的生命,周,周期,5.,软件工程的,基,基本原理,40/86,软件工程面,临,临的问题,需求问题,质量问题(,可,可靠性,可维护性,可移植性等,),),生产效率(,重,重用是为了,提,提高效率),费用,41/86,1.2,软件工程的,基,基本概念,1.,软件工程的,定,定义、性质,2.,软件工程面,临,临的主要问,题,题,3.,软件工程的,目,目标,4.,软件的生命,周,周期,5.,软件工程的,基,基本原理,42/86,软件工程的,目,目标,运用工程化,思,思想组织与,管,管理软件项,目,目,采用科,学,学的管理方,法,法、开发方,法,法及工具,,提,提高软件开发效率,保证软件质量,提高软件,的,的可靠性和可维护性,在合理的工期内生产出能够满足用户需,求,求的软件产品,。,。,43/86,1.2,软件工程的,基,基本概念,1.,软件工程的,定,定义、性质,2.,软件工程面,临,临的主要问,题,题,3.,软件工程的,目,目标,4.,软件的生命,周,周期,5.,软件工程的,基,基本原理,44/86,4.,软件生命周,期,期理论,软,件,件,生,生,存,存,周,周,期,期,的,的,定,定,义,义,软,件,件,生,生,命,命,周,周,期,期,阶,阶,段,段,的,的,划,划,分,分,软,件,件,生,生,命,命,周,周,期,期,阶,阶,段,段,划,划,分,分,的,的,原,原,则,则,软件生命周期是软件工程学的一个重要概念。引入软件生存周期概念,对于软件项目管理、进度控制有重要意义。,在软件开发过程中,为了使软件项目容易控制和管理,把整个生命周期划分为若干阶段。,划分阶段时,遵循“低耦合、高内聚”的原则。,45/86,软,件,件,生,生,存,存,周,周,期,期,的,的,定,定,义,义,软,件,件,生,生,命,命,周,周,期,期,(,(,SoftwareLifeCycle,),是,是,从,从,软,软,件,件,开,开,发,发,需,需,求,求,被,被,提,提,出,出,,,,,启,启,动,动,可,可,行,行,性,性,分,分,析,析,开,开,始,始,,,,,经,经,历,历,软,软,件,件,开,开,发,发,过,过,程,程,,,,,直,直,到,到,软,软,件,件,被,被,开,开,发,发,出,出,来,来,、,、,投,投,入,入,使,使,用,用,,,,,最,最,终,终,被,被,淘,淘,汰,汰,为,为,止,止,的,的,整,整,个,个,时,时,间,间,。,。,生,存,存,周,周,期,期,理,理,论,论,,,,,把,把,整,整,个,个,生,生,存,存,周,周,期,期,划,划,分,分,为,为,若,若,干,干,阶,阶,段,段,,,,,使,使,得,得,每,每,个,个,阶,阶,段,段,有,有,明,明,确,确,的,的,任,任,务,务,,,,,把,把,规,规,模,模,大,大,、,、,活,活,动,动,多,多,、,、,管,管,理,理,复,复,杂,杂,的,的,软,软,件,件,开,开,发,发,活,活,动,动,变,变,得,得,容,容,易,易,控,控,制,制,和,和,管,管,理,理,。,。,46/86,软,件,件,生,生,命,命,周,周,期,期,阶,阶,段,段,划,划,分,分,软,件,件,生,生,存,存,周,周,期,期,一,一,般,般,划,划,分,分,为,为,软,软,件,件,定,定,义,义,、,、,软,软,件,件,开,开,发,发,、,、,运,运,行,行,与,与,维,维,护,护,三,三,个,个,时,时,期,期,。,。,软,件,件,定,定,义,义,时,时,期,期,,,,,可,可,以,以,进,进,一,一,步,步,分,分,为,为问,题,题,定,定,义,义、可,行,行,性,性,研,研,究,究、需,求,求,分,分,析,析三,个,个,阶,阶,段,段,。,。,软,件,件,开,开,发,发,时,时,期,期,,,,,可,可,以,以,分,分,为,为概,要,要,设,设,计,计,、,、,详,详,细,细,设,设,计,计,、,、,编,编,码,码,、,、,测,测,试,试等,阶,阶,段,段,。,。,软,件,件,交,交,付,付,用,用,户,户,以,以,后,后,,,,,就,就,进,进,入,入,了,了,漫,漫,长,长,的,的,运,运,行,行,与,与,维,维,护,护,期,期,,,,,在,在,软,软,件,件,被,被,淘,淘,汰,汰,之,之,前,前,,,,,要,要,经,经,历,历,多,多,次,次,的,的,纠,纠,错,错,性,性,、,、,完,完,善,善,性,性,和,和,适,适,应,应,性,性,维,维,护,护,活,活,动,动,47/86,生,命,命,周,周,期,期,理,理,论,论,对,对,开,开,发,发,过,过,程,程,的,的,指,指,导,导,意,意,义,义,每,个,个,阶,阶,段,段,的,的,工,工,作,作,均,均,以,以,前,前,一,一,阶,阶,段,段,的,的,结,结,果,果,为,为,依,依,据,据,,,,,并,并,作,作,为,为,下,下,一,一,阶,阶,段,段,的,的,前,前,提,提,。,。,每,个,个,阶,阶,段,段,结,结,束,束,时,时,,,,,都,都,要,要,有,有技,术,术,审,审,查,查,和,和,管,管,理,理,复,复,审,审,,从,从,技,技,术,术,和,和,管,管,理,理,两,两,方,方,面,面,对,对,阶,阶,段,段,性,性,开,开,发,发,成,成,果,果,进,进,行,行,检,检,查,查,,,,,及,及,时,时,决,决,定,定,系,系,统,统,的,的,继,继,续,续,进,进,行,行,,,,,还,还,是,是,停,停,工,工,或,或,返,返,工,工,。,。,每,个,个,阶,阶,段,段,都,都,进,进,行,行,复,复,审,审,,,,,主,主,要,要,检,检,查,查,必,必,备,备,的,的文档资,料,料的质量,和,和有效,性,性。,前一阶,段,段复审通过了,,,,后一,个,个阶段,才,才能开,始,始。,应避免,到,到开发,后,后期才,发,发现先,期,期工作,中,中存在,的,的严重,错,错误,,造,造成不,可,可挽回,的,的损失,或,或浪费,。,。,48/86,生命周,期,期理论,对,对开发,过,过程的,指,指导意,义,义,把软件,生,生命周,期,期划分,为,为若干,阶,阶段,,是,是实施,软,软件生,产,产工程,化,化的基,础,础。,软件规,模,模、种,类,类、开,发,发方式,、,、开发,环,环境以,及,及开发,使,使用的,方,方法都,会,会影响,软,软件生,存,存周期,的,的阶段,划,划分。,分析师可以,根,根据软件性,质,质、用途及,规,规模等因素,,,,对软件过,程,程中的阶段,和,和活动进行,适,适当的裁剪,。,。,49/86,1.,问题定义阶,段,段,用户提出一,个,个软件开发,需,需求以后,,分,分析师首先,要,要明确软件,的,的实现目标,、,、规模及类,型,型:如它是,数,数据处理问,题,题还是实时,控,控制问题,,是,是科学计算,问,问题还是人,工,工智能问题,等,等。,50/86,2.,可行性研究,阶,阶段,在清楚了项,目,目的性质、,目,目标、规模,后,后,要对项,目,目进行可行,性,性分析。,分析师进行,一,一次大大简,化,化了的需求,分,分析和设计,过,过程,(,目的是探索,这,这个问题是,否,否值得去解,决,决,是否有,可,可行的解决,方,方案。,),提交可行性,研,研究报告。,可行性研究,报,报告中应给,出,出项目初步,开,开发计划。,根,根据项目的,目,目标、功能,、,、性能及规,模,模,估计开,发,发需要的资,源,源。还要对,软,软件开发费,用,用、开发进,度,度做出估计,。,。,详细的项目,开,开发计划,,等,等到需求分,析,析结束,对,项,项目有了进,一,一步的认识,之,之后,还要,进,进行一次细,化,化。,51/86,3,需求分析,阶,阶段,软件是为用,户,户开发的,,软,软件的功能性和非功能性要求首先,得,得由用户提出,这需要,用,用户配合,软,软件技术,人,人员按照,用,用户的实,际,际业务要,求,求进行挖,掘,掘。,最终得到,的,的软件产,品,品能否满,足,足用户的真实需求,是断定,项,项目成败,关,关键要素,。,。需求分析,是,是详细获,取,取并表述,用,用户需求,的,的活动。,需求分析,的,的结果是,后,后续设计,与,与编程活,动,动的依据,。,。获取真,实,实、完整,的,的需求,,并,并以适当,工,工具,准,确,确地表述,为,为需求分,析,析模型是,需,需求分析,活,活动的关,键,键。,这一阶段,的,的结果是软件需求,规,规格说明,书,书。,52/86,4,概要设,计,计阶段,概要设计,阶,阶段,开,发,发人员根,据,据软件需,求,求规格说,明,明书,构,造,造目标系,统,统的软件,结,结构。,这一活动,也,也被称为,“,“总体设,计,计”,用,于,于获得目,标,标系统的,宏,宏观蓝图,。,。,53/86,5,详细设,计,计阶段,详细设计,包,包括过程,设,设计,数,据,据结构设,计,计等活动,,,,主要是,把,把概要设,计,计的结果,,,,细化为,可,可以用某,种,种编程语,言,言实现的,设,设计方案,。,。,结构化方,法,法中,主,要,要是程序,流,流程设计,和,和用户界,面,面设计。,面向对象,的,的方法中,,,,将是对,前,前期得到,的,的类或对,象,象模型进,行,行细节设,计,计,使之,可,可以直接,支,支持编程,。,。,54/86,6,编程阶,段,段,编程又称,为,为编码,,就,就是编写,程,程序源代,码,码。最终,得,得到的“,源,源程序清,单,单”就是,源,源代码清,单,单。程序,源,源代码要,经,经过编译,或,或解释以,后,后,才能,被,被执行。,编码追求,的,的是程序代码,编,编写风格,要求规,范,范、友好,,,,便于阅,读,读和调试,,,,这是提,高,高程序质,量,量和软件,可,可维护性,的,的关键活,动,动之一。,编程往往,跟,跟调试以,及,及单元测,试,试同时进,行,行,由程,序,序员完成,。,。,55/86,7,测试阶,段,段,测试是软,件,件质量保,证,证活动的,最,最后一道,防,防线。,测试分为单元测试、集成测试和确认测试。,单元测试,就,就是模块,测,测试,与,编,编程活动,同,同时进行,。,。,独立的测,试,试阶段,,主,主要完成,集,集成测试,、,、确认测,试,试和验收,测,测试。,56/86,8,运行与,维,维护,软件运行,和,和维护是,生,生存周期,中,中最长的阶,段,段。,软件交付,使,使用后,,便,便进入漫,长,长的运行,和,和维护期,,,,可能持,续,续几年甚,至,至几十年,,,,此间可,能,能要进行,多,多次维护,或,或修改。,维护活动,按,按性质分,为,为纠错性,维,维护、完,善,善性维护,和,和适应性,维,维护。,57/86,1.2,软件工程,的,的基本概,念,念,1.,软件工程,的,的定义、,性,性质,2.,软件工程,面,面临的主,要,要问题,3.,软件工程,的,的目标,4.,软件的生,命,命周期,5.,软件工程,的,的基本原,理,理,58/86,软件工程,的,的基本原,理,理,软件工程,是,是一门实,践,践性很强,的,的应用学,科,科,掌握,必,必要的原,理,理和行动,原,原则,对,于,于规范实,践,践活动,,深,深入理解,软,软件工程,思,思想,提,高,高项目的,成,成功率都,有,有帮助。,著名软件,工,工程专家,B.Boehm,综合有关,专,专家和学,者,者的意见,,,,并根据,多,多年开发,软,软件的经,验,验,提出,了,了,软件工程,的,的七条原,理,理,。,59/86,软件工程,的,的基本原,理,理,(,1,),应用生存,周,周期的理,论,论,分阶,段,段的计划,、,、管理和,控,控制软件,开,开发过程,。,。,统计发现,,,,在不成,功,功的软件,项,项目中有,50%,左右是由,于,于计划不,周,周造成的,,,,项目失,控,控制而造,成,成的。成,功,功的经验,是,是运行软,件,件生命周,期,期理论,,把,把软件开,发,发与维护,的,的过程分,成,成三个时,期,期若干个,阶,阶段,这,样,样化繁为,简,简,便于,控,控制与管,理,理。,Boehm,认,为,为,,,,,在,在,软,软,件,件,的,的,整,整,个,个,生,生,命,命,周,周,期,期,中,中,应,应,制,制,定,定,并,并,严,严,格,格,执,执,行,行,六,六,类,类,计,计,划,划,:,:,项,目,目,概,概,要,要,计,计,划,划,、,、,里,里,程,程,碑,碑,计,计,划,划,、,、,项,项,目,目,控,控,制,制,计,计,划,划,、,、,产,产,品,品,控,控,制,制,计,计,划,划,、,、,验,验,证,证,计,计,划,划,、,、,运,运,行,行,维,维,护,护,计,计,划,划,。,60/86,软,件,件,工,工,程,程,的,的,基,基,本,本,原,原,理,理,(,2,),坚,持,持,进,进,行,行,阶,阶,段,段,性,性,评,评,审,审,。,大,部,部,分,分,错,错,误,误,是,是,在,在,编,编,码,码,之,之,前,前,造,造,成,成,的,的,因,此,此,,,,,在,在,每,每,个,个,阶,阶,段,段,都,都,进,进,行,行,严,严,格,格,的,的,评,评,审,审,,,,,以,以,便,便,尽,尽,早,早,发,发,现,现,在,在,软,软,件,件,开,开,发,发,过,过,程,程,的,的,错,错,误,误,严,格,格,进,进,行,行,阶,阶,段,段,性,性,成,成,果,果,的,的,评,评,审,审,,,,,尽,尽,早,早,发,发,现,现,软,软,件,件,开,开,发,发,过,过,程,程,中,中,的,的,错,错,误,误,,,,,可,可,以,以,减,减,少,少,错,错,误,误,造,造,成,成,的,的,损,损,失,失,。,。,尤,其,其,发,发,现,现,早,早,期,期,的,的,一,一,个,个,错,错,误,误,,,,,就,就,可,可,以,以,避,避,免,免,在,在,后,后,期,期,辐,辐,射,射,出,出,的,的,成,成,百,百,上,上,千,千,个,个,错,错,误,误,。,。,61/86,软件工程的,基,基本原理,(,3,),合理控制需,求,求变动,。,需求变动性,是,是软件项目,与,与生俱来的,特,特性,不变,是,是不可能的,。,。有变动的,要,要求,就说,明,明已有的成,果,果有需要纠,错,错和改善的,地,地方,但需,求,求变更有可,能,能对项目进,展,展造成冲击,,,,要严格进,行,行配置管理,,,,合理控制,需,需求变更。,在软件开发,过,过程中不要,随,随意改变需,求,求,因为改,变,变某项需求,往,往往需要付,出,出较高的代,价,价,但在实,践,践中用户往,往,往会提出需,求,求变更,因,此,此需要采取,科,科学的产品,控,控制技术。,目前主要实,行,行,基准配置管,理,理,:基准配置,是,是指经过阶,段,段评审后的,软,软件配置成,分,分,如各个,阶,阶段产生的,文,文档或程序,代,代码。,对涉及基准,配,配置的修改,,,,必须经过,严,严格的评审,,,,通过后才,能,能实施修改,。,。,62/86,软件,工,工程,的,的基,本,本原,理,理,(,4,),采用,先,先进,的,的软,件,件设,计,计方,法,法,。,好的,设,设计,方,方法,可,可以,得,得到,灵,灵活,可,可靠,的,的软,件,件结,构,构,,对,对于,提,提高,软,软件,的,的可,靠,靠性,、,、可,维,维护,性,性、,应,应对,需,需求,变,变更,的,的灵,活,活性,都,都非,常,常关,键,键。,通,通常,考,考虑,模,模块,化,化、,抽,抽象,与,与信,息,息隐,蔽,蔽、,局,局部,化,化、,一,一致,性,性等,准,准则,。,。这,些,些准,则,则在,本,本书,软,软件,设,设计,部,部分,还,还会,详,详细,阐,阐述,。,。,实践,表,表明,:,:采,用,用先,进,进的,技,技术,既,既可,提,提高,软,软件,开,开发,的,的效,率,率,,又,又可,提,提高,软,软件,维,维护,的,的效,率,率。,80年代,及,及之前:,结,结构化分,析,析、设计,技,技术,90年代,:,:面向对,象,象分析、,设,设计技术,63/86,软件工程,的,的基本原,理,理,(,5,),开发文档,要,要完备,,阶,阶段性成,果,果应能清,楚,楚地审查,。,软件产品,是,是看不见,、,、摸不着,的,的逻辑产,品,品,开发,过,过程难以,评,评价和管,理,理。,根据软件,开,开发项目,的,的总目标,及,及完成期,限,限,规定,开,开发组织,的,的责任和,产,产品标准,,,,使所得,的,的结果能,够,够清楚地,审,审查,64/86,软件工程,的,的基本原,理,理,(,6,),开发小组,的,的人员应,少,少而精,。,开发小组,人,人员的素,质,质和数量,是,是影响软,件,件产品质,量,量和开发,效,效率的重,要,要因素。,开发小组,人,人员数目,的,的增加,,使,使相互交,流,流复杂、,费,费用增加,。,。,65/86,软件工程,的,的基本原,理,理,(,7,),承认不断,改,改进软件,工,工程实践,的,的必要性,。,遵循前6,条,条基本原,理,理,就能,够,够按照当,代,代软件工,程,程基本原,理,理实现软,件,件的工程,化,化生产,,但,但不能保,证,证赶上时,代,代前进的,步,步伐。,积极主动,采,采纳新的,软,软件技术,,,,且不断,总,总结经验,。,。,66/86,第,1,章 软,件,件工程的,基,基本概念,与,与原理,1.1,软件,工程学科,的,的诞生,1.2,软件工程,的,的基本概,念,念和原理,1.3,软件工程,研,研究的主,要,要内容,67/86,1.3,软件工程,研,研究的主,要,要内容,软件开发,过,过程,软件工程,技,技术,软件项目,管,管理,计算机辅,助,助软件工,程,程,68/86,软件开,发,发过程,在软件,工,工程学,科,科诞生,之,之前,,人,人们只,重,重视编,程,程,很,少,少关注,软,软件开,发,发过程,对,对软件,项,项目的,响,响影。,实,实践证,明,明,软,件,件项目,是,是一项,复,复杂的,系,系统工,程,程,对,开,开发过,程,程的组,织,织与施,工,工管理,很,很大程,度,度上决,定,定了软,件,件的开,发,发效率,、,、软件,质,质量,,甚,甚至项,目,目的成,败,败。因,此,此,,对软件,开,开发过,程,程的研,究,究与不,断,断改善,是,是软件,工,工程讨,论,论的一,项,项主要,内,内容,。,软件生,命,命周期,理,理论把,软,软件开,发,发与维,护,护过程,划,划分为,若,若干个,阶,阶段,,这,这是研,究,究软件,开,开发过,程,程的基,础,础,。实践,中,中,人,们,们对行,之,之有效,的,的软件,过,过程组,织,织模式,进,进行总,结,结,形,成,成了不,同,同的软,件,件开发,过,过程模,型,型。传,统,统的有,瀑布模,型,型、快,速,速原型,、,、增量,模,模型、,螺,螺旋模,型,型、喷,泉,泉模型,等,等。随,着,着面向,对,对象方,法,法的广,泛,泛应用,,,,,Rational,公司还,提,提出了,统,统一过,程,程模型,(,(简称,RUP,),。,随着软,件,件过程,越,越来越,多,多的被,重,重视,,作,作为评,价,价软件,组,组织能,力,力成熟,度,度,CMM,模型也,被,被提出,,,,并得,到,到了广,泛,泛的应,用,用。近,年,年来,,代,代表着,新,新的价,值,值观和,原,原则的,敏,敏捷联,盟,盟所倡,导,导的,敏捷过,程,程,以及软,件,件过程,改,改进成,为,为讨论,的,的热点,。,。关于,软,软件过,程,程的详,细,细内容,,,,本书,放,放在第,二,二章讨,论,论。,69/86,软件开,发,发过程,快速原,型,型模型,1.,基,基本思,想,想,在获取,一,一组基,本,本的需,求,求定义,后,后,利,用,用高级,软,软件工,具,具的可,开,开发环,境,境,快,速,速地建,立,立一个,目,目标系,统,统的,最初版,本,本,,并把,它,它交给,用户试,用,用、补,充,充和修,改,改,,再进,行,行,新的版,本,本开发,。,反复进,行,行,这个过,程,程,直,到,到得出,系,系统的,“,“精确,解,解”,,即,即用户,满,满意为,止,止。经,过,过这样,一,一个反,复,复补充,和,和修改,的,的过程,,,,应用,系,系统的,“,“,最初版,本,本,”就逐,步,步演变,为,为系统,的,的“,最终版,本,本,”。,原型:,一,一个具,体,体的可,执,执行模,型,型,它,实,实现了,系,系统的,若,若干功,能,能。,原型法:不,断,断地运行系,统,统“原型”,来,来进行启发,、,、揭示和判,断,断的系统开,发,发方法。,70/86,软件开发过,程,程,快速原型模,型,型,原型法的主,要,要思路:,根据用户的,需,需求迅速构,造,造一个低成,本,本的用于演,示,示及评价的,试,试验系统,(,原型,),由,用,用,户,户,对,对,原,原,型,型,进,进,行,行,评,评,价,价,在,用,用,户,户,评,评,价,价,的,的,基,基,础,础,上,上,对,对,原,原,型,型,进,进,行,行,修,修,改,改,或,或,重,重,构,构,。,。,有,了,了,满,满,意,意,的,的,系,系,统,统,原,原,型,型,,,,,同,同,时,时,也,也,积,积,累,累,了,了,使,使,用,用,原,原,型,型,的,的,经,经,验,验,,,,,用,用,户,户,常,常,会,会,提,提,出,出,新,新,目,目,标,标,,,,,从,从,而,而,进,进,一,一,步,步,重,重,新,新,构,构,造,造,原,原,型,型,周,周,期,期,。,。,新,新,目,目,标,标,的,的,范,范,围,围,要,要,比,比,修,修,改,改,或,或,补,补,充,充,不,不,满,满,意,意,的,的,原,原,型,型,大,大,。,。,(,),),渐,渐,增,增,型,型,(,),),用,用,于,于,验,验,证,证,软,软,件,件,需,需,求,求,的,的,原,原,型,型,(,),),用,用,于,于,验,验,证,证,设,设,计,计,方,方,案,案,71/86,软,件,件,开,开,发,发,过,过,程,程,快,速,速,原,原,型,型,模,模,型,型,3.,软,软,件,件,原,原,型,型,是,是,软,软,件,件,的,的,最,最,初,初,版,版,本,本,,,,,以,以,最,最,少,少,的,的,费,费,用,用,、,、,最,最,短,短,的,的,时,时,间,间,开,开,发,发,出,出,的,的,、,、,以,以,反,反,映,映,最,最,后,后,软,软,件,件,的,的,主,主,要,要,特,特,征,征,的,的,系,系,统,统,。,。,它,它,具,具,有,有,以,以,下,下,特,特,征,征,:,:,(1),它,它,是,是,一,一,个,个,可,可,实,实,际,际,运,运,行,行,的,的,系,系,统,统,。,。,(2),它,它,没,没,有,有,固,固,定,定,的,的,生,生,存,存,期,期,。,。,一,一,种,种,极,极,端,端,是,是,扔,扔,掉,掉,原,原,型,型,(,(,以,以,最,最,简,简,便,便,方,方,式,式,大,大,量,量,借,借,用,用,已,已,有,有,软,软,件,件,,,,,做,做,出,出,最,最,后,后,产,产,品,品,的,的,模,模,型,型,,,,,证,证,实,实,产,产,品,品,设,设,想,想,是,是,成,成,功,功,的,的,,,,,但,但,产,产,品,品,中,中,并,并,不,不,使,使,用,用,),),;,;,另,另,一,一,种,种,极,极,端,端,是,是,最,最,终,终,产,产,品,品,的,的,一,一,部,部,分,分,即,即,增,增,量,量,原,原,型,型,(,(,先,先,做,做,出,出,最,最,终,终,产,产,品,品,的,的,核,核,心,心,部,部,分,分,,,,,逐,逐,步,步,增,增,加,加,补,补,充,充,模,模,块,块,),),,,,,演,演,进,进,原,原,型,型,居,居,于,于,其,其,中,中,(,(,每,每,一,一,版,版,本,本,扔,扔,掉,掉,一,一,点,点,,,,,增,增,加,加,一,一,点,点,,,,,逐,逐,步,步,完,完,善,善,至,至,最,最,终,终,产,产,品,品,),),。,。,72/86,软,件,件,开,开,发,发,过,过,程,程,快,速,速,原,原,型,型,模,模,型,型,(3),从,从,需,需,求,求,分,分,析,析,到,到,最,最,终,终,产,产,品,品,都,都,可,可,作,作,原,原,型,型,,,,,即,即,可,可,为,为,不,不,同,同,目,目,标,标,作,作,原,原,型,型,。,。,(4),它,它,必,必,须,须,快,快,速,速,、,、,廉,廉,价,价,。,。,(5),它,它,是,是,迭,迭,代,代,过,过,程,程,的,的,集,集,成,成,部,部,分,分,,,,,即,即,每,每,次,次,经,经,用,用,户,户,评,评,价,价,后,后,修,修,改,改,、,、,运,运,行,行,,,,,不,不,断,断,重,重,复,复,双,双,方,方,认,认,可,可,。,。,73/86,软,件,件,开,开,发,发,过,过,程,程,快,速,速,原,原,型,型,模,模,型,型,快,速,速,原,原,型,型,法,法,的,的,特,特,点,点,:,:,有,直,直,观,观,的,的,系,系,统,统,开,开,发,发,过,过,程,程,用户,参,参与,系,系统,开,开发,的,的全,过,过程,可以,逐,逐步,明,明确,用,用户,需,需求,用户,直,直接,掌,掌握,系,系统,的,的开,发,发进,度,度,用户,接,接受,程,程度,高,高,74/86,软件,开,开发,过,过程,快速,原,原型,模,模型,快速,原,原型,法,法的,不,不足,:,:,不适,用,用于,拥,拥有,大,大量,计,计算,或,或控,制,制功,能,能的,系,系统,不适,用,用于,大,大型,或,或复,杂,杂的,系,系统,容易,掩,掩盖,需,需求,、,、分,析,析、,设,设计,等,等方,面,面的,问,问题,结果,不,不确,定,定,随原,型,型构,造,造评,价,价过,程,程而,定,定,整体,考,考虑,较,较少,快速,原,原型,法,法主,要,要适,应,应于,:,:,适用,于,于解,决,决有,不,不确,定,定因,素,素的,问,问题,适用,于,于对,用,用户,界,界面,要,要求,高,高的,系,系统,适用,于,于决,策,策支,持,持方,面,面的,应,应用,适用,于,于中,型,型系,统,统,75/86,软件,开,开发,过,过程,螺旋,模,模型,在原,型,型基,础,础上,,,,进,行,行多,次,次原,型,型反,复,复并,增,增加,风,风险,评,评估,后,后形,成,成。,76/86,软件,开,开发,过,过程,螺旋,模,模型,77/86,软件,开,开发,过,过程,螺旋,模,模型,螺旋,模,模型,分,分析,在螺,旋,旋模,型,型结,构,构中,,,,维,护,护只,是,是螺,旋,旋模,型,型的,另,另一,个,个周,期,期,,在,在维,护,护和,开,开发,之,之间,本,本质,上,上并,没,没有,区,区别,,,,从,而,而解,决,决了,做,做太,多,多测,试,试或,未,未作,足,足够,测,测试,所,所带,来,来的,风,风险,。,。,适用,条,条件,内部,的,的大,规,规模,软,软件,的,的开,发,发,,不,不太,适,适合,合,合同,软,软件,。,。,一般只,适,适用于,大,大规模,软,软件的,开,开发,78/86,软件工,程,程技术,总体上,,,,软件,工,工程讨,论,论的主,要,要内容,可,可以分,为,为,软件工,程,程技术,和,软件项,目,目管理,两大部,分,分。在,软,软件开,发,发过程,中,中,对,于,于可行,性,性分析,、,、需求,规,规格说,明,明、系,统,统设计,、,、编程,与,与测试,,,,以及,软,软件维,护,护等活,动,动都有,相,相应的,专门技,术,术,需要掌,握,握。,79/86,从软件,工,工程技,术,术的内,容,容体系,来,来看,,大,大体上,分,分为:,原,原理、,方,方法、,工,工具和,技,技术四,个,个层面,。,。,软件工程原,理,理表明:为,了,了不断提高,软,软件质量、,软,软件开发效,率,率,以及确,保,保软件项目,的,的成功,软,件,件工程学科,提,提出了解决,问,问题的一组,原,原理和相关,原,原则(,即,7,条原理,),无论采,用,用什么过程,或,或方法,这,些,些原理和原,则,则都是应该,普,普遍被遵守,的,的。,在遵守软件,工,工程原理和,原,原则的基础,上,上,不同的,专,专家、学者,及,及软件工程,实,实践者,从,各,各自的角度,认,认识和研究,软,软件系统的,规,规律,并提,出,出了各自认,识,识问题和解,决,决问题的思,维,维模式,最,具,具代表性的,就,就是我们熟,悉,悉的,结构化方法,论,论和面向对,象,象的方法论,,这就是软,件,件工程“方,法,法”层面的,内,内容。不同,的,的方法论为,了,了在相应的,思,思维模式上,对,对软件开发,提,提出解决方,案,案,研究并,设,设计了一组,从,从事分析与,设,设计活动的,工,工具,如,结构化的分,析,析与设计工,具,具、面向对,象,象的分析与,设,设计工具,等,这些就,构,构成了软件,工,工程“工具,”,”层面的内,容,容。在运用,这,这些工具从,事,事分析与设,计,计的活动中,,,,必不可少,的,的需要掌握,一,一定的技术,,,,这就构成,了,了软件工程,“,“,技术,”层面的,内,内容。,80/86,总之,从,软,软件设计,与,与实现技,术,术的角度,来,来讲,目,前,前软件工,程,程技术主,要,要讨论,结构化方,法,法和面向,对,对象的方,法,法两种方,法,法论,。,软件分析,与,与设计过,程,程中,同,时,时伴随着,软,软件分析,与,与设计模,型,型的建立,与,与演化,,因,因此,软,件,件,建,建,模,模,也,是,是,软,软,件,件,工,工,程,程,技,技,术,术,研,研,究,究,的,的,主,主,要,要,内,内,容,容,,,,,包,包,括,括,结,构,构,化,化,建,建,模,模,与,与,面,面,向,向,对,对,象,象,的,的,建,建,模,模,,,主,主,要,要,讨,讨,论,论,建,建,模,模,工,工,具,具,和,和,建,建,模,模,技,技,术,术,两,两,个,个,层,层,面,面,。,。,有,有,关,关,软,软,件,件,工,工,程,程,技,技,术,术,的,的,内,内,容,容,在,在,各,各,个,个,开,开,发,发,周,周,期,期,的,的,阶,阶,段,段,中,中,都,都
展开阅读全文