




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件工程概述1.1软件工程的产生和发展软件工程是在克服60年代末所出现的“软件危机”的过程中逐渐形成与发展的。自968年在北大西洋公约组织(NATO)举行软件可靠性的学术会议上正式提出“软件工程(SoftwareEngineering)”的概念以来,在不到40年的时间里,软件工程在理论和实践两方面都取得了长足的进步。软件工程是一门指导计算机软件系统开发和维护的工程学科,是一门新兴的边缘学科,它涉及到计算机科学、工程科学、管理科学、数学等多学科,软件工程的研究范围广,不仅包括软件系统的开发方法和技术、管理技术,还包括软件工具、环境及软件开发的规范。软件是信息化的核心,国民经济、国防建设、社会发展及人民生活都离不开软件。软件产业关系到国家经济发展和文化安全,体现了国家综合实力,是决定1世纪国际竞争地位的战略性产业。因此大力推广应用软件工程的开发技术及管理技术,提高软件工程的应用水平,对促进我国软件产业与国际接轨推动软件产业的迅速发展起着十分重要的关键作用。1.1.1软件工程的发展过程软件工程的产生和发展是与软件的发展过程紧密相关的。自从第一台电子计算机诞生以来,就开始了软件的生产,“软件工程”提出至今,它的发展已经历了四个重要阶段:第一代软件工程(60年代末到70年代)60年代末,软件生产主要采用“生产作坊方式”。随着软件需求量、规模及复杂度的迅速增大,生产作坊的方式已不能够适应软件生产的需要,出现了所谓“软件危机”,即软件生产效率低,大量质量低劣的软件涌入市场或在开发过程中夭折。由于“软件危机”的不断扩大,对软件生产已经产生了严重危害。为了克服“软件危机"(Softwarecrisis),在著名的NATO(北大西洋公约组织)软件可靠性会议上第一次提出“软件工程”的名词,将软件开发纳入了工程化的轨道,基本形成了软件工程的概念、框架、技术和方法。这阶段又称为传统的软件工程。第二代软件工程(80年代中到90年代)80年代中开始,以Smalltalk为代表的面向对象的程序设计语言相继推出,面向对象的方法与技术得到发展,从90年代起,研究的重点从程序设计语言逐渐转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系90年代以来,出现了许多面向对象的开发方法的流派,面向对象的方法逐渐成为软件开发的主流。所以这一阶段又成为称为对象工程。第三代软件工程随着规模的不断增大,开发人员也随之增多,开发时间相应持续增长,加之软件是知识密集型的逻辑思维产品,这些都增加了软件工程管理的难度。人们在软件开发的实践过程中认识到:提高软件生产率,保证软件质量的关键是对“软件过程”的控制和管理,提出对软件项目管理的计划、组织、成本估算、质量保证、软件配置管理等技术与策略,逐步形成了软件过程工程。构件工程90起年代,基于构件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现存的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为构件工程。1.1.2软件危机1、 软件危机的产生“软件危机”Softwarecrisis)的出现是由于软件的规模越来越大,复杂度不断增加,而软件需求量也不断增大,“生产作坊式”的软件开发模式及技术已不能满足软件发展的需要。软件开发过程是一种高密集度的脑力劳动,对开发人员的需要投入大量的人力、物力和财力,由于软件开发的模式及技术不能适应软件发展的需要,致使大量质量低劣的软件产品涌向市场,有的甚至在开发过程中就夭折了。国外在开发一些大型软件系统时,遇到了许多困难,有的系统最终彻底失败了;有的系统则比原计划推迟了好多年,而且费用大大超过了预算;有的系统不能符合用户当初的期望;有的系统则无法进行修改维护。例如:IBM公司的OS/360,共约100万条指令,花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”1962年6月,美国飞往金星的第一个空间探测器(水手I号),因其飞舱中计算机导航程序的一条语句出错,致使空间探测器偏离航线无法取得成功。还有,可以称为上世纪世界上最精心设计,并花费了巨额投资的美国阿波罗登月飞行计划的软件,也仍然没有避免出错,例如阿波罗号由于太空飞船的一个计算机软件错误,造成存储器的一部分信息丢失;阿波罗14号在飞行的10天中,出现了18个软件错误。2、 软件危机的表现20世纪60年代末期所发生的软件危机,反映在软件可靠性没有保障、软件维护工作量大、费用不断上升、进度无法预测、成本增长无法控制、程序人员无限度地增加等各个方面,以致形成人们难以控制软件开发的局面。软件危机”主要表现在两个方面:软件产品质量低劣,甚至在开发过程中就夭折。软件生产率低,不能满足需要。1.1.3软件工程的定义究竟什么是“软件工程”?自从1968年提出软件工程这个术语,对于软件工程就有了各种各样的定义,但是它们的基本思想都是强调在软件开发过程中应用工程化原则的重要性。例如,Boehm曾经为软件工程下了以下定义:“运用现代科学技术知识时间并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。”。1983年,IEEE(国际电气与电子工程师协会)所下的定义是:软件工程是开发、运行、维护和修复软件的系统方法。1990年,IEEE又将定义更改为:对软件开发、运作、维护的系统化的、有规范的、可定量的方法之应用,即是对软件的工程化应用。软件工程有方法、工具和过程三个要素。软件工程方法就是研究软件开发“如何作”的技术;软件工具是研究支撑软件开发方法的工具、软件工具的集成环境一计算机辅助软件工程CASE;软件工程过程则是指将软件工程方法与软件工具相结合实现合理、及时的进行软件开发的目的。1.1.4软件工程研究的内容软件工程是一门指导软件开发的工程学科,是以计算机理论及其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经实践证明的科学的管理措施与最先进的技术方法结合起来,以较少的代价获得高质量的软件。1、 软件工程研究的内容软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广。归结起来软件工程研究的主要内容有以下4个方面:方法与技术、工具及环境、管理技术、标准与规范。软件开发方法,主要讨论软件开发的各种方法及其工作模型,包括了多方面的任务,如软件系统需求分析、总体设计、以及如何构建良好的软件结构,数据结构及算法设计等,同时讨论具体实现的技术,软件工具为软件工程方法提供了支持,研究计算机辅助软件工程CASE,建立软件工程环境。软件工程管理,是指对软件工程全过程的控制和管理,包括计划安排、成本估算、项目管理、软件质量管理。软件工程标准化与规范化,使得各项工作有章可循,以保证软件生产率和软件质量的提高。软件工程标准可分为个层次:国际标准、行业标准、企业规范和项目规范。必须要强调的是,随着人们对软件系统研究的逐渐深入,软件工程所研究的内容也不是一成不变的。2、 软件工程的目标软件工程研究的目标是“以较少的投资获取高质量的软件”。即软件的开发要在保证质量和效率的同时,尽量缩短开发期,降低软件成本。软件过程所实现的多目标中,有的是互补的,例如缩短开发期,显然可降低成本,维护是需要代价的,易于维护就可降低总成本。高性能与高可靠性是互补的。而有的目标则是互斥的,例如:要获得高的可靠性,通常要采取一些冗余的措施,往往成本会增加。为了实现软件工程的多目标,要对软件的的各项质量指标进行综合考虑,以实现软件开发的“多!快!好!省!”的总目标。图1.1软件工程的目标3、软件工程的基本原则过去,软件工程的基本原则是抽象、模块化、清晰的结构、精确的设计规格说明。但今天的认识已经发生了很大的变化。现已提出的软件工程四条基本原则是:第一,必须认识软件需求的变动性,便采取适当措施来保证结果产品能忠实地满足用户要求。在软件设计中,通常要考虑模块化、抽象与信息隐蔽、局部化、一致性等原则。第二,稳妥的设计方法大大地方便软件开发,以达到软件工程的目标。软件工具与环境对软件设计的支持来说,颇为重要。第三,软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用。第四,有效的软件工程只有在对软件过程进行有效管理的情况下才能实现。近年来,印度的软件产业迅速发展,其成功的经验是,严格按照国际规范进行科学管理。在本教材中,虽然主要讨论软件开发技术,只在第十章讨论软件管理技术,但软件管理仍然是软件开发成功的关键,因此,将介绍当前质量管理的国际规范CMM(软件成熟度的度量)。1.2软件与软件生存期“软件工程”是在软件生产中采用工程化的方法,采用一系列科学的、现代化的方法技术来开发软件。这种工程化的思想贯穿到软件开发和维护的全过程。为了进一步学习有关软件工程的方法、技术,先介绍软件、软件生存期及软件工程过程,这几个重要的概念。1.2.1软件的概念和特点1.软件(Software)
“软件就是程序,开发软件就是编写程序”是一个错误观念。这种错误观点的长期存在,影响了软件工程的正常发展。事实上,正如Boehm指出的:软件是程序以及开发、使用和维护程序所需的所有文档。它是由应用程序,系统程序,面向用户的文档及面向开发者的文档四部分构成。即:软件=程序+文档,2.软件的特点软件是一种逻辑实体,不是具体的物理实体。软件产品的生产主要是研制。软件具有“复杂性”,其开发和运行常受到计算机系统的限制。软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式。软件不存在磨损和老化问题,但存在退化问题。失效率失效率图1.2软件失效率曲线失效率失效率图1.2软件失效率曲线图1.1给出了硬件的失效率曲线,它是一个J型曲线(即浴盆曲线),说明硬件随着使用时间的增加失效率急剧上升。图1.2所描述的软件失效率曲线,它没有!型曲线的右半翼表明软件随着使用时间的增加失效率降低,因为软件不存在磨损和老化问题,然而存在退化问题。3、软件的分类按照软件功能划分•系统软件-如操作系统、设备驱动程序等。•支撑软件(实用软件)一协助用户开发的工具软件,如编辑程序、程序库、图形软件包等。•应用软件一如工程与科学计算软件、CAD/CAM软件、CAI软件、信息管理系统等。按照软件规模划分如表1—1所示,按照软件的不同大小(源代码行、参加人数、研制时间分为微型、小型、中型、大型、甚大型和极大型。需要说明的是:随着软件产品规模的不断增大,类别的指标也会变化。(3)按照软件工作方式划分实时处理软件、交互式软件、批处理软件(4)按照软件服务对象的范围划分•项目软件一由客户委托开发的软件。产品软件一由软件开发机构开发,提供给市场的。此外,还可以按照软件使用的频度及按照软件失效的影响进行划分。表1-1软件规模分类类别参加人数研制期限产品规模(源代码行)微型11—4周0.5K小型11—6月1K—2K中型2—51—2年5K—50K大型5—202—3年5K—500K甚大型100—10004—5年1M极大型2000—50005—10年1M—10M1.2.2软件工程过程软件工程过程(Softwareengineeringprocess)是指在软件工具的支持下,所进行的一系列软件工程活动。通常包括以下四类基本过程:软件规格说明:规定软件的功能及其运行环境。软件开发:产生满足规格说明的软件。软件确认:确认软件能够完成客户提出的要求。软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。软件工程过程具有可理解性、可见性(过程的进展和结果可见)可靠性、可支持性(易于使用CASE工具支持)、可维护性、可接受性(为软件工程师接受)、开发效率和健壮性(抵御外部意外错误的能力)等特性。1.2.3软件Th存期软件生命周期(SDLD)是指一个从用户需求开始,经过开发、交付使用,在使用中不断地增补修订,直至软件报废的全过程,亦称软件生存期lifecycle)。GB8567中规定,软件生命周期分为7个阶段:可行性研究和项目开发计划可行性研究和项目开发计划阶段必须要回答的问题是“要解决的问题是什么”。需求分析需求分析阶段的任务不是具体地解决问题,而是准确地确定“软件系统必须做什么”,确定软件系统必须具备哪些功能。概要设计概要设计就是设计软件的结构,该结构由哪些模块组成,这些模块的层次结构是怎样地,这些模块的调用关系是怎样地,每个模块的功能是什么。同时还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。详细设计详细设计阶段就是为每个模块完成的功能进行具体描述,要把功能描述变为精确的、结构化的过程描述。编码编码阶段就是把每个模块的控制结构转换成计算机可接受的程序代码,即写成以某特定程序设计语言表示的“源程序清单”。测试测试是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检验软件的各个组成部分。测试分为模块测试、组装测试、确认测试。维护软件维护是软件生存期中时间最长的阶段。已交付的软件投入正式使用后,便进入软件维护阶段,它可以持续几年甚至几十年。在大部分文献中将生存周期划分为5个阶段,即要求定义、设计、编码、测试及维护。其中要求定义阶段包括可行性研究和项目开发计划、需求分析,设计阶段包括概要设计和详细设计。为了描述软件生存期的活动,提出了多种生存期模型。例如:瀑布模型、循环模型、演化模型、螺旋模型等。1.3软件生存期模型软件生存期模型是描述软件开发过程中各种活动如何执行的模型。它确立了软件开发和演绎中各阶段的次序限制以及各阶段活动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调以及各种人员的有效通信,有利于活动重用和活动管理。目前有若干软件生存期模型,如瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等。1.3.1瀑布模型瀑布模型如图1.3所示,这是1970年W.Royce提出的最早出现的软件开发模型。瀑布模型是将软件开发活动中的各项活动规定为依线性顺序联接的若干阶段工作,形如瀑布流水,最终得到软件系统或软件产品。换句话说,它将软件开发过程划分成若干个互相区别而又彼此联系的阶段,每个阶段中的工作都以上一个阶段工作的结果为依据,同时作为下一个阶段的工作基础。该模型说明整个软件开发过程是按图中的各个阶段进行的,每个阶段的任务完成之后,产生相应的文档。它是以文档作为驱动、适合于需求很明确的软件项目开发的模型。瀑布模型得到了广泛的应用,它在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。但在大量的仍然机软件开发实践中也逐渐暴露出它的缺
点。由于瀑布模型是一种理想的线性开发模式,缺乏灵活性,也无法解决软件需求不准确或者不明确的问题。这些缺点对软件开发带来了严重影响,由于需求不明确,会导致开发的软件不符合用户的需求而夭折。问题定义开发时期计划时期可行性研究I―I 目标与范围说明书言可行性论证论告需求分析需求说明书运行
时期问题定义开发时期计划时期可行性研究I―I 目标与范围说明书言可行性论证论告需求分析需求说明书运行
时期匚=设计文档匚。程序测试报告可 维护报告运行与维护图1.3瀑布模型1.3.2图1.3瀑布模型1.3.2循环模型瀑布模型的缺陷在于将充满回溯、相互重叠的软件开发过程硬性地割裂为几个阶段,随着开发的软件规模越来越大,造成的危害更加严重,循环模型是为了描述软件开发过程中可能的回溯,对瀑布模型进行了改进,开发各阶段可能循环重复。图1.4描述了循环模型。1.3.3增量模型增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。最终系统系统不完全图1.5最终系统系统不完全图1.5增量模型该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。1.3.4螺旋模型对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。它是由TRW公司的B.Boehm于1988年提出的。该模型将开发划分为制定计划、风险分析、实施工程和客户评估四类活动。沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本。如果开发风险过大,开发机构和客户无法接受,项目有可能就此终止;多数情况下,会沿着螺旋线继续下去,自内向外逐步延伸,最终得到满意的软件产品。提交部分客户评估计划下阶段工作制定计划 费用累加 风险分析决定目标、 T 评价方案、方案和限制识别风险、消除风险风险分析风险分析可操作原型风险i分析;原型原型3原型2模型基准点需求计划生存期计划操作概念软件提交部分客户评估计划下阶段工作制定计划 费用累加 风险分析决定目标、 T 评价方案、方案和限制识别风险、消除风险风险分析风险分析可操作原型风险i分析;原型原型3原型2模型基准点需求计划生存期计划操作概念软件需求软件产/详细设计品设计殖血/需求验证开发计划编码模块测试设计确认与验节成和测试计划组装测试.确认运行测U试实施工程开发验证下一级产品图1.6螺旋模型螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:第一,制定计划:确定目标、方案和限制条件;第二,风险分析:评估方案、标识风险和解决风险;第三,实施工程:开发确认产品;第四,客户评估:计划下一周期工作。
1.3.5喷泉模型该模型是由B.H.Sollers和J.M.Edwards于1990年提出的一种新的开发模型。主要用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的图1.7喷泉模型图1.7喷泉模型喷泉模型是以面向对象的软件开发方法为基础,以用户需求作为喷泉模型的源泉。从右边喷泉模型的图中可以看出其特点如下:(1) 喷泉模型规定软件开发过程有4个阶段,即分析、系统设计、软件设计和实现。(2) 喷泉模型的各阶段相互重叠,它反映了软件过程并行性的特点。(3) 喷泉模型以分析为基础,资源消耗成塔型,在分析阶段消耗的资源最多。(4) 喷泉模型反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。(5) 喷泉模型强调增量开发,它依据分析一点,设计一点的原则,并不要求一个阶段的彻底完成,整个过程是一个迭代的逐步提炼的过程。(6) 喷泉模型是对象驱动的过程,对象是所有活动作用的实体,也是项目管理的基本内容。(7)喷泉模型在实现时,由于活动不同,可分为系统实现和对象实现,这既反映了全系统的开发过程,也反映了对象族的开发和重用过程。1.3.6智能模型智能模型也成为基于知识的软件开发模型,是知识工程与软件工程在开发模型上结合的产物,是以瀑布模型与专家系统的综合应用为基础。该模型通过应用系统的知识和规则帮助设计者认识一个特定的软件的需求和设计,这些专家系统已成为开发过程的伙伴,并指导开发过程。从智能模型的图示中可以很清楚的看到,智能模型与其它模型不同,它的维护并不在程序一级上进行,这样把问题的复杂性大大地降低了。该模型的优点主要有:(1) 通过领域的专家系统,可是需求说明更完整、准确和无二义性。(2) 通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。(3) 通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。但是,建立适合与软件设计的专家系统和一个既适合软件工程又适合应用领域的知识库都是非常困难的。目前,在软件开发中正应用AI技术,在CASE工具系统中使用专家系统,用专家系统来实现测试自动化,在软件开发的局部阶段有所发展。获取需求;一需求分析一具体描述"「广优/化 程序图1.8智能模型1.4软件开发方法为了克服软件危机,从60年代末开始,一直在进行软件开发方法的研究与实践,并取得了一系列研究成果,对软件产业的发展起着不可估量的作用。软件工程的内容包括技术和管理两方面,两方面又紧密结合。通常把在软件生命期中所使用的一整套技术的集合称为方法学(methodology)或范型(paradigm)。软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产过程的方法,其方法一般表述成一系列的步骤,每一步骤都与相应的技术和符号相关。其目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。软件工程方法学包括三要素:方法、工具和过程。方法:完成软件开发各项任务的技术方法;工具:为方法的运用提供自动或者半自动的支撑环境;过程:为开发高质量软件所规定的各项任务的工作步骤。软件开发方法可分为两大类:面向过程的开发方法和面向对象的开发方法。本节将对结构化开发方法、原型化开发方法和面向对象的开发方法进行介绍。1。传统的软件工程方法也称为面向过程的软件开发方法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。典型的传统软件开发方法有:Jackson方法、结构化开发方法、原型化方法、HIPO法、IDEF法等。2.面向对象的开发方法是以对象作为基本的元素构建新系统的方法,从90年代开始面向对象的开发方法逐渐成为软件开发方法的主流。具有代表性的有:Coda方法,Booch方法和OMT方法以及UML统一建模语言。1.4.1结构化开发方法结构化开发方法(StructuredDevelopingMethod)是一种面向数据流的开发方法,它的基本原则是功能的分解与抽象。结构化方法提出了一组提高软件结构合理性的准则,如分解和抽象、模块的独立性、信息隐蔽等。它是现有的软件开发方法中最成熟,应用最广泛的方法,该方法的主要特点是快速,自然和方便。结构化方法总的指导思想自顶向下、逐步求精。1、结构化开发方法的组成结构化方法由三部分构成,按照推出的先后次序有:70年代初推出的结构化程序设计方法SP法(StructuredProgram);70年代中推出的结构化设计方法SD法(StructuredDesign);70年代末推出的结构化分析方法SA法(StructuredAnalysis)。SA、SD、SP法相互衔接,形成了一整套开发方法。若将SA,SD法结合起来,又称为结构化分析与设计技术(SADT技术)。结构化分析方法给出一组帮助系统分析人员产生功能规约的原理和技术。需求分析结果主要以图形方式表示,以数据流图和控制流图为基础,伴以数据词典,并配上结构化语言、判定表和判定树等等手段,从而达到为问题的解决建立模型。结构化分析的步骤如下:分析当前的情况,做出反映当前物理模型的数据流图;推导出等价的逻辑模型的数据流图;设计新的逻辑系统,生成数据词典和基元描述;建立人机接口界面,提出可供选择的目标系统的物理模型数据流图;选择一种方案;建立完整的需求规约。结构化设计给出一组帮助设计人员在模块层次上分析设计质量的原理与技术,它通常与结构化分析衔接起来使用,以数据流图为基础得到软件模块结构。结构化设计方法适用于变换型结构和事务型结构的目标系统。结构化设计的步骤如下:评审和细化数据流图;确定数据流图的类型;把数据流图映射到软件模块结构,设计出模块结构的上层;基于数据流图逐步分解高层模块,设计中下层模块;对软件模块结构进行优化,得到更为合理的软件结构;描述模块借口。2.结构化方法的工作模型结构化方法的工作模型一瀑布模型(WaterfallModel)但从80年代开始,逐渐发现其不足,软件开发过程是个充满回溯的过程。而瀑布模型却将其分割为独立的几个阶段,不能从本质上反映软件开发过程本身的规律。此外,过分强调复审,并不能完全避免较为频繁的变动。尽管如此,瀑布模型仍然是开发软件产品的一个行之有效的工程模型。1.4.2面向数据结构的开发方法结构化开发方法是一种面向数据流、数据封闭性的开发方法,而JACKSON系统开发方法则是面向数据结构的开发方法。其基本思想是先建立输入输出的数据结构再将其转换为软件结构。其分析的重点放在构造与系统相关的现实世界,并建立现实世界的信息域的模型上。其最终目标是生成软件的过程性描述。强调程序结构与问题结构相对应。JACKSON方法由英国的M.Jackson提出,该方法特别适合于数据处理类的问题。如企事业管理一类的软件系统。JACKSON方法的构成JACKSON方法由JSP(JacksonstructuredProgramming)和JSD(JacksonSystemDevelopment)方法构成。⑴JSP法主要体现程序结构的设计,不严格区分软件概要设计和详细设计。可以根据JSP的规则直接导出程序结构。一般用于规模不大的数据处理系统,而且O数据结构容易描述的情况。JSD法是对JSP法的扩充,针对JSP法的缺陷而提出的解决方案。其主要特点是:用“分而治之”的策略控制系统的复杂性,解决I/O结构的冲突问题。实体结构分析是用Jackson图来描述每个实体执行的动作及其时序,产生一组描述实体进程的Jackson结构图。为了表示实体结构,Jackson引入了如图1.9所示的结构图。在此图中给出了对实体的三种典型动作,即顺序、选择和重复。其中,顺序型是指对于实偈的动作B,C是按时间顺序先左后右执行;选择型使用了符号“。”,表示实体A的两个动作B与C在某个时刻只做一个;重复型表示带有“*”的动作重复执行多次。JACKSON方法的设计过程、、顺序结构 选择结构 循环结构图1.9三种基本结构
⑴建立数据结构JACKSON方法中数据结构通常表示为树型结构,有顺序、选择和循环三种基本结构(图1.9)。如图1.10(a)所示,按照三种基本结构建立的文件数据结构。⑵以数据结构为基础,建立相应的程序结构图,如图.10(b),也称为JACKSON图。当没有结构冲突时,转换过程是简单的。一般情况,数据结构与模块结构是相对应的,因此不难从数据结构导出程序结构。(a)(b)(a)图1.10数据结构转换为程序结构由于输入、输出数据结构在内容、数量、次序上是对应的,不难由数据结构导出程序结构图。如果出现“结构冲突”Structureclash),至使从数据结构导出程序结构的困难。一般的解决办法是在输入、输出之间构造一个或者多个中间结构。Jackson方法的优、缺点:优点:结构清晰、易理解、易修改。不会过多依赖于设计者的经验。缺点:当系统规模及复杂度大时,确定数据结构困难。1.4.3原型化开发方法1、原型化方法(PrototypingMethod原型是软件开发过程中,软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,原型化方法又称速成原型法(RapidPrototyping).强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需 —求。将维护和修改阶段的工作尽早进行,使用户验收提前,从而 /L一<、\使软件产品更加适用。 /、快速分析或修改1)快速建立需求规格原型(RSP法) j、"广w评价 构造'RSP(RapidSpecificationPrototyping)法所建立的原型反映\/、---、、/了系统的某些特征,让用户学习,有利于获得更加精确的需求说\<运行y明书,待需求说明书一旦确定原型被废弃,后阶段的工作仍按照图i.ii原型化开发模型瀑布模型开发,所以也称为废弃(throwaway)型。2)快速建立渐进原型(人。法)RCP(RapidCyclicPrototyping法采用循环渐进的开发方式,对系统模型作连续精化,将系统需要具备的性质逐步添加上去,直至所有性质全部满足,此时的原型模型也就是最终的产品,所以也称为追加(addon)型。速成原型法适合于开发“探索型”,“实验型”与“进化型”一类的软件系统。速成原型的工作模型是一个循环的模型。快速原型法按以下步骤循环执行:.快速分析快速确定软件系统的基本要求,确定原型所要体现的特征(界面,总体结构,功能,性能).构造原型在快速分析的基础上,根据基本规格说明,忽略细节,只考虑主要特征,快速构造一个可运行的系统。有三类原型:用户界面原型,功能原型,性能原型。(3.)运行和评价原型用户试用原型并与开发者之间频繁交流,发现问题,目的是验证原型的正确性。修改与改进对原型进行修改,增删。1.4.4面向对象的开发方法OOSD(Object-OrientedSoftwareDevelopment)法是80年代推出的一种全新的软件开发方法。非常实用而强有力,被誉为90年代软件的核心技术之一。其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。Coad和Yourdon给出一个面向对象的定义:面向对祭对象+类+继承+消息如果一个软件系统是按照这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的。OOSD由OOA(面向对象的分析)、OOD(面向对象的设计)和OOP(面向对象的程序设计)三部分组成。1、OOA(Object-OrientedAnalysis)法OOA就是要解决“做什么”的问题。它的基本任务就是要建立以下三种模型:对象模型(信息模型)一一定义构成系统的类和对象,它们的属性与操作。状态模型(动态模型)一一描述任何时刻对象的联系及其联系的改变,即时序。常用状态图,事件追踪图描述。处理模型(函数模型)一一描述系统内部数据的传送处理。显然,在三大模型中,最重要的是对象模型。如何建立三大模型,我们将在第五章中介绍。2、 OOD(Object-OrientedDesign)法在需求分析的基础上,进一步解决“如何作”的问题,OOD法也分为概要设计和详细设计。概要设计:细化对象行为,添加新对象,认
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康一家人:中班主题活动方案
- 学生个人卫生教育
- 2024-2025年五年级下册江门市数学知识点期末计算题
- 护理文书书写培训
- 小学家长学堂教案和课件
- 合肥滨湖九年级数学试卷
- 消化内科诊疗规范培训
- 广州市广雅中学数学试卷
- 小学防雾霾安全教育活动
- 超声尺神经阻滞技术规范
- 中暑急救培训课件
- 2025上海崇明现代农业园区开发限公司招聘39人易考易错模拟试题(共500题)试卷后附参考答案
- 《SOP编写培训》课件
- 2025年无人机课件教案设计
- 《纺织工艺》课件
- 厨房规范参观流程
- 留学服务流程
- 2024年中考语文-课内文言文阅读专题10 《陋室铭》 (模拟)(含答案)
- .高速公路运营企业双重预防机制建设指导手册
- 2024年中国创新方法大赛考试题库(含答案)
- 中建幕墙施工专项方案
评论
0/150
提交评论