第5章 习题 概要设计
1.解答题
(1)什么是面向对象设计?面向对象设计的内容有哪些?有哪些设计原则?P108、P109
面向对象设计OOD:是把需求分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。
面向对象设计的内容:面向对象设计包括静态结构设计和动态结构设计。静态结构设计的内容有类和对象设计、架构设计(设计模式)、包设计、接口设计和数据库设计等,静态8结构设计建模技术包括类的建模、对象的建模、组件图、配置图和数据库设计类图;动态结构设计是指状态和行为的设计,动态结构设计建模技术包括状态建模(状态图)、行为建模(顺序图和交互图)。
面向对象设计原则:开闭原则(是面向对象设计的第一原则)、里氏替换原则(是面向对象设计的基本原则之一)、依赖倒置原则(要求依赖于抽象,不要依赖于具体)、接口隔离原则(要求尽量使用多个小而专用的接口而不是单一的接口)、单一职责原则(就是一个类有且只有一个职责)、迪米特法则(又称最少知识原则,是指一个对象应当对其他对象尽可能少的了解,并尽可能少与其它对象发生联系)、组合/聚合复用原则(组合/聚合和继承是实现复用的两个基本途径。)、简洁化设计八项原则。
(2)常用的软件体系结构有哪些?各有什么特点?P111
常用的软件体系结构有:传统客户机/服务器(C/S)结构、三层C/S结构、浏览器/服务器(B/S)结构和C/S和B/S混合体系结构。一个小型的软件可能具有一种体系结构,而大型的软件一般由多种体系结构组成。
传统客户机/服务器(C/S)结构的特点:以局域网为钟信,将应用一分为二,单一服务器(后台)负责数据管理,客户机(后台)完成与用户的交互任务。具有强大的数据操作和事务处理能力,模型思想简单,易于接受和理解。客户/服务器的应用模式的特点是大都基于“肥客户机”结构下的两层结构应用软件。C/S结构缺点是,表现层和事务层都放在客户端,而数据逻辑层和数据存储层则置于服务器端。
面向网络应用的三层C/S体系结构:在传统的C/S基础上发展起来的,它将应用功能分成表示层、功能层和数据层三个部分,表示层是应用的用户接口部分,承担系统与用户间的对话功能;功能层又称业务逻辑层,它将具体的业务处理逻辑编入程序中。数据层是数据库管理系统,负责管理对数据库数据的读写。
三层在逻辑上保持相对独立性。允许更灵活有效地选用相应的平台和硬件系统。三层可以并行开发,也可以选择各自适合的语言,以达到较高的性价比。三层C/S结构具有如下优点:允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性;允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;应用的各层可以并行开发,各层也可以选择各自最适合的开发语言;允许充分利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,这就为严格的安全管理奠定了坚实的基础。
B/S软件系统结构:Browser/Server(浏览器/服务器)结构。是对C/S结构进行改进一种的结构。用户接口完全通过WWW浏览器实现。它充分利用了浏览器技术,结合多种脚本语言,通过浏览器就实现了原来需要复杂的专用软件才能实现的强大功能。B/S体系结构也有许多不足之处,例如:B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能;B/S体系结构的系统扩展能力差,安全性难以控制;采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构;B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。
c/s与B/S混合体系结构:C/S 与B/S有机结合的种典型的异构体系结构。集C/S与B/S优点于一身,同时又适当克服了它们的一些缺点。软件体系结构风格为大粒度的软件重用提供了可能。然而,对于应用体系结构风格来说,由于视点的不同,系统设计师有很大的选择空间。
(3)简述MVC设计模式。P112
MVC的核心思想是将一个应用程序的数据业务处理功能(模型层)、表示功能(视图层)和控制功能(控制层)在三个不同的部分分别实现。使用MVC 的目的是增强代码的重用性,降低数据描述和应用操作的可耦合度并提高代码的可读性。同时也可以是软件的可维护性、可修复性、灵活性和封装性大大提高。
MVC设计模式主要由以下三个部分组成:模型是应用程序的主体部分,负责业务逻辑的处理以及业务规定的制定。视图时应用程序中负责生成用户界面的部分,视图代表用户交互界面,是应用程序的外在表现。控制器是模型和视图的纽带,负责解释用户的输入并将其映射为模型的操作,同时定义应用程序的行为,分派用户的请求并选择恰当的视图用于显示。
(4)类设计的步骤有哪些?P115
类设计步骤如下:
确定类:通过系统中关键词的抽象确定类。
确定类的属性
分析与建立类之间的关系。
(5)简述包图建模技术。P117
当为较复杂的系统建模的时候,使用包是非常有效的建模方法。包将建模元素按语义分组,从而使得复杂的系统模型能够被构造、表达、理解和管理。建立包图的具体做法如下:
分析系统的模型元素(通常是对象类),把概念上或语义上相近的模型元素纳入同一个包。
对于每一个包,标出其模型元素的可视性,确定包内每个元素的访问属性,是公共、保护或私用。
确定包和包之间的依赖关系,特别是引入依赖。
确定包和包之间的泛化关系,确定包元素的多样性和重载。
绘制包图。
对结果进行精化和细化。
(6)简述接口设计原则。P118
稳定性:接口必须相对稳定,否则将导致接口的使用者为了适应新接口而不断修改接口的实验,可能重复做不用功,严重时影响整个软件开发进度。
规范性:主要是接口设计的代码规范,这是最基本的要求。
易用性:接口是提供给第三方方式用的,较难用的接口。会导致接口使用者的抱怨。
可移植性:对于在多平台实现的接口,需要考虑接口本身的可移植性,因此最少使用对于系统以来的类型作为接口的参数类型或者是返回值类型。
鲁棒性:主要是指在多种情况下接口都能实现统一的效果,不会随着调用者传入的参数的变化而导致接口的输出出现违背接口语义的情况出现。
安全性
兼容性 :这是接口扩充的原则,必须保证同一个接口实现后向前一个版本的使用。
(7)简述状态图和协作图建模技术。P122、P125
状态图:主要用于建立对象类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或者活动转移的事件,以及因状态或者是活动的转移而伴随的动作。一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机,重点在于描述状态图的控制流。
状态图的建模技术:
(1)找出适合用模型描述其行为的类。
(2)确定对象可能存在的状态。
(3)确定引起状态转换的事件。
(4)确定转换进行时对象执行的相应动作。
(5)对建模结果进行精化和细化。
协作图建模技术:
使用协作图对系统进行建模时,可以遵循以下策略:
(1)设置交互的语境。语境可以时系统、子系统、操作、类、用例或用例的脚本。
(2)通过象在识别对交互中所扮演的角色,开始绘制协作图,把这些对象作为图的顶点放在协作图中。
(3)在识别了协作图对象后,为每个对象设置初始值。如果某对象的属性值、标记值、状态或角色在交互期发生变化,则在图中放置一个复制对象,并用变化后的值更新它,然后通过构造型<>或<>的消息将两者连接。
(4)根据对象间的关系确定对象间链接。一般先确定关联的链接,因为这是最主要的,它代表了结构的链接。然后需要确定的是其他的链接,用合适的路径构造型修饰它们,这表达了对象间是如何相互联系的。
(5)从引起交互的消息开始,按消息的顺序,适当地设置其顺序号,然后把随后的每个消息附到适当的链接上。
(6)如果需要说明时间约束或空间约束,可以用时间约束和空间约束来修饰每个消息。
(7)如果需求更详细地说明这个控制流,可以为每个消息附上前置条件和后置条件。