1、题 1.层次系统结构和基于消息的层次系统结构有什么区别?答:层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻的层可见。这样的系统中构件在一些层实现了虚拟机(在另一些层次系统中层是部分不透明的) 。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。这种风格支持基于可增加抽象层的设计。允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。而在基于消息的层次系统结构中构件不直接调用一个过程,
2、而是触发或广播一个或多个事件。系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。这种风格的构件是一些模块,模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。这种风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。题 2.分析比较 B/S、二层 C/S 和三层 C/S,指出各自的优
3、点和缺点。二层 C/S 结构的优点:C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。在 C/S 体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个 DBMS 进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用二层 C/S 结构的缺点: 开发成本较高客
4、户端程序设计复杂信息内容和形式单一 用户界面风格不一,使用繁杂,不利于推广使用软件移植困难 软件维护和升级困难 新技术不能轻易应用三层 C/S 结构的优点:允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。应用的各层可以并行开发,可以选择各自最适合的开发语言。利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实
5、的基础。三层 C/S 结构的缺点:三层 C/S 结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。 设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层 C/S 结构的关键问题。B/S 体系结构的优点:基于 B/S 体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。B/S 体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。B/S 体系结构的缺点: B/S 体系结构缺乏对
6、动态页面的支持能力,没有集成有效的数据库处理功能。B/S 体系结构的系统扩展能力差,安全性难以控制。 采用 B/S 体系结构的应用系统,在数据查询等响应速度上,要远远地低于 C/S 体系结构。 B/S 体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。题 3.组织或参与一个采用 B/S 和 C/S 混合体系结构的软件项目的开发,总结开发经验。首先,开发者根据一定的原则,将系统的所有子功能分类,决定哪些子功能适合采用 C/S,哪些适合采用 B/S。适合采用 C/S 的子功能应具备以下特点:1 安全性要求高;2 要求具有较强的交互性;3 使用范围小,地点
7、固定;4 要求处理大量数据。例如,仓库管理系统中的入库单、领料单的输入功能,财务系统中的凭证输入功能等等。而适合采用 B/S 的子功能应具备以下特点:1 使用范围广,地点灵活;2 功能变动频繁;3安全性、交互性要求不同。例如:企业内部信息发布功能,意见箱输入功能,公司财务分析表的查询功能,总裁决策支持系统中的查询功能等等。 相对于单独采用 C/S 或 B/S,这种方案的优点在于:1 保证敏感数据的安全性,特别是对数据库的修改和新增记录加强了控制;2 经济有效地利用企业内部计算机的资源,简化了一部分可以简化的客户端;3 既保证了复杂功能的交互性,又保证了一般功能的易用与统一;4 系统维护简便,布
8、局合理;5 网络效率最高。 如果系统开发者在系统设计阶段决定采用这种 C/S 与 B/S 相结合的模式,那么在系统开发生命周期的如下各个阶段相对这种新模式都应有所响应。 在系统设计阶段主要考虑的是 MIS 系统平台选择问题。在详细设计阶段,系统开发者需要根据企业自身的业务特点,以及一定的选择原则,来决定各个子功能采用哪一种模式并在系统说明书上分别注明。在编码设计阶段,系统开发者需要针对采用不同模式的子功能,选用不同的编码方式(例如:C/S 可以采用 VB 编程环境,而 B/S 采用ASP 方法),然后编译生成不同的客户应用及 Web 服务程序。在安装调试阶段,其特点主要体现在系统的物理结构上,
9、即特定的客户应用程序将被安装在特定的使用者的客户端上,Web 服务程序需要被安装在 Web 服务器上,而每个客户端上都将被安装上浏览器,同时,客户应用的使用者必须接受一定的培训。在软件维护阶段,针对不同模式的子功能应采取不同维护方式。题 4.在软件开发中,采用异构结构有什么好处,其负面影响有哪些?答:所有的体系结构不仅有很紧密的联系,而且在大多数情况下是被一起使用的。对于一个实际的系统,甚至不能判断它是 A 风格、B 风格还是 C 风格,因为没有足够的理由把它归为任何一种独立的体系结构风格。这种系统类型被称为异构结构。上图展示了一个虚拟系统,它整合了许多体系结构风格。可以把整个系统当成一个分层
10、系统。这样它可以被分成两层:第 1 层是原始数据生成层,第 2 层是解释层。在第 1 层,主要的组成部分是管道过滤器子系统。(1)第 1 个过滤器中的数据能够被送到第 2 个过滤器中。(2)当第 2 个过滤器收到数据时,将会产生相应的信息,然后将此信息传送到事件队列构件和服务提供对象构件中。(3)当事件队列不为空时,它将会激发相应的对象来处理这个事件,并完成任务。这是一个典型的事件驱动体系结构风格的例子。(4)当服务提供对象构件接收到由第 2 个过滤器传来的信息时,它将把这些信息记录在信息库里。它就像是在数据共享风格中的黑板。在这个信息库中,所有的信息、知识和规则被记录下来。当“事件驱动”部分
11、想要完成某些任务时,它可能需要从这个信息库里获取一些有用的信息,然后根据其中的规则完成正确的行动。这部分可以被看成数据共享与反馈控制环风格的结合。因为所有的数据在构成的信息库里被共享,其他部分能够从信息库中存储和获取数据。用户可以通过向信息库中记录新的数据来更新它。这也具有反馈控制环风格的特点。在第 2 层解释器中,来自第 1 层中的数据被解释。当解释数据时,构件必须知道上下文、解释规则和解释器的状态。因此这部分具有状态构件、规则构件和数据构件。当解释时产生的所有错误和程序缺陷被记录在数据库里。最后,输出解释完毕的数据。从这个例子中,可以看出一个完善的系统可能由各种各样的体系结构风格组成,具体
12、的组成方法要依据系统需求和各种体系结构风格的优势来确定。所设计的最好的系统不是特意包含“所谓的”结构体系风格,而是能够恰当运用体系结构风格的系统。设计出的系统要满足需要的质量属性。负面影响就是结构可能更加复杂,不易于设计与维护。5 通过查资料然后分析,给出下列体系结构Windows7,Android,P2P,web service,要求:1.模块划分和功能描述。2.模块间的关系。3.典型功能模块的调用关系。4.各自优缺点。答:A ndroid 操 作 系 统 的 架 构 图 如 下 : Android 系 统 架 构 由 5 部 分 组 成 , 分 别 是 : Linux Kernel、 An
13、droid Runtime、 Libraries、 Application Framework、 Applications。 第 二 部 分将 详 细 介 绍 这 5 个 部 分 。 架 构 详 解现 在 我 们 拿 起 手 术 刀 来 剖 析 各 个 部 分 。 其 实 这 部 分 SDK 文 档 已 经 帮 我 们做 得 很 好 了 , 我 们 要 做 的 就 是 拿 来 主 义 , 然 后 再 加 上 自 己 理 解 。 下 面 自 底 向上 分 析 各 层 。 1、 Linux KernelAndroid 基 于 Linux 2.6 提 供 核 心 系 统 服 务 , 例 如 : 安
14、全 、 内 存 管 理 、进 程 管 理 、 网 络 堆 栈 、 驱 动 模 型 。 Linux Kernel 也 作 为 硬 件 和 软 件 之 间 的抽 象 层 , 它 隐 藏 具 体 硬 件 细 节 而 为 上 层 提 供 统 一 的 服 务 。 2、 Android RuntimeAndroid 包 含 一 个 核 心 库 的 集 合 , 提 供 大 部 分 在 Java 编 程 语 言 核 心 类库 中 可 用 的 功 能 。 每 一 个 Android 应 用 程 序 是 Dalvik 虚 拟 机 中 的 实 例 , 运行 在 他 们 自 己 的 进 程 中 。 Dalvik 虚
15、拟 机 设 计 成 , 在 一 个 设 备 可 以 高 效 地 运 行多 个 虚 拟 机 。 Dalvik 虚 拟 机 可 执 行 文 件 格 式 是 .dex, dex 格 式 是 专 为Dalvik 设 计 的 一 种 压 缩 格 式 , 适 合 内 存 和 处 理 器 速 度 有 限 的 系 统 。 Dalvik 虚 拟 机 依 赖 于 Linux 内 核 提 供 基 本 功 能 , 如 线 程 和 底 层 内 存 管理 。 3、 LibrariesAndroid 包 含 一 个 C/C+库 的 集 合 , 供 Android 系 统 的 各 个 组 件 使 用 。这 些 功 能 通 过
16、 Android 的 应 用 程 序 框 架 ( application framework) 暴 露 给开 发 者 。 下 面 列 出 一 些 核 心 库 : 系 统 C 库 标 准 C 系 统 库 ( libc) 的 BSD 衍 生 , 调 整 为 基 于 嵌 入 式Linux 设 备 媒 体 库 基 于 PacketVideo 的 OpenCORE。 这 些 库 支 持 播 放 和 录 制 许 多流 行 的 音 频 和 视 频 格 式 , 以 及 静 态 图 像 文 件 , 包 括 MPEG4、 H.264、 MP3、 AAC、 AMR、 JPG、 PNG 界 面 管 理 管 理 访 问
17、 显 示 子 系 统 和 无 缝 组 合 多 个 应 用 程 序 的 二 维 和 三维 图 形 层 LibWebCore新 式 的 Web 浏 览 器 引 擎 ,驱 动 Android 浏 览 器 和 内 嵌 的web 视 图 SGL基 本 的 2D 图 形 引 擎 3D 库 基 于 OpenGL ES 1.0 APIs 的 实 现 。 库 使 用 硬 件 3D 加 速 或 包含 高 度 优 化 的 3D 软 件 光 栅 FreeType 位 图 和 矢 量 字 体 渲 染 SQLite 所 有 应 用 程 序 都 可 以 使 用 的 强 大 而 轻 量 级 的 关 系 数 据 库 引 擎 4
18、、 Application Framework通 过 提 供 开 放 的 开 发 平 台 , Android 使 开 发 者 能 够 编 制 极 其 丰 富 和 新 颖的 应 用 程 序 。 开 发 者 可 以 自 由 地 利 用 设 备 硬 件 优 势 、 访 问 位 置 信 息 、 运 行 后台 服 务 、 设 置 闹 钟 、 向 状 态 栏 添 加 通 知 等 等 , 很 多 很 多 。 开 发 者 可 以 完 全 使 用 核 心 应 用 程 序 所 使 用 的 框 架 APIs。 应 用 程 序 的 体系 结 构 旨 在 简 化 组 件 的 重 用 , 任 何 应 用 程 序 都 能
19、发 布 他 的 功 能 且 任 何 其 他 应用 程 序 可 以 使 用 这 些 功 能 ( 需 要 服 从 框 架 执 行 的 安 全 限 制 ) 。 这 一 机 制 允 许用 户 替 换 组 件 。 所 有 的 应 用 程 序 其 实 是 一 组 服 务 和 系 统 , 包 括 : 视 图 ( View) 丰 富 的 、 可 扩 展 的 视 图 集 合 , 可 用 于 构 建 一 个 应 用 程序 。 包 括 包 括 列 表 、 网 格 、 文 本 框 、 按 钮 , 甚 至 是 内 嵌 的 网 页 浏 览 器 内 容 提 供 者 ( Content Providers) 使 应 用 程
20、序 能 访 问 其 他 应 用 程序 ( 如 通 讯 录 ) 的 数 据 , 或 共 享 自 己 的 数 据 资 源 管 理 器 ( Resource Manager) 提 供 访 问 非 代 码 资 源 , 如 本 地 化字 符 串 、 图 形 和 布 局 文 件 通 知 管 理 器 ( Notification Manager) 使 所 有 的 应 用 程 序 能 够 在 状态 栏 显 示 自 定 义 警 告 活 动 管 理 器 ( Activity Manager) 管 理 应 用 程 序 生 命 周 期 ,提 供 通用 的 导 航 回 退 功 能 5、 ApplicationsAndr
21、oid 装 配 一 个 核 心 应 用 程 序 集 合 , 包 括 电 子 邮 件 客 户 端 、 SMS 程 序 、日 历 、 地 图 、 浏 览 器 、 联 系 人 和 其 他 设 置 。 所 有 应 用 程 序 都 是 用 Java 编 程语 言 写 的 。 更 加 丰 富 的 应 用 程 序 有 待 我 们 去 开 发 ! 二 、 P2P 系 统 的 架 构 图 如 下 :P2P 网络大概可划分为纯分散式 P2P 网络和混合式 P2P 网络两大类。纯分散式 P2P 网络,其拓扑如图 2 所示。网络中没有服务器,链状的节点之间构成一个分散式网络。通过基于对等网协议的客户端软件搜索网络中存
22、在的对等节点节点之间不必通过服务器,可直接建立连接。这种 P2P 网络模型优点在于允许用户设定自己的规则和建立自己的网络环境;为与 Internet 合作,提供近似的即插即用特性;不仅能够在 Internet 下有效地工作,而且对于LAN 也非常有用。但是,由于没有中心管理者,网络节点难以发现,不易管理且安全性较差。图 2 纯分散式 P2P 网络拓扑(2)混合式 P2P 网络混合式 P2P 网络其拓扑如图 3 所示。各节点之间可以直接建立连接,但网络的构建需要服务器,通过集中认证,建立索引机制。然而这里的服务器仅用于辅助对等节点之间建立连接,一旦连接成功,服务器不再起作用,对等节点之间直接进行
23、通信。这不同于 CS 模式中的服务器,也可以认为是弱化了服务器的作用。这种 P2P 网络模型和纯分散式 P2P 网络相比,易于发现网络节点、易于管理且安全性较好,但也有类似 CS 模式的缺陷,如容错性差等。目前P2P 技术的应用大多为这种模式。P2P 网络系统的优缺点:P2P 网络系统的开发面临着许多问题亟待解决,比如:在 P2P 共享网络中普遍存在侵犯版权问题;在一个无中心的环境中如何选择可靠的资源,即如何建立节点之间的信誉问题;P2P 带来的新型网络病毒传播模式防阻断问题;基于 P2P 的隐蔽通讯与隐私保护问题;P2P 网络服务健壮性与抗毁能力等。三、Windows7 的体系结构如下:1.
24、硬件抽象层(HAL)HAL=Hardware Abstraction LayerHAL 是一个核心态模块(HAL.DLL ) ,它为运行 Windows 2000/XP 的硬件平台提供低级接口。系 统 支 撑处 理 器系 统 支 持 进 程 服 务 进 程 用 户 程 序 环 境 子 系 统子 系 统 动 态 链 接 库用 户 态用 户 态核 心 态核 心 态硬 件 抽 象 层 ( HAL)执 行 体核 心 设 备 驱 动 程 序 图 形 引 擎2.设备驱动程序可加载的核心态模块 I/O 系统和相关硬件之间的接口 WDM=Windows Driver Model3.内核NTOSKRNL.EXE
25、 的下层(Microsoft Boot Up Kernel) 内核是对处理器体系结构的抽象,将执行体与处理器体系结构的差异相隔离,保证系统的可移植性。大多数代码用 C 编写,部分依赖于硬件体系结构的代码用汇编编写.内核实现了一组简单的对象,称为内核对象,以帮助内核控制中心处理并支持执行体对象的创建。控制对象包括异步过程调用(APC ,asynchronous procedure call)对象、延迟过程调用(DPC ,deferred procedure call)对象和几个由 I/O 系统使用的对象,例如中断对象。调度程序对象负责同步操作并影响线程调度。调度程序对象包括内核线程、互斥体(Mu
26、tex) 、事件( Event) 、内核事件对、信号量(Semaphore) 、定时器和可等待定时器 4.执行体提供的函数调用从用户态导出并且可以调用的函数。这些函数的接口在 NTDLL.DLL 中。通过 Win32API或一些其他的环境子系统可以对它们进行访问。从用户态导出并且可以调用的函数,但当前通过任何文档化的子系统函数都不能使用。在 Windows 2000 DDK 中已经导出并且文档化的核心态调用的函数。在核心态组件中调用但没有文档化的函数。例如在执行体内部使用的内部支持例程。组件内部的函数。 5.环境子系统将基本的执行体系统服务的某些子集以特定的形态展示给应用程序三种环境子系统:P
27、OSIX、OS/2 和 Win32(OS/2 只能用于 x86 系统)Windows 体系结构的优缺点:优点结构紧密,接口简单直接,系统效率高缺点模块间转接随便数据基本上作为全程量处理常常关中断,系统的并发性难以提高四 、 Web servers 的 体 系 结 构 如 下 :其中,绿色部分是先前已经定义好的并且广泛使用的传输层和网络层的标准:IP、HTTP、SMTP 等。而蓝色部分是目前开发的 Web 服务的相关标准协议,包括服务调用协议 SOAP、服务描述协议 WSDL 和服务发现/ 集成协议 UDDI,以及服务工作流描述语言WSFL。而橙色部分描述的是更高层的待开发的关于路由、可靠性以及
28、事务等方面的协议。黄色部分是各个协议层的公用机制,这些机制一般由外部的正交机制来完成。Web servers 的体系结构的优缺点:优点:使得开发人员可以只关注整个结构中的其中某一层,当然这里是在铺设界定好了各层接口的前提下;可以很容易的用新的实现来替换原有层次的实现,也就是各层间的服务透明性,层内部可以进行灵活的替换;可以降低层与层之间的依赖;有利于标准化,这里明确各层的职责范围,成为开发人员共同的背景语言,也利于各种技术接口的界定;利于各层逻辑的复用,Web 的开发将会针对之前的案例灵活的复用已有的单元。缺点:降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成,本来是数据可以直接通过 DataSource 穿透到表现层,现在必须通过层次包装上下传递,牺牲了暂时的灵活性,实际上还是赢的了长远的灵活性。有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码,这也是在设计时需要注意的,如何在早期的模型架构阶段考虑周全来避免。