单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第七章,软件系统开发与软件工程方法,一、软件危机,二、软件工程,一、软件危机,1、软件开发的发展历程,1960,1970,1980,1990,2000,早期,第二阶段 第三阶段 第四阶段,面向批处理,多用户,分布式系统,强大的桌面系统,有限的分布,实时,嵌入“智能”,面向对象技术,自定义软件,数据库,低成本硬件,专家系,统,开发者=使用者,软件产品,人工神经网络,并行计算,网络计算机,一、软件危机,2、软件危机,1)案例思考1,FAA,的失败项目,20,世纪,80,年代中期,更换空中交通控制系统已成为美国联邦航空管理局(,FAA,),非常优先的任务1989,年,IBM,公司获得更换该系统的合同,截止期为,2001,年,预计投入,25,亿美元由于面临着极苛刻的需求,该软件项目是已进行的最复杂的项目之一例如,交通控制系统必须具备全局完整性并且每周,7,天,每天,24,小时不能停止工作,甚至在升级时或正常维护时,也不允许有停顿时间任何错误的数据都会引起重大伤亡,任何停机均会导致世界范围的出行延误或潜在的危险该系统的反应时间不能超过,2-3,秒。
此外,该系统设计时必须考虑到允许私人飞机驾驶员继续使用旧设备,并要求软件能在未来移植到更新的硬件设备上当,IBM,获得该合同后,该系统的主要花费为软件开发,用于硬件的投入仅为,8,万美元1993,年,负责该项目的,IBM,子公司,IBM,联邦系统公司被,IBM,卖给了,Loral,公司到,1994,年,该系统已花费了,23,亿美元,但尚未提交系统的任何程序段,而此时估算整个系统的花费将增至,50,亿美元1994,年底,,FAA,不得不承认该项目失败并进行调查作为调查的结果,,FAA,取消或修改了系统的四个主要部分面临当前空中控制系统存在的隐患,,FAA,不得不订购了一套作为权宜之计的系统,由另一家公司开发你认为该项目的失败反映了什么问题?失败的主要原因可能是什么?,FAA,为什么选择取消和修改的方式而不是增加资源和生产力的方式?,FAA,对此项目调查总结出的原因为以下几条:,FAA,并没有明确掌握某些系统功能的需求制定了过于急躁的开发和实现计划(包括费用与进度的估计),在给定的软件复杂度下,没有考虑到开发商的生产力,尤其是早期阶段需要投入的资源在人月神话一书中,,Brooks,将过去,30,年大型软件项目的开发比喻为史前陷入沥青坑的巨兽。
恐龙、猛犸、剑齿虎等动物在焦油中挣扎,然而挣扎得越激烈,就陷得越快,最终都沉到了坑底过去的大型软件项目中,大多数开发出了可运行的系统不过只有极少数满足了目标、进度和预算的要求表面上看起来没有任何一个单独的问题会导致困难,每个问题都能获得解决,但这些问题纠缠和积累在一起时,团队的行动就越来越慢,并且很难再看清问题的本质1995,年美国的商业软件失败统计:,一、软件危机,2、软件危机,案例思考2,遗传信息库建设,在正在建设的遗传信息库如,假设你要开发一个管理软件你并不是一个生物遗传方面的专家,甚至对此方面的知识一窍不通,你该如何入手?要使该项目成功,你认为应该有哪些保障条件?,你的问题是什么:对遗传信息的管理,需要什么条件:了解遗传信息的表示和管理流程,如何实现:与遗传领域的专家交流障碍是什么:难以沟通与交流可能因误解产生错误的需求描述一、软件危机,2、软件危机,软件项目为什么会失败?,软件项目失败的核心问题在哪里?,答案只有一个:复杂性软件要解决的问题本身是复杂的,开发人员一般不是该问题领域的专家,软件规模要求多人参与,而不同专业领域的人的交流是困难的,软件规模使得既要理解系统整体结构又要把握细节比较困难。
例:,Windows,95,有1000万行代码,Windows,2000,有5000万行代码,Exchange2000,和,Windows,2000,开发人员结构,Exchange2000,Windows,2000,项目经理,25人,约250人,开发人员,140人,约1700人,测试人员,350人,约3200人,一、软件危机,2、软件危机,2)软件神话,1管理神话,神话:有关软件开发的理论和方法已经很丰富,有很多可用的标准与规范,因而可以保证软件开发的顺利进行现实:理论与方法在大多数实践中并没有得到真正的应用使用者并没有对这些理论与方法建立正确的认识神话:已经有很多强大的开发工具和先进的计算机硬件,这些可以保证软件开发的质量与效率现实:这些工具并没有得到合理的应用神话:如果我们落后于进度,可以通过增加人手来赶上现实:向一个已经延迟的项目增加人手,只会使延迟的项目更加落后除非项目中不需要交流生一个孩子10个月,无论有多少人一、软件危机,2、软件危机,2)软件神话,1管理神话,神话:通过把软件项目外包给实现强大的软件开发公司可以保证软件的成功现实:再专业的软件公司,不了解客户的需求和业务流程,也不可能顺利完成软件开发项目。
改正,一,一个,问,问题,需,需付,出,出的,代,代价,需,求,分,析,结,构,构,设,设,计,计,详,细,细,设,设,计,计,编,码,码,集,成,成,测,测,试,试,系,统,统,测,测,试,试,现,场,场,改,正,正,一,一,个,个,问,问,题,题,的,的,估,估,计,计,费,费,用,用,改,正,正,一,一,个,个,问,问,题,题,估,估,计,计,的,的,工,工,作,作,量,量,20,200,2000,1000,5.0,2.5,0.05,0.5,(,美,美,元,元),(,人,人,天,天),一,、,、,软,软,件,件,危,危,机,机,2,、,、,软,软,件,件,危,危,机,机,2,),),软,软,件,件,神,神,话,话,2,客,客,户,户,神,神,话,话,神,话,话,:,:,有,有,了,了,目,目,标,标,系,系,统,统,的,的,一,一,般,般,性,性,描,描,述,述,就,就,可,可,以,以,写,写,程,程,序,序,了,了,,,,,细,细,节,节,可,可,以,以,逐,逐,步,步,完,完,善,善,现,实,实,:,:,糟,糟,糕,糕,的,的,系,系,统,统,定,定,义,义,是,是,项,项,目,目,失,失,败,败,的,的,主,主,要,要,原,原,因,因,。
关,关,于,于,问,问,题,题,域,域,、,、,功,功,能,能,、,、,行,行,为,为,、,、,性,性,能,能,、,、,接,接,口,口,、,、,设,设,计,计,约,约,束,束,以,以,及,及,确,确,认,认,标,标,准,准,的,的,形,形,式,式,化,化,的,的,、,、,详,详,细,细,的,的,描,描,述,述,是,是,必,必,要,要,的,的,,,,,这,这,些,些,内,内,容,容,只,只,能,能,通,通,过,过,客,客,户,户,与,与,开,开,发,发,者,者,之,之,间,间,的,的,交,交,流,流,才,才,能,能,确,确,定,定,神话:,软,软件需,求,求是经,常,常变更,的,的,而,这,这些变,更,更可以,容,容易的,被,被满足,,,,因为,软,软件是,灵,灵活的,现实:,软,软件需,求,求确实,是,是容易,变,变更的,,,,但变,更,更的代,价,价将随,软,软件开,发,发的进,度,度不同,而,而有很,大,大的差,异,异如,果,果重新,项,项目早,期,期的问,题,题定义,,,,需求,变,变化则,很,很容易,被,被调节,,,,而项,目,目后期,需,需求变,更,更的代,价,价可能,是,是致命,的,的。
一、软件危,机,机,2、软件危,机,机,2)软件神,话,话,3实践,者,者的神话,神话:软件,是,是艺术,软,件,件开发是个,人,人的舞台现实:50,年,年代可能是,,,,现在不是,神话:一旦,写,写完了程序,并,并能正常运,行,行,我们的,工,工作就结束,了,了现实:越早,开,开始写代码,,,,软件开发,花,花费的时间,就,就越长统,计,计表明60%到80%,的,的工作量是,花,花在将软件,第,第一次交付,给,给客户以后,发,发生的神话:程序,真,真正运行以,前,前,没有办,法,法评估其质,量,量现实:高,质,质量的实,现,现来自高,质,质量的设,计,计从项,目,目一开始,就,就必须进,行,行技术评,审,审神话:项,目,目的成功,来,来自于可,运,运行程序,的,的提交软,软件开发,过,过程中的,文,文档是不,必,必要的,,延,延缓项目,进,进度的东,西,西现实:软,件,件项目的,成,成果包含,很,很多内容,,,,文档是,成,成功开发,的,的基础,,也,也是软件,质,质量的保,证,证好的,开,开发质量,降,降低了重,复,复劳动,,从,从而提高,了,了效率,,导,导致更短,的,的交付时,间,间。
一、软件,危,危机,2、软件,危,危机,3)软件,危,危机及主,要,要表现,软件危机,指,指在计算,机,机软件开,发,发和维护,过,过程中所,遇,遇到的一,系,系列严重,问,问题,软,软件开发,不,不能满足,日,日益增长,的,的需求;,难,难以维护,不,不断增长,的,的已有软,件,件1成,本,本与进度,的,的估计,2用,户,户需求与,产,产品不一,致,致,3软,件,件可靠性,差,差,4可,维,维护性差,5文,档,档资料不,完,完整,6软,件,件成本比,例,例不断上,升,升,7开,发,发生产率,相,相对停滞,一、软件,危,危机,2、软件,危,危机,3)软件,项,项目成败,的,的因素分,析,析,1)失败,项,项目的主,要,要原因,1用,户,户需求不,完,完整、被,误,误解或经,常,常变化,2有,限,限的用户,参,参与,3缺,少,少行政支,持,持,4缺,少,少技术支,持,持,5项,目,目计划不,充,充分,6目,标,标不明确,7没,有,有足够的,资,资源(客,户,户没有提,供,供/开发,者,者不具备,相,相应生产,力,力),2)成功,项,项目的主,要,要原因,1大,量,量的用户,参,参与,2上,层,层管理人,员,员的支持,3完,整,整、详细,的,的项目计,划,划,4符,合,合实际的,工,工作进度,与,与里程碑,5开,发,发人员的,培,培训、交,流,流,6良,好,好的工作,环,环境、团,队,队协作机,制,制,一、软件,危,危机,2、软件,危,危机,3)消除,软,软件危机,的,的思路,1正,确,确的观念,a),软件不是,程,程序,软件是逻,辑,辑产品而,不,不是实物,产,产品,软件的功,能,能依赖于,硬,硬件和软,件,件的运行,环,环境以及,人,人们对它,的,的操作,软件特征,:,:功能,的,的多样性,实现的多,样,样性,能见度低,软件结构,合,合理性差,智力密集,及,及知识产,权,权保护,b),软件开发,不,不是个体,劳,劳动,软件设计,的,的复杂性,一、软件,危,危机,2、软件,危,危机,3)消除,软,软件危机,的,的思路,2正,确,确的过程,管,管理与控,制,制,软件开发,技,技术:软件开,发,发方法,软件开发,过,过程,软件工具,和,和软件工,程,程环境,软件工程,管,管理:软件管,理,理,软件经济,软件心理,二、软件,工,工程,1、软件,工,工程,将工程管,理,理思想引,入,入软件开,发,发过程:,转,变,变,对,对,软,软,件,件,的,的,认,认,识,识,:,:,上,升,升,程,序,序,系,系,统,统,转,变,变,思,思,维,维,定,定,式,式,:,:,上,升,升,程,序,序,员,员,系,系,统,统,工,工,程,程,师,师,(,系,系,统,统,分,分,析,析,员,员),工,程,程,化,化,训,训,练,练,二,、,、,软,软,件,件,工,工,程,程,1,、,、,软,软,件,件,工,工,程,程,将,工,工,程,程,管,管,理,理,思,思,想,想,引,引,入,入,软,软,件,件,开,开,发,发,过,过,程,程,:,:,用,户,户,分,析,析,员,。