资源预览内容
第1页 / 共51页
第2页 / 共51页
第3页 / 共51页
第4页 / 共51页
第5页 / 共51页
第6页 / 共51页
第7页 / 共51页
第8页 / 共51页
第9页 / 共51页
第10页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程学教程第二版周周 苏苏 教授教授Zsmail.Zsmail.hzhz. .zjzj. .cncnQQ: 81505050QQ: 81505050第16章 软件工程的发展n软件工程的四个发展阶段n原型化方法n面向对象的分析与设计n统一的建模语言 (UML)n软件复用和构件技术 第16章 软件工程的发展n软件作为IT技术应用的核心,其重要性日渐突出n新的经济环境使软件开发面临着新的挑战n如何快速且高质量地开发出满足不同需求的软件?n建立更好的软件开发环境,开发和采用可复用的 软件组件成为解决这一问题的最佳方法 16.1 软件工程的四个发展阶段n自1968年以来,为了解决软件危机,人们希望通过其他工程的技术方法和管理手段,将软件的开发纳入工程化的轨道n在70年代取得大量的研究成果的基础上,基本形成了软件工程的概念、框架、方法和手段,成为软件工程的第一代,称之为传统软件工程16.1 软件工程的四个发展阶段n20世纪80年代以来,面向对象的方法与技术已受到广泛的重视,80年代出现的Smalltalk-80标志着面向对象程序设计进入了实用阶段n80年代中到90年代,研究重点转移到面向对象的分析与设计,从而演化成一种完整的软件开发方法和系统的技术体系,成为软件工程的第二代,称之为对象工程16.1 软件工程的四个发展阶段n80年代中期,人们在研究和实践中发现,为了提高软件生产率,并使软件质量得到保证,其关键在于软件开发和维护中的管理和支持能力,并认 识到最关键的是“软件过程”n1984年开始“软件过程运动”,从而逐步形成软件过程工程,成为软件工程的第三代16.1 软件工程的四个发展阶段n进入90年代之后,软件工程的一个重要进展就是基于构件的开发方法,为了提高软件生产力,要 尽可能地利用可复用的构件,随着Internet技术的飞速发展,大量的分布式处理系统需要开发,这种方法的重要性也日益显露出来,从而成为软件工程的第四代,也有不少人称之为构件工程16.1 软件工程的四个发展阶段n软件工程还在不断发展n构件工程、过程工程以及对象工程都有不少新的进展n传统软件工程中的一些基本概念、框架,随着技术的 进步也在发生不少演变n软件工程代与代之间并没有鸿沟,它们不仅有交叉重 叠,也有携手并进n软件工程是一门处于前沿地位的重要学科,需要认真 地研究和细心地学习,也需要在技术实践中不断创新 和发展n实践表明,传统方法不能完全消除软件危机n生产率提高的幅度远不能满足需要n软件重用程度很低n按照 SA-SD-SP 技术开发软件时,思维成果的可重用性很差n软件仍然很难维护n软件往往不能真正满足用户需要n开发人员不能完全获得或不能彻底理解用户需求,与用户预期不符n系统不能适应用户需求经常变化的情况传统软件工程方法存在的问题n问题所在n瀑布模型的局限n某些类型系统需求的模糊n项目参与者之间存在通信障碍n预先定义的需求可能是过时的n结构化技术的缺点n基于过程的分解与基于功能的理解和功能的变化n结构化分析对边界的清楚定义限制了系统的扩充n系统结构依不同开发人员而不同传统软件工程方法存在的问题n事实上,生命周期方法学至今仍然是应用最广泛和最有效的软件开发方法之一n系统的需求比较稳定而且能够预先指定 (预先指定的系统)n另一类系统的需求是模糊的或随时间变化的,通常在安装 运行之后,还会由用户驱动对需求进行动态修改 (用户驱动系统)传统软件工程方法存在的问题16.2 原型化方法n快速原型法n用交互的、快速建立起来的原型取代形式的,不容修改的规格说明,用户通过在计算机上实际运行和试用原型系统 而向开发者提供真实的反馈意见 (简称原型法)n试用反馈修改16.2 原型化方法n原型法有三个层次n第一层是联机屏幕活动,确定屏幕及报表的版式和内容、屏幕活动的顺序及屏幕排版的方法n第二层是第一层的扩展,引用了数据库的交互作用及数据操作,主要论证系统关键区域的操作,用户可以输入成组的事务数据,执行这些数据的模拟过程,包括出错处理n第三层是系统工作模型,它是系统的一个子集,其中应用的逻辑事务及数据库的交互作用可以用实际数据来操作,这一层的目的是开发一个模型,使其发展成为最终的系统规模16.2 原型化方法n原型法的主要优点在于n是一种支持用户的方法,使得用户在系统生存周期的设计阶段起到积极的作用n能减少系统开发的风险n原型法的概念适用于新系统开发,也适用于对系统修改n原型法要取得成功,要求有良好的开发环境/工具的支持n原型法可以与传统的生命周期方法相结合使用,这样会扩大用户参与需求分析、初步设计及详细设计等阶段的活动,加深对系统的理解n用原型法开发软件的过程n抛弃原型法n演化原型法n是高度迭代的动态方法,在每次迭代过程中,都要再次分析和确定需求,再次进行设计,再次实现系统,以及再次进行测试和评价n取决于开发者和用户双方是否都愿意在很长一段时间内对信息交流和修改系统采取开放的态度16.2 原型化方法n面向对象方法n尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程n也就是使描述问题的问题空间 (问题域) 与实现解法的解空间 (求解域) 在结构上尽可能一致16.3 面向对象的分析与设计16.3 面向对象的分析与设计n面向对象方法 (OO) 是建立在对象概念 (对象、类和继承) 基础上的方法n面向对象方法出现后很快发展,成为90年代的主流开发方法,其原因主要在于n从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律n面向对象方法开发的软件系统易于维护,其体系结构易于理解、扩充和修改n面向对象方法中的继承机制有力支持软件的复用n面向对象方法的要点n面向对象的软件系统是由对象组成的,软件中任何元素都是对象,复杂的软件对象由比较简单的对象组合而成n把所有对象都划分成各种对象类,每个对象类都定义一组数据和一组方法n按照子类 (派生类) 和父类 (基类) 的关系,把若干个对象类组成一个层次结构的系统,并实现继承与屏蔽n对象彼此之间仅通过传递消息互相联系16.3.1 面向对象的基本概念16.3.1 面向对象的基本概念n用下列等式来认识面向对象方法n 面向对象 = 对象 + 分类 + 继承 + 通过消息的通信n用这四个概念开发的软件系统是面向对象的16.3.1 面向对象的基本概念n对象是一组属性以及这组属性上的专用操作的封装体n属性通常是一些数据,也可以是另一个对象n操作也称为方法或服务,规定了对象的行为,表示对象所能提供的服务n封装是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的n一个对象通常可由对象名、属性和操作三部分组成16.3.1 面向对象的基本概念n类是一组具有相同属性和相同操作的对象的集合n继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制n消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务16.3.2 面向对象分析n面向对象分析 (OOA) 的目标是完成对所解问题 的分析,确定待建的系统要做什么,并建立系统 的模型n在客户和软件工程师之间沟通基本的用户需求n标识类 (包括定义其属性和操作) n刻画类的层次结构n表示类 (对象) 之间的关系n为对象行为建模n递进地重复前面的任务,直至完成建模16.3.2 面向对象分析n面向对象分析的一般步骤如下n获取客户对系统的需求:包括标识场景和用例,以及建造需求模型n用基本的需求为指南来选择类和对象 (包括属性和操作)n定义类的结构和层次n建造对象-关系模型n建造对象-行为模型n利用用例/场景来复审分析模型16.3.3 面向对象设计n面向对象设计 (OOD) 是将OOA所创建的分析模型转化为设计模型。与传统的开发方法不同, OOD和OOA采用相同的符号表示,OOD和OOA没有明显的分界线,它们往往反复迭代地进行n在OOA时,主要考虑系统做什么,而不关心系统如何实现。在OOD时,主要解决系统如何做nOOD同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则16.3.3 面向对象设计n面向对象设计的一般步骤如下n系统设计n将子系统分配到处理器n选择实现数据管理、界面支持和任务管理的设计策略n为系统设计合适的控制机制n复审并考虑权衡n对象设计n在过程级别设计每个操作n定义内部类n为类属性设计内部数据结构n消息设计:用对象间协作和对象-关系模型设计消息模型n复审:复审设计模型,并在需要时迭代16.4 统一的建模语言 (UML)n各种面向对象方法都有自己的表示法、过程和工具,甚至各种方法所使用的术语也不尽相同nUML的一个初始目标就是结束面向对象领域中的方法大战 16.4.1 UML概述n人们在研究过程中认识到,由于在不同的公司和 不同的文化之间,过程 (或方法) 的区别是很大的,要创建一个人人都能使用的标准过程 (或方法) 相当困难,而建立一种标准的建模语言比建立标准的过程 (或方法) 要简单得多。因此,他们的工作重点放在创建一种标准的建模语言,并 重新命名为统一的建模语言 (UML)16.4.1 UML概述n1996年6月、10月、1997年1月、11月分别推出了UML 0.9、0.91、1.0、1.1n1996年起,一些机构把采用UML作为其商业策略,宣布支持并采用UML,并成立了UML成员协会,以完善加强和促进UML的定义n1997年11月,国际对象管理组织OMG批准把UML1.1作为基于面向对象技术的标准建模语言n为了更好地理解问题,常常采用建立问题模型的方法n所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述n通常,模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念面向对象建模n用面向对象方法开发软件通常要建立3种形式的模型n描述系统数据结构的对象模型n描述系统控制结构的动态模型n描述系统功能的功能模型n三种模型都涉及到数据、控制和操作等共同概念n一个典型的软件系统组合了上述三方面内容:使用数 据结构 (对象模型) 、执行操作 (动态模型) ,并且完 成数据值的变化 (功能模型)面向对象建模16.4.2 使用UML的过程nUML给出了面向对象建模的符号表示和规则,但并没有描述如何工作,即没有描述使用语言的 过程或方法n使用UML过程的基本特征是:用例驱动,以体系结构为中心,反复,渐增式nUML的设计者将他们原先各自的面向对象开发过程进行合并,命名为Rational Objectory Process,这是一个迭代的渐增式的开发过程初始阶段细化阶段细化阶段构造阶段 12图图16-1 16-1 Rational Rational ObjectoryObjectory开发过程开发过程 初始阶段n主要确定项目的范围和目标,并进行可行性分析n在这一阶段要考虑项目的成本,可能得到的效益n初始阶段的目的是明确待开发项目的意义和价值,并确定是否要开发此项目 细化阶段n对开发项目的问题领域和功能作详细分析,画出用例图,建立系统的基础结构n在这阶段还要进行风险分析,制定相应的对策, 制定开发计划n制定计划实际上是为构造阶段制定迭代开发的序列n用例分类n确定每次迭代的开发周期n将用例分配到各次这代中的活动构造阶段n是迭代渐增地建造系统的过程。每次迭代可看作开发一个小项目,它应包含分析、设计、实现、测试全过程n每次迭代都是在前次迭代的基础上增加另一些用例的开发,新的用例开发完成后要与前次迭代的 结果集成,进行系统测试,并向用户演示, 以表明相关的用例已被正确实现构造阶段n所用测试案例都应保存,以便在以后的迭代中进行回归测试n这种迭代渐增式的开发有助于及早发现错误,减少开发的风险 移交阶段n一般不再开发新的功能n该阶段的工作主要有测试、产品包装、培训等 16.5 软件复用和构件技术n根据工业产品设计生产的经验,希望有一些软件工厂专门生产软组件,称为构件,软件人员在开发软件时可以大量复用这些软构件
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号