软件工程第九章面向对象方法学.ppt
《软件工程第九章面向对象方法学.ppt》由会员分享,可在线阅读,更多相关《软件工程第九章面向对象方法学.ppt(95页珍藏版)》请在三一办公上搜索。
1、第九章 面向对象方法学,9.1 面向对象方法学引论,3,1 传统方法学的缺点,传统的生命周期方法学的本质,是在具体的软件开发工作开始之前,通过需求分析预先定义软件需求,然后一个阶段接着一个阶段有条不紊地开发用户所要求的软件,实现预先定义的软件需求。但它并不能完全消除软件危机。生命周期方法学仍然有许多不足之处,对某些类型的软件开发,这种方法学比较适用,对另一些类型的软件则可能完全不适用。,4,存在的问题,1生产率提高的幅度远不能满足需要生命周期方法学强调需求分析的重要性,强调在每个阶段结束之前必须进行评审,从而提高了软件开发的成功率,减少了重大返工的次数;开发过程中实行严格的质量管理,采用先进的
2、技术方法(主要是结构分析、设计、编程技术)和软件工具,也都加快了软件开发的速度。但开发效率的提高仍然很有限,提高的幅度远远赶不上对软件产品的需要。从用户提出要求到他们最终得到所需要的目标系统,往往需要经过几年甚至更长的延迟时间。,5,2软件重用程度很低重用也称为再用或复用,是指同一事物不经修改或稍加改动就多次重复使用。软件重用是节约人力,提高软件生产率的重要途径。结构分析、结构设计和结构程序设计(简写为 SASDSP)技术,虽然给软件产业带来了巨大进步,但却没能很好地解决软件 重用问题。几乎每次开发一个新的软件系统时,都要针对这个具体的系统作大量重复而又繁琐的工作。,6,3.软件仍然很难维护传
3、统的生命周期方法学强调文档资料的重要性,规定最终的软件产品应该由完整、致的配置成分组成;在软件开发整个过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要质量指标。因此,对这样的软件所进行的维护属于结构化维护的范畴,可维护性有比较明显的提高,软件从不能维护变成基本上可以维护。但实践表明,即使是用生命周期方法学开发出的软件,维护起来仍然相当困难,软件维护成本仍然很高。,7,4软件往往不能真正满足用户需要用传统方法开发涉及多种不同领域知识的大型软件系统,或开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。所谓“不能真正满足用户的需要”,主要有以下两种表现:一
4、种是开发人员不能完全获 得或不能彻底理解用户的需求,以致开发出的软件系统与用户预期的系统不一致,不能满足用户的需要。另一种表现是,所开发出的系统不能适应用户需求经常变化的情况,系统的稳定性和可扩充性不能满足要求。,8,出现问题的原因,1僵化的设计模型瀑布模型意味着在生命周期各阶段间存在着严格的顺序性和依赖性。生命周期方法学特别强调预先定义需求的重要性。要求在着手进行具体的开发工作之前,必须通过需求分析预先定义并“冻结”软件需求,然后再一步一步地实现这些需求。,9,实践表明,在系统建立起来之前,往往很难仅仅依靠分析就确定出一套完整、准确、一致、有效的应用需求,这种预先定义需求的方法更不能适应用户
5、需求不断变化的情况:预先定义需求的策略所作的假设,只对某些软件成立,对于多数软件并不成立。人们为了充实和细化他们的初步设想,通常需要经过在某个能运行的系统上的实践过程。项目参与者之间存在通信鸿沟良好的通信和相互理解对于保证工程成功是至关重要的。各种文档,本质上是被动、静止的通信工具,通过它们来理解一个动态系统是困难的。,10,预先定义的需求可能是过时的一些类型的软件,用户对它们的需求与外部环境、公司经营策略或经营内容等密切相关,因此是随时间变化的,在不同时间用户的需求可能有较大不同。采用预先定义需求的策略,在一年或数年之前预先指定对需求随时间变化的软件的需求,显然是不切实际的。按照这样预先指定
6、的需求开发软件,当软件开发出来的时候就已经过时了,不符合那时的用户需要了。然而按照生命周期方法学,在开发后期修改需求需付出很高代价,甚至根本不可能修改。,11,2结构化技术的缺点用这种技术开发出的软件,其稳定性、可修改性和可重用性都比较差。围绕实现处理功能的“过程”来构造系统的。然而用户需求的变化大部分是针对功能的不稳定性清楚地定义了目标系统的边界,软件通过界面与客观世界通信。系统结构依赖于对系统边界的定义,很难把这样的系统扩展到新的边界系统较难修改和扩充把处理分解成子处理的过程多少带些任意性,并且把数据和操作作为分离的实体可重用性差,12,2 软件工程的新途径,快速原型法克服传统方法学的致命
7、弱点所开发出的系统往往不能真正满足用户的需要1区分两类不同的软件系统一类系统的需求比较稳定而且能够预先指定预先指定的系统。开发这类系统应该预先进行严格的形式化的需求分析,制定出很精确的需求规格说明,并在严格管理下采用形式化的开发生命周期。,13,另一类系统的需求是模糊的或随时间变化的,通常在系统安装运行之后,还会由用户驱动对需求进行动态修改用户驱动的系统。开发这类系统需要采用一种适于进行反复试探的技术。这类系统必须具有能够快速、简便地进行调整的特性,以便在运行使用的过程中,及时根据用户需求的变化相应地修改系统。,14,2快速原型法简介快速原型法(原型法):从常规的程序设计方法和僵化的瀑布模型开
8、发(传统的自顶向下的开发)模式,飞跃到一种快速、灵活、交互式的软件开发。其核心是,用交互的、快速建立起来的原型取代了形式的、僵硬的(不允许更改的)大部头的规格说明,用户通过在计算机上实际运行和试用原型系统而向开发者提供真实的反馈意见。,15,原型法的基本思想:首先建立一个能反映用户主要需求的原型系统,让用户在计算机上运行、试用这个原型系统,通过实践,了解未来系统的概貌,提出许多修改意见,根据这些意见,快速修改原型系统,然后用户再次试用修改后的原型系统用户在试用原型系统的过程中,很容易判断它是否真正满足自己的业务工作需要。软件开发人员首先向用户提供一个“样品”(即原型系统),用户经过试用向开发人
9、员作出“反馈”。通过“试用一反馈一修改”的多次反复,最终开发出真正符合用户需要的应用系统,这就是用原型法开发软件的优点。,16,3用原型法开发软件的过程(1)抛弃原型法目的:是评价目标系统的某个(或某些)特性,以便更准确地确定需求,或者更严格地验证设计方案。使用完之后就把这种原型系统抛弃掉,然后再重新建立正式的目标系统。本质上仍属于瀑布模型,建立原型只不过是一种辅助性的步骤。,17,(2)演化原型法(高度迭代的动态方法)在每次迭代过程中,都要再次分析和确定需求,再次进行设计,再次实现系统,以及再次进行测试和评价。基本作法:分析用户需求实现原型系统用户试用意见对原型进行修改和扩充用户试用,18,
10、面向对象方法学,面向对象方法简介出发点和基本原则:尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。,19,面向对象方法的四个要点:认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。,20,把所有对象都划分成各种对象类(简称为类,Class),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性
11、,是对象的状态信息。类中定义的方法,是允许施加于该类对象上的操作,是该类所有对象共享的,并不需要为每个对象都复制操作的代码。,21,按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承。但是,如果在派生类中对某些特性又做了重新描述,则在派生类中的这些特性将以新描述为准,也就是说,低层的特性将屏蔽高层的同名特性。,22,对象彼此之间仅能通过传递消息互相联系。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须
12、发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。一切局部于该对象的私有信息,都被封装在该对象类的定义中,就好像装在一个黑盒子中一样,在外界是看不见的,更不能直接使用,这就是“封装性”。,23,OO=Objects Classes Inheritance Communication with messages,24,2面向对象方法的主要优点(1)与人类习惯的思维方法一致(2)稳定性好(3)可重用性好(4)可维护性好,25,两种新途径的结合,两种新途径并不是相互排斥的,相反,它们是相互促进相互补充的,很容易把这两种途径结合起来以获得更好的效果。面向对象方法所
13、带来的稳定性、可重用性和可维护性等优点,对于用快速原型法成功地开发软件来说,是至关重要的。,26,三种软件开发模式的软件特点:,1传统的瀑布模型在开发时期内没有或很少有需求变化;对应用领域很熟悉(例如,扩充已存在的系统);低风险项目(例如,对目标和开发环境很熟悉);除了在早期阶段,用户对开发工作参与很少;要求使用面向过程的编程语言。,27,2螺旋模型在项目开发的早期需求可能有变化;对应用领域较熟悉;中等风险项目(例如,对目标和开发环境较熟悉);用户不同程度地参与整个项目的开发过程;使用面向对象语言或第四代语言。,28,3渐增模型在整个开发过程中采求都可能有变化;对应用领域不熟悉;高风险项目。用
14、户完全参与到整个开发过程中;使用面向对象语言或第四代语言。,29,结构分析、设计技术本质上是线性的,是建立在软件生命周期概念的基础之上的,这种技术与瀑布模型紧密地结合在一起。面向对象的软件技术并不是基于某种开发模式的技术,它既可以用于瀑布模式中也可以用于螺旋模式或渐增模式中。使用面向对象方法学开发软件时,可以采用最适用于所开发软件特点的开发模式。,30,使用面向对象方法学开发软件时,工作重点是生命周期中的分析阶段。在开发的早期阶段定义了一系列面向问题的对象,并且在整个开发过程中不断充实和扩充这些对象。对生命周期各阶段的区分不太重要、不明显。分析阶段得到的对象模型也适用于设计阶段和实现阶段。各阶
15、段都使用统一的概念和表示符号,整个开发过程都是吻合一致的,,31,3 基本概念,1 对象对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统保存有关它的信息并且与它进行交互的能力。面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。,32,1对象的形象表示,33,实现对象操作的代码和数据是隐藏在对象内部的,一个对象好象是一个黑盒子,表示它内部状态的数据和实现各个操作的代码及局部数据,都被封装在这个黑盒子内部,在外面是看不见的,更不能从外面去访问或修改这些数据或代码。使用对象时只需知道它向外界提供的接口形式而无须知道它的内部实现算法,不仅
16、使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。,34,2对象的定义(三种定义形式)(1)对象是具有相同状态的一组操作的集合。(面向对象程序设计的角度)(2)对象是对属性值和操作的封装。(信息模拟的角度)(3)对象:(ID,MS,DS,MI)ID是对象的标识或名字MS是对象中的操作集合 DS是对象的数据结构 M!是对象受理的消息名集合(即对外接口),35,3对象的特点 以数据为中心对象是主动的 实现了数据封装本质上具有并行性模块独立性好,36,2 其他概念,1类(Class)“类”就是对具有相同数据和相同操作的一组相似对象的定义。类是对具有相同属性和行为的一个或多个对象的描述。
17、例如:Circle类,37,2实例(Instance)实例就是由某个特定的类所描述的一个具体的对象。实际上类是建立对象时使用的“样板”,按照这个样板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。,38,3消息(Message)消息是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。一个消息由三部分组成:接收消息的对象;消息选择符(也称为消息名);零个或多个变元。例如:MyCircleShow(GREEN),39,4方法(Method)方法,就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。(在 C十语言中把方法称为成员函数)例
18、如:Circle类中成员函数 Show(int color)的定义,即这个成员函数的实现代码。,40,5属性(Attribute)属性,就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。在 C十语言中把属性称为数据成员例如:Circle类中定义的代表圆少坐标、半径、颜色等的数据成员,就是圆的属性。,41,6继承(Inheritance)继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。,42,继承的特性,继承具有传递性当一个类只允许有一个父类时,也就是说,当类等级为树形
19、结构时,类的继承是单继承;当允许一个类有多个父类时,类的继承是多重继承。继承性使得相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息。派生出新的子类的办法,使得对软件的修改变得更加容易。,43,7多态性(Polymorphism)多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。不同层次中的每个类各自按自己的需要来实现行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。多态性是通过虚函数来实现的。显著提高了软件的可重用性和可扩充性。,44,8重载(Overloading)函数重载是指在同一作用域内
20、的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。,45,4 面向对象建摸,模型是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。,46,建模的必要性,帮助我们思考问题、定义术语、在选择术语时作出适当的假设,并且可以帮助我们保持定义和假设的一致性。建模的目的主要是为了减少系统复杂性。模型提供了组织大量信息的一种有效机制。由于模型的规范化和系统化,因此比较容易暴露出系统分析员对目标系统认识的片面性和不一致性。模型经过多次必要的修改,为后续
21、的开发工作奠定了坚实基础。,47,面向对象方法最基本的原则,按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解方法的软件。三种形式的模型对象模型(描述系统数据结构,最重要、最基本、最核心)动态模型(描述系统控制结构)功能模型(描述系统功能),48,5 对象模型,对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。为建立动态模型和功能模型,提供了实质性的框架。建立对象模型的目标是从客观世界中提炼出对具体应用有价值的概念。,49,建立对象模型的表示方法包含的符号:表示类的符号(应该既能表示属性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 第九 面向 对象 方法
链接地址:https://www.31ppt.com/p-5639645.html