1、第第1章章Web应用程序开发技术基础应用程序开发技术基础 1.1 Web1.1 Web发展历史发展历史1.2 Web1.2 Web应用程序的基本概念应用程序的基本概念1.3 Web1.3 Web应用程序的体系结构应用程序的体系结构1.4 Web1.4 Web应用程序的工作环境应用程序的工作环境1.5 Web1.5 Web应用程序开发的技术内容应用程序开发的技术内容1.6 Web1.6 Web应用程序开发模型应用程序开发模型 1.7 Web1.7 Web应用程序开发的环境配置应用程序开发的环境配置 1.1 Web1.1 Web发展历史发展历史1.2 Web1.2 Web应用程序的基本概念应用程序
2、的基本概念1.2.1 Web应用程序的含义应用程序的含义1.2.2 Web应用程序的特点应用程序的特点1.2.1 Web应用程序的含义应用程序的含义1.2.2 Web应用程序的特点应用程序的特点(1)基于)基于HTTP(2)简单、统一的用户接口)简单、统一的用户接口(3)非对称、概率性的访问模式)非对称、概率性的访问模式1.3 Web1.3 Web应用程序的体系结构应用程序的体系结构1.3.1 2层体系结构层体系结构1.3.2 3层体系结构层体系结构1.3.3 4层体系结构层体系结构1.4 Web1.4 Web应用程序的工作环境应用程序的工作环境1.4.1 因特网初步分析因特网初步分析1.4.
3、2 Web原理分析原理分析1.5 Web1.5 Web应用程序开发的技术内容应用程序开发的技术内容1.5.1 Web应用程序开发的需求应用程序开发的需求1.5.2 Web应用程序的执行过程应用程序的执行过程1.5.3 Web应用程序的开发步骤应用程序的开发步骤1.5.4 Web应用程序开发技术的层次性应用程序开发技术的层次性1.5.5 Web应用程序开发与应用程序开发与Web工程工程1.5.1 Web应用程序开发的需求应用程序开发的需求Web应用程序开发的含义应用程序开发的含义一方面,一方面,Web需要应用程序需要应用程序一方面,应用程序需要一方面,应用程序需要Web1.5.2 Web应用程序
4、的执行过程应用程序的执行过程与与“动态万维网文档与动态万维网文档与 CGI 技术技术”中提中提到的执行过程基本一致。到的执行过程基本一致。1.5.3 Web应用程序的开发步骤应用程序的开发步骤 开发开发Web应用程序是一件非常辛苦的事应用程序是一件非常辛苦的事情,你需要花大把大把的时间来做无数的事情,你需要花大把大把的时间来做无数的事情。假如你不运用有条理的方法,尤其是在情。假如你不运用有条理的方法,尤其是在复杂的项目中,你会承受忽视项目,不能按复杂的项目中,你会承受忽视项目,不能按时完成,浪费时间一无所获的风险。时完成,浪费时间一无所获的风险。一般的一般的Web应用程序开发流程分为五个应用程
5、序开发流程分为五个主要的阶段主要的阶段:(1)系统分析系统分析;(;(2)系统设计系统设计;(;(3)系系统实现统实现;(;(4)系统测试系统测试;(;(5)系统维护系统维护。1.5.4 Web应用程序开发技术的应用程序开发技术的层次性层次性软件开发软件开发过程过程软件开发软件开发方法方法软件开发软件开发工具工具一、软件开发过程一、软件开发过程1.所谓所谓软件开发过程是指开发一个最终能满足需求且软件开发过程是指开发一个最终能满足需求且达到目标的软件产品所需要的步骤。达到目标的软件产品所需要的步骤。2.软件开发过程主要包括:系统分析、系统设计、系软件开发过程主要包括:系统分析、系统设计、系统实现
6、、系统测试以及系统维护等活动。统实现、系统测试以及系统维护等活动。3.软件开发过程是为了获得软件产品或是为了完成软软件开发过程是为了获得软件产品或是为了完成软件工程项目需要完成的有关软件开发活动,每一项活件工程项目需要完成的有关软件开发活动,每一项活动又可分解成一些软件开发任务。动又可分解成一些软件开发任务。二、软件开发方法二、软件开发方法对软件开发方法的研究是软件工程的重要内容,软对软件开发方法的研究是软件工程的重要内容,软件开发方法的发展主要有以下三个阶段:件开发方法的发展主要有以下三个阶段:第一阶段(早期阶段):第一阶段(早期阶段):该阶段的特点:该阶段的特点:程序设计基本上属于个人活动
7、性质,程序员各行其程序设计基本上属于个人活动性质,程序员各行其是,并无统一的方法可循;是,并无统一的方法可循;这时的软件开发方法称为个性化软件开发。这时的软件开发方法称为个性化软件开发。第二阶段(第二阶段(20世纪世纪60年代后期兴起的结构化开发方年代后期兴起的结构化开发方法法):):该阶段的特点:该阶段的特点:采用结构化的方法来编写程序,不仅可以改善程序采用结构化的方法来编写程序,不仅可以改善程序的清晰度,而且也能提高软件的可靠性与生产率。的清晰度,而且也能提高软件的可靠性与生产率。有效的开发应该包括有效的开发应该包括“需求分析需求分析”、“软件设计软件设计”、“编码编码”等多个阶段。等多个
8、阶段。结构化的思想扩展到分析阶段和设计阶段,于是形结构化的思想扩展到分析阶段和设计阶段,于是形成了成了“结构化分析结构化分析”与与“结构化设计结构化设计”等结构化软等结构化软件开发。件开发。第三阶段(第三阶段(80年代以后出现的面向对象程序设计方年代以后出现的面向对象程序设计方法法):):该阶段的特点:该阶段的特点:该阶段出现的该阶段出现的C+、Java等语言,促进了面向对象等语言,促进了面向对象程序设计的广泛流行。程序设计的广泛流行。仅仅使用面向对象程序设计不会产生最好的效果。仅仅使用面向对象程序设计不会产生最好的效果。只有在软件开发的早期乃至全过程都采用面向对象技只有在软件开发的早期乃至全
9、过程都采用面向对象技术,才能更好地发挥该技术的固有优势。术,才能更好地发挥该技术的固有优势。形成了包括形成了包括“面向对象需求分析面向对象需求分析面向对象设计面向对象设计面向对象编码面向对象编码”在内的面向对象软件开发方法。在内的面向对象软件开发方法。三、软件开发工具三、软件开发工具1.软件工具软件工具软件工具是帮助开发软件的软件,它们对提高软件软件工具是帮助开发软件的软件,它们对提高软件生产率,促进软件生产的自动化都有重要的作用。生产率,促进软件生产的自动化都有重要的作用。编译程序、编辑程序、连接程序以及支持它们的计编译程序、编辑程序、连接程序以及支持它们的计算机操作系统,都属于软件工具。算
10、机操作系统,都属于软件工具。2.软件开发工具的分类软件开发工具的分类分类分类方法方法按应用阶段划分按应用阶段划分 按功能划分按功能划分设计工具设计工具分析工具分析工具项目管理项目管理软件配置软件配置质量保证质量保证分析设计分析设计计划工具计划工具界面开发界面开发客户服务器客户服务器Web开发开发1.5.5 Web应用程序开发与应用程序开发与Web工程工程类似于软件与软件工程类似于软件与软件工程软件与软件工程软件与软件工程一、软件一、软件和计算机硬件一样,从和计算机硬件一样,从20世纪世纪60年代以来,软件也年代以来,软件也从规模、功能等方面得到了很大的发展,人们对软件从规模、功能等方面得到了很
11、大的发展,人们对软件质量的要求也越来越高。质量的要求也越来越高。什么是软件,软件有哪些特征呢?什么是软件,软件有哪些特征呢?1.软件的定义软件的定义有些初学者认为软件就是程序,这个理解是不完全有些初学者认为软件就是程序,这个理解是不完全的。的。美国著名的软件工程专家美国著名的软件工程专家R.S.Pressman的定义:的定义:软件是能够完成预定功能和性能的可执行的计算机软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述程序程序和使程序正常执行所需要的数据,加上描述程序的操作和使用的文档。的操作和使用的文档。可以简明地表述,可以简明地表述,“软件软件=程序程序
12、+数据数据+文档文档”。软件被划分为系统软件、应用软件和介于这两者之软件被划分为系统软件、应用软件和介于这两者之间的中间件间的中间件。2.软件的特征软件的特征软件开发不同于硬件设计软件开发不同于硬件设计软件设计更依赖于开发人员的业务素质、智力,以软件设计更依赖于开发人员的业务素质、智力,以及人员的组织、合作和管理,而硬件设计与人的关系及人员的组织、合作和管理,而硬件设计与人的关系相对要小一些。相对要小一些。硬件设计的成本一般只占整个产品成本的一小部分,硬件设计的成本一般只占整个产品成本的一小部分,而软件开发的成本很难估算,通常占整个产品成本的而软件开发的成本很难估算,通常占整个产品成本的大部分
13、。大部分。软件生产不同于硬件制造软件生产不同于硬件制造硬件设计完成后就投入批量制造,制造也是一个复硬件设计完成后就投入批量制造,制造也是一个复杂的过程;而软件成为产品之后,其制造则是简单的杂的过程;而软件成为产品之后,其制造则是简单的拷贝。拷贝。软件维护不同于硬件维修软件维护不同于硬件维修硬件是物理的,软件是逻辑的,虽然软件不会磨损硬件是物理的,软件是逻辑的,虽然软件不会磨损和老化,但在使用过程中的维护比硬件复杂的多。如和老化,但在使用过程中的维护比硬件复杂的多。如果软件内部的逻辑关系比较复杂,在维护过程中还可果软件内部的逻辑关系比较复杂,在维护过程中还可能产生新的错误。能产生新的错误。3.软
14、件危机软件危机出现软件危机的原因出现软件危机的原因软件成本不断提高(包括开发成本和维护成本);软件成本不断提高(包括开发成本和维护成本);软件质量难以保障;软件质量难以保障;软件生产技术进步缓慢;软件生产技术进步缓慢;软件危机,使许多产业界人士认识到必须把软件生软件危机,使许多产业界人士认识到必须把软件生产从个人化方式改变为工程化方式,从而导致了软件产从个人化方式改变为工程化方式,从而导致了软件工程的诞生。工程的诞生。二、软件工程二、软件工程1.软件工程的概念软件工程的概念软件工程的基本理念是软件工程的基本理念是“按工程的概念、原理、技按工程的概念、原理、技术和方法开发与维护计算机软件术和方法
15、开发与维护计算机软件”。“软件工程软件工程”一词,首先是一词,首先是1968年北大西洋公约组年北大西洋公约组织(织(NATO)在联邦德国召开的一次会议上提出的。)在联邦德国召开的一次会议上提出的。人们从不同的角度,给软件工程下过各种定义。但人们从不同的角度,给软件工程下过各种定义。但是不论有多少种说法,它的中心思想,是不论有多少种说法,它的中心思想,是把软件当作是把软件当作一种工业产品,要求一种工业产品,要求“采用工程化的原理与方法对软采用工程化的原理与方法对软件进行计划、开发和维护件进行计划、开发和维护”。软件工程的三个要素:软件工程的三个要素:方法、工具、过程方法、工具、过程 2.软件工程
16、的基本原则软件工程的基本原则软件工程围绕工程设计、工程支持以及工程管理,软件工程围绕工程设计、工程支持以及工程管理,提出了以下四条基本原则:提出了以下四条基本原则:第一,选取适宜开发范型。第一,选取适宜开发范型。第二,采用合适的设计方法。第二,采用合适的设计方法。第三,提供高质量的工程支持。第三,提供高质量的工程支持。第四,重视开发过程的管理。第四,重视开发过程的管理。大量事实说明,只有坚持软件工程的四条基本原大量事实说明,只有坚持软件工程的四条基本原则,既重视软件技术的应用,又重视软件工程的支持则,既重视软件技术的应用,又重视软件工程的支持和管理,并在实践中贯彻实施,才能高效地开发出高和管理
17、,并在实践中贯彻实施,才能高效地开发出高质量的软件。质量的软件。软件工程的研究内容软件工程的研究内容基本问题基本问题1.软件工程现在已成为一门新型的计算机学科,软件工程现在已成为一门新型的计算机学科,称为称为“软件工程学软件工程学”。2.软件工程学所包含的主要内容:软件工程学所包含的主要内容:nYogesh Deshpande和和Steve Hansen在在1998年就提出了年就提出了Web工程的概念。工程的概念。nWeb工程作为一门新兴的学科,提倡使工程作为一门新兴的学科,提倡使用一个过程和系统的方法来开发高质量用一个过程和系统的方法来开发高质量的基于的基于Web的系统。的系统。n它它使用合
18、理的、科学的工程和管理原使用合理的、科学的工程和管理原则,用严密的和系统的方法来开发、发则,用严密的和系统的方法来开发、发布和维护基于布和维护基于Web的系统的系统。Web工程工程不是软件工程的完全克隆,但不是软件工程的完全克隆,但是它借用了软件工程的许多基本概念和是它借用了软件工程的许多基本概念和原理,强调了相同的技术和管理活动原理,强调了相同的技术和管理活动 1.6 Web1.6 Web应用程序开发模型应用程序开发模型软件开发模型软件开发模型基本问题基本问题1.软件开发模型提出的原因软件开发模型提出的原因软件有生存周期,一个软件从开始计划起,到废弃软件有生存周期,一个软件从开始计划起,到废
19、弃不用止,称为软件的生存周期。不用止,称为软件的生存周期。软件生存周期包括计划、开发与运行三个时期,每软件生存周期包括计划、开发与运行三个时期,每一时期又可细分为若干个更小的阶段。给每个阶段赋一时期又可细分为若干个更小的阶段。给每个阶段赋予确定然而有限的任务,就能简化每一步的工作内容。予确定然而有限的任务,就能简化每一步的工作内容。要开发一个高质量的软件产品,首先要根据软件生要开发一个高质量的软件产品,首先要根据软件生存期为各项开发活动的流程确定一个合理的框架,称存期为各项开发活动的流程确定一个合理的框架,称为为软件生存期模型软件生存期模型或或软件开发模型软件开发模型。软件计划软件计划软件开发
20、软件开发软件运行软件运行问题定义问题定义可行性研究可行性研究需求分析需求分析概要设计概要设计详细设计详细设计编编 码码测测 试试维护或退役维护或退役2.软件开发模型的分类软件开发模型的分类线性模型线性模型原型模型原型模型演化模型演化模型基于构件的模型基于构件的模型形式化模型形式化模型一、线性模型(瀑布模型)一、线性模型(瀑布模型)1.什么是线性模型什么是线性模型线性模型也称为瀑布模型或生存周期模型,在这种线性模型也称为瀑布模型或生存周期模型,在这种模型中,各个阶段的工作顺序展开,恰如奔流不息拾模型中,各个阶段的工作顺序展开,恰如奔流不息拾级而下的瀑布,总是从上面的台阶依次流向下面的台级而下的瀑
21、布,总是从上面的台阶依次流向下面的台阶。阶。2.线性模型将软件生存期划分为哪三个时期线性模型将软件生存期划分为哪三个时期(1)计划时期(包括计划时期(包括问题定义问题定义和和可行性研究可行性研究两个阶段)两个阶段)(2)开发时期(包括开发时期(包括需求分析需求分析、系统设计系统设计、编码编码和和测测试试四个阶段)四个阶段)(3)运行时期(主要包括运行时期(主要包括系统维护系统维护阶段)阶段)3.软件生成周期各阶段的主要任务软件生成周期各阶段的主要任务(1)计划时期计划时期计划时期的主要任务是调查和分析:调查用户需求,计划时期的主要任务是调查和分析:调查用户需求,分析新系统的主要目标,分析开发该
22、系统的可行性。分析新系统的主要目标,分析开发该系统的可行性。问题定义:主要弄清问题定义:主要弄清“用户需要计算机解决什么问用户需要计算机解决什么问题题”。可行性研究:目的是为上一步提出的问题寻求一种可行性研究:目的是为上一步提出的问题寻求一种至数种在技术上可行、且在经济上有较高效益的可操至数种在技术上可行、且在经济上有较高效益的可操作解决方案。作解决方案。(2)开发时期开发时期开发时期要完成开发时期要完成设计设计和和实现实现两大任务。两大任务。设计任务用设计任务用需求分析需求分析、软件设计软件设计两个阶段完成。两个阶段完成。实现任务用实现任务用编码编码和和测试测试两阶段完成。两阶段完成。需求分
23、析:其任务在于弄清用户对软件系统的全部需求分析:其任务在于弄清用户对软件系统的全部需求,并用需求,并用“需求规格说明书需求规格说明书”的形式准确地表达出的形式准确地表达出来。来。软件设计:主要任务是将需求转变为软件的表示形软件设计:主要任务是将需求转变为软件的表示形式,可细分为总体设计和详细设计两个方面。式,可细分为总体设计和详细设计两个方面。编码:即按照选定的语言,把设计的过程性描述翻编码:即按照选定的语言,把设计的过程性描述翻译为源程序。译为源程序。测试:是对编码阶段所完成的源程序进行测试,可测试:是对编码阶段所完成的源程序进行测试,可细分为单元测试、综合测试、确认测试和系统测试等细分为单
24、元测试、综合测试、确认测试和系统测试等步骤。步骤。(3)运行时期运行时期运行时期是软件生存周期的最后一个时期,主要是运行时期是软件生存周期的最后一个时期,主要是做好软件维护。做好软件维护。维护目的是使软件在整个生存周期内保证满足用户维护目的是使软件在整个生存周期内保证满足用户的需求和延长使用寿命。的需求和延长使用寿命。4.线性模型的特点线性模型的特点阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性:上一阶段的变换结果:上一阶段的变换结果是下一阶段变换的输入,相邻两个阶段具有因果关系,是下一阶段变换的输入,相邻两个阶段具有因果关系,每个阶段完成任务后,都必须进行阶段性评审,确认每个阶段完成任务后
25、,都必须进行阶段性评审,确认之后再转入下一个阶段。之后再转入下一个阶段。文档驱动性:要求文档驱动性:要求每个阶段必须完成规定的文档每个阶段必须完成规定的文档;每每个阶段结束前完成文档审查个阶段结束前完成文档审查,以便尽早发现问题并以便尽早发现问题并改改正错误正错误。5.线性模型的优缺点线性模型的优缺点优点:可强迫开发人员采用规范的方法,严格提交优点:可强迫开发人员采用规范的方法,严格提交文档,做好阶段评审,从而使软件过程易于管理和控文档,做好阶段评审,从而使软件过程易于管理和控制,有利于软件的质量保障制,有利于软件的质量保障。缺点:要求软件开发初期就要给出软件系统的全部缺点:要求软件开发初期就
26、要给出软件系统的全部需求,开发周期比较长,承担的风险也比较大。需求,开发周期比较长,承担的风险也比较大。二、原型模型二、原型模型1.什么是原型模型什么是原型模型首先建立一个能够反映用户主要需求的原型,让用首先建立一个能够反映用户主要需求的原型,让用户实际看一看未来系统的概貌,以便判断哪些功能是户实际看一看未来系统的概貌,以便判断哪些功能是符合需要的,哪些方面还需要改进。然后将原型反复符合需要的,哪些方面还需要改进。然后将原型反复改进,最终建立完全符合用户要求的新系统。改进,最终建立完全符合用户要求的新系统。2.原型模型开发软件的过程原型模型开发软件的过程如下图所示:如下图所示:需求分析需求分析
27、原型开发原型开发最终系统设计最终系统设计原型评价原型评价最终系统实现最终系统实现用户用户反馈反馈原型模型的过程示意图原型模型的过程示意图3.原型模型的特点原型模型的特点原型驱动性:整个软件过程围绕着原型的快速开发原型驱动性:整个软件过程围绕着原型的快速开发和对原型的评价,通过原型确认用户需求,以及通过和对原型的评价,通过原型确认用户需求,以及通过原型的反复修改最终得到用户确认的软件定义。原型的反复修改最终得到用户确认的软件定义。过程的交互性和迭代性:软件开发过程是由开发人过程的交互性和迭代性:软件开发过程是由开发人员与用户之间通过原型的评价和确认而进行的一个交员与用户之间通过原型的评价和确认而
28、进行的一个交互过程。而且这个过程不是简单的重复,而是不断改互过程。而且这个过程不是简单的重复,而是不断改进和迭代过程。进和迭代过程。4.原型模型的优缺点原型模型的优缺点优点:允许用户在软件开发过程中完善对软件系统优点:允许用户在软件开发过程中完善对软件系统的需求,开发周期相对有所缩短,成本比较低,有效的需求,开发周期相对有所缩短,成本比较低,有效地发挥用户和开发人员之间的密切配合作用,使软件地发挥用户和开发人员之间的密切配合作用,使软件过程更能体现逐步发展、逐步完善的原则。过程更能体现逐步发展、逐步完善的原则。缺点:频繁的需求变化会使开发进程难于管理和控缺点:频繁的需求变化会使开发进程难于管理
29、和控制,原型的快速开发和修改对技术要求比较高,需要制,原型的快速开发和修改对技术要求比较高,需要有较好的工作基础。有较好的工作基础。三、演化模型三、演化模型1.什么是演化模型什么是演化模型它遵迭代的思想方法,使开发的软件在迭代过程中它遵迭代的思想方法,使开发的软件在迭代过程中逐步得到完善,一般适用于大型软件的开发。常见的逐步得到完善,一般适用于大型软件的开发。常见的演化模型又有演化模型又有增量模型增量模型和和螺旋模型螺旋模型两种。两种。2.增量模型增量模型(1)基本思想:基本思想:增量模型是瀑布模型的顺序特征与快增量模型是瀑布模型的顺序特征与快速原型法的迭代特征相结合的产物,该模型把软件看速原
30、型法的迭代特征相结合的产物,该模型把软件看作一系列相互联系的增量,每个增量是小而可运行的作一系列相互联系的增量,每个增量是小而可运行的程序,在开发过程的各次迭代中,每次完成一个增量。程序,在开发过程的各次迭代中,每次完成一个增量。(2)结构示意图结构示意图规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户增量增量2规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户增量增量n增量增量1增量模型示意图增量模型示意图(3)增量模型的特点增量模型的特点过程渐进性:过程渐进性:软件过程分批次完成,每次提交一个软件过程分批次完
31、成,每次提交一个满足用户需求子集的增量构件,产品规模逐渐增大,满足用户需求子集的增量构件,产品规模逐渐增大,直至得到满足用户全部需求的完整产品为止。直至得到满足用户全部需求的完整产品为止。(4)增量模型的优缺点增量模型的优缺点优点:优点:能在较短的时间内向用户提交部分功能的构件,能在较短的时间内向用户提交部分功能的构件,并且在逐步增加产品功能的过程中有充裕的时间学习并且在逐步增加产品功能的过程中有充裕的时间学习和适应新的功能,减少一个全新软件可能给用户带来和适应新的功能,减少一个全新软件可能给用户带来的冲击。的冲击。缺点:缺点:增量构件的划分依赖于系统功能的构成和软件增量构件的划分依赖于系统功
32、能的构成和软件开发人员的经验,每次集成新的增量构件必须不破坏开发人员的经验,每次集成新的增量构件必须不破坏原有软件系统的结构,因此要求软件系统的体系结构原有软件系统的结构,因此要求软件系统的体系结构必须具有高度的开放性和可扩充性必须具有高度的开放性和可扩充性3.螺旋模型螺旋模型(1)基本思想基本思想 螺旋模型将瀑布模型与螺旋模型将瀑布模型与原型原型模型结合起来,并且加模型结合起来,并且加入两种模型均忽略了的入两种模型均忽略了的风险分析风险分析。螺旋模型沿着螺线顺时针旋转,自内向外每旋转一螺旋模型沿着螺线顺时针旋转,自内向外每旋转一圈便开发出更完善的一个新版本。圈便开发出更完善的一个新版本。每一
33、个螺旋周期均包含四个步骤:每一个螺旋周期均包含四个步骤:制定计划制定计划 确定软件目标,选定实施方案,弄清确定软件目标,选定实施方案,弄清项目开发的限制条件;项目开发的限制条件;风险分析风险分析 分析所选方案,考虑如何识别和消除分析所选方案,考虑如何识别和消除风险;风险;实施工程实施工程 实施软件开发;实施软件开发;客户评估客户评估 评价开发,提出修正建议。评价开发,提出修正建议。(2)结构示意图结构示意图(3)特点特点模型结合型:模型结合型:螺旋模型的每一个周期都应用了原型模螺旋模型的每一个周期都应用了原型模型排除风险,在确认了原型之后,则又启动瀑布模型型排除风险,在确认了原型之后,则又启动
34、瀑布模型继续过程的演化。因此螺旋模型是瀑布模型和原型模继续过程的演化。因此螺旋模型是瀑布模型和原型模型的结合,体现了两个模型的优点。型的结合,体现了两个模型的优点。过程迭代性:过程迭代性:软件开发过程的每个阶段都是一次迭代,软件开发过程的每个阶段都是一次迭代,这种迭代不是过程的简单重复,而是每旋转一个圈就这种迭代不是过程的简单重复,而是每旋转一个圈就前进一个层次,得到一个新的版本。前进一个层次,得到一个新的版本。(4)优缺点优缺点优点:优点:强调可选方案和约束条件有利于已有软件的重强调可选方案和约束条件有利于已有软件的重用,有助于把软件质量作为软件开发的一个重要目标,用,有助于把软件质量作为软
35、件开发的一个重要目标,减少过多或测试不足带来的风险。减少过多或测试不足带来的风险。缺点:缺点:要求软件开发人员具有丰富的风险评估经验和要求软件开发人员具有丰富的风险评估经验和有关的专门知识,开发过程比较复杂,给过程管理和有关的专门知识,开发过程比较复杂,给过程管理和控制带来一定的难度。控制带来一定的难度。四、基于构件的模型四、基于构件的模型1.什么是基于构件的模型什么是基于构件的模型就是利用预先封装好的软件构件来构造应用软件系就是利用预先封装好的软件构件来构造应用软件系统,它融合了螺旋模型的特征,支持软件开发的迭代统,它融合了螺旋模型的特征,支持软件开发的迭代方法。方法。2.用构件来构造软件系
36、统的过程用构件来构造软件系统的过程如下图所示如下图所示确定候选构件确定候选构件查找构件库查找构件库复用所查到构件复用所查到构件开发候选构件开发候选构件开始下一轮迭代开始下一轮迭代集成构件集成构件3.基于构件的开发模型的特点基于构件的开发模型的特点采用了先进的面向对象技术。采用了先进的面向对象技术。基于构件库的开发,这是软件复用的基础,开发基于构件库的开发,这是软件复用的基础,开发速度快。速度快。融合了螺旋模型特征融合了螺旋模型特征支持软件开发的迭代方法。支持软件开发的迭代方法。五、形式化模型五、形式化模型1.转换模型转换模型(1)转换模型是结合形式化软件开发方法和程序自)转换模型是结合形式化软
37、件开发方法和程序自动生成技术的一种软件开发模型。它采用严格的、数动生成技术的一种软件开发模型。它采用严格的、数学的表示体系来表示软件规格说明,然后进行一系列学的表示体系来表示软件规格说明,然后进行一系列自动或半自动的程序变换,最后转换为计算机系统能自动或半自动的程序变换,最后转换为计算机系统能够接受的目标程序系统。够接受的目标程序系统。(2)转换模型的软件开发过程转换模型的软件开发过程如下图所示如下图所示形式化形式化规格说明规格说明与需求比与需求比较后修正较后修正变换变换2变换变换1变换变换n测试测试形式化开发记录形式化开发记录系统需求系统需求目标系统目标系统2.净室模型净室模型(1)净室模型
38、是一种形式化的增量开发模型。其基)净室模型是一种形式化的增量开发模型。其基本思想是力求在分析和设计阶段就消除错误,确保正本思想是力求在分析和设计阶段就消除错误,确保正确,然后在无缺陷或确,然后在无缺陷或“洁净洁净”的状态下实现软件的制的状态下实现软件的制作。作。(2)和增量模型一样,净室开发把软件看成一系列)和增量模型一样,净室开发把软件看成一系列的增量,每个增量是一个形式化方式表示的的增量,每个增量是一个形式化方式表示的“盒盒”。(3)净室模型的软件开发流程)净室模型的软件开发流程如下图所示如下图所示需求需求收集收集盒结构盒结构规约规约形式化形式化设计设计统计性使统计性使用测试用测试正确性正
39、确性证明证明代码生成代码生成与检查与检查测试计划测试计划认证认证增量增量1增量增量2增量增量n需求需求收集收集盒结构盒结构规约规约形式化形式化设计设计统计性使统计性使用测试用测试正确性正确性证明证明代码生成代码生成与检查与检查测试计划测试计划认证认证需求需求收集收集盒结构盒结构规约规约形式化形式化设计设计统计性使统计性使用测试用测试正确性正确性证明证明代码生成代码生成与检查与检查测试计划测试计划认证认证软件开发模型小结:软件开发模型小结:每一种模型都适用于软件开发的某类问题,它们每一种模型都适用于软件开发的某类问题,它们各有优缺点。各有优缺点。软件开发组织应该选择适合于本组织及其管理、软件开发组织应该选择适合于本组织及其管理、人员的软件开发模型,而且随着当前正在开发的人员的软件开发模型,而且随着当前正在开发的特定产品的特性而变化。特定产品的特性而变化。在实际开发中,有时也可以把几种模型组合在一在实际开发中,有时也可以把几种模型组合在一起使用,以便取长补短。起使用,以便取长补短。1.7 Web1.7 Web应用程序开发的应用程序开发的环境配置环境配置