




已阅读5页,还剩169页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程概论,教师简介,朱晓冬:生物识别与信息安全研究室主要研究方向:数字图像处理与模式识别(生物特征识别(虹膜、指纹)、数字水印技术)、决策支持系统和信息管理系统.联系方式:zhuxd电话软件工程理论与实践,课程名称:软件工程概论(SoftwareEngineering)课程类别:专业教育课程课程性质:必修课面向专业:软件工程,软件工程理论与实践,教材:软件工程理论与实践(第四版影印版),ShariLawrencePfleeger,高等教育出版社,2006。主要教学参考书:1.张海藩编著,软件工程导论(第5版),清华大学出版社。2.郑人杰马素霞殷人昆编著,软件工程概论,机械工业出版社。,软件工程理论与实践,预备知识或先修课程要求先修课程:程序设计基础,面向对象程序设计,数据结构,数据库原理,统一建模语言及工具,管理经济学。后续课程:统一软件开发过程,软件工程工具与应用,项目计划与控制,项目组织与团队管理,项目质量保证与测试。先修课程在本科程的第一章、第二章、第三章、第五章、第六章均有明确的知识点及方法关联,本课程的内容继承了上述先行课中的基本理论和方法在本课程的方法和理论中加以运用。本课程因为其概论性质,对后续课程的基本概念加以了简要说明,后续课程在各自不同的侧面对本课程的相关章节内容进行了详细的展开。,SOFTWAREENGINEERING软件工程,chapter1IntroductiontoSoftwareEngineering第一章软件工程简介,软件工程理论与实践,Whatissoftware?,1.1conceptandcharactersofsoftware软件的概念和特点,一、WhatIsSoftware?什么是软件?Softwareiscorrespondingandrelatedtohardware,botharecomponentsofcomputersystem.ItsaintegratedcollectionwhichincludesPrograms,DataandDocuments.,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合,软件工程理论与实践,程序是按事先设计的功能和性能要求执行的指令序列,数据是使程序能正常操作信息的数据结构,文档是与程序开发、维护和使用有关的图文材料,软件工程理论与实践,按照服务目的的不同划分的文档类型,文档应用文档开发文档管理文档,需求规格说明书概要设计说明书详细设计说明书测试计划测试报告,可行性研究报告项目开发计划需要变更申请书项目开发进程月报项目开发总结报告,用户手册操作手册运行日志月报维护修改建议书,软件工程理论与实践,二、CharactersofSoftware软件的性质,1、Softwareisakindoflogicalentityratherthenphysicalone,hascharacterofAbstraction(抽象性).,2、Comparedwithhardware,Softwarehasnoevidentmanufacturingprocess(没有明显的制造过程)duringitsdeveloping,tocontrolitsquality,effortsmustbelaidontheprocessofdeveloping.,3、Deferentwithhardware,softwarehasnoabrasionandagingproblems(无磨损问题)duringitsusage.,软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。这个特点使它和计算机硬件,或是其他工程对象有着明显的差别。人们可以把它记录在介质上,但却无法看到软件的形态,必须通过观察、分析、思考、判断,去了解它的功能、性能及其他特性。,软件的生产与硬件不同,在它的开发中没有明显的制造过程。软件不象硬件那样,一旦研制成功,可以重复制造,在制造过程中进行质量控制,以保证产品的质量。而软件是通过人们的智力活动,把知识与技术转化成信息的一种产品。一旦某一软件项目研制成功,以后就可以大量地复制同一内容的副本。对软件的质量控制,必须着重在软件开发方面下功夫。,与硬件不同,软件在运行和使用期间,没有机械磨损、老化问题,软件工程理论与实践,Maintainingofsoftwareismorecomplicatedthanthatofhardware,theyaredifferentconstitutionally.,软件维护比硬件维护更复杂,它与硬件的维修有本质差别,软件工程理论与实践,Abrasionofhardware:replaceitWrongofSoftware:Theremustbesomemistakeduringdevelopingandcantbereplaced.,硬件磨损:可以用备用零件替换;软件出故障:无法用备用零件替换来解决,是因为设计开发过程中存在错误,软件工程理论与实践,Althoughsoftwarehasnoabrasionandagingtrouble,butithasdegenerationproblem,degenerationisderivedfrommodification.尽管软件没有老化和磨损问题,但是有退化(失效,degeneration)问题,这个问题源于修改。,软件工程理论与实践,三、软件的特点,1、依赖性:软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。软件不能完全摆脱硬件单独活动。在开发和运行中必须以硬件提供的条件为依据。有的软件依赖于某个操作系统。2、可移植性:为了解除这种依赖性,在软件开发中提出了软件移植的问题,并且把软件的可移植性做为衡量软件质量的因素之一。3、复用性:软件的开发至今尚未完全摆脱手工艺的开发方式。由于传统的手工艺开发方式仍然占据统治地位,开发的效率自然受到很大的限制。为此,人们在软件技术方面做了许多卓有成效的工作,提出了许多新的开发方法,例如充分利用现成软件的复用技术、自动生成技术,也研制了一些有效的软件开发工具或软件开发环境。,软件工程理论与实践,4、复杂性:软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。软件开发,特别是应用软件的开发常常涉及到其它领域的专门知识,这对软件人员提出了很高的要求。5、昂贵性:软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。然而,也并非在所有软件开发上的花费都能获得成果。6、社会性:相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及到人的观念和人们的心理。它直接影响到项目的成败。,软件工程理论与实践,1.2软件的分类,要给计算机软件做出科学的分类是很困难的,目前还找不到一个统一的严格分类标准。但针对不同类型的工程对象,对其进行开发和维护有着不同的要求和处理方法,因此还是需要对软件的类型进行必要的划分。我们不妨从不同的侧面来做出分类是比较符合实际情况的。,软件工程理论与实践,一、按软件的功能进行划分,系统软件支撑软件应用软件,软件工程理论与实践,系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。例如,操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。系统软件在运行时需要频繁地与硬件交往,以提供有效的用户服务,共享资源的共享,其间伴随着复杂的进程管理和复杂的数据结构处理。系统软件是计算机系统必不可少的一个组成部分。,软件工程理论与实践,支撑软件:是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具。a.一般类型:文本编辑程序、文件格式化程序、程序库系统;b.支持需求分析:PSL/PSA问题描述语言、问题描述分析程序、一致性检验程序、CARA计算机辅助需求分析程序;c.支持设计:图形软件包、结构化流程图绘图程序、设计分析程序、程序结构图编辑程序;d.支持实现:编辑程序、交叉编辑程序、预编译程序、连接编辑程序;e.支持测试:静态分析程序、符号执行程序、模拟程序、测试覆盖检验程序;f.支持管理:PERT进度计划评审方法绘图程序、标准检验程序、库管理程序。,软件工程理论与实践,应用软件:是在特定领域内开发,为特定目的服务的一类软件。几乎所有的国民经济领域都使用了计算机,为这些计算机应用领域服务的应用软件种类繁多。例如:a.商业数据处理软件是所占比例最大的一类b.工程与科学计算软件c.计算机辅助设计制造(CADCAM)d.系统仿真e.智能产品嵌入软件(如汽车油耗控制、仪表盘数字显示、刹车系统)f.人工智能软件(如专家系统、模式识别)g.事务管理、办公自动化软件h.计算机辅助教学(CAI)i.游戏,软件工程理论与实践,二、按软件规模进行划分,软件工程理论与实践,三、按软件工作方式划分,实时处理软件分时软件交互式软件批处理软件,软件工程理论与实践,实时处理软件指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控制的过程的软件。主要包括数据采集,分析,输出三部分,其处理时间是被严格限定的,如果在任何时间超出了这一限制,都将造成事故。分时软件允许多个联机用户同时使用计算机。系统把处理机时间轮流分配给各联机用户,使各用户都感到只是自己在使用计算机的软件。交互式软件能实现人机通信的软件。这类软件接收用户给出的信息,但在时间上没有严格的限定。这种工作方式给与用户很大的灵活性。批处理软件把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。,软件工程理论与实践,四、按软件服务对象的范围划分,项目软件、产品软件项目软件:也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。例如军用防空指挥系统、卫星控制系统。项目软件中有的软件带有试验研究性质,项目完成后根据需要可能在此基础上做进一步开发。为取得客户的委托项目,软件开发机构的质量管理、技术实力、开发经验以及履行合同的信誉成为受到重视的问题。产品软件:是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软件。例如,文字处理软件、文本处理软件、财务处理软件、人事管理软件等。由于产品软件要参与市场竞争,其功能、使用性能以及培训和售后服务显得尤为重要。,软件工程理论与实践,五、按使用的频度进行划分,一次性软件:有的软件开发出来仅供一次使用。例如用于人口普查、工业普查的软件。多次使用软件:有些软件具有较高的使用频度,如天气预报软件。显然,开发不同使用频度的软件,有不同的要求,不可一律看待。,软件工程理论与实践,六、按软件失效的影响进行划分,非关键性软件:软件在工作中出现了故障,造成软件失效,可能给软件整个系统带来的影响不大。关键性软件:有的软件一旦失效。可能酿成灾难性后果。例如财务金融、交通通信、航空航天等软件。关键软件的特点:第一,可靠性等质量要求高;第二,常与完成重要功能的大系统的处理部件相联;第三,含有可能对人员或公众的安全、设备或设施的安全、环境的质量、国家的政务或部队的军务、数据、通信或实体的机密造成影响的程序。,软件工程理论与实践,1.3SoftwareCrisis软件危机,Somecriticalproblememergedatsoftwaredevelopingandmaintainingprocess.在软件开发和维护过程中存在一些问题,Almostallthesoftwarehasproblematsomedegree.在某种程度上所有软件都存在一些问题,Mainly,theseproblemscanbedividedintotwokinds:所有这些问题可被归为两类,-Howtodevelopsoftwaretomeetincreasingrequirements在不断增加的需求的情况下如何开发软件-Howtomaintainvastexistingsoftware如何维护大量的业已存在的软件,软件工程理论与实践,计算机发展的各个阶段的技术表,软件工程理论与实践,一、EvolutionofSoftware软件的进化,软件工程理论与实践,EvolutionofSoftware软件的进化,软件工程理论与实践,EvolutionofSoftware软件的进化,软件工程理论与实践,软件最根本的变化,人们改变了对软件的看法50年代到60年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。当时人们认为,写出的程序只要能在计算机上得出正确的结果,程序的写法可以不受任何约束。随着计算机的广泛使用,人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。于是,程序便从个人按自己意图创造的艺术品转变为能被广大用户接受的工程化产品。软件的需求是软件发展的动力。早期的程序开发者只是为了满足自己的需要,这种自给自足的生产方式仍然是其低级阶段的表现。进入软件工程阶段以后,软件开发的成果具有社会属性,它要在市场中流通以满足广大用户的需要。软件工作的范围从只考虑程序的编写扩展到涉及整个软件生存期。在软件技术发展的第二阶段,随着计算机硬件技术的进步,要求软件能与之相适应。然而,软件技术的进步一直未能满足形势发展提出的要求,软件质量得不到保证,软件成本不断上升,软件开发的生产率无法提高。,软件工程理论与实践,二、PhenomenaofSoftwareCrisis软件危机的表现,Costandscheduleofdevelopingcannotbeestimatedaccurately.Userarealwaysunsatisfiedwithdeliveredsoftwaresystem.Qualityofsoftwareareusuallypoor.Softwarecanhardlybemaintained.,Thereisalwaysnoproperdocumentofsoftware.Proportionofsoftwarecostincomputersystemareincreasing.Theprogressofsoftwareproductivitycannotcatchupwithtrendofpervasivelyusingofcomputer.,软件工程理论与实践,三、ReasonofSoftwareCrisis软件危机的原因,SomearebecauseofcharactersofSoftware软件自身性质,Somearebecauseofwrongdevelopingandmaintainingmethod过程的原因(开发和维护方法错误),软件工程理论与实践,ReasonofSoftwareCrisis软件危机的原因,宏观:(1)缺乏总体考虑,没有软件工程学概念或系统工程思想。(2)对业务了解支离破碎,需求分析不准。(3)企业依赖激情指挥,企业管理标准化、规范化、科学化程度不高,导致不能成功地应用“死板”的软件,它依赖于业务的“科学化”、“条理化”、“程序化”(4)企业信息化程度和计算机应用水平低,导致无法准确描述需求。(5)对信息管理的重视程度不够。(6)缺乏相互沟通,业务描述的详尽程度不能达到具备生活常识的人能够轻易理解。,软件工程理论与实践,ReasonofSoftwareCrisis软件危机的原因,微观:(1)软件的规模比较庞大,其开发和维护相当困难;(2)开发人员虽然有经验,但还存在着不少错误观点,没有实行工程化的方法;(3)不能与用户及时沟通,不能了解用户的实际需要;(4)没有统一的软件质量管理规范;(5)不能根据环境的变化而随时对产品进行改正。缺乏总体考虑,没有软件工程学概念或系统工程思想。,软件工程理论与实践,软件工程理论与实践,差错传播模型,软件工程理论与实践,差错传播模型(2)-无设计复审,软件工程理论与实践,差错传播模型(3)-有设计复审,软件工程理论与实践,消除软件危机的途径,首先应该对计算机软件有一个正确的认识:它是包括程序、数据及其相关文档的完整集合。必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。,软件工程理论与实践,消除软件危机的途径,必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。,软件工程理论与实践,消除软件危机的途径,应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误观念和做法。应该开发和使用更好的软件工具。,软件工程理论与实践,1.4Whatissoftwareengineering?什么是软件工程,软件工程理论与实践,一、软件工程的思想,开发一个软件,除去那些规模很小的项目以外,通常要由多个软件人员分工合作、共同完成;开发阶段之间的工作也应有很好的衔接;开发工作完成以后,软件成果要面向用户,在应用中接受用户的检验。所有这些活动都要求人们改变过去那种把软件当做个人才智产物的观点,抛弃那些只按自己工作习惯,不顾与周围其它人员配合关系的做法。在这一点上,软件开发与计算机硬件研制,甚至与楼房建设没有本质的差别。任何参加这些工程项目的人员,它们的才能只有在工程项目的总体要求和技术规范的约束下充分发挥和施展。,软件工程理论与实践,许多计算机和软件科学家尝试,把其它工程领域中行之有效的工程学知识运用到软件开发工作中来。经过不断实践和总结,最后得出一个结论:按工程化的原则和方法组织软件开发工作是有效的,也是摆脱软件危机的一个主要出路。软件工程的主要思想都是强调在软件开发过程中需要应用工程化原则的重要性。,软件工程理论与实践,二、软件工程的定义,软件工程理论与实践,关于软件工程的一些定义,软件工程理论与实践,关于软件工程的一些定义,1993年IEEE更全面更具体的定义:“软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究中提到的途径。”,软件工程理论与实践,软件工程学科涉及到为高效率地构建满足客户需求的软件系统所需的理论、知识和实践的应用。(中国计算机科学与技术学科教程2002)软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。,关于软件工程的一些定义,软件工程理论与实践,软件工程是一门综合性的交叉学科,它涉及计算机科学、工程科学、管理科学和数学等。计算机科学中的研究成果都可以用于软件工程,但计算机科学着眼于原理和理论,软件工程着眼于如何建造一个软件系统。此外,软件工程要用工程科学中的技术来进行成本估算、安排进度及制定计划和方案;软件工程还要利用管理科学中的方法原理来实现软件生产的管理;并用数学的方法建立软件开发中的各种模型和算法,如可靠性模型、说明用户要求的形式化模型等。,软件工程理论与实践,三、软件工程的三个要素:方法、工具和过程,Tohelpussolveaproblem,weemployavarietyofmethods,tools,procedures,andparadigms.为了帮助我们解决问题,可以使用多种方法、工具、过程、规范。,软件工程理论与实践,软件工程理论与实践,软件工程理论与实践,软件工程方法为软件开发提供了如何做的技术。它在时间上将软件开发工作划分为若干阶段,为每一阶段规定了若干任务,并提供为完成这些任务所需的各种技术,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等所用的方法。,软件工程理论与实践,软件工程方法是一种使用早已定义好的技术集和符号表示习惯来组织软件生产的过程。方法一般表述成一系列的步骤,每一步骤都与相应的技术和符号有关。软件开发方法是克服软件危机的重要方面之一。1960年代,正是由于对软件开发方法重视不够,解决软件复杂性的能力不够,因而成为产生软件危机的原因之一。因此,自从软件工程诞生以来,人们重视了软件开发方法的研究,提出了多种软件开发方法和技术,对软件工程和软件产业的发展起到了不可估量的作用。典型的软件开发如结构化开发方法、面向对象开发方法等。,软件工程理论与实践,传统方法学,传统方法学又称生命周期方法学或结构化范型。采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。把软件生命周期的全过程划分为若干个阶段:前一阶段是基础、前提;后一阶段是细化;每一个阶段的开始和结束都有严格的标准;在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审;,软件工程理论与实践,传统方法学的优点,通过将软件生命周期划分成若干个阶段降低了整个软件开发过程的困难程度;每个阶段结束前的严格审查保证了软件的质量,提高了软件的可维护性。,软件工程理论与实践,传统方法学存在的问题,当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候,使用传统方法学开发软件往往不成功,而且维护起来仍然很困难。原因:把原本密切相关的数据和操作人为地分离成了两个独立的部分,增加了软件开发与维护的难度。,软件工程理论与实践,面向对象方法学,面向对象方法学是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。面向对象方法学的4个要点:把对象作为融合了数据及在数据上的操作行为的统一的软件构件;把所有对象都划分成类;按照父类与子类的关系,把若干个相关类组成一个类层次结构,位于下层的类继承了上层中某类的特点;对象彼此间仅能通过发送消息互相联系。,软件工程理论与实践,面向对象方法学,“面向对象=对象+类+继承+通信”面向对象方法学的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间与实现解法的求解空间在结构上尽可能一致。,软件工程理论与实践,面向对象方法学的优点,降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。,软件工程理论与实践,软件工程理论与实践,软件工具是指为了支援软件人员的开发和维护活动而使用的软件。例如项目估算工具、需求分析工具、设计工具、编程和调试工具、测试工具和维护工具等。使用了软件工具后可以大大提高软件的生产率和质量。,软件工程理论与实践,软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。目前,已经推出了许多软件工具,这些软件工具集成起来,建立起称之为计算机辅助软件工程(CASE)的软件开发支撑系统。CASE将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。在适当的软件工具的帮助下,人们可以把开发工作做得既快又好。,软件工程理论与实践,软件工程理论与实践,软件工程过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。,软件工程理论与实践,软件工程过程规定了在获取、供应、开发、运行和维护软件时需要实施的过程、活动和任务。其目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流。这个框架由几个重要过程组成,在这些过程中包含有用来获取、供应、开发、运行和维护软件所用的基本的、一致的要求。该框架还包含有用于控制和管理软件的过程。各种组织或开发机构可以根据具体情况进行选择和剪裁。可以在机构的内部或外部实施。,软件工程理论与实践,软件工程过程通常包含四种基本的过程活动:P(Plan):软件规格说明。规定软件的功能及其运行的限制;D(Do):软件开发。产生满足规格说明的软件;C(Check):软件确认。确认软件能够完成客户提出的要求;A(Action):软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。,软件工程理论与实践,事实上,软件工程过程是一个软件开发机构针对某一类软件产品为自己规定的工作步骤,它应当是科学的、合理的,否则必将影响到软件产品的质量。,软件工程理论与实践,软件工程理论与实践,1.5WhatIsGoodSoftware?什么是好软件,软件神话错误的认识管理者:我们已经有了关于建造软件的标准和规程的书籍,难道它们不能给人们提供所有其需要知道的信息吗我们已经有了很多很好的软件开发工具,而且,我们为它们购买的最新的计算机。如果我们已经落后于计划,可以增加更多的程序员来赶上进度。,软件工程理论与实践,用户:有了对目标的一般描述就可以开始写程序了,我们可以以后再补充细节。项目需求总是在不断变化,但这些变化能够很容易的满足,因为软件是灵活的。,软件工程理论与实践,开发者:一旦我们写出了程序并使其正常运行,我们的工作就结束了。在程序真正运行之前,没有办法评估其质量。一个成功项目唯一应该提交的就是运行程序。,软件工程理论与实践,Zero-defectsoftwareImpossible,大多数软件都做不到“零缺陷”,软件工程理论与实践,Qualityterminology关于质量的术语,Bug(错误):依赖于上下文。需定义。Error(错误):humanmistake。人的失误Fault(缺陷):resultofmistake,evidencedinsomedevelopmentormaintenanceproduct。产品开发和维护中出现的一些错误(error)的结果。Failure(故障):departurefromthesystemsrequiredbehavior。相对于系统制定行为的偏差,Humanerror,canleadto,fault,canleadto,failure,软件工程理论与实践,质量的观点,Garvin的观点Kitchenham和Pfleeger的观点,软件工程理论与实践,Garvin质量观点,超越的观点(Transcendentalview),用户的观点(Userview),制造的观点(Manufacturingview),基于价值的观点(Value-basedview),产品的观点(Productview),软件工程理论与实践,Kitchenham&Pfleeger的观点,WeMustConsiderQualityinatLeastThreeWay质量是个综合的考量,必须至少从3方面考虑质量,软件工程理论与实践,软件工程理论与实践,TheQualityoftheProduct产品质量,McCallsqualitymodelBoehmsqualitymodelISOqualitymodelIEEEqualitymodel,软件工程理论与实践,软件质量要素,评价准则,度量,度量,度量,McCallsQualityModel,软件工程理论与实践,Fj=CjkMk,L,k=1,其中Mk是软件质量要素Fj对第k种评价准则的测量值,Cjk是相应的加权系数,McCallsQualityModel,软件工程理论与实践,McCallsQualityModel,可维护性适应性可测试性,可移植性可复用性互用性,正确性可靠性完整性可用性有效性,软件工程理论与实践,软件质量要素(产品运行),正确性(Correctness):程序满足规格说明及完成用户目标的程度可靠性(Reliability):能够防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力有效性(Efficiency):软件系统能充分地利用计算机的时间资源和空间资源的程度完整性(Integrity):控制未被授权人员访问程序和数据的程度可用性(Usability):学习使用软件的难易程度,包括:操作软件,为软件准备输入数据,解释软件输出结果,软件工程理论与实践,软件质量要素(产品修改),可维护性(Maintainability):软件产品交付用户使用后,能够对它进行修改的难易程度可测试性(Testability):测试程序使之具有预定功能所需的工作量适应(灵活)性(Flexibility):改变一个操作程序所需的工作量,软件工程理论与实践,软件质量要素(产品变迁),可移植性(Portability):软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度可复用性(Reusability):软部件可以在多种场合应用的程度互用(可互操作)性(Interoperability):两个或多个系统交换信息并相互使用已交换信息的能力,软件工程理论与实践,可追踪性(Traceability)完全性(Completeness)一致性(Consistency)准确性(Accuracy)容错性(Error-tolerance)执行效率(ExecutionEfficiency)存储效率(storageEfficiency)访问控制(Accesscontrol)安全性(Security),Tips:质量要素评价准则(McCall),软件工程理论与实践,访问审核(Accessaudit)可操作性(Operability)易培训性(Training)交互性(Communicativeness)简单性(Simplicity)简明性(Conciseness)检测性(Instrumentation),Tips:质量要素评价准则(McCall),软件工程理论与实践,自描述性(Self-descriptiveness)自文档化(Self-documentation)可扩充性(Expandability)通用性(Generality)模块化(Modularity)软件系统独立性(SoftwareSystemIndependence)硬件独立性(Hardware(machine)Independence)通信通用性(Communicationcommonality)数据通用性(DataCommonality),Tips:质量要素评价准则(McCall),软件工程理论与实践,外部质量因素与产品评价准则的联系,正确性:可追踪性、完全性、一致性可靠性:一致性、准确性、容错性效率性:执行效率、存储效率完整性:访问控制、访问审核可用性:可操作性、易培训性、交互性可维护性:简单性、简明性、自描述性、模块化可测试性:简单性、检测性、自描述性、模块化适应性:简单性、可扩充性、通用性、模块化可移植性:简单性、软件系统独立性、硬件独立性可重用性:简单性、通用性、模块化、软件系统独立性、硬件独立性互用性:模块化、通信通用性、数据通用性,软件工程理论与实践,ANSI/IEEEStd729-1983软件质量定义,与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体,软件工程理论与实践,M.J.Fisher软件质量定义,所有描述计算机软件优秀程度的特性的组合。也就是说,为满足软件的各项精确定义的功能、性能需求,符合文档化的开发标准,需要相应地给出或设计一些质量特性及其组合,作为在软件开发与维护中的重要考虑因素。如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是高的。,软件工程理论与实践,ISO/IEC9126质量特性(1991),6个质量特性:即功能性、可靠性、可维护性、效率、可使用性、可移植性。推荐了21个子特性:适合性、准确性、互用性、依从性、安全性、成熟性、容错性、可恢复性、可理解性、易学习性、操作性、时间特性、资源特性、可分析性、可变更性、稳定性、可测试性、适应性、可安装性、一致性、可替换性。(但不做为标准),软件工程理论与实践,TheQualityoftheProcess过程质量,improvingthesoftwaredevelopmentprocess,wecanimprovethequalityoftheresultingproducts.改进软件开发过程,可以改进最终产品的质量,软件工程理论与实践,TheQualityoftheProcess过程质量,CMM(CapabilityMaturityModel)(能力成熟度模型)ISO9000modelSPICE(SoftwareProcessImprovementandCapabilitydetermination)(软件过程改进及能力确定),软件工程理论与实践,CMM模型,软件开发能力的成熟度模型(CapabilityManurityModelforSoftware,CMM)是软件工程协会SEI(SoftwareEngineeringInstitution)在卡内基.梅隆大学开发完成的对一个组织软件开发能力进行评价的标准,它侧重于对软件开发过程和开发方法论的考察。,软件工程理论与实践,CMM-SEI能力成熟度模型,不断改进的过程,CMM五级成熟水平能力评定,可预测的过程,标准一致的过程,有纪律的过程,软件工程理论与实践,Technologyvalue技术价值Businessvalue商业价值TechnologyvalueBusinessvalue转换ThreemodelstoassessROI(Returnoninvestment)评估投资回报的三种模型,QualityintheContextoftheBusinessEnvironment商业环境中的质量,软件工程理论与实践,ROI(ReturnOnInvestment)投资回报,ReturnOnInvestment:(derivedfromthefinancialcommunity)describestheinvestmentintermsofwhatisgivenupforotherpurposes.Thatis,the“investmentmustnotonlyreturntheoriginalcapitalbutenoughmoretoatleastequalwhatthefundswouldhaveearnedelsewhere,plusanallowanceforrisk”.投资回报定义来源于金融界,用为了目标放弃了什么来描述投资。“投资必须不仅仅是返回原始资本,而且返回必须足够多,至少等于在其他地方这些资金所能挣来的利润再加上风险金”,软件工程理论与实践,不同界别对ROI的不同解释,U.Sgovernments-费用industrys工业界-工作量包括:(1)training培训(2)schedule进度(3)risk风险(4)quality质量(5)productivity生产率(6)process过程(7)customer顾客(8)costs费用(9)business商务,软件工程理论与实践,软件工程标准,软件工程标准的意义软件工程标准的分类软件工程标准的级别中国的软件工程标准化软件质量认证,软件工程理论与实践,软件工程标准的意义,(1)可提高软件的可靠性、可维护性和可移植性(这表明软件工程标准化可提高软件产品的质量);(2)提高软件的生产率;(3)提高软件人员的技术水平;(4)提高软件人员之间的通信效率,减少差错和误解;(5)有利于软件管理;(6)有利于降低软件产品的成本和运行维护成本;(7)有利于缩短软件开发周期。,软件工程理论与实践,软件工程标准的分类,过程标准(如方法、技术、度量等);产品标准(如需求、设计、部件、描述、计划、报告等);专业标准(如职别、道德准则、认证、特许、课程等);记法标准(如术语、表示法、语言等)。,软件工程理论与实践,软件工程标准的级别,它可分为以下五个级别:国际标准国家标准行业标准企业(机构)标准项目(课题)标准,软件工程理论与实践,1国际标准由国际联合机构制定和公布,提供各国参考的标准。ISO(Internationalstandardsorganization)国际化标准组织。20世纪60年代初,该机构建立了“计算机与信息处理技术委员会”,简称ISO/TC97,专门负责与计算机有关的标准化工作。,软件工程理论与实践,2国家标准由政府或国家级的机构制定或批准,适用于全国范围的标准。GB中华人民共和国国家技术监督局是中国的最高标准化机构,它所公布实施的标准简称为“国标”;ANSI(Americannationalprocessinginstitute)美国国家标准协会。这是美国一些民间标准化组织的领导机构,具有一定的权威性;FIPS(NBS)Federalinformationprocessingstandards(nationalbureauofstandards)美国商务部国家标准局联邦信息处理标准;BS(Britishstandard)英国国家标准;DIN(Deutschesinstitutfurnormung)德国标准协会;JIS(Japaneseindustrialstandard)日本工业标准。,软件工程理论与实践,3行业标准由行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准。IEEE(Instituteofelectricalandelectronicsengineers)美国电气与电子工程师学会。GJB中华人民共和国国家军用标准。由中国国防科学技术工业委员会批准,适合于国防部门和军队使用的标准。DOD-STD(Departmentofdefense-standards)美国国防部标准,适用于美国国防部门。MIL-S(Military-standard)美国军用标准,适用于美军内部。,软件工程理论与实践,4企业规范一些大型企业或公司,由于软件工程工作需要,制定适用于本部门的规范。美国IBM公司通用产品部(Generalproductsdivision),1984年制定的程序设计开发指南,仅供该公司内部使用。,软件工程理论与实践,5项目规范由某一科研生产项目组织制定,且为该项任务专用的软件工程规范。,软件工程理论与实践,中国的软件工程标准化,1983年5月中国原国家标准总局和原电子工业部主持成立了“计算机与信息技术标准技术委员会”,下设十三个分技术委员会。与软件相关的:程序设计语言分委员会和软件工程技术分委员会。总原则:向国际标准靠拢,对于能够在中国适用的标准一律按等同采用的方法,以促进国际交流。这里,等同采用是要使自己的标准与国际标准的技术内容完全相同,仅稍作编辑性修改。,软件工程理论与实践,中国的软件工程标准化,中国的软件工程标准分类1983年以来中国已陆续制定和发布了20项国家标准。这些标准可分为4类:基础标准;开发标准;文档标准;管理标准。已制定的软件工程国家军用标准为12项,以“GJB”为标记。,软件工程理论与实践,软件质量认证,1ISO9000系列标准及软件质量认证1987年公布发源于欧洲经济共同体已有70多个国家在它们的企业中采用和实施这一系列标准我国发布了与其相应的质量管理国家标准系列GB/T19000,软件工程理论与实践,2ISO9000系列标准的内容2000新版ISO9000系列标准的内容:(1)ISO9000:基本原则和术语;(2)ISO9001:开发/设计、生产安装和服务中的质量保证模式;(3)ISO9002:生产和安装中的质量保证模式;(4)ISO9003:最终检验和测试中的质量保证模式;(5)ISO9004:业绩改进指南;(6)ISO9011:2000质量和环境审核指南;(7)ISO9000-3-1997(即GB/T19000.3-94)质量管理和质量保证标准-第三部分-在软件开发、供应和维护中的使用指南。,软件工程理论与实践,3制定与实施ISO9000系列标准强调质量并非在产品检验中得到,而是形成于生产的全过程。要求“企业具有持续提供符合要求产品的能力”。企业负责人的重视以及企业全体人员的积极参与是取得成功的关键。强调“质量管理必须坚持进行质量改进”。,软件工程理论与实践,4ISO90003的要点(1)ISO90003标准不适用于面向多数用户销售的程序包软件,仅适用于依照合同进行的单独的订货开发软件。(2)ISO90003标准对供需双方领导的责任都作了明确的规定,并没有单纯地把义务全部加在供方身上。(3)在包括合同在内的全部工序中进行审查,并彻底文件化。(4)在ISO90003中,最重要的是质量保证“体系”。(5)供方应实施内部质量审核制度。,软件工程理论与实践,1.6WhoDoesSoftwareEngineering谁来做软件工程?,一、软件开发中的参与者,customer,Sponsorssystemdevelopment支持系统开发,developer,$,need,Contractualobligation签约,Needs,Softwaresystem,Buildssystem,user,Usessystem,软件工程理论与实践,软件工程涉及的人员,角色(Role):一种职责对应关系。通常情况下,软件工程涉及的人员分为三种角色:客户(Customer):花钱开发软件系统的公司、组织或个人;开发者(Developer):为客户构建软件系统的公司、组织或个人;用户(User):最终使用该系统的人员。,软件工程理论与实践,通常:全承包系统(Turnkeysystem)引发角色交叉的新情况:通用商业软件包(Commercialoff-the-shelf,COTS)ThecustomermaydecidetopurchaseCOTSsoftwaretobeincorporatedinthefinalproductthatthedeveloperwillsupplyandsupport.转包(Subcontract)Thedevelopermaychoosetouseadditionaldevelopers,calledsubcontract,whobuildasubsystemanddeliverittothedeveloperstobeincludedinthefinalproduct.,软件工程理论与实践,二、WhereSoftwareengineerFitIn?软件工程师适合做什么,软件工程理论与实践,Insteadofconcentratingoncomputersandprogramminglanguagesthemselves,softwareengineeringviewthemastoolstobeusedindesigningandimplementingasolutiontoaproblem.只关心计算机和程序设计语言本身,把它们看作是用来设计和实现问题解决方案的工具。,WhereSoftwareengineerFitIn?软件工程师适合做什么,软件工程理论与实践,三、MembersofDevelopmen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品质量检测与评估体系模板
- 2025年度陈杰士劳动合同书
- 网络服务表现与质量承诺书4篇
- 2025办公室租赁合同终止
- 技术研发项目文档管理模板保证项目进度和质量
- 2025年特种胶布制品合作协议书
- 寻找生活中的话题作文10篇范文
- 以话题为主题的演讲稿(5篇)
- 一件感人的社会事件读后感作文11篇范文
- 传媒广告项目方案
- 第六章反求工程与创新设计
- 水产微生物学全套教学课件
- 退费授权委托书
- 教科版科学五年级上册《光》单元教材解读培训PPT
- 2023年四川省水电投资经营集团普格电力有限公司招聘笔试题库含答案解析
- 新疆五彩湾温泉二期建设项目可行性研究报告
- 超早期脑梗死的CT影像表现及诊断课件
- 现代温室附属设施课件
- 拉西地平原料制药课程设计说明书
- 基于Java的网上蛋糕预订销售系统的设计与实现
- 小学体育-小学二年级《单双脚跳》教学设计学情分析教材分析课后反思
评论
0/150
提交评论