资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Software Engineering软件工程软件工程第八章 面向对象基础一、软件工程主要方法论一、软件工程主要方法论一、软件工程主要方法论一、软件工程主要方法论v结构化分析和设计方法论结构化分析和设计方法论也叫数据流建模方法论也叫数据流建模方法论把现实世界描绘为数据在信息系统中的流动,在数把现实世界描绘为数据在信息系统中的流动,在数据流动过程中数据发生转化。据流动过程中数据发生转化。通过自顶向下的程序设计将复杂的程序分解为程序通过自顶向下的程序设计将复杂的程序分解为程序模块的层次图。模块的层次图。v存在问题存在问题面向过程方法大多基于瀑布模型面向过程方法大多基于瀑布模型面向过程方法是将用户需求对应到软件功能上,而面向过程方法是将用户需求对应到软件功能上,而采用面向过程的处理方式来应对用户提出的功能上采用面向过程的处理方式来应对用户提出的功能上的变更造成了系统结构的不稳定。的变更造成了系统结构的不稳定。过程分析和数据分析之间的边界问题始终没解决过程分析和数据分析之间的边界问题始终没解决v面向对象方法论认为客观世界是由各种对象组成,任何事物都认为客观世界是由各种对象组成,任何事物都是对象,复杂的对象可以由比较简单的对象以是对象,复杂的对象可以由比较简单的对象以某种方式组合而成的。某种方式组合而成的。把所有的对象划分成各种对象类(简称类把所有的对象划分成各种对象类(简称类 class)class),每个对象类都定义了一组数据和一组每个对象类都定义了一组数据和一组方法。方法。按照子类(或称为派生类)与父类(或称为基按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结类)的关系,把若干个对象类组成一个层次结构的系统。构的系统。对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。 传统方法传统方法系统是过程的集合系统是过程的集合系统是过程的集合系统是过程的集合过程与数据实体交互过程与数据实体交互过程与数据实体交互过程与数据实体交互过程接受输入并产生输出过程接受输入并产生输出过程接受输入并产生输出过程接受输入并产生输出面向对象方法面向对象方法系统是交互对象的集合系统是交互对象的集合系统是交互对象的集合系统是交互对象的集合对象与其它对象交互对象与其它对象交互对象与其它对象交互对象与其它对象交互对象发送对象发送对象发送对象发送消息消息消息消息与响应消息与响应消息与响应消息与响应消息v传统方法论与面向对象方法论的比较传统方法论与面向对象方法论的比较v例子例子设计一个程序,对不同类型的图形求其面积,并打设计一个程序,对不同类型的图形求其面积,并打印结果。印结果。请分别采用结构化思想和面向对象思想对问题展开请分别采用结构化思想和面向对象思想对问题展开分析。分析。传统方法论传统方法论面向对象方法论面向对象方法论 面向对象方法不再把程序看成工作在数据上的面向对象方法不再把程序看成工作在数据上的一系列过程或函数的集合,而是把程序看作是一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集合。相互协作而又彼此独立的对象的集合。 每个对象可以看作是一个微型程序,有自己的每个对象可以看作是一个微型程序,有自己的数据、操作、功能和目的。数据、操作、功能和目的。v面向对象分析和设计解决的两个经典问题面向对象分析和设计解决的两个经典问题传统的分析和设计方法将处理问题的数据模型传统的分析和设计方法将处理问题的数据模型和处理模型分离,而面向对象的方法将数据模和处理模型分离,而面向对象的方法将数据模型和处理模型二者合一。型和处理模型二者合一。从系统分析能够平滑地过渡到系统设计。从系统分析能够平滑地过渡到系统设计。UML将分析和设计模型统一,使用的符号统一,将分析和设计模型统一,使用的符号统一,设计模型是分析模型的完善和扩充。设计模型是分析模型的完善和扩充。v对象对象v类类v消息消息v封装封装v继承继承v多态多态二、面向对象基本概念二、面向对象基本概念v对象对象定义定义可以将问题域中任何事物都视为对象,可以将问题域中任何事物都视为对象,对象是所对象是所对象是所对象是所有数据及可对这些数据施加的操作结合在一起所有数据及可对这些数据施加的操作结合在一起所有数据及可对这些数据施加的操作结合在一起所有数据及可对这些数据施加的操作结合在一起所构成的独立单位的总称构成的独立单位的总称构成的独立单位的总称构成的独立单位的总称,是具有一定知识和处理,是具有一定知识和处理能力的独立个体。它可以是具体的物理实体,如能力的独立个体。它可以是具体的物理实体,如一个文件;也可是是人为抽象概念的,如多任务一个文件;也可是是人为抽象概念的,如多任务操作系统中的调度策略。操作系统中的调度策略。对象包含两个基本要素:对象包含两个基本要素:属性:用于描述对象的静态特征,是反映类或对属性:用于描述对象的静态特征,是反映类或对象当前状态本质的数据项。象当前状态本质的数据项。方法:用于描述对象的动态特征,反映对象的一方法:用于描述对象的动态特征,反映对象的一种行为,是对对象属性的操作、服务。种行为,是对对象属性的操作、服务。对象的形象化表示对象的形象化表示对象对象属性属性方法3方法1操作操作1方法2操作操作2操作操作3界界面面v类类定义定义具有相同属性和行为的一组对象的集合具有相同属性和行为的一组对象的集合类与对象的关系类与对象的关系类是对象的抽象类是对象的抽象对象是类的实例对象是类的实例类的描述方法类的描述方法v消息消息定义定义消息是用来请求对象执行某一处理或回答某一要求的消息是用来请求对象执行某一处理或回答某一要求的信息,是对象之间建立的一种通信机制,它统一了数据信息,是对象之间建立的一种通信机制,它统一了数据流和控制流。流和控制流。通常一个消息由三部分组成:通常一个消息由三部分组成: 对象名:接收消息的对象对象名:接收消息的对象 消息名:要求接收对象完成的操作消息名:要求接收对象完成的操作 参数:执行操作时的参数或操作返回的结果参数:执行操作时的参数或操作返回的结果例如例如MyCircle.Show(Green):MyCircle是接收消息的对象的名字,是接收消息的对象的名字,Show是消息名,是消息名,Green是消息的参数。是消息的参数。MyCircle.ChangeColor(Green);消息的表示形式消息的表示形式 student.read(in books, out report)消息接收者消息接收者参数类型参数类型 输入参数输入参数操作操作消息消息v封装性封装性是面向对象的主要特征之一,它是一种信息隐蔽技术,它体是面向对象的主要特征之一,它是一种信息隐蔽技术,它体现于类的说明。现于类的说明。封装使数据和加工该数据的方法(函数)封装为一个整体,封装使数据和加工该数据的方法(函数)封装为一个整体,使得用户只能见到对象的外部特性,而对象的内部特性对用使得用户只能见到对象的外部特性,而对象的内部特性对用户是隐蔽的。户是隐蔽的。 v继承性继承性是子类自动共享父类之间数据和方法的机制。是子类自动共享父类之间数据和方法的机制。一个类直接继承其它类的全部描述,同时可修改和扩充。一个类直接继承其它类的全部描述,同时可修改和扩充。继承能够直接获得已有的性质和特征,而不必重复定义它们。继承能够直接获得已有的性质和特征,而不必重复定义它们。 v多态性多态性是对象根据所接收的消息而做出动作。是对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。现象称为多态性。 三、为何使用三、为何使用三、为何使用三、为何使用UMLUMLUMLUMLvUML统一建模语言统一建模语言(UML)是描述、构造和文档化系统制是描述、构造和文档化系统制品的可视化语言品的可视化语言1.UML1.UML1.UML1.UML的应用方式的应用方式的应用方式的应用方式v应用方式应用方式UML作为草图作为草图非正式的、不完整的图,借助可视化语言的功能,用非正式的、不完整的图,借助可视化语言的功能,用于探讨问题或解决方案空间的复杂部分。于探讨问题或解决方案空间的复杂部分。UML作为蓝图作为蓝图相对详细的设计图相对详细的设计图逆向工程逆向工程前向工程(代码生成)前向工程(代码生成)vUML只是一种工具只是一种工具UML并不是面向对象分析和设计的全部,它只是一并不是面向对象分析和设计的全部,它只是一种手段,一种工具。我们需要通过自己对对象的理种手段,一种工具。我们需要通过自己对对象的理解和面向对象分析设计技术的掌握来进行系统的分解和面向对象分析设计技术的掌握来进行系统的分析和设计,然后通过析和设计,然后通过UML的形式来进行表述。的形式来进行表述。2.UML2.UML2.UML2.UML的三种透视图的三种透视图的三种透视图的三种透视图v概念透视图概念透视图用图来描述现实世界或关注领域中的事物用图来描述现实世界或关注领域中的事物v设计透视图设计透视图用图来描述软件的抽象物或具有规格说明和接口的用图来描述软件的抽象物或具有规格说明和接口的构件,但是并不约束特定实现构件,但是并不约束特定实现v实现透视图实现透视图用图来描述特定技术中的软件实现用图来描述特定技术中的软件实现vUML的不同的不同视图视图四、软件开发过程模型四、软件开发过程模型四、软件开发过程模型四、软件开发过程模型vRUP过程模型过程模型vUP阶段(按照时间进行的内容阶段(按照时间进行的内容-横轴)横轴)UP将其工作和迭代组织为四个主要阶段将其工作和迭代组织为四个主要阶段初始:初始:大体上的构思、业务案例、范围和模糊评估大体上的构思、业务案例、范围和模糊评估细化:细化:已精化的构思、核心架构的迭代实现、高风险的解已精化的构思、核心架构的迭代实现、高风险的解决、确定大多数需求和范围以及进行更为实际的评决、确定大多数需求和范围以及进行更为实际的评估估构造:构造:对遗留下来的风险较低和比较简单的元素进行迭代对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署。实现,准备部署。交付:交付:进行测试和部署进行测试和部署1.UP1.UP1.UP1.UP的阶段和制品的阶段和制品的阶段和制品的阶段和制品vUP阶段(每个阶段的活动组成阶段(每个阶段的活动组成-纵轴)纵轴) 纵轴表示的是在每次迭代过程中都要经历的工作流程(有一定纵轴表示的是在每次迭代过程中都要经历的工作流程(有一定顺序的活动)。顺序的活动)。业务建模业务建模理解待开发系统所在的机构及其商业运作,确保所有人理解待开发系统所在的机构及其商业运作,确保所有人员对它有共同的认识,评估待开发系统对结构的影响;员对它有共同的认识,评估待开发系统对结构的影响;需求需求定义系统功能及用户界面,为项目预算及计划提供基础;定义系统功能及用户界面,为项目预算及计划提供基础;分析与设计分析与设计把需求分析结果转换为分析与设计模型;把需求分析结果转换为分析与设计模型;实现实现把设计模型转换为实现结果,并做单元测试,集成为可把设计模型转换为实现结果,并做单元测试,集成为可执行系统;执行系统;测试测试验证所有需求是否已经被正确实现,对软件质量提出改进意验证所有需求是否已经被正确实现,对软件质量提出改进意见;见;部署部署打包、分发、安装软件,培训用户及销售人员;打包、分发、安装软件,培训用户及销售人员;配置与变更管理配置与变更管理跟踪并维护系统开发过程中产生的所有制品的完整性和一致跟踪并维护系统开发过程中产生的所有制品的完整性和一致性;性;项目管理项目管理为软件开发项目提供计划、人员分配、执行、监控等方面指为软件开发项目提供计划、人员分配、执行、监控等方面指导,为风险管理提供框架;导,为风险管理提供框架;环境环境为软件开发机构提供软件开发环境。为软件开发机构提供软件开发环境。2.2.2.2.判断你是否理解迭代开发或判断你是否理解迭代开发或判断你是否理解迭代开发或判断你是否理解迭代开发或UPUPUPUPv下面列出一些迹象表明你并没有理解迭代开发和下面列出一些迹象表明你并没有理解迭代开发和UP的真正含义的真正含义在开始设计或实现之前试图定义大多数需求在开始设计或实现之前试图定义大多数需求在编程之前花费数日或数周进行在编程之前花费数日或数周进行UML建模。建模。认为初始阶段认为初始阶段=需求阶段,细化阶段需求阶段,细化阶段=设计阶段,构设计阶段,构造阶段造阶段=实现阶段实现阶段认为细化的目的是完整仔细地定义模型,以能够在认为细化的目的是完整仔细地定义模型,以能够在构造阶段将其转换成代码构造阶段将其转换成代码试图对项目从开始到结束制定详细计划;试图对项目从开始到结束制定详细计划;试图预测所有迭代,以及每个迭代中可能发生的事试图预测所有迭代,以及每个迭代中可能发生的事情情v目前计算机系有一个系内小型图书馆(资料室)。它主要用来存放目前计算机系有一个系内小型图书馆(资料室)。它主要用来存放系里老师自行购买并由学校报销过的图书资料。这部分图书资料存系里老师自行购买并由学校报销过的图书资料。这部分图书资料存放在一个资料室中,图书的借阅手续和图书馆的图书借阅手续相同。放在一个资料室中,图书的借阅手续和图书馆的图书借阅手续相同。v但是,目前存在一些问题:但是,目前存在一些问题:查阅过程中,老师们并不清楚资料室中有什么资料。查阅过程中,老师们并不清楚资料室中有什么资料。由于资料室中的图书借阅期限较长(一般为三个月),很多老由于资料室中的图书借阅期限较长(一般为三个月),很多老师往往忘记归还手中的资料。师往往忘记归还手中的资料。老师自己购买的私人图书(藏书),可能会根据研究领域的变老师自己购买的私人图书(藏书),可能会根据研究领域的变化而会出现资源闲置的情况。而此时,其他的老师有可能正在化而会出现资源闲置的情况。而此时,其他的老师有可能正在寻找这方面的资料。寻找这方面的资料。老师们在私下里经常相互借阅图书,但经常出现时间长了自己老师们在私下里经常相互借阅图书,但经常出现时间长了自己想用书时,又不知到借给谁了,或者是想还书时,忘记从谁那想用书时,又不知到借给谁了,或者是想还书时,忘记从谁那里借的了。里借的了。老师之间相互进行图书的借阅只限制在小范围内,其他教研室老师之间相互进行图书的借阅只限制在小范围内,其他教研室的资源则很大程度上需要老师之间的相互打听。的资源则很大程度上需要老师之间的相互打听。v是否能够解决这些问题,使这些图书资源尽可能地被充分利用呢,是否能够解决这些问题,使这些图书资源尽可能地被充分利用呢,使资源的流动处在一个有序透明的状态之下呢?使资源的流动处在一个有序透明的状态之下呢?五、启动项目五、启动项目五、启动项目五、启动项目1.1.1.1.过程模型过程模型过程模型过程模型v初始阶段的任务初始阶段的任务建立一个项目前景,说明哪些是目标,哪些不是建立一个项目前景,说明哪些是目标,哪些不是讨论所组成的系统的用例,写出项目用例的初稿,确定用例讨论所组成的系统的用例,写出项目用例的初稿,确定用例的优先级的优先级对系统体系结构重要的用例和对系统体系结构重要的用例和/或用例路径或用例路径对项目的四个阶段(开始、细化、构造、交付)的高层阶段对项目的四个阶段(开始、细化、构造、交付)的高层阶段进行规划,并对前述步骤中识别出来的体系结构重要的需求,进行规划,并对前述步骤中识别出来的体系结构重要的需求,制定详细的迭代计划。制定详细的迭代计划。确定风险,并估计在风险发生时应该如何解决它们确定风险,并估计在风险发生时应该如何解决它们建立一个开发环境(选择、安装并配置开发工具)建立一个开发环境(选择、安装并配置开发工具)2.2.2.2.编写开发案例编写开发案例编写开发案例编写开发案例v定义定义一个开发案例是对你如何为自己的项目定制这一开一个开发案例是对你如何为自己的项目定制这一开发过程的描述,它将描述如何根据需要采用发过程的描述,它将描述如何根据需要采用RUP。 v样例项目中使用案例样例项目中使用案例v角色映射角色映射角色石冬凌张应博邹启杰贾跃系系统分析分析师X用用户界面界面设计师X数据数据设计师X软件架构件架构师X集成工程集成工程师X实现人人员XXXX测试设计师XX测试人人员XXXX部署部署经理理X技技术文档作者文档作者X配置配置经理理X项目目经理理X过程工程程工程师X工具工具专家家XXXXv开发案例中的制品开发案例中的制品项目前景项目前景风险列表风险列表用例模型用例模型设计模型设计模型构件构件测试计划测试计划测试用例测试用例测试结果测试结果产品(交付给用户的完整产品(交付给用户的完整系统)系统)发布布说明明终端用端用户支持支持材料材料迭代迭代计划划迭代迭代评估估项目目计划划开开发案例案例编程指南程指南工具工具v初始阶段的计划初始阶段的计划v定义定义系统需要补充更多的实质性的内容。明确项目前景系统需要补充更多的实质性的内容。明确项目前景的描述有助于帮助项目团队理解自己要构建的内容。的描述有助于帮助项目团队理解自己要构建的内容。一个清晰的前景是开发一个满足涉众真正需求的产一个清晰的前景是开发一个满足涉众真正需求的产品的关键品的关键 。v对前景的陈述应该能回答以下问题:对前景的陈述应该能回答以下问题:我们尝试解决的问题是什么?(问题陈述)我们尝试解决的问题是什么?(问题陈述) 我们需要构建什么而不是构建什么?我们需要构建什么而不是构建什么?涉众是谁?用户是谁?他们各自的需求是什么?涉众是谁?用户是谁?他们各自的需求是什么? 关键术语是什么?(词汇表)关键术语是什么?(词汇表) 产品的特性是什么?产品的特性是什么? 功能性需求是什么?(用例)功能性需求是什么?(用例) 非功能性需求是什么?非功能性需求是什么? 设计约束是什么?设计约束是什么?3.3.3.3.确定项目前景确定项目前景确定项目前景确定项目前景v业务词汇业务词汇本章知识点总结本章知识点总结本章知识点总结本章知识点总结v面向对象基础面向对象基础软件工程主要方法论软件工程主要方法论面向对象知识回顾面向对象知识回顾为何使用为何使用UML软件开发过程模型软件开发过程模型项目启动项目启动
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号