软件工程-总复习

上传人:小*** 文档编号:243406551 上传时间:2024-09-22 格式:PPT 页数:212 大小:13.73MB
返回 下载 相关 举报
软件工程-总复习_第1页
第1页 / 共212页
软件工程-总复习_第2页
第2页 / 共212页
软件工程-总复习_第3页
第3页 / 共212页
点击查看更多>>
资源描述
Click to edit the title text format,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,概论,1-1,软件,概念,1-2,软件工程概念、软件工程,三要素,1-3,软件工程基本原理,1-4,四种,软件工程方法,之间的关系,2,1-1,软件概念,软件,=,程序,+,数据,+,文档,程序,:,按设计的功能和性能要求执行的指令序列,数据,:,程序能正常运作的初始化数据,文档,:,为了理解程序所需的详细描述性资料。,3,1-2,软件工程定义,1968,年,NATO(,北大西洋公约组织,),会议上首次提出,Fritz Bauer,:,建立并使用完善的工程原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。,IEEE,:,软件工程是(,1,)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(,2,)(,1,)中所述方法的研究。,2001,年,软件工程大师,Roger S Pressman,对软件工程的定义是:软件工程是一个,过程,、一组,方法,和一系列,工具,。,计算机科学技术百科全书:,软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。,习惯上,人们常常把软件工程的,方法,(开发方法)、,工具,(支持方法的工具)、,过程,(管理过程)称为,软件工程三要素。,4,软件工程三要素:,方法、工具和过程,方法提供了 “如何做” 的技术,工具提供了自动的或半自动的软件支撑环境,过程定义了,:,方法使用的,顺序,要求交付的,文档,资料,为保证质量和适应变化所需要的,管理,软件开发各个阶段完成的,里程碑,5,1-3,软件工程基本原理,习惯上,人们常常把软件工程的,方法,(开发方法)、,工具,(支持方法的工具)、,过程,(管理过程)称为,软件工程三要素,。而把美国著名的软件工程专家,B.W Boehm,于,1983,年提出的,7,条原理,,作为软件工程的基本原理。,(,1,)用分阶段的生命周期计划严格管理软件开发。,阶段划分为计划、分析、设计、编程、测试和运行维护。,6,(,2,)坚持进行阶段评审。,上一阶段评审不通过,就不能进入下一阶段开发。,(,3,)实行严格的产品版本控制。,(,4,)采用现代程序设计技术。,(,5,)结果应能清楚地审查。,因此,对文档要有严格要求。,(,6,)开发小组的成员要少而精。,(,7,)要不断地改进软件工程实践的经验和技术,要与时俱进。,上述七条原理是在面向过程的程序设计时代(结构化时代)提出来的。但是,直到今天,在面向元数据和面向对象的程序设计新时代,仍然有效。,7,根据,“,与时俱进,”,的原则,还有一条基本原理在软件的开发和管理中特别重要,需要补充进去,作为软件工程的第八条基本原理。,(,8,),二八定律,。对软件项目进度和工作量的估计:一般人主观上认为已经完成了,80%,,但实际上只完成了,20%,;对程序中存在问题的估计:,80%,的问题存在于,20%,的程序之中;对模块功能的估计:,20%,的模块,实现了,80%,的功能;对人力资源的估计:,20%,的人,解决了软件中,80%,的问题;对投入资金的估计:企业信息系统中,80%,的问题,可以用,20%,的资金来解决。,8,1-4,软件过程方法,1.,面向过程的方法,2.,面向对象的方法,3.,面向元数据的方法,4.,形式化方法,9,1.,面向过程方法,(Procedure-oriented method),面向过程方法,习惯上称为传统软件工程开发方法,或结构化方法。有时又称面向功能的方法,。,面向过程方法包括面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。,面向过程方法的要点,面向过程方法,设计时强调,模块化,的思想,采用,“,自顶向下,逐步求精,”,的技术对系统进行划分,,分解和抽象,是它的两个基本手段。,面向过程方法编程时采用,单入口单出口,的控制结构,并且只包含,顺序、选择和循环三种结构,,目标之一是使程序的控制流程线性化,即程序的,动态执行顺序符合静态书写结构,。,优点,:以处理流程为基础,简单实用。,缺点,:只注重过程化信息,因而忽略信息的层面关系以及相互联系。描述能力不强,最后可能导致软件设计、开发和维护陷入困难。,10,曾经出现过的面向过程方法:,(1).,面向结构化数据系统的开发方法,DSSD,(,Data Structured Systems Development,);,(2).,面向可维护性和可靠性设计的,Parnas,方法;,(3).,面向数据结构设计的,Jackson,方法;,(4).,面向问题设计的,PAM,方法;,(5).,面向数据流方法。,其中,,面向数据流方法最具代表性,。,当前,面向过程方法主要用在过程式的程序设计中,11,2,面向对象方法,(Object-oriented method),面向对象方法,在不少教材中,称为现代软件工程开发方法。,该方法包括面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。,面向对象方法的要点,运用对象、类、消息传递、继承、封装、聚合、多态性等概念来构造软件系统,。,特点:,将现实世界的事物,(,问题域,),直接映射到对象。分析设计时,由对象抽象出类,(Class),,程序运行时,由类还原到对象,(Object),。,基本特点,:将对象的属性和方法封装起来,形成信息系统的基本执行单位,再利用对象的继承特征,由基本执行单位派生出其他执行单位,从而产生许多新的对象。众多的离散对象通过事件或消息连接起来,就形成了软件系统。,12,优点,:能描述无穷的信息世界,同时易于维护。,缺点,:对于习惯于面向过程方法的人,较难掌握。,面向对象方法是当前计算机界关心的重点,是软件工程方法论的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到更宽的范围。如交互式界面、应用结构、应用平台、分布式系统、网络管理结构、,CAD,技术、人工智能等领域。,业界流传的面向方面的方法、面向主体的方法和面向架构的方法,,都是面向对象方法的具体应用,案例。,13,3.,面向元数据方法,(Meta-data oriented method),来源于关系数据库语言的程序设计思想。,面向元数据方法包括面向元数据需求分析、面向元数据设计、面向元数据编程、面向元数据测试、面向元数据维护。,优点,:通俗易懂,特别适合信息系统中数据层上的设计与实现。,缺点,:只能实现二维表格,不能实现窗口界面。,14,软件工程方法论小结,四种基本的软件开发方法,:,包括面向过程方法、面向对象方法、面向元数据方法和形式化方法这四种基本的软件开发方法。,在大型多层,(B/A/S),结构的信息系统建设中,这四种方法的关系是:面向元数据方法用在数据库服务器,S,层,面上系统的设计与实现,面向对象方法用在除数据库服务器层面之外的其他层面上,(,B/A,),系统的设计与实现,面向过程方法用在其他两种方法本身,内部函数,的设计与实现,形式化方法用在某些核心程序的,正确性证明,上。,2,软件生命周期模型,2-1,软件生命周期各阶段,2-2,常见过程模型本意、特点、选用条件,2-2-1,瀑布、,2-2-2,增量、,2-2-3,原型、,2-2-4,迭代、,2-2-5,螺旋、,2-2-6,喷泉、,2-2-7XP,16,2-1,软件生存周期 (,software life cycle,),软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期。,软件生存周期分为如下几个阶段,:,计算机系统工程(立项与合同)、需求分析、设计、编码、测试、运行和维护,17,计算机系统工程(立项与合同),确定软件,总体要求和范围,,以及其与其它计算机系统,元素之间关系,计算机系统元素:硬件软件使用者数据库文档等,成本估算和进度安排,进行,可行性分析,经济、技术、法律等方面是否有可行方案?,在可行解决方案中作出选择。,18,软件需求分析,确定待开发软件要“,做什么,”。,确定软件的功能、性能、数据、界面等要求,生成软件需求规约。,软件设计,确定待开发软件“,怎么做,” 。,分为系统设计和详细设计:,系统设计,:,也称概要设计或总体设计。设计软件系统的体系结构,包括:软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构;,详细设计,:,设计各个组成成分的实现细节,包括局部数据结构和算法等,19,编码,将设计的结果转换为可执行的程序代码。,测试,保证软件质量的重要环节。,发现并纠正软件中的错误和缺陷。主要包括单元测试、集成测试、确认测试和系统测试。,运行和维护,在软件运行期间,当发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时对软件进行修改。,20,2-2-1,瀑布模型,1970,年,W.Royce,提出瀑布模型,1.,模型的本意,:,阶段间具有顺序性和依赖性,2.,模型的,特点,:,文档驱动,过程不可逆转,3.,模型的,选择条件,:,(,1,)在开发时间内,需求没有或很少变化,。,(,2,)分析设计人员对应用领域很熟悉。,(,3,)低风险项目(对目标、环境很熟悉)。,(,4,)用户使用环境很稳定。,(,5,)用户除提出需求以外,很少参与开发工作,。,21,4.,模型的优点,:,开发阶段清晰,便于评审、审计、跟踪、管理和控制。,5.,模型的缺点,按顺序完成每个工作流程,即,瀑布式生命周期,。瀑布只能一个个台阶地往下流,不可能倒着往上流,这就是它致命的缺点。,瀑布式生命周期通常会导致在,项目后期,出现,“,问题堆积,”,,更可怕的是,错误的传递会采取发散扩大的方式。,22,1,模型的本意,要开发一个大的软件系统,先开发其中的一个,核心模块,(或子系统),然后再开发,其他模块,(或子系统),这样一个个模块(或子系统)地增加上去,就像搭积木一样,直至整个系统开发完毕为止。,在每增加一个模块前,先要对该模块进行,模块测试,。通过后再将此模块加入到系统中,然后还要进行,系统集成测试,。系统集成测试成功后,再增加新的模块。,这样多次循环,直到系统搭建完毕为止。,2-2-2,增量模型,23,2,模型的特点,(,1,)任务或功能模块驱动,可以,分阶段提交,产品。,(,2,)有,多个任务单,,这些多个任务单的集合,构成项目的一个总,任务书,,或总,用户需求报告,/,需求规格说明书,。,3,选择模型的条件,(,1,)在整个项目开发过程中,,需求可能发生变化,,客户接受分阶段交付。,(,2,)分析设计人员,对应用领域不熟悉,,难以一步到位。,(,3,),中等或高风险项目,(工期过紧且可分阶段提交的系统或目标、环境不熟悉)。,(,4,),用户可参与,到整个软件开发过程中。,(,5,)使用面向对象语言或第四代语言。,(,6,)软件公司自己有较好的,类库、构件库,。,24,4,模型的优点,(,1,)由于将一个大系统分解为多个小系统,这就等于将一个大,风险分解,为多个小风险,从而降低了开发难度。,(,2,),人员分配灵活,,刚开始不用投入大量人力资源。如果核心模块产品很受欢迎,则可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。即可先发布部分模块给客户,对客户起到镇静剂的作用。,5,模型的缺点,如果软件系统的组装和拆卸性不强,或开发人员全局把握水平不高(没有数据库设计专家进行系统集成),或者客户不同意分阶段提交产品,或者开发人员过剩,就不宜采用这种模型。,25,原型,的解释,:,预期系统的一个可执行版本,它反映了系统性质(如功能、计算结果等)的一个选定的子集。,一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建。,2-2-3,原型模型,部署交付和反馈,构建原型,交流,快速设计方式建模,快速计划,26,原型模型,软件企业界的主流开发模型,.,1,模型的本意,原型模型(,Prototype Model,)的本意是:在初步需求分析之后,马上向客户展示一个软件,产品原型,(,样品,),,对客户进行培训,让,客户试用,,在试用中收集客户意见,根据客户意见立刻,修改原型,,之后再让客户试用,反复循环几次,直到客户确认为止。,27,2,模型的特点,原型驱动,。因此,开发者必须先有一个原型,(,样品,),,至少要有一个原型的核心。,原型模型与迭代模型相同点是:反复循环几次,直到客户确认为止。不同点是:原型模型事先有一个展示性的产品原型,(,样品,),,而迭代模型可能没有。,28,3,选择模型的条件,(,1,),已有产品或产品的原型,(,样品,),,只需客户化的工程项目。,(,2,),简单而熟悉,的行业或领域。,(,3,)有快速原型开发,工具,。,(,4,)进行产品,移植或升级,。,由于上述条件不太苛刻,所以凡是有软件产品的,IT,企业,在他们熟悉的业务领域内,当客户招标时,他们都会以原型模型作为软件开发模型,去制作投标书,去讲解标投标。,29,4,模型的优点,开发速度快,用户意见反馈实时,,有利于开发商在短时间内推广并实施多个客户。,正因为原型模型具有这些优点,所以它一直是软件企业界的主流开发模型。凡是有软件产品积累的软件公司,他们在投标、开发、实施项目的过程中,都非常喜欢用原型模型。,5,模型的缺点,因为事先有一个展示性的产品原型,所以在,一定程度上,不利于开发人员的创新,。,30,6,快速原型法,由于原型模型的开发速度较快,有时也将它称作快速原型法(,Rapid Prototyping,)。,在开发工具和开发环境迅速发展的今天,在信息系统开发中,原型法和快速原型法又被赋予新的内容:,事先没有原型产品,也可以采取这种办法,。,基本思路是:采用以面向元数据为主的方法,在需求分析的基础上,利用,Power Designer,等数据库分析和设计工具,快速建立信息系统的概念数据模型,CDM,和物理数据模型,PDM,;然后利用面向对象的编程工具,快速地实现需求分析中确认的流程、功能、性能和接口;之后交付给用户试用,反复循环几次,直到客户确认满意为止。,31,快速原型法选择的条件之一,是:项目组中有,数据库分析和设计的专家,,有,面向对象编程的专家,,文档制作有成熟的模板,而且系统或项目又不是非常大。,快速原型法选择的条件之二,是:项目组的开发环境为,分行业的业务基础平台,(,比如,Justep X3,业务基础平台,),,该业务基础平台又完全适合所需开发的系统或项目,而且系统或项目又不是非常大。,以上两个条件,只要符合一个,就可以采用快速原型法。,32,原型的类型:,探索型,:弄清要求,确定特性,并探讨多种方案的可行性,实验型,:大规模开发和实现前,验证方案或算法的合理性。,演化型,:原型作为目标系统的一部分。,原型的使用策略:,废弃(,throw away,)策略,:用于探索型和实验型原型。,追加(,add on,)策略,:用于演化型原型。,原型可作为单独的过程模型,也常被作为一种方法或实现技术应用于其它过程模型中。,33,2-2-4,迭代模型 (,Iterative Model,),代表:,RUP,(,Rational Unified Process,)模型,34,这里所讲的迭代模型是,RUP,推出的一种,“,逐步求精,”,的面向对象的软件开发过程模型,,被认为,软件界迄今为止最完善的、商品化的开发过程模型,。,1,模型的本意,多次执行各个开发工作流程,,从而更好地理解需求,设计出更为强壮的软件构架,逐步提高开发组织能力,最终交付一系列逐步完善的实施成果,这就是,迭代式生命周期模型,。,每次按顺序完成这一系列工作流程就叫做,一次迭代,,每次迭代,均以次要里程碑结束,按照特定的迭代成功标准,对迭代的结果进行评估。每个阶段都可以进一步细分为迭代。,迭代是产生可执行的产品发布的完整开发循环,所发布的产品是开发过程最终产品的,子集,,它将通过一次又一次的迭代,实现递增成长,最后形成最终的软件系统或,产品,。,35,2,模型的特点,迭代或迭代循环驱动,,每一次迭代或迭代循环,均要走完初始(先启)、精化、构建、产品化,(,移交,),这四个阶段。,RUP,的主要特征如下:,1.,采用迭代的、增量式的开发过程,;,2.,采用,UML,语言描述软件开发过程,;,3.,有功能,强大,的软件,工具,Rational Rose,支撑,。,36,3,模型的选取条件,(,1,)项目组的管理人员和核心成员,,应对迭代的开发方式比较熟悉,。,(,2,)管理人员和核心成员,应对软件工程的核心过程,:系统建模、需求分析、系统设计、系统实现、项目管理、配置管理、测试等,比较熟悉,。,(,3,),采用面向对象技术(如,OOA,,,OOD,等)的项目组,,建议使用迭代式生命周期。,(,4,)项目组的,核心设计人员,应具备一定程度的软件架构的知识,并熟练掌握软件架构设计技能,。,(,5,)项目组全体成员应,熟悉,UML,,并能利用建模工具(如,Rational Rose,等),进行分析、策划、设计、测试等。,(,6,)项目组的,管理人员应具备风险管理的知识和技能,。,(,7,),拥有实施软件产品开发、组装的软件组织,。,37,4,模型的四个阶段,(,1,),初始阶段,。本阶段主要工作是确定系统的业务用况和定义项目的范围。,(,2,),精化阶段,。本阶段主要工作是分析问题域、细化产品定义,定义系统的构架并建立基线,为构建阶段的设计和实施工作提供一个稳定的基础。,(,3,),构建阶段,。本阶段主要工作是反复地开发,以完善产品,达到用户的要求。,(,4,),产品化,(,移交,),阶段,。本阶段主要工作是将产品交付给用户,包括安装、培训、交付、维护等工作。,38,5,模型的九个核心流程,(,1,)业务建模。,(,2,)需求获取。,(,3,)分析设计。,(,4,)实施。,(,5,)测试。,(,6,)部署。,(,7,)配置与变更管理。,(,8,)项目管理。,(,9,)环境。,39,6,模型的优点,在开发早期或中期,,用户需求可以变化,;,在迭代之初,它不要求有一个相近的产品原型,;模型的,适用范围很广,,几乎适用于所有的项目开发。,7,模型的缺点,传统的项目组织方法是按顺序(一次且仅一次)完成每个工作流程,即瀑布式生命周期。迭代模型是采取循环的工作方式,每次循环均使工作产品更靠近目标产品一次,这就,要求项目组成员具有很高的水平并掌握先进的开发工具,。,40,2-2-5,螺旋模型,1,模型的本意,螺旋模型,将瀑布模型和快速原型模型结合起来,,强调了其它模型所忽视的,风险分析,,特别适合于大型复杂的系统。,螺旋模型基本做法是,在瀑布模型的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制,,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。如图,2-4,所示。,41,42,螺旋模型沿着螺线顺时针方向进行若干次迭代,图中的,四个象限,代表了以下迭代活动:,(,1,)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;,(,2,)风险分析:分析评估所选方案,考虑如何识别和消除风险;,(,3,)实施工程:实施软件开发和验证;,(,4,)客户评估:评价开发工作,提出修正建议,制定下一步计划。,43,2,模型的特点,(,1,)把软件开发过程组成为一个,逐步细化的螺旋周期,,每经历一个周期,系统就得到进一步的细化和完善;,(,2,)整个模型紧密,围绕,开发中的,风险分析,,推动软件设计向深层扩展和求精;,(,3,)强调,持续的判断、确定和修改用户的任务目标,,并按成本、效益来分析候选的软件产品对任务目标的贡献。,44,3,选择模型的条件,螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此,特别适用于庞大、复杂并具有高风险的系统,。,45,4,模型的优点,(,1,)与瀑布模型相比,螺旋模型,支持用户需求的动态变化,,为用户参与软件开发的所有关键决策提供了方便,从而降低了软件开发风险。,(,2,)螺旋模型对可选方案和约束条件的强调,,有利于已有软件的重用,,也有助于把,软件质量,作为软件开发的一个重要目标。,(,3,),减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险,。,(,4,)螺旋模型中维护只是模型的另一个周期,在,维护和开发之间并没有本质区别,。,46,5,模型的缺点,(,1,),很难让用户确信这种演化方法的结果是可以控制的,。由于建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。,(,2,)采用螺旋模型,需要具有相当丰富的风险评估经验和专门知识,,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。,(,3,),过多的迭代次数,会增加开发成本,延迟提交时间。,47,2-2-6,喷泉模型,48,1,模型的本意,喷泉模型,(,Fountain Model,),认为,软件开发过程自下而上的,各阶段是相互重叠,和,多次反复进行,的,就像喷泉中的水喷上去,又可以落下来,所以叫做喷泉模型。,各个开发阶段,没有特定的次序要求,,而且可以交互进行,在每个开发阶段中,还可以随时补充其它任何开发阶段中的遗漏。,49,2,模型的特点,喷泉模型是一种以,用户需求驱动,的模型,主要用于描述面向对象的软件开发过程。,由于,各阶段的活动之间无明显界线,,所以喷泉模型也称为,“,喷泉无间隙性模型,”,。,3,选择模型的条件,喷泉模型,主要用于面向对象的软件项目,,软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。,50,4,模型的优点,喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。,该模型的,各个阶段没有明显的界限,,开发人员可以同步进行开发。其优点是,可以提高软件项目开发效率,节省开发时间,。,5,模型的缺点,由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中,需要大量的开发人员,,因此不利于项目的管理。,这种模型,要求严格管理文档,,使得审核的难度加大,尤其是面对可能随时加入各种信息。,51,2-2-7 XP,模型,1,模型的本意,XP,模型,即极限编程模型,它本来是敏捷企业文化现象,但是不少人将它当作一种软件开发模型。,XP,模型属于,轻量级开发模型,,它由一组简单规则,(,需求、实现、重构、测试、发布,),组成,既保持开发人员的自由创造性,又保持对需求变动的适应性,即使在开发的后期,也不怕用户需求的变更。,XP,模型的迭代开发过程,如图,2-6,所示。,52,53,2,模型的特点,在需求、实现、重构、测试、发布的迭代过程中,,XP,模型有,四条核心原则:,“,交流,”,、,“,简单,”,、,“,反馈,”,和,“,进取,”,。,XP,开发小组,不仅包括开发人员,还包括管理人员和客户。,XP,模型强调小组内成员之间要经常进行,“,交流,”,,结对编程,在尽量保证质量的前提下力求过程和代码的,“,简单,”,化。,来自客户、开发人员和最终用户的具体,“,反馈,”,意见,可以提供更多的机会来调整设计,保证把握正确的开发方向。,在,XP,模型中,采取讲,“,用户场景故事,”,的方法,来代替传统模型中的需求分析。,54,3,选择模型的条件,XP,模型克服了传统模型不灵活机动的缺陷,是一种面向客户场景的轻量级模型。它,只适合于中小型开发小组,。实践表明,,XP,模型特别适合于情投意合的青年人群的小项目。,4,模型的优点,(1).,由于采用简单策略,不需要长期计划和复杂管理,因而,开发周期短,;,(2).,由于采用迭代增量开发、反馈修正和反复测试的方法,因而,软件质量有保证,;,(3).,由于适应用户需求的变化,因而,与用户关系和蔼,。,55,5,模型的缺点,XP,模型作为一种新的模型,在实际应用中还,存在着一些问题,,引起了许多争议。,它只适用于小型项目、小型项目组,,不大适用于大型项目、大型项目组,。,同时,它,与,ISO9001,、,CMMI,的精神也存在冲突,。,56,序号,模 型 名 称,优 点,缺 点,适 用 范 围,1,瀑布模型,简单好学,逆转性差,面向过程开发,2,增量模型,可以分阶段提交,有时用户不同意,系统可拆卸和组装,3,迭代模型,需求可变,风险大,有高素质软件团队,4,原型模型,开发速度快,不利于创新,已有产品的原型,5,螺旋模型,需求可变,建设周期长,庞大、复杂、高风险项目,6,喷泉模型,提高开发效率,不利于项目的管理,面向对象开发,7,XP,模型,提高开发效率,不适合大团队、大项目,小团队,小项目,各种模型之间的关系,57,在软件开发的过程中,,软件工程不可能百分之百地按照事先设计好的软件蓝图进行,而是一边施工、一边修改软件蓝图、一边再按照修改的软件蓝图继续施工,即,按照,“,软件蓝图,-,软件开发,-,软件蓝图,-,软件开发,”,这个顺序多次循环,循环中又包涵着各种生命周期及开发模型,,最后才能到达胜利的彼岸。,58,软件企业选取软件生命周期模型的方法:,软件企业在,创业时期,,由于没有项目或产品的积累,所以他们,常常会选取瀑布模型和增量模型,。,一旦越过创业时期,由于积累了一些了项目或产品,他们就会选取,原型模型,。,至于,迭代模型,,只有当他们掌握了,UML,及其工具,Rational Rose,之后,才会加以考虑。,3,计算机系统工程(立项与合同) 不考!,订单软件与非订单软件,招标、投标、讲标、中标,立项及签订合同的方法,下达任务书的三个条件,可行性研究的方法,4,需求分析,4-1,需求工程的几个阶段,4-2,软件需求的概念及,种类,4-3,需求分析的任务,4-4,需求确认与验证的区别,4-5,两种需求文档的关系与区别,4-6,需求获取的方法与策略,4-7,掌握需求分析的方法及对应的建模描述工具,61,我们将软件需求工程细分为:,需求获取,需求分析与系统建模,需求归档,(,需求规约,),需求确认与验证(评审),4-1,需求工程阶段,62,需求的简化定义:,产品必须提供的服务,产品必须具备的质量特征,需求关注于顾客的需要,指定系统要“,做什么,”,而不关心问题的解决方案或实现,4-2,需求的概念,63,功能性需求,:,描述系统做什么。,非功能性需求,:定义系统工作时的特性。包括:,产品必须遵从的标准、规范和合约;,外部,界面,的具体细节;,性能,要求;,设计或实现的,约束,条件及质量属性。,4-2,需求的种类,64,4-3,需求分析的任务,深入描述软件的,功能,和,性能,确定软件设计的,约束,和软件同其它系统元素的,接口,细节,定义软件的其它有效性需求,65,4-4,需求确认(,Validation,)与验证(,Verification,),验证,&,确认(,Verification & Validation,)的定义,验证:我们在正确地构建产品吗?(,Are we building the product,right,?,),确认:我们在构建正确的产品吗?(,Are we building the,right,product?,),66,用户需求报告,站在用户的角度,、使用他们可以看懂的语言写的,内容是有关系统的运行环境、业务流程、业务功能、业务性能和业务接口等。,它是需求分析阶段产生的第一份重要的文档,表达了,用户全面的、系统的、准确的、并且用户确认的需求,,它是用户、项目开发者、项目测试者和项目管理者,四方共同工作的基础,,是,用户测试和验收目标的依据,,是作为软件开发机构和用户之间一份事实上的技术合同书,是,软件生命周期中的第一根基线,。,4-5.,两类需求文档,-,用户需求报告与需求分析规格说明书,67,需求分析规格说明书,(,SRS,),以用户需求报告为基线。,站在,开发者的角度,、使用开发者的语言写的,目的是,作为概要设计和详细设计的依据,,内容是系统的业务模型、功能模型、数据模型和接口模型的进一步定量描述。它是需求分析阶段产生的第二份重要的文档。,与用户需求报告不同的是,需求分析规格说明书不但以一种,一致的、无二义的,方式准确的表达用户的需求,而且,增加了一些对设计者非常有用的信息,(,如模型、实体、属性、方法、关系、主键、外键、算法等等,),,它是项目开发者、项目测试者和项目管理者三方共同工作的技术基础,是,项目开发者下一步进行设计和编码的依据,。,68,4-6,需求获取方法与策略,建立顺畅的通信途径,访谈与调查,观察用户操作流程,组成联合小组,用况,(,Use Case,),69,1.,建立顺畅的通信途径,建立分析所需要的通信途径,以保证能顺利地对问题进行分析。,70,2.,访谈与调查,访谈方法:,折衷法,,即,适当地计划好面谈,,但不要过于详细,,允许有一定的灵活性,。一般按照如下原则进行准备:,提问问题应循序渐进,从整体的方面开始提问,接下来的问题应有助于对前面的问题更好的理解和细化;,不要限制用户对问题的回答,这有可能会引出原先没有注意的问题;,提问和回答在汇总后应能够反映用户需求的全貌。,调查:市场调查、多种调查方式,71,3.,观察用户操作流程,到用户的实际工作环境中对用户的工作流程进行观察,了解用户实际的操作环境、操作过程和操作要求,对照用户提交的问题陈述,对用户需求可以有更全面、更细致的认识。,72,4.,组成联合小组,被称为,便利的应用规约技术,(Facilitated Application Specification Techniques ,FAST,),:打破用户(需方)和开发者(供方)的界限,共同组成一个联合小组,发挥各自的长处,共同负责项目的推进,这样有助于发挥各自优势并增进了解和协调,73,5.,用例,(,Use Case,),主要用于描述系统的高层次功能性需求,用例:系统的使用场景,。,创建用例模型的主要步骤如下:,确定,谁会直接使用该系统,即,参与者,(,Actor,),选取其中一个参与者,定义,该参与者希望系统做什么,参与者希望系统作的每件事将成为一个,用况,对每件事来说,何时参与者会使用系统,通常会发生什么,这就是,用况的基本过程,描述,该用况的基本过程,74,4-7.,需求分析方法,常用的分析方法:,面向数据流的结构化分析方法,(SA),面向对象的分析方法,(OOA,),75,(,1,)结构化需求分析描述工具,数据字典,DD(Data Dictionary),实体关系图,ERD(Entity Relationship Diagram),数据流图,DFD,(,Data Flow Diagram,),状态转换图,76,(,2,)面向对象需求分析描述工具,用例图,静态模型:类图,动态模型:顺序图、活动图、状态图,组织模型:包图,5,软件策划,-,不考,软件规模的估计方法,掌握软件费用和资源的估计方法,6,设计,6-1,软件设计原则,:,抽象、逐步求精、信息隐藏、,模块化,、模块独立、接口与实现分离,各种耦合与内聚,6-2,三层体系结构,6-3,各种体系结构风格,6-4,人机界面涉及的模型,6-5,部件设计技术之判定表,79,6-1,软件设计原理,抽象与逐步求精,模块化,信息隐藏(封装),模块独立,接口与实现分离,80,1.,抽象与逐步求精,抽象:软件系统进行模块设计时,可有不同的抽象层次。,在,最高的抽象层次,上,可以使用,问题所处环境的语言概括,地描述问题的解法。,在,较低的抽象层次,上,则采用,过程化的方法,。,抽象包括,过程抽象,、,数据抽象、控制抽象。,81,逐步求精:,将软件的体系结构按,自顶向下,方式,对各个层次的,过程细节和数据细节逐层细化,,,直到,用程序设计语言的语句,能够实现,为止,从而最后确立整个的体系结构,逐步求精与抽象是一对互补的概念。,82,2.,模块化,模块化,:,解决一个复杂问题时,自顶向下、逐步求精地,把软件系统划分成若干模块的过程,。,把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。,83,3.,信息隐藏(封装),每个模块的实现细节对于其它模块来说应该是隐蔽的,。即:块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用,通过信息隐蔽,可使错误局部化,封装是面向对象系统开发中的术语。,要进行正确的封装,必须遵守下列原则:,(1),实体间相互隐藏内部实现。,(2),尽量减少全局的共享数据。,84,4.,模块,独立,“,模块,”,又称“组件”,。,指在程序中的数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素。如高级语言中的过程,函数、子程序等。每个模块可以完成一个特定的子功能,各个模块可以按一定方法组装起来成为一个整体。,模块,一般,具有如下三个基本属性,:,功能,:描述该模块实现什么功能,逻辑,:描述模块内部怎么做,状态,:该模块使用时的环境和条件,在描述一个模块时,还必须按模块的,外部特性,与,内部特性,分别描述,模块的,外部特性,模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响,模块的,内部特性,完成其功能的程序代码和仅供该模块内部使用的数据,85,86,4.,模块独立,模块独立,:,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的,一般采用两个准则度量模块独立性。即模块间,耦合,和模块,内聚,87,内聚(,cohesion,),是一个模块内部各个元素彼此结合的紧密程度的度量,耦合,(coupling),是模块之间互相连接的紧密程度的度量,模块独立性比较强的模块应是,高内聚低耦合,的模块,。,88,内聚,内聚性分七种类型,89,FUNCTION,D,FUNCTION,E,Procedural,Related by order of,functions,Logical,Similar functions,FUNCTION A,FUNCTION A,FUNCTION A”,logic,Temporal,Related by time,TIME T0,TIME T0 + X,TIME T0 + 2X,FUNCTION A,FUNCTION B,FUNCTION C,FUNCTION A,FUNCTION B,FUNCTION C,Communicational,Access same data,Sequential,Output of one part is input to next,DATA,FUNCTION A,FUNCTION B,FUNCTION C,Functional,Sequential with,complete, related functions,FUNCTION A - part 1,FUNCTION A - part 2,FUNCTION A - part 3,Coincidental,Parts unrelated,FUNCTION A,FUNCTION,B,FUNCTION,C,90,功能内聚,(Functional Cohesion),一个模块中各个部分都是,完成某一具体功能,必不可少的组成部分。,顺序内聚,(Sequential Cohesion),一个模块,完成多个功能,,,各个功能必须顺序执行,。,通信内聚,(Communication Cohesion),一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据。,过程内聚(,Procedural Cohesion,),一个模块完成多个任务,这些任务必须按指定的过程进行。,91,时间内聚(,Classical Cohesion,),模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,逻辑内聚(,Logical Cohesion,),这种模块把几种相关的功能组合在一起,调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。,巧合内聚(,Coincidental Cohesion,),巧合内聚又称为偶然内聚。模块内各部分之间没有联系,或者即使有联系也很松散。,92,耦合,模块间的耦合方式,93,非直接耦合,(Nondirect Coupling),两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。,94,数据耦合,(Data Coupling),模块间仅通过参数表,传递简单数据,参数,(,不是控制参数、公共数据结构或外部变量,),交换信息。,标记耦合,(Stamp Coupling),模块间通过参数表,传递一个数据结构的一部分(,不是简单变量)。,95,控制耦合,(Control Coupling),如果一个模块通过,传送,开关、标志、,名字等,控制信息,,,明显地控制选择,另一模块的功能,,就是控制耦合。,96,外部耦合(,External Coupling,),一组模块都,访问,同一全局简单变量,而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。,公共耦合(,Common Coupling,),若一组模块都,访问,同一个公共数据环境,,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,97,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。,松散公共耦合和紧密公共耦合,。,98,内容耦合,(Content Coupling),如果发生下列情形,两个模块之间就发生了内容耦合,(1),一个模块直接访问另一个模块的内部数据,; (2),一个模块不通过正常入口转到另一模块内部,; (3),两个模块有一部分程序代码重迭,(,只可能出现在汇编语言中,); (4),一个模块有多个入口。,99,5,接口和实现分离,接口和实现分离的思想起源很早。上世纪五十年代,就出现了,“,子程序和函数,”,的概念,人们在实现和调用它们的时候,就运用了这种思想。,将接口和实现分离开来,对外只提供接口,隐藏具体实现,。,接口与实现的分离,,保证了实现的独立变化,降低了模块间的耦合。,100,6-2.,三层结构设计,B/S,(,Browser/Server,)结构即流行的,三层结构设计,分层目的,:,允许各层可随需求或技术变化而独立升级或替换。,三层体系结构通常被划分为,表示层、中间层和数据层,三层,各个分层之间通过对外,接口,来互相访问。,三层结构,就是在原来两层结构(,Client/Server,)的客户层与数据层之间,加入了一个,中间层,(,也叫业务层,),,并将应用程序的业务规则、数据访问、合法性校验等工作放到了中间层进行处理,这样就变成了三层结构(,Browser/Server,)。,三层是,指逻辑上的三层,。,101,1),表示层,(,Presentation Tier,),表示层通常采用,图形化用户界面,,在客户端的,PC,机或工作站上运行。,“,三个模型,”,中,“,功能模型,”,各功能组件的表现方式。,该层的主要功能是:,(1).,接受用户的请求,并反馈给业务逻辑层;,(2).,显示业务逻辑层的回答信息;,(3).,有时兼做业务层的一些小功能,比如对用户输入数据的验证,以及操作合法性的检验,。,102,2),中间层(,Business Tier,),也称业务层,由体现用户业务逻辑或业务规则的构件或组件组成,在表示层与数据层之间起桥梁作用。,“,三个模型,”,中的,“,业务模型,”,。,业务层的主要功能是:,(1).,接受从表现层传来的用户请求信息;,(2).,根据用户的请求信息生成,SQL,语句;,(3).,利用生成的,SQL,语句从数据层取数据、或修改数据、或删除数据;,(4).,将结果返回给表现层。,103,3),数据层,(,Data Tier,),数据库服务器上的数据库层,包括,DBMS,和,DB,两部分。,“,三个模型,”,中的,“,数据模型,”,。,该层的主要功能是:,(1).,接受业务层的,SQL,语句或存储过程;,(2).,执行,SQL,语句或存储过程;,(3).,将执行结果信息,传递给业务层。,104,4),三层协调工作,三层之间,通过各自提供的,接口,来访问,比如用户想登录并操作系统,在表示层输入用户名和密码,表示层会收集相关的数据传递给业务层,业务层将数据经过一些处理和封装之后,再传递给数据层,数据层执行相应数据库中表的操作,并将结果返回业务层,业务层再返回表示层,表示层再显示给用户看。,对登录信息和操作信息,都是这么分层处理、协调工作的。,业务层与数据层的信息交换采取批发方式,业务层与表示层的信息交换采取零售方式。,105,5),三层结构优点,(1).,三层之间,低耦合,,可使,错误处理局部化,;,(2).,三层结构减少了客户机的工作量,提高了网络系统的运行,效率,;,(3).,三层结构,有利于系统的维护和升级,,各个层的维护,互不影响。而且,所有层的维护与修改,都是在服务器上进行,不需要到用户现场出差。,106,6-3.,软件体系结构的风格,仓库风格,数据流风格,调用和返回风格,面向对象风格,层次式风格,107,6-4,人机界面设计中涉及的模型,设计模型(,design m
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!