软件工程-3-面向对象体系结构设计
软件开发中的软件体系结构和设计研究和应用
软件开发中的软件体系结构和设计研究和应用软件开发中的软件体系结构和设计研究和应用1. 引言软件体系结构和设计是软件开发过程中的重要环节,它们起着指导和规范开发过程、减少系统错误和故障的作用。
本文将介绍软件体系结构和设计的概念、研究内容和应用情况。
2. 软件体系结构软件体系结构是软件系统的整体结构和组件之间的关系,它包括了系统的组织方式、组件的职责和关系、系统的行为和性能特性等。
软件体系结构的设计需要考虑系统的可扩展性、灵活性、可维护性、可重用性等方面的要求。
常见的软件体系结构模式有分层结构、客户端-服务器结构、发布订阅结构等。
3. 软件设计软件设计是指根据软件功能和需求对软件进行分析、概念化、详细设计和建模的过程。
在软件设计阶段,开发人员需要确定系统的模块划分、接口设计、算法设计等。
良好的软件设计能够提高系统的可维护性、可理解性和可扩展性。
常用的软件设计方法有结构化设计、面向对象设计和面向服务设计。
4. 软件体系结构和设计的研究内容软件体系结构和设计的研究内容主要包括以下几个方面:(1) 组织和管理软件系统:研究如何将系统划分为若干模块,并定义模块之间的关系和接口。
(2) 软件体系结构模式:研究常用的软件体系结构模式,如面向对象、分布式、并行等,以及它们的特点和适用领域。
(3) 软件设计原则和方法:研究通用的软件设计原则和方法,如高内聚低耦合、单一职责原则、开闭原则等,以及如何根据具体需求选择合适的设计方法。
(4) 软件设计模式:研究常用的软件设计模式,如单例模式、工厂模式、观察者模式等,以及它们的应用场景和使用方法。
(5) 软件质量保证:研究如何通过软件体系结构和设计来保证系统的质量,包括性能、可靠性、安全性等方面的要求。
5. 软件体系结构和设计的应用情况软件体系结构和设计的研究成果在实际软件开发中得到了广泛应用。
它们对于大型软件系统的开发和维护起到了重要的指导作用。
比如,在分布式系统开发中,研究人员通过软件体系结构和设计的方法来解决系统的可扩展性、容错性等问题;在移动应用开发中,研究人员通过软件设计模式和原则来提高应用的用户体验和性能。
《软件工程》期末试卷(3套含答案)
《软件工程》期末试卷(一)(满分100分)考试时间:120分钟(可根据具体情况适当调整)1.单项选择题(每题2分,共20分)(1)以下哪一项不属于软件工程三要素()。
A.过程B. 方法C. 工具D. 计划(2)以下哪一项不属于软件管理过程()。
A. ISO9000B. CMMC. IEEED. 软件企业文化(3)对安全性要求极高的开发方法是()。
A. 面向过程的方法B. 面向对象的方法C. 面向数据的方法D. 形式化方法(4)在软件的生命周期中,位于需求分析和单元测试之间的是()。
A.详细设计B. 集成测试C. 立项D. 维护(5)以下对于喷泉模型的说法正确的是()。
A.需要分析结束后才开始设计B. 开发人员可以同步开发C. 不需要大量的开发人员D. 审核简单(6)软件设计的三层体系结构是()。
A.表示、中间、数据B. 表示、客户、逻辑C. 表示、业务、逻辑D. 前端、表示、数据(7)活动图是()。
A. 表达系统静态特性的图B. 展现数据之间转移的控制流C. 着重逻辑过程D. 一种分组机制(8)采用黑盒测试()。
A. 低成本见效快B. 用户需求报告复杂C. 准备工作时间长D. 定位准确(9)动态模型不包括()。
A. 状态模型B. 对象模型C. 交互模型D. 活动模型(10)用例之间的关系有()。
A. 扩展关系、协助关系B. 异步关系、同步关系C. 顺序关系、结构关系D. 包含关系、扩展关系2.填空题(每题2分,共20分)(1)需求分析员参与客户需求调研,撰写________________。
(2)_______________是软件策划的核心、重点与难点。
(3)软件由程序、数据和______________组成。
(4)______________是软件设计的基础,______________是软件开发的核心。
(5)需求分析分为两个阶段,_______________阶段和需求规约阶段。
(6)对象图的组成元素包括对象和______________。
软件工程实验报告模板——面向对象设计
《软件工程》实验报告超市运营管理系统面向对象设计指导教师:班级:学生姓名:学号:完成日期:运城学院计算机科学与技术系1.概述 (1)2.系统结构设计 (1)3.模块及人机界面设计 (1)3.2 前台销售管理 (3)3.2 后台销售管理 (4)3.3 商品管理 (4)3.4 销售商品信息汇总管理 (5)4.数据设计 (5)4.1.超市管理系统包含的实体和属性: (5)4.2.实体之间的联系 (5)4.3.系统总E-R图 (5)4.4.数据库关系表 (6)5. 对象设计 (7)5.1 设计类的服务 (7)5.2 设计关联 (8)5.3 优化对象模型 (8)6. 总结 (9)1.概述面向对象设计就是将面向对象分析的问题域分析模型转换为符合成本和质量的求解域设计模型。
该阶段再划分为系统设计和对象设计。
系统设计确定实现系统的策略,进行系统架构设计、人机界面设计、数据设计和模块设计;对象设计确定设计模型中的类、关联、接口和现实服务的算法。
面向对象设计与面向对象分析是一个多次反复迭代的过程,二者界限模糊。
2.系统结构设计选课系统整体上采用Internet技术,客户端通过Web方式进行信息的发布和获取。
软件架构采用浏览器/服务器方式。
客户端采用JavaScript、Java等网络编程语言编写,其脚本程序简单易用、灵活性强,可以控制整个Web页面。
基于JavaScript的用户界面为用户所熟悉,因此,我们选择JavaScript来编写基于HTML的客户端应用程序,完成客户与服务器间的参数传递,在浏览器中解释执行。
设计时考虑访问权限,对不同权限级别显示相应的内容。
Web网络服务器向用户提供业务服务,应用服务器处理Web服务器转发的请求进行业务处理。
我们基于SQL Server 2005数据库平台搭建选课系统数据库。
本系统采用面向对象的三层体系结构,这种三层体系结果是在客户端与数据库之间加入了一个中间层,应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。
软件工程 第三部分 软件设计与建模--面向对象设计
(2) 块状组织 把系统垂直地分解成若干个相对独立的、弱耦 合的子系统/块,每块提供一种类型的服务。
采用层次与块状的混合结构
3. 设计(分布式)系统的拓扑结构 由子系统组成完整的系统时,典型的拓扑结构 有管道形、树形、星形等。设计者应该采用与问题 结构相适应的、尽可能简单的拓扑结构,以减少子 系统之间的交互数量。
3. 设计简单的类 小而简单的类便于开发和管理(高内聚)。为使 类保持简单,应该注意以下几点。 (1) 避免包含过多的属性:完成的功能可能太多了。 (2) 有明确的定义:任务应该简单。 (3) 简化对象之间的合作关系。如果需要多个对象 协同配合才能做好一件事,则破坏了类的简明性和 清晰性。 (4) 不要提供太多服务。典型地,一个类提供的公 共服务不超过7个。
层次图、结 构图、流程 图、N-S图、 PAD图、判 定表、判定 树等
面向对象设计方法比结构化设计方法更具有优势, 9/71 使用范围更广。
内容摘要
• • • • • 面向对象设计方法概述 面向对象设计原则 面向对象设计的启发规则 系统设计 对象设计
10/237
面向对象设计原则
• 强调模块化、抽象化、信息隐蔽、高内聚低耦合、复用性等 设计准则。
4/71
什么是面向对象设计(OOD)?
(二)现今(90年代后)的OOD • 面向对象的设计(OOD)就是在OOA模型的基础上运 用面向对象方法进行系统设计,目标是产生一个符合具 体实现条件的OOD模型。
OOD的特点: • 1、以面向对象的分析为基础,一般不依赖结构化分析。 • 2、与相应的OOA方法共同构成一种OOA&D方法体系。 OOA和OOD采用一致的概念和原则,但属于软件生命 周期的不同阶段,有不同的目标及策略。 • 3、较全面地体现面向对象方法的概念与原则。 • 4、大多数方法独立于编程语言,通过OOA&D所得到 的系统模型可以由不同的编程语言实现。
软件工程面向对象
面向对象软件工程面向对象方法学的提出•结构化软件工程方法学•面向过程、以算法为核心、把数据和过程作为相对独立的部分•对早期只重视编程、不重视用户需求和开发过程,只重视代码、不重视文档来说,是一个巨大的进步•给软件产业带来了巨大的进步,部分缓解了软件危机•在许多中小型软件项目中获得了很大的成功•但是,它存在着明显的缺点•当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功面向对象方法学概述•面向对象方法学的出发点和原则•尽可能模仿人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程•面向对象方法的特点•与人类习惯的思维方法一致:按照人们习惯的思维方式建立模型,模拟客观世界•稳定性好:实体是相对稳定的,以对象为中心构建的软件系统必然是相对稳定的•可重用性好:对象类提供了比较理想的模块化机制和可重用机制•易于开发大型软件:把大型产品看作一系列本质上相互独立的小产品来处理•可维护性好:容易理解、容易修改、易于测试四个要点:对象+类+继承+通信•面向对象软件是由对象组成•软件中的任何元素都是对象•对象是把静态属性的数据和动态属性的操作封装在一起而形成的统一体•复杂对象由简单对象组成•把所有对象都划分成若干类•每个类都定义了一组数据和方法(即施加于对象的操作);•按照子类与父类的关系,把若干个对象类组成一个层次结构的系统(即继承);•对象彼此之间仅能通过传递消息相互联系(对象的私有信息都被封装在对象类中)。
Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信基本概念(1)•类(Class)•是对具有相同属性和行为的一(多)个对象的描述•是一个支持继承的抽象数据类型•实例(Instance)•就是由某个特定的类所描述的一个具体的对象•消息(Message)•是要求某个对象执行类中所定义的某个操作的规格说明•其组成为:接收消息的对象、消息名和变元•方法(Method)•就是对象所能执行的操作(类中定义的服务)•属性(Attribute)•就是类中所定义的数据,是对客观世界实体所具有的性质的抽象基本概念(2)•封装•是把数据和实现操作的代码集中起来放在对象内部,不能从外部进行访问和修改。
软件工程 比较结构化方法和面向对象
软件工程比较结构化方法和面向对象一、引言软件工程是一门关注软件开发过程的学科,它涉及到软件开发的各个方面,包括需求分析、设计、编码、测试和维护等。
在软件工程领域中,有两种主要的开发方法:比较结构化方法和面向对象方法。
本文将对这两种方法进行详细的比较和分析。
二、比较结构化方法1.概念结构化方法是一种基于模块化设计思想的软件开发方法。
它将一个大型系统划分为多个小模块,每个模块都有明确的输入和输出,并且通过调用其他模块来实现其功能。
2.特点(1)强调程序流程控制;(2)采用自顶向下或自底向上的设计方式;(3)使用层次结构图表示程序流程;(4)采用数据流图表示数据流动情况;(5)模块之间通过参数传递来交换信息。
3.优缺点①易于理解和维护;②适合大型系统开发;③能够提高程序可读性。
(2)缺点:①不够灵活,难以应对需求变更;②不支持复杂的数据类型;③容易出现模块间的耦合。
三、面向对象方法1.概念面向对象方法是一种基于对象思想的软件开发方法。
它将一个系统看作是由多个对象组成,每个对象都有自己的属性和方法,并且通过消息传递来实现对象之间的交互。
2.特点(1)强调数据抽象和封装;(2)采用自下而上的设计方式;(3)使用类图表示程序结构;(4)采用序列图表示消息传递过程;(5)支持继承和多态等高级特性。
3.优缺点①能够提高代码重用性;②支持动态绑定,具有更好的灵活性;③能够提高系统可扩展性。
(2)缺点:①易于出现类爆炸问题;②需要掌握较为复杂的概念和技术。
四、比较分析1.设计思想不同结构化方法注重程序流程控制,通过模块化设计来实现程序结构清晰、易于维护。
而面向对象方法则注重数据抽象和封装,通过对象之间的交互来实现程序功能。
2.设计方式不同结构化方法采用自顶向下或自底向上的设计方式,通过层次结构图和数据流图来表示程序结构和数据流动情况。
而面向对象方法则采用自下而上的设计方式,通过类图和序列图来表示程序结构和消息传递过程。
软件工程:结构化方法VS面向对象方法
软件⼯程:结构化⽅法VS⾯向对象⽅法⼀、基本概念1、结构化⽅法 结构化⽅法是⼀种传统的软件开发⽅法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合⽽成的。
基本思想:把⼀个复杂问题的求解过程分阶段进⾏,⽽且这种分解是⾃顶向下,逐层分解,使得每个阶段处理的问题都控制在⼈们容易理解和处理的范围内。
2、⾯向对象⽅法 ⾯向对象⽅法是⼀种把⾯向对象的思想应⽤于软件开发过程中,指导开发活动的系统⽅法,简称OO,是建⽴在“对象”概念基础上的⽅法学。
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,⼀个对象类定义了具有相似性质的⼀组对象。
基本思想:尽可能模拟⼈类习惯的思维⽅式,使开发软件的⽅法与过程尽可能接近⼈类认识世界、解决问题的⽅法与过程, 也就是使描述问题的问题空间与实现解法的求解空间在结构上尽可能⼀致。
⼆、两者对⽐1、基本单位不同 结构化⽅法的基本单位是模块。
⾯向对象⽅法的基本单位是对象。
2、分析⽅法不同 结构化分析⽅法是⼀种⾯向数据流⽽基于功能分解的分析⽅法, 在该阶段主要通过采⽤数据流程图、编制数据字典等⼯具, 描述边界和数据处理过程的关系, ⼒求寻找功能及功能之间的说明。
⾯向对象分析是把对问题域和系统的认识理解, 正确地抽象为规范的对象( 包括类、继承层次) 和消息传递联系, 最终建⽴起问题域的简洁、精确、可理解的⾯向对象模型, 为后续的⾯向对象设计和⾯向对象编程提供指导。
⾯向对象分析通常建⽴三种模型: 对象模型、动态模型、功能模型。
其中, 对象模型描述了系统的静态结构,确定类的名称和类间的关系;动态模型表⽰瞬时的、⾏为化的系统的“ 控制”性质, 规定了对象模型中的对象的合法变化序列;功能模型表明了系统中数据之间的依赖关系, 以及有关数据的处理功能。
3、各⾃局限(1)结构化⽅法 i.不能直接反映问题域: 结构化分析⽅法以数据流为中⼼, 强调数据的流动及每⼀个处理过程, 不是以问题域中的各事物为基础, 打破了各事物的界限, 分析结果不能直接反映问题域, 容易隐蔽⼀些对问题域的理解偏差。
软件设计与体系结构-第四章-面向对象的软件设计方法课件
l 概念模型与顶层架构设计:
l 在用户需求和相关的业务领域中,概念及概念关系的抽取
l 用户界面设计:
l 设计每个界面中的所有界面元素,确定初步的界面布局,定义用户界面动作对软件系统中设计元
素的要求
l 数据模型的设计:
l 确定设计模型中需要持久保存的类的对象及其属性,定义持久持久存储数据之间的组织方式,并
.
26
概念模型和顶层架构设计
l 边界类: 其职责包括: l 边界控制: l 包括定义数据的格式及内容转换,输出结果的呈现,软件运行过程中界
面的变化与切换等。 l 外部接口: l 实现目标软件系统与外部系统或外部设备之间的信息交流和互操作,主
要关注跨越目标软件系统边界的通信协议 l 环境隔离: l 对目标软件系统与操作系统、数据库管理系统、中间件等环境软件进行
事件流中步骤(1)
l (3)如果账户余额小于取款金额,则显示信息“账户余额不足,请重新输入”,并返回主事件流
中步骤(1)
l (4)顾客在确认取款金额前右以选择取消交易。
l 后置条件: 如果取款成功,系统从账户余额中减去相应数额,并返回等待状态;如果顾客取消交易,
则返回等待状态
.
19
用例的分析与设计
体技术没有关系 l 顶层架构的设计 l 目的: 为后续的分析和设计活动建立一种结构和划分
.
24
概念模型和顶层架构设计
l 关键概念来源: l 为建立以UML类图表示的领域概念模型,首先必须标识关键概念。关键
概念的来源包括: l (1)业务需求描述、用例说明; l (2)业务领域中的相关规范、标准、术语定义。 l (3)反映业务领域知识的既往经验。 l 业务需求描述 l 业务领域中的相关规范、标准、述评呼定义 l 反映业务领域知识的既往经验
2023年10月自考试02333软件工程部分真题含解析
2023年10月自考试02333软件工程部分真题一、单项选择题1、结构化分析方法给出了一种能表达功能模型的工具是______。
A.HIPO图B.PAD图C.N-S图D.DFD图2、下列不属于创建一个系统的类图步骤是______。
A.模型化待建系统中的概念,形成类图中基本元素B.模型化待建系统中的各种关系,形成该系统的初始关系C.模型化系统中的接口,不需给出该系统的最终类图D.模型化逻辑数据库模式3、“与所规约的系统执行之间的偏差”是指______。
A.错误B.失效C.故障D.误差4、面向对象方法源于面向对象______。
A.分析B.设计C.建模语言D.编程语言5、《ISO/IEC软件生存周期过程12207-1995》标准按过程主体把软件生存周期过程分为基本过程、组织过程和______。
A.供应过程B.开发过程C.测试过程D.支持过程6、在常见的软件开发模型中,主要用于支持面向对象技术软件开发的是______。
A.喷泉模型B.螺旋模型C.增量模型D.瀑布模型7、下列不属于需求规约的基本性质是______。
A.可重复的B.重要性和稳定性程度C.完整的D.一致的8、下列不属于软件危机的主要表现是______。
A.软件生产效率低B.软件开发没有工具支持C.软件生产质量低D.软件开发缺乏可遵循的原理、原则、方法体系以及有效的管理9、RUP的分析类包括边界类、实体类和______。
A.子类B.控制类C.父类D.活动类10、软件结构化设计中,支持“自顶向下逐步求精”的详细设计,并且能够以一种结构化方式严格地控制从一个处理到另一个处理的转移,这个详细设计工具是______。
A.PAD图B.程序流程图C.DFD图D.N-S图11、需求规约的基本性质包括重要性和稳定性程度、一致的、完整的和______。
A.可修改的B.可复用的C.可测试的D.无歧义的12、下列可用于概念模型和软件模型的动态结构的是______。
A.类图B.对象图C.部署图D.用况图13、软件生存周期是指______。
第六章面向对象的软件工程
30
1. 确定对象
运用前面介绍的方法确定系统中所有的对象及对象的属性和操作。 运用前面介绍的方法确定系统中所有的对象及对象的属性和操作。如家 庭安全系统: 庭安全系统:
继承意味着可以利用已有的定义、设计和实现, 继承意味着可以利用已有的定义、设计和实现,简 化了相似类的重复定义。实现了软件的可重用性。 化了相似类的重复定义。实现了软件的可重用性。
14
从结构上讲类是分层的,一个类的上层可以有超 从结构上讲类是分层的,一个类的上层可以有超 父类),下层可以有子类 继承具有传递性。 ),下层可以有子类, 类(父类),下层可以有子类,继承具有传递性。
Y1
Y2
Yn
Y
多重继承: 多重继承:
X
单重继承: 单重继承:
X
15
1 面向对象软件的开发过程
采用面向对象开发方法构造的软件具有以下特点: 采用面向对象开发方法构造的软件具有以下特点: 面向对象技术构造的模型与客观世界一致; 面向对象技术构造的模型与客观世界一致; 适应变化的需要,修改局限在模块中; 适应变化的需要,修改局限在模块中; 具有可复用性
26
Caod & Yourdon的设计模型 的设计模型
窗口 人机交互 界 面 问题域
系统交互 界 面 (任务 管理) 管理)
其它系统
设 备 数据管理 报告 处理器
数据库
27
应用框架结构 根据应用领域系统的特有结构划分子系统(模板、 根据应用领域系统的特有结构划分子系统(模板、 主题、抽象类的集合) 主题、抽象类的集合)。 然后设计细化每个子系统的对象模型、动态模型 然后设计细化每个子系统的对象模型、 和功能模型。 和功能模型。 如专家系统的典型结构: 如专家系统的典型结构:
软件工程课后答案(清华大学出版社--钱乐秋)
8
作业及解答(第3章)
E1 护士
F4警告信息、病情报告 F1要求报告
E1 护士
Hale Waihona Puke E2 病人F2生理信号P0 患者监护系统
F6日志
D1患者日志
F5安全范围
D2患者安全范围
E3 时钟
13:07:42
F3日前、时间
重庆工学院计算机科学与工程学院 李梁(liliang@)
9
作业及解答(第3章)
是: 4474263 22,371(人月) 200
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
5
作业及解答(第1-2章)
程序员的月平均工资是4000美元, 开发出4474263条指
令的成本是 22371 4000 89,484,000(美元)
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
16
作业及解答(第3章)
3-3 银行计算机储蓄系统的工作过程大致如下:储户填写的 存款单或取款单由业务员键入系统,如果是存款则系统记 录存款人姓名、住址(或电话号码)、身份证号码、存款类 型、存款日期、到期日期、利率及密码(可选)等信息,并 印出存单给储户;如果是取款而且存款时留有密码,则系 统首先核对储户密码,若密码正确或存款时未留密码,则 系统计算利息并印出利息清单给储户。 请用数据流图描绘本系统的功能,并用实体-联系图描绘系 统中的数据对象。
医院对患者8监护系统的基本要求是随时接收每个病人的 生理信号(脉搏、体温、血压、心电图等),定时记录病人 情况以形成患者日志,当某个病人的生理信号超出医生规 定的安全范围时向值班护士发出警告信息,此外,护士在 需要时还可以要求系统印出某个指定病人的病情报告。
【OOA、OOD、OOP、MVC概述】面向对象体系结构概述
【OOA、OOD、OOP、MVC概述】⾯向对象体系结构概述OOA、OOD、OOP、MVC概述OOA⾯向对象分析 Object Oriented Analysis是确定需求或者业务的⾓度,按照⾯向对象的思想来分析业务。
例如,OOA只是对需求中描述的问题进⾏模块化的处理,描述问题的本质,区别每个问题的不同点、相同点,确定问题中的对象。
OOA与结构化分析有较⼤的区别。
OOA所强调的是在系统调查资料的基础上,针对OO⽅法所需素材进⾏的归类分析和整理,⽽不是对管理业务现状和⽅法的分析。
OOA的基本步骤:第⼀步,确定对象和类。
第⼆步,确定结构(structure)。
第三步,确定主题(subject)。
第四步,确定属性(attribute)。
第五步,确定⽅法(method)。
OOD⾯向对象设计(Object Oriented Design)主要作⽤是对OOA分析的结果做进⼀步的规范化整理,以便能够被OOP直接接受。
OOD的⽬标是管理程序内部各部分的相互依赖。
为了达到这个⽬标,OOD要求将程序分成块,每个块的规模应该⼩到可以管理的程度,然后分别将各个块隐藏在接⼝(interface)的后⾯,让它们只通过接⼝相互交流。
⽐如说,如果⽤OOD的⽅法来设计⼀个服务器-客户端(client-server)应⽤,那么服务器和客户端之间不应该有直接的依赖,⽽是应该让服务器的接⼝和客户端的接⼝相互依赖。
这种依赖关系的转换使得系统的各部分具有了可复⽤性。
还是拿上⾯那个例⼦来说,客户端就不必依赖于特定的服务器,所以就可以复⽤到其他的环境下。
如果要复⽤某⼀个程序块,只要实现必需的接⼝就⾏了。
OOD是⼀种解决软件问题的设计范式(paradigm)。
使⽤OOD这种设计范式,可以⽤对象(object)来表现问题领域(problem domain)的实体,每个对象都有相应的状态和⾏为。
OOD是⼀种抽象的范式。
抽象可以分为很多层次,从⾮常概括的到⾮常特殊的都有,⽽对象可能处于任何⼀个抽象层次上。
面向对象设计与结构化设计
9.2 面向对象设计与面向对象分析的关系
设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求 的系统实现方案。与传统的软件工程方法不同的是,面向对象的方法不 强调需求分析和软件设计的严格区分。实际上,面向对象的需求分析和 面向对象的设计活动是一个反复迭代的过程,从分析到设计的过渡,是 一个逐渐扩充、细化和完善分析阶段所得到的各种模型的过程。严格的 意义上来讲,从面向对象分析到面向对象设计不存在转换问题,而是同 一种表示方法在不同范围的运用。面向对象设计也不仅仅是对面向对象 分析模型进行细化。
9.3 面向对象设计的过程与规则
如图所示,与目标系统(即开发软件体系结构的 系统)交互的系统可以表示为:
➢ 上级系统:将目标系统作为某些高层处理方案的一 部分。
➢ 下级系统:被目标系统所使用,并且为完成目标系 统的功能提供必要的数据和处理。
➢ 同级系统:在对等的基础上相互作用(例如,信息 要么由目标系统和同级系统产生,要么被目标系统 和同级系统使用)。
• 现实的实体经常用指明其稳定特性的词来描述。大多数物理对象具有形状、重量、颜色和 材料类型等特性;人具有生日、父母、名字、肤色等特性,特性可被视为在类和某确定域 之间的二元关系。
面向对象的开发方法
• 传统的面向过程的开发方法是以过程为中心,以算法为驱动,因此,面向过程的编程语言 是程序=算法+数据
➢ 参与者:指通过产生和使用所需的信息,实现与目 标系统交互的实体(人、设备)。每个外部实体都通 过某一接口(带阴影的小矩形)与目标系统进行通 信。
软件工程第11章面向对象设计
2. 重用已有的类
重用已有类(代码重用)实现分析模型;若没有可以重用类而需要创建新 类时,则在设计这些新类时需要考虑其可重用性。
对于已有的可重用类,典型重用方法和过程如下: 1)选择可能被重用的已有类,标出类中对本问题无用的属性和服务,选 择那些能使无用的属性和服务最少的类; 2)从被重用的已有类派生出问题域类(继承重用类而产生问题域类); 3)标出从已有类继承来的属性和服务,而无须在分析类内定义;
6. 可重用
软件重用是提高软件开发生产率和目标系统质量的重要途径。 重用有两方面的含义: 一是尽量使用已有的类(类库或已建立的类), 二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将 来的可重复使用性。
11.2
启发规则
与结构设计规则类似,通过OOD实践也总结了一些设计规则: 1. 设计结果应该清晰易懂 设计结果清晰、易读、易懂,是提高软件可维护性和可重用性的重要 措施。保证设计结果清晰易懂的主要因素为:用词一致;使用已有的 协议;避免模糊的定义等。
1)层次组织:这种组织方案把软件系统组织成一个层次系统,每层是一 个子系统。上层和下层自系统形成C/S结构 层次结构的两种模式:封闭式和开放式:封闭式,每层子系统仅仅使用其 直接下层提供的服务;开放式,任一层次可以向下跨层次调用。 2)块状组织:把软件系统垂直地分解成若干个相对独立的、松耦合的子 系统,一个子系统相当于一块,每块提供一种类型的服务。
第11章
11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.10 11.11
面向对象设计
面向对象设计的准则 启发规则 软件重用 系统分解 设计问题域子系统 设计人机交互子系统 设计任务管理子系统 设计数据管理子系统 设计类中的服务 设计关联 设计优化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Controller
Business logic
职责:核心业务操作 DAO
RDBMS
职责:数据的CRUD操作+对象关系映射
J2EE应用体系结构的演进(6层)
View
V
Controller
MVC Framework Struts、JSF、Tepestry C
Business logic
DAO模式
数据访问
• 这一体系结构涉及到在应用程序中如何访问数据, 和数据访问的基础设施(如JDBC). • 例如:
– – – – 链接池(spooling) 缓存(cache) 失败和恢复计划(Failover and recovery planned) 数据和文件存储(Data and file storage defined )
包含类:
业务规则服务层
该层是实体类对象活动的场所 业务规则在物理上实现为实体类,它实际上是面 向数据流程的。 其它业务规则服务则处理数据管理业务 实现各种业务处理逻辑或处理算法。 验证请求者的权限。 向数据访问对象发送数据持久化操作的请求。 向用户界面层返回处理结果。
包含类:
这里使用了代理(Proxy)模式,用户界面对象只能通过业 务代理对象来向业务对象发送请求。业务代理对象首先判 断请求者的权限,然后转发合法请求者的请求。
数据访问层的职责是:
实现数据的持久化操作(本书假设数据的存 储由关系数据库来完成)。 实现事务处理。
对于每一个业务处理中需要持久化操作的对象都可以 对应为一个数据库访问对象,在很多业务处理中需要 请求多个数据库访问对象来进行数据的读写操作,而 这些操作又必须在同一个事务中,这时需要用同一个 数据库连接对象来进行统一的事务处理。这里的数据 库连接类的创建用到了单件(Singleton)模式,保证 一个类仅有一个实例,一个客户在同一时刻只能用一 个数据库连接对象。
MVC框架
MVC框架中的模型是实体类。模型的目标就是保持 框架的纯粹性,使之避免对用户界面的了解 MVC框架中的视图就是渲染过的界面,客户所看到 的就是视图。 MVC框架中的控制器是一些服务,通常用作模型和 视图之间的中介。有两种类可用于实现系统中的控 制器。第一种是servlet。 Servlet用作用户界面控制 器和转发器,它实例化消息,并将消息转发到另一 种类,用例控制器。可以使用一个JavaBean作为每 一个用例的用例控制器
J2EE实现范式: JSP内含Java和JDBC代码
RDBMS
职责:永久保存数据、保证数据完整性
J2EE应用体系结构的演进(3层)
Presentation logic
职责:页面显示+页面跳转+应用控制逻辑
J2EE实现范式: Sun Model1 (JSP + Java Bean)
Business logic
1、职员通过请求一个web页面与web服务器进行交互。可以在该web页面上输入一 个顾客编号。 2、传过来一个HTTP get请求 3、RemularkServlet实例化控制器UCMaintainRltnshp,并发送消息 rltnCustomerInquiry(). 4、用例控制器请求CustomerBean调用findByCustomerNumber(),并传递顾客编号。 5、CustomerBean请求CostomerDAO调用findByName(),结果新创建一个 CustomerValue对象。 6、findByName()操作将CustomerValue对象返回到CustomerBean. 7、CustomerBean将CustomerValue返回到UCMaintainRltnshp。 8、 UCMaintainRltnshp将CustomerValue返回到RemularkServlet。 9、 RemularkServlet用setAttribute()操作将CustomerValue对象设置到servlet的 Request区域中。 10、 RemularkServlet获得一个对servlet的RequestDispatcher对象的引用,然后对 该对象发出forward()操作,传递的参数为rltnInquiry.jsp。 11、该过程会强制调用现在编译的JSP/servlet的service()操作。JSP/servlet会创建 HTML输出,并发送到浏览器 12、HTML表单到达浏览器
应用程序的分割
• 该体系结构涉及到如何分割应用程序,包括的应用程序的 各层进行分割的分割策略和各层的管理方式。
技术
• 该体系结构涉及构建应用程序所需的许多工具, 这些工具包括数据库技术、构建工具、源代码控 制、配置管理、事务监控软件和软件的分发。
网上招聘系统项目初步体系结构(技术领域)
组成部分 硬件:客户机 硬件:服务器 软件:操作系统(服务器) 软件:操作系统(客户机) 软件:应用程序(客户机) 软件:数据库(服务器) 软件:事务处理(服务器) 软件:web(服务器) 软件:web接口(服务器) 软件:可视化建模 协议:网络 协议:数据库 实现 基于Pentium III600MHz的客户机,128MB内存8GB硬盘 基于双CPU700MHz Pentium III的服务器,1GB内存,由 RAID5 I/O子系统支持的60GB存储 Windows 2000 Server Windows 2000 Professional 任意浏览器 Microsoft SQL Server 2000或Oracle 9i 带有JDBC事务支持的JavaBean Microsoft Internet信息服务器,Apache Tomcat服务器, 或商业应用服务器,如BEA WebLogic Servlet 和JSP Rational Rose(企业版)和TogetherSoft的Together Control Center TCP/IP JDBC-ODBC桥
DAO
M
ORM
O/R Mapper
RDBMS
ORM Middleware:Hibernate、JDO、Apache OJB
活动一 构架设计活动
目标
• 实施模型的节点 • 设计模型中的主要子系统及其接口 • 主要的设计类 • 通用设计机制
内容
• 构造系统物理模型 • 定义并设计子系统 • 定义对系统框架有重要意义的设计类 • 设计具有共性的非功能需求
简洁化设计
设计简单的类 使用简单的协议 设计结果简单明了
软件体系结构
体系结构的领域分类
技术
• 该体系结构涉及构建应用程序所需的许多工具,这些工具 包括数据库技术、构建工具、源代码控制、配置管理、事 务监控软件和软件的分发。
数据访问
• 这一体系结构涉及到在应用程序中如何访问数据,和数据 访问的基础设施(如JDBC).
模型-视图-控制器框架
向组件映射的过程
①从用例找到领域类② ③从用例创建动态模型,并对类进行建模 ④对于每一个用例,都会实现一个用例控制 器 使用用例控制器包含了操作⑤,实现了一些 组织好的逻辑,用以执行一个序列图
协作的类
通过维护联系用例获取顾客信息,返回到应 用程序的各层来映射一个简单的交互。
应用程序的分割
• 该体系结构涉及到如何分割应用程序,包括的应 用程序的各层进行分割的分割策略和各层的管理 方式。 • 策略
– – – – 按功能进行划分 按系统的物理布局进行划分 按软件层次划分 按服务进行划分
按软件层次组织子系统
分离服务
应用程序的三个逻辑(服务)层
• 表示服务 • 业务服务 • 数据服务
改进
分层策略
传统三层模型需要进一步细分
• 业务服务层实际上包括两种类型的服务:业务环 境和业务规则 • 数据服务层实际上包括三种类型的服务:数据转 换、数据访问和数据库
六层间的通信
各层之间采用何种方式进行通信 例如
• 本地socket
• CORBA技术
• RMI
– 应用程序通过"套接字"向网络发出请求或者应答网络请求 – 应用程序和其他的应用程序通讯,而不论他们在什么地方或者 由谁来设计 – 支持存储于不同地址空间的程序级对象之间彼此进行通信,实 现远程对象之间的无缝远程调用 – 综合了RMI和CORBA的优点,克服了他们的缺点 – 可在本地调用动态链接库,可共享库文件 – Web前端使用超文本传输协议
应用程序的逻辑层次与功能层次之间的关系
1、垂直方向——功能分解——块 2、水平方向——服务分层——层 客户管理模块 表示层 业务逻辑层 数据存储层 订单管理模块 表示层 业务逻辑层 数据存储层 库存管理模块 表示层 业务逻辑层 数据存储层
各个逻辑层的范围和目标 层 表示服务 范围 数据表示 数据接收 图形用户界面 业务服务 核心业务规则 应用程序/对话框流程控制 目标 易用性 自然、直观的用户交互 快速的响应时间 业务规则的严格实施 对代码投资的保护
职责:核心业务操作
RDBMS
J2EE应用体系结构的演进(4层)
View
职责:页面显示
Controller
职责:页面跳转+应用控制逻辑
J2EE实现范式: Sun Modle2 (Jsp + Servlet + Java Bean/EJB)Βιβλιοθήκη Business logic
RDBMS
J2EE应用体系结构的演进(5层)
系统设计
系统层次结构设计(体系结构设计) 系统数据存储设计 系统资源访问设计 网络与分布设计 并发性设计 对象互操作方式设计 边界条件和例外处理等内容的设计
对象设计
静态结构设计
为了便于系统的实现和优化,在设计过程中 需要对问题域的对象模型进行扩展和重构
动态行为模型设计
根据静态结构,对动态行为分析模型进行相 应的扩充,获得完整的动态行为模型