《面向对象的软件工程ppt课件》由会员分享,可在线阅读,更多相关《面向对象的软件工程ppt课件(65页珍藏版)》请在金锄头文库上搜索。
1、.,第二部分面向对象的软件工程,第七章 面向对象方法学引论 第八章 面向对象分析 第九章 面向对象设计 第十章 面向对象的实现,第七章 面向对象方法学引论,71 传统方法学的缺点 72 快速原型法简介 73 面向对象方法学概述 74 面向对象的基本概念 75 面向对象建模 76 对象模型 77 动态模型 78 功能模型 79 本章重点,71 传统方法学的缺点,传统的生命周期方法学的本质,是通过需求分析预定义软件需求,然后一个阶段接着一个阶段有条不紊的开发用户所要求的软件,实现预定义的软件需求。 虽然生命周期方法较之传统的软件开发方法更为规范化,对实现软件开发工程化起到了重要的促进作用,部分缓解
2、了软件危机,引起了软件开发原理的一次重大变革。 但是,对于那些大的复杂的软件系统而言,这种方法仍然显得力不从心。,一、瀑布模型的缺点:僵化,生命周期各阶段间存在严格的顺序性与依赖性,因此其特别强调预先定义需求的重要性。要求预先定义并“冻结”软件需求。 实践表明:在系统建立起来很难仅仅依靠分析就能确定一套完整、准确、一致、有效的应用需求,而且该方法不适用与用户需求不断变化的情况: (1)某些类型的系统需求是模糊的。 (2)项目参与者之间存在通讯鸿沟。 (3)预先定义的需求可能是过时的。,二、SA - SD - SP 技术的缺点,本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对
3、功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。 系统有明确的边界定义,且系统结构依赖于系统边界的定义,系统不易扩充和修改。 数据与操作分开处理,可造成软构件对具体应用环境的依赖,可重用性(reusability)较差.,72 快速原型法简介,快速原型法适用于用户需求模糊或随时间变化的系统。以原型(软件产品的样品)为共同语言,实现用户与开发者双向沟通,来解决用户与开发者之间的鸿沟。 原型是一个可实地运行的模型,有正式产品的主要特征,但不是全部特征。 软件原型是软件系统的最初版本,以最少的费用,最短的时间开发出的、以反映最后软件的主要特征的系统。,一、原型模型
4、(快速成型模型),建造/修改 原型,用户测试 运行原型,听取用 户意见,原型范型,二、原型的特性,是一个可实际工作的系统; 没有固定的生存期,结局可能是用后立即被抛弃,或可能成为最终系统; 可服务于不同的目的, 从需求分析到最终产品都可做原型; 建立必须快,便宜; 是包含修改、评价在内的完整重复过程。 原型指“快速软件原型”,三、原型化开发的应用领域,需求分析和定义规格说明; 作为软件设计的一种工具; 作为一种解决不确定性的工具 作为一种实验工具 系统开发同时,作为同步培训工具 作为开发方法,利用原型演化为最终系统 作为软件维护的辅助工具,四、原型开发的分类,原型化随建立原型目的不同分为: (
5、1)抛弃式原型开发:辅助于瀑布模型,建立目标是评价目标系统的某个(些)特性,以便准确了解需求,或严格验证方案。特点用完就抛弃,然后重新建立正式的目标系统。 (2)演化式原型开发:采用高度迭代的动态方法,每次都要再次确定需求、分析设计、开发测试、,多次迭代直到用户满意为止。特点是系统的初始版本很早交付用户试用,而且开发的成败取决于需要双方的耐心。,四、原型开发的分类(续),(3)递增式原型开发:融合了瀑布模型与原型迭代的特征。特点是采用随日程时间的进展而交错的线性序列,每一个线性序列产生一个可发布“增量”。如使用此方法开发一个字处理软件,线性序列安排如下: S1:发布基本的文件管理、编辑和文档生
6、成功能; S2:增量实现完善的编辑和文档生成功能; S3:增量实现拼写和语法检查功能; S4:增量完成高级的页面布局功能。,五、原型开发的优点,保证产品有较好的可维护性 改善用户与开发人员的信息交流和思想沟通,给用户修改的机会 减少或消灭下游返工的可能,改进了瀑布模型的弊病 原型系统可作为培训环境,有利于用户培训和开发同步。 开发成本降低,周期缩短。,73 面向对象方法学概述,一、传统的软件开发方法的缺点: 特点是把软件视为处理流,并定义成由一系列步骤构成的算法。每一步骤都是带有预定输入和特定输出的一个过程,把这些步骤串联在一起可产生合理的稳定的贯通于整个程序的控制流,最终产生一个简单的具有静
7、态结构的体系结构。 过程性开发模式侧重建立构成问题解决的处理流。 数据抽象、数据结构根据算法步骤的要求开发,它贯穿于过程,提供过程所要求操作的信息。 系统的状态是一组全局变量,这组全局变量保存状态的值,把它们从一个过程传送到另一个过程。,二、面向对象思想的由来,传统的软件开发方法 没有直接而全面地反映问题的本质 直接面对问题域中客观存在的事物来进行软件开发 面向对象,希望,二、面向对象思想的由来(续),对象 表示现实世界中某个具体的事物。 事物可分为两大部分 : 物质 : 表达具体的事物 意识 : 描述抽象的概念,三、对象、实体与类关系图,对象,实体,类,抽象数据类,计算机世界,现实世界,计算
8、机逻 辑的实现,影射,抽 象,实 例 化,抽 象,四、面向对象方法(OOM)特点,尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体 对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。,OOM举例:邮局业务管理,杭 州,北 京,Message,Send by method,对象Object,Object,= 数据Attribute,Attributes: location; employee; ,+ 操作Method,Methods: send; sell; ,注意:Obje
9、ct内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送message来提请它执行。,我想把邮局搬到 我家门口,多加几个 邮递员,24小时都开门 ,对不起, 本邮局不提供 此类服务,唉,那就先送束花吧 Post_office.Send (request, payment),五、面向对象的定义,面向对象=对象+类+继承+通信,如果一个软件系统是使用这样 4 个概念设计和实现的,则我们认为这个软件系统是面向对象的。 一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。 面向对象四要素: (1)对象 (2)类
10、(3)继承 (4)消息,六、面向对象四要素对象,对象(Object)是面向对象的基本成份。 每个对象可用它本身的一组属性和它可以执行的一组操作来定义。 属性一般只能通过执行对象的操作来改变。 操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其它对象使用。,六、面向对象四要素类,类(Class)是一组具有相同数据结构和相同操作的对象的集合。 类的定义包括一组数据属性和在数据上的一组合法操作。 类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。 在一个类中,每个对象都是类的实例 (Instance),它们都可使用类中提供的函数。 对象的状态则包含在它的实例
11、变量,即实例的属性中。,六、面向对象四要素消息,消息(Message)是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。 一个对象接收的消息则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。,class Post_office /定义类 private : loc_type location ; emp_type employee ; public : void send (req_type request, money_type payment); void sel
12、l (int goods, money_type payment) ; ;,main ( ) Post_office My_PO ; /声明类的示例:对象 req_type My_request ; money_type My_payment ; My_PO.Send ( My_request, My_payment) ; /通讯 ,OOM举例:邮局业务管理,六、面向对象四要素继承,继承(Inheritance)是使用已存在的定义做为基础建立新定义的技术。 新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类复用既存的定义,而不要求修改既存类。 既存类可当做基类来引用,则新类相应地
13、可当做派生类来引用。 例如,从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,而且还可能在新类的界面中引入新的能力。,七、面向对象与传统方法比较, 传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。 OOM:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。 Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction),七、面向对象与传统方法比较(续), 传统方法:结构依赖于
14、功能,不稳定。 OOM:以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。,传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性”,难以适应不同场合的不同需要。 OOM:一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的class 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。,七、面向对象与传统方法比较(续),稳定性好:软件功能需求的变化不牵动全局,只需局部修改; Class 独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用; Inheritan
15、ce和多态性(polymorphism)使其很容易被修改和扩充; 容易理解;, 传统方法:可维护性是最令人头痛的问题。 OOM:从以下几方面改善了可维护性 ,七、面向对象与传统方法比较(续),OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。OOM与快速原型法结合使用效果好。,八、三种开发模型的适用范围,瀑布模型 Waterfall: 需求稳定少变化 对环境较熟悉(低风险) 用户很少参与开发 面向过程编程, 螺旋模型Spiral : 需求可能在开发早期有变化 对环境较熟悉(中风险) 用户不同程度地参与整个过程 OOP,八、三种开
16、发模型的适用范围(续), 增量模型Incremental: 需求随时可能变化 对环境不熟悉(高风险) 用户完全参与开发 OOP,SA - SD - SP 与Waterfall model 有本质上的密切联系;OOP由可用于任何模型。OOM的工作重点在分析阶段,确定objects,此外,生命周期的各阶段可以“无缝”连接。,74 面向对象的基本概念,f1,f2,f3,fi,fn,fi(X),S,gi(X,S),S,输出,输出,1、对象Object : = ID + Method + Attribute + Message,对象的基本特点, 以数据为中心,不设与数据无关的操作; Object主动处理而不 被动地等待被处理,外部只能通过message请求操作; 具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法; 具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信; 模块