《软件工程》第9课-面向对象设计1_第1页
《软件工程》第9课-面向对象设计1_第2页
《软件工程》第9课-面向对象设计1_第3页
《软件工程》第9课-面向对象设计1_第4页
《软件工程》第9课-面向对象设计1_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9课面向对象设计1,知识回顾,软件(系统)分析概述面向对象软件分析面向对象分析模型面向对象分析建模识别与确定分析类建立对象行为模型建立对象关系模型,前馈及作业总结,前馈很好。极个别人应付。,问题解答,OO设计模型4个层次之间有什么联系?在设计模型中,那个层次是最重要的?宋文秋模块聚合能力以及块间联系度量的标准是什么?张诗琦在进行模块化设计时,将模块设计得足够小使阅读程序的人员难以理解它们在整个系统中的作用,如何解决这个问题?吴帆,前馈检查,软件设计的基本概念?软件设计包括?内聚分类?耦合分类?OO设计模型4个层次?OOD软件设计2个层次?系统架构设计的内容?,讲授内容,软件设计概述概念、任务、模块化设计面向对象设计建模模型、任务、模式的应用系统架构设计系统高层结构设计确定设计元素任务管理策略、分布式实现机制(可略)数据存储设计人机交互设计,1.软件设计概述,以结构化程序设计为基础的结构化软件设计和由面向对象方法导出的面向对象软件设计。分析模型强调的是软件“应该做什么”,并不给出解决问题的方案,也不涉及具体的技术和平台。设计模型要回答“该怎么做”的问题,而且要提供解决问题的全部方案,包括软件如何实现、如何适应特定的实施环境等。,1.软件设计概述,软件设计的概念模块与构件模块是一个拥有明确定义的输入、输出和特性的程序实体。对象也是一种模块。重复使用成为构件。抽象与细化在不同抽象级别考虑和处理问题。细化的实质是分解信息隐藏提高模块的独立性。软件复用,1.软件设计概述,软件设计的任务把分析阶段产生的分析模型转换为用适当手段表示的软件设计模型。软件设计一般都包括数据设计、体系结构设计、接口设计和过程设计等。传统设计通常分两个阶段概要设计结构设计和接口设计。详细设计数据设计和过程设计。,1.软件设计概述,模块化设计(modulardesign)分解(decomposition)模块独立性(moduleindependence)自顶向下(topdowndesign)自底向上(bottomupdesign),分解(decomposition),将一个复杂问题分解为几个较小问题,能够减少解题所需要的总工作量。模块接口工作量随模块数的增加而增大。每个软件都存在一个最小成本区,把模块数控制在这一范围内,可以使总的开发工作量保持最小。,分解(decomposition),C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)C为问题的复杂度,E为解题需要的工作量,模块独立性(moduleindependence),内聚(cohesion)模块内部各成分之间的联系。耦合(coupling)一个模块与其它模块之间的联系。模块的独立性高块内联系强。块间联系弱。,内聚,按照由弱到强顺序:.偶然性内聚块内各组成部分在功能上是互不相关的。如几个模块都需要执行“读A”、“写B”等相同的一组操作。.逻辑性内聚通常由若干个逻辑功能相似的成分组成。如用于计算全班学生平均分和最高分的模块。.时间性内聚相同的执行时间联结在一起。,内聚,.过程性内聚一组任务必须按照某一特定的次序执行。.通讯性内聚各个成分都使用同一种输入数据。通过公用数据联系在一起。.顺序性内聚各组成部分是顺序执行的。.功能性内聚所有成分结合在一起,完成一个单一功能。,内聚,弱强,低内聚中内聚高内聚,耦合,1.非直接耦合:相互之间没有联系。2.数据耦合:参数是简单变量。3.特征耦合:参数是数据结构。4.控制耦合:参数用作控制信号。5.外部耦合:一组模块访问同一个全局变量。6.公共耦合:访问同一个全局数据结构。7.内容耦合:一个模块可以直接调用另一模块的数据,或直接转移到另一个模块中。,弱耦合,公共耦合,课堂互动,模块聚合能力以及块间联系度量的标准是什么?张诗琦在进行模块化设计时,将模块设计得足够小使阅读程序的人员难以理解它们在整个系统中的作用,如何解决这个问题?吴帆,2.面向对象设计建模,面向对象设计4个层次模型系统架构层整个系统的总体结构。类和对象层类层次关系。消息层对象间消息模型。责任层每个对象的所有属性和操作的数据结构和算法的设计。,OOA模型转换到OOD模型,系统架构设计,类和对象设计,消息设计,2.面向对象设计建模,面向对象设计的任务系统架构设计系统高层结构设计确定设计元素确定任务管理策略实现分布式机制设计数据存储方案人机界面设计系统元素设计类对象设计子系统设计包设计,2.面向对象设计建模,模式的应用模式是解决某一类问题的方法论,也是对通用问题的通用解决方案。软件模式可以分为三种架构模式:系统基本结构组织方案。层次架构模型、MVC。设计模式:面向对象具体设计问题的解决方案,使结果具有良好的可扩展性和重用性。习惯用法:具体程序设计语言的使用模式。,3.系统架构设计,系统高层结构设计确定设计元素任务管理策略分布式实现机制数据存储设计人机交互设计,系统高层结构设计,应用架构模式层次架构(Layers)模型-视图-控制架构(Model-View-Control)管道与过滤器架构(PipesandFilters)黑板架构(Blackboard)典型的分层方法,确定设计元素,映射分析类到设计元素一个分析类可以映射为一个设计类或多个设计类的简单组合。如边界类、控制类和一般的实体类。如果比较复杂,也可以将其映射为子系统接口。确定子系统子系统实际上是一种特殊的包,具有统一的接口。普通包是无语义的模型元素容器。划分成几个子系统需根据实际情况来确定。确定子系统的一些指导性参考原则。对象协作原则。可选性原则。用户界面原则。如果用户界面独立于系统中实体类,创建横向集成子系统:将相关界面边界类归入一个子系统。如果用户界面和实体类紧密耦合,创建纵向集成子系统。参与者原则。耦合和内聚原则。分布原则。,确定设计元素,定义子系统接口通过明确的定义,子系统接口将其使用方法和实现方式彻底分开。子系统接口只有逻辑上的意义,没有物理意义。通常按以下步骤确定子系统接口:为子系统确定一个备选接口集。寻找接口之间的相似点。定义接口依赖关系。将接口映射到子系统。定义接口所指定的行为。通常在相应类的名称前加上前缀“I-”或将类加上“”标记来表述子系统接口。,任务管理策略,对多用户、多任务的并行处理支持。面对并行需求,主要有以下3种解决方案。多处理器方案。将并发子系统分配到不同的处理器。操作系统方案。将并发子系统分配到相同的处理器并由操作系统提供同步控制。应用程序方案。应用软件负责在适当的时间从一个代码分支切换到另一个代码分支。实现并行需求的技术。引进任务管理部件。基于进程和线程的控制。,任务管理策略-引进任务管理部件,引进任务管理部件原因多用户、多任务或多线程操作系统上开发应用程序的需要。通过任务描述目标软件系统中各子系统间的通信和协同时,能简化某些应用的设计和编码。任务管理部件设计步骤与策略识别由事件驱动和时间驱动的任务。识别关键性任务、任务优先级以及任务管理类。当任务达到3个或3个以上时,应增加一个任务管理类。定义任务。必要时在OOD中扩充有关任务的类和对象。,任务管理策略-基于进程和线程的控制,每个线程都属于单个进程,一个进程中的所有线程共享该进程所占用有内存空间及其他资源。进程和线程建模用主动类来建模进程或线程。主动类是指拥有自己的执行线程而且能发起控制活动的类,主动类能与其它主动类并行地执行。分别用“”和“”来标识进程和线程。进程间的通信是依赖关系。如果有线程,则用组合关系。对进程建模可采用类图或构件图。,选课系统的进程建模,任务管理策略-基于进程和线程的控制,确定进程的生命周期每个进程或线程都必须进行创建和销毁。在单个进程架构中,进程在应用程序开始时创建,在应用程序结束时销毁。在多进程架构中,通常新进程(或线程)是在应用程序开始时,从操作系统创建的初始进程中产生或派生而来,这些进程必须显示销毁。在进程间分布模型元素确定在进程内应该执行的进程类和子系统。,创建进程和线程的时序图,设计元素与进程的关系,分布式实现机制,指应用程序的不同部件被安装在多个通过网络连接的计算机上,系统运行时不同计算机的应用部件相互协作,提供应用服务。系统架构师需要完成以下工作:确定网络拓扑配置将设计元素分配到网络节点。应将大量交互的元素分配到相同结点中。节点容量(指内存量和处理能力)通信介质带宽(总线、LAN、WAN)硬件与通信链路的可用性、重选路由对冗余与容错能力的要求响应时间要求吞吐量要求,网络拓扑配置图,分布式实现机制,设计分布处理机制需要底层类库的支持。需要考虑是在.NET平台上还是在Java平台上实现。基于Java的分布式处理是通过远程方法调用(RMI)来实现的。基于RMI的应用程序由Java对象构成,这些对象可以实现与对方的实际位置无关的相互调用。步骤如下:引入可直接利用的类库。建立一些有“”标识的类,代表实际设计元素。描述分布机制的静态结构。,基于RMI的分布处理机制,数据存储设计,对于实例数据需要持久保存的类,需要设计一种统一的存储、读取和修改数据的方法。基于JDBC的数据存储机制引入JDBC相关类库(java.sql包中的类)。构造一些具有“”标识的类,代表实际设计元素。描述持久存储机制的静态结构。描述机制的典型应用场景。,持久存储机制的静态结构,初始化与数据库的连接,创建PersistentClass的实例,人机交互设计,根据用户特点设计不同界面可按技术熟练程度、工作性质和访问权限分类。应参考优秀的商品软件。命令系统的方式可以是菜单,也可以是按钮。优化命令系统方式主要有三步。考虑命令的顺序,常用居先,顺序与习惯一致。根据服务之间关系组织命令。组织成一棵两层的三叉树。增加用户界面专用的类与对象利用快速原型演示,改进界面设计,小结,软件设计的任务,是将分析阶段建立的分析模型转变为软件设计模型,确保最终能平滑地过渡到程序代码。OOD的软件设计也分为两个层次:系统架构设计和系统元素设计。系统架构设计是指确定系统主要组成元素的组织或结构,组成元素之间通过接口进行交互,以及其它全局性决策;系统元素设计是对每一个设计元素进行详细的设计,系统元素包括组成系统的类、子系统与接口、分包等。,课堂互动,层次架构和MVC各有什么优势?,小结,软件分析将软件需求阶段产生的需求模型转变为软件分析模型。分析模型其实就是从软件开发者的角度,在静态组成结构和动态行为两个方面来描述的待开发的软件系统。面向对象分析利用面向对象的技术来分析问题、建立问题域的静态模型和动态模型,并用UML等工具来表示这一需求对应的类对象模型、对象-关系模型和对象-行为模型等,从而完成对问题域建模,形成面向对象的分析模型。软件分析通常从用例分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论