《软件工程模式课件.ppt》由会员分享,可在线阅读,更多相关《软件工程模式课件.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第2章软件工程模式本章内容安排 软件工程模式 瀑布模型 原型开发模型 螺旋模型 四代技术 混合模型 面向对象生存期模型 统一的软件开发过程 基于构件的软件开发 Web服务软件工程四个关键元素 方法(Methodologies)提供如何构造软件的技术 语言(Languages)用于支持软件的分析、设计和实现 工具(Tools)为方法和语言提供自动化或半自动化的支持 过程(Procedures)软件工程过程 软件工程过程是黏结剂(glue),把方法、语言和工具黏结在一起,使得计算机软件开发理性化定义了方法使用的顺序、可交付产品(文档、报告以及格式等)的要求帮助确保质量和变更(修改)的控制使软件管理
2、人员能对项目的进展进行评价软件工程模式 软件工程由系列方法、语言、工具和过程的步骤所组成,这些步骤称之为软件工程模式(Patterns)软件工程模式又叫做软件工程范例(Paradigms)、软件生存周期模型(Life-Cycle Model)、软件开发过程(Development Processes)或软件过程(Software Processes)软件工程模式的选择则是根据项目和应用的性质,方法和语言及工具的使用,控制和可交付产品的要求等因素决定瀑布模型(Waterfall Model)关于瀑布模型 瀑布模型的来源是把硬件工程模式应用到软件工程中得来的是一种最古老和使用最广泛的传统工程模式
3、瀑布模型的实质是面向阶段的和线性的开发策略把一个项目开发分成几个阶段:由系统需求分析开始,然后是软件需求分析、设计、编码、测试和维护除了确认和验证外,其他所有阶段都是当它的前一阶段完成以后才能开始而实际上大多数情况是难以做到的,甚至是不可能的 瀑布模型的适用范围这种模型在科学计算、嵌入式和实时控制软件中使用很好,但在商业数据处理等软件中却不适用,原型开发模型(Prototyping Model)关于原型法 原型开发的实质就是允许失败。即人类不论在开发实践活动中如何小心谨慎,也不 论所使用的技术和工具多么好,仍不可能经一次努力就能开发出完 全正确的软件。实际上,原型是确定需求的一种机制 原型开发
4、的方法借鉴硬件工程的方法,在项目的早期尽快生产出一个简化(主要功 能和用户界面)且便宜的可运行软件版本,作为用户和开发人员学习 和评价一种系统 原型开发存在的问题为了快和省,原型版本经常采用一些折衷的解决方法,所以质量问 题较多原型版本只是一个临时版本,用户并不了解三类原型开发方法 根据应用不同,原型开发可分为:抛弃式原型的最大用处是辅助分析和确定用户 需求,及解决系统任何部位的不确定性问题演化式原型可以作为一种开发方法,用于对付 系统频繁更改最有效的方法。与抛弃式原型不 同,利用演化能成为最终系统增量式原型开发与演化式原型不同,它是建立 在软件总体设计基础上的。可以作为瀑布模型 开发的补充螺
5、旋模型(Spiral Model)关于螺旋模型 螺旋模型的特点综合了瀑布模型和原型开发模型的优点增加了一个新的元素,即风险分析(Risk Analysis)。用于弥补两者的不足 螺旋模型的四个活动计划 确定目标、可选方案和限制风险分析 可选方案的分析和风险的确定和解决工程 产品的开发用户评价 对工程结果的评价 螺旋模型的应用是当前大型系统开发最好和最现实的方法四代技术(Fourth-Generation Techniques, 4GT)关于4GT4GT是20世纪80年代为快省且好的开发数据处理系统发展起来的一种程序重用方法这种模式都有一组工具,它们都有一个共同的特点,即每个工具都能够使软件开发
6、人员在高层次上定义软件的某些特点,并把其定义的这些特点自动地生成源代码。应用领域局限于事务信息系统的应用程序,特别是信息分析和报表,关键是需要大型数据库;新的CASE工具支持用4GT自动生成工程和实时应用方面的框架代码对于中小型应用软件,生产所需时间大幅度减少,而且小型应用软件设计和分析的数量也明显减少用4GT开发大型软件需要同样多或更多的分析、设计和测试工作量混合模型(Hybrid Model)实例关于混合模型-1 混合模型的提出最早由美国国防部软件工程研究所(DODSEI)和美国卡内基-梅隆大学(CMU)1985年发表的、报告中提出的许多项目很少能完全按上面讨论各模型定义所确定的阶段一步一
7、步地进行。因为,任何一个项目的开发完全取决于软件的应用领域、规模大小、可重用构件的大小和多少、软件实现的硬/软件环境、开始和交付的规定、周期和成本的限制,以及开发人员的素质等因素。还有一个对开发过程影响更大且经常被忽视的重要因素,这就是用户的需求从提出的第一天开始,直到软件被废弃为止都在改变。为此,需要开发一种更加灵活、更为动态的方法来解决软件开发过程中遇到的各种问题关于混合模型-2 混合模型的四个阶段分析阶段:构思和预计划,以及需求分析,规格说明等活动综合阶段:系统构造阶段运行阶段:系统的修改和维护,以及目标环境的修改和维护废弃阶段关于混合模型-3 混合模型目前,软件企业一般都采用混合模型开
8、发软件是把瀑布、原型、螺旋和4GT开发模式组合起来,允许一个项目可以根据项目特征和要求及企业自身的开发条件(技术的和管理的)选择一条最有效的路径好处:给企业管理者和开发者提供了一个舞台,使每个模型的长处都得到发挥。但由此对企业管理和技术都提出了更高要求面向对象生存期模型 面向对象和面向对象生存期的提出20世纪80年代,结构化方法虽然使人们对软件的认识重点从组成程序的语句序列转到了构成软件的模块序列,但仍不足以从根本上解决软件问题,于是提出了面向对象的方法20世纪90年代初,随着OO(Object-Oriented)技术的逐渐成熟,提出了OO生存期开发模式 OO生存期的特点传统的生存期有逻辑数据
9、设计和逻辑过程设计这两个不同阶段,而OO生存期将这两个阶段合并为一个既包含数据又包含过程的类设计,即完成高层分析和设计的类应包含的数据和过程在OO生存期中,仍然有分析、设计和实现三个阶段分析是以自顶向下的方式完成的,其产品是一系列相当高层的类和它们之间的相互关系和作用OO生存模型的主要不同体现在设计阶段;设计是一个两阶段过程:类设计和应用程序设计与传统的生存期比较,在性质上可以有更多的递增和迭代OO演化开发生存期主要特点 中间部分的设计和编码循环为快速更新代码生成提供了基础,这是原型开发生存期的精髓 这种迭代过程有利于减少软件开发的风险OOSE迭代生存期主要特点 类似于原型开发中的增量模型 不
10、同的是下一个增量的分析阶段可以与当前增量的实现阶段重叠统一的软件开发过程关于统一的软件开发过程 统一的软件开发过程(the Unified Software Development Process)20世纪90年代末,Rational Software公司的 Jacobson、Booch和Rumbaugh三人继UML 之后推出的。基于构件、使用可视化建模语言UML分四个阶段:初始、细化、构造和移交依靠三个关键思想:用例驱动、体系结构为中 心和迭代增量开发四个阶段 初始主要对提出的有关基本思想进行充分论证,考虑项目效益,确定项目规模 细化主要收集更为详细的需求,进行高层分解和设计,定义系统的体系
11、结构框架,并为构造阶段制定计划 构造由多次选代组成,每次迭代都包含软件生存期的所有活动。每次迭代都要增加一些新功能,解决一些新问题。每次所得产品都应满足项目需求的某一子集,或交用户,或内部交付 移交除交付产品外,还有测试和用户培训等用例驱动 用例驱动(use-case driver) 是Jacobson在“OOSE”一书中首先提出的,有四个理由:能够提供一个系统的、直觉捕捉功能需求的平台能够驱动整个开发过程使用用例可以帮助完成迭代开发在初始的迭代中,通过选择并实现适当的用例集合,便可以用一个稳定的体系结构来实现一个系统体系结构为中心 体系结构为中心(architecture-centric)
12、这是在统一的软件开发过程的生存期中第一次提出来的,其目的:理解系统组织开发促进重用发展系统 由此可见,结构的设计问题已远远超出了计算的算法和数据结构范围迭代和增量开发 迭代和增量(iterative and incremental)开发 最早是在原型和OO生存期模型中提出来的,主要目的是 用于控制软件的开发,以降低风险为了早期致命的和重大的风险能得到控制为了得到一个健壮的体系结构,以指导软件开发为了提供一个框架,能较好地控制不可避免的需求和其他修改为了构造一个系统,多次增量接近比一次完成所带来的各种开销要少,而且质量要高为了提供一个开发过程,让技术人员更为有效为了让开发人员能够获得早期学习的机
13、会基于构件的软件开发 基于构件的软件开发(Component-Based Software Development, CBD)是在软件重用和OO技术的基础上发展起来的。说到底, 也是从硬件引入的就是使用可重用的软件来设计和构造基于计算机的软件 系统 前述7种软件工程模式都是面向过程的。而CBD是第一个提出面向结构的软件产业要发展,并形成规模经济,标准构件的生产和 构件的重用是关键。有人估计,将来软件工程职业,5% 为构件工程师95%为组装工程师关于构件 应用系统结构的构件 一般包含三类通用基本构件领域共性构件应用专用构件 应用软件开发中的重复劳动主要存在于前两类构件上,这样我们就可以充 分利用
14、过去应用系统开发中积累的知识和经验, 从而将开发的重点集中在应用专用构件的开发 上,通过软件重用,不仅可以消除重复劳动, 而且还可以避免重新开发可能引入的错误关于软件重用 软件重用发展中的主要问题技术方面:重用构件如何确定、获取、存储、检索和组装等非技术方面:怎样确定标准化、知识产权、机构组织、前期投入和管理等 要实现软件重用需要解决的问题重用软件(构件)的开发应用系统如何构造和组装影响软件重用的一些关键因素一个支持CBD软件过程模型关于领域工程 上述CBD软件过程模型是Pressman给出的, 它由领域工程模型和基于构件开发模型组成 领域工程创建应用模型,可以被从事基于构 件开发的软件开发者
15、选用 领域工程包含三个活动:分析、构造和传播目的是确定、构造、分类和传播一组软件构件。它们对某些特定的应用领域中现有的和未来的软件系统有很好的适应性目标是建立相应的机制,以使得开发者在开发现有的或新的软件系统时,可以重用这些软件构件制品关于Web服务 Web服务的本质Web服务是从ASP(Application Service Provider)(应用供应商)发展而来ASP模式是指服务商在网络上以出租形式提供商用软件服务 ASP的出现ASP始于1998年。如一些核心企业业务应用、数据存储备份和恢复业务、按用户要求售制和代为运行及管存数据、并可将上述业务连接到用户网络等 Web的主要问题Web服务的主要问题是用户的自主权,尤其是数据的安全保障问题软件开发过程总结 软件开发过程都要经过三个典型阶段定义(definition)阶段:开发人员要弄清软件做什么;分为三个基础步骤:系统分析、软件项目计划、需求分析开发(development)阶段:开发人员要确定软件怎么做;有三个步骤:软件设计、编码、测试维护(maintenance)阶段:对各种修改进行再定义和再开发;分为三种类型:改正、适应、完善
限制150内