摘要:介绍了云计算的概念、基本原理和体系结构,对当前主流的云计算平台进行详细叙述,发现这些平台在数据安全、隐私保护以及互操作性方面存在不足之处,最后得出结论并对拟解决的问题做出展望。
IBM、 Yahoo和Google等公司都在大力开发云计算(Cloud Computing)技术。那些寻找让电脑更聪明处理复杂计算人物的研究人员在云计算那里找到了答案,这里的云不是那些漂浮在天空中的云,而是指通过互联网实现超级计算机能力的计算。可以说云计算替代了网格计算,未来服务信息都不是存在于个人电脑上,而是存在网络中,云计算是开放标准,任何个人,公司都可以利用云计算来完成自己的应用或者科学研究。
云计算(Cloud Computing)是在极大规模上可扩展的信息技术能力向外部客户作为服务来提供的一种计算方式,是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。具体说来,云计算也是“普适计算”的一个具体的应用,从主机时代到个人计算机的过渡使得计算机进入寻常百姓家,因特网的出现极大地改变了计算模式,但是以计算机为中心的格局并未改变。云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。特点:资源池;按需服务;商业计算云计算的技术背景
云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算 (Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。 云和网格都被设计为可非常高效地进行水平扩展。二者都能经受得起个别元素或节点的失败。二者都按使用情况收费。然而网格通常处理批作业,并且有明确的起点和终点,而云服务却可以持续运行。此外,云扩大了可用资源的类型 (文件存储、数据库和 Web 服务),并且将适应范围延伸至 Web 和企业应用程序。与此同时,实用计算 (Utility Computing) 的概念成为 IT 设计和运营的一个焦点。就像Nick Carr 在其《大转换》(The
Big Switch) 一书中所指出的那样,计算服务基础设施开始与作为公用设施的电的发展相似。如果您可以在需要时以按需付费形式购买计算资源,那不是非常美妙吗?
就最终用户而言,云计算意味着没有硬件购置成本、没有需要管理的软件许可证或升级、不需要雇佣新的员工或咨询人员、不需要租赁设施、没有任何种类的基建投资,而且还没有隐性成本。只是一种用仪表测量出来的、根据使用情况支付的订购费或固定的订购费。只是用您所需的量,而且只按使用量付费。云计算实际上把实用模式 (Utility Model) 推到了新的水平。它是一种新颖和演升的实用计算形式,其中许多不同类型的资源 (硬件、软件、存储、通信等) 可即时合并和再合并成为客户所要求的特定能力或服务。从用于 HPC 项目的 CPU 周期到用于企业级备份的存储容量,再到用于软件开发的完整 IDE,云计算都可以实时提供几乎任何 IT能力。
在许多情况下,各种各样的机构和个人都喜欢作为一种服务来购买 “计算”,而且那些已经在建超级分布式数据中心的公司毫无例外地会选择作为一种服务来提供这种基础设施本质上来说,云计算是三件事情:第一是它关注于人们如何看待计算设备,如何将这些设备与环境有机结合,完成人们的各项任务;第二是它关注于为了完成这些任务如何设计、布置计算应用;第三是它关注环境以及如何使用新的技术和功能提高环境下服务的获取能力。人们可以通过传统的计算机、移动设备、甚至是在网络中的嵌入式芯片(这些具有计算能力的设备随着芯片技术的发展有着越来越小的趋势)来获取这些服务。
云计算的环境就是这样一些移动、固定设备和嵌入式芯片的组合在网络支持下为完成人们的计算任务而互相协作的计算环境。这三部分构成了以人为中心、面向任务的计算环境。这与传统的信息技术有着巨大的差异。总体概括说来,云计算有以下四个特点:
(1)数据在云端:不怕丢失,不必备份,可以任意点的恢复;
(2)软件在云端:不必下载自动升级;
(3)无所不在的计算:在任何时间,任意地点,任何设备登录后就可以进行计算服务;
(4)无限强大的云计算:具有无限空间的,无限速度。
云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。目前云计算有以下六种计算形式:
(1)SAAS(软件即服务)
这种类型的云计算通过浏览器把程序传给成千上万的用户。在用户眼中看来,这样会省去在服务器和软件授权上的开支;从供应商角度来看,这样只需要维持一个程序就够了,这样能够减少成本。Salesforce.com是迄今为止这类服务最为出名的公司。SAAS在人力资源管理程序和ERP中比较常用。 Google Apps和Zoho Office也是类似的服务;
(2)实用计算(Utility Computing)
这个主意很早就有了,但是知道最近才在Amazon.com、Sun、IBM和其它提供存储服务和虚拟服务器的公司中新生。这种云计算是为IT行业创造虚拟的数据中心使得其能够把内存、I/O设备、存储和计算能力集中起来成为一个虚拟的资源池来为整个网络提供服务;
(3)网络服务
同SAAS关系密切,网络服务提供者们能够提供API让开发者能够开发更多基于互联网的应用,而不是提供单机程序;
(4)平台即服务
另一种SAAS,这种形式的云计算把开发环境作为一种服务来提供。你可以使用中间商的设备来开发自己的程序并通过互联网和其服务器传到用户手中;
(5)MSP(管理服务提供商)
最古老的云计算运用之一。这种应用更多的是面向IT行业而不是终端用户,常用于邮件病毒扫描、程序监控等等;
(6)商业服务平台
SAAS和MSP的混合应用,该类云计算为用户和提供商之间的互动提供了一个平台。比如用户个人开支管理系统,能够根据用户的设置来管理其开支并协调其订购的各种服务。
(1)User interaction interface:用户交互界面,用户来请求服务云;
(2)Services catalog:服务目录,一个用户能够请求的所有服务目录; (3)System management:系统管理,用户管理计算机资源是否可用; (4)Provisioning tool:服务提供工具,能够用于处理请求的服务,需要部署服务配置;
(5)Monitoring and metering:监控和测度,用于对用户服务进行跟踪测量,提交给中心服务器;
(6)Servers:服务云,由系统管理,可能是虚拟服务或者真实的。
云计算是一个由并行的网格所组成巨大的服务云网络,通过虚拟化技术可以扩展服务云的计算能力。前端的用户界面准许用户通过服务目录来选择服务,在服务请求发送并验证通过之后,系统管理来找到正确的资源,接着呼叫服务提供工具来挖掘服务云中的资源。服务提供工具需要配置正确的服务栈或者Web应用。
云计算既描述了一种平台,又描述了一类应用。一个云计算平台能够根据需要动态地提供、配置、再配置和解除提供服务器。而云计算平台上则是那些经过扩展能够通过互联网访问的各种应用,这些应用运行在那些托管Web应用和Web服务的大型数据中心及功能强大的服务器上,构建了一个超大计算能力平台。
在云计算平台研发上,有IBM、Google、Yahoo、EMC、Amazon、Dell、Red Hat、CMU、Stanford、Berkeley、Washington、USC等公司和科研院所,参照云计算的体系结构,如图2所示云计算平台结构组成。下面对IBM、Google、Yahoo这三家当前主流的云计算平台做简要叙述。
IBM的云计算计划取名为蓝云(Blue Cloud),和其超级计算机蓝色基因的取名类似,IBM开发蓝云的目的,是帮助用户充分利用云计算,包括云应用的能力,通过基于SOA的Web服务,与现有的IT基础架构集成。蓝云将特别关注IT管理简化方面的突破性需求,以保证安全性、隐私性、可靠性、高使用率和高效率。另外,云计算主要针对现有的和即将出现的大规模数据密集型工作负载。如图3 IBM蓝云计算平台架构所示,IBM的蓝云计算平台由数据中心、IBM Tivoli配置管理器、IBM Tivoli Monitoring、IBM Websphere应用服务器、IBM DB2和虚拟组件构成。所有的请求都由Web 2.0组件来处理。然后
转发到Tivoli配置管理器,进行服务器的分配或解除分配。为了最大化平台的计算能力,如图4所示,通过XEN虚拟平台来扩展蓝云的计算能力。
Google公司所构建的Google集群系统(Cluster System)是目前最为成功的商用集群系统,它将超过15,000台普通的商用PC机进行组合,通过软件容错,并采用MapReduce技术将WEB搜索引擎并行化,从而实行了目前世界上最大最强的网页搜索引擎系统,其性能价格比能够达到同等性能但由相对处理器个数较少其价格昂贵的高端服务器构建的系统要高许多。
Google公司的云计算平台是在其搜索引擎平台上搭建的,如图5所示,Google通过Google文件系统(GFS)实现存储,然后采用BigTable技术来作为其数据库,实现结构化、半结构化数据存储,通过MapReduce(Google开发的编程模型,使用Sawzall语言)来处理和产生大量数据集的相关实现, 用于大规模数据集(大于1 TB) 的并行运算。使用这种技术实现的编程框架, 能够使程序员不需要任何并行以及分布式系统的经验, 就能够容易地使用大型分布式系统的资源。 通过Chubby技术,来进行云计算的互斥和同步,实现进程锁控制管理。
Yahoo公司,一直致力于云计算平台中同Google的竞争,其核心技术是Hadoop技术,是云计算的初级阶段的实现,是一个用于运行应用程序在大型集群的廉价硬件设备上的框架。
Hadoop为应用程序透明的提供了一组稳定/可靠的接口和数据运动。在Hadoop中实现了类似于Google MapReduce,它能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。此外,Hadoop还提供一个分布式文件系统用来在各个计算节点上存储数据,并提供了对数据读写的高吞吐率。由于应用了MapReduce和分布式文件系统使得Hadoop框架具有高容错性,它会自动处理失败节点。已经在具有600个节点的集群测试过Hadoop框架。这个分布式框架很有创造性,而且有极大的扩展性,微软致力于收购Yahoo的原因之一也是想借助Yahoo当前在云计算同Google的竞争能力来致力于云计算平台的研发。
云计算的一个关键吸引人之处是它对开发人员和最终用户隐藏了基础设施的复杂情况。他们不知道或不需要知道云的内部构造 — 他们只需关心云计算提
供他们所需的服务。但是,选择构建专用的云或本身作为一项业务的云的人士在提取和管理基本资源时具有关键的技术决策权。进行此选择时会仔细考察虚拟化的关键架构属性和基本技术。
虚拟化是适用于所有云架构的一种基础性设计技术。在云计算中,它主要指平台虚拟化,或者是从使用资源的人和应用程序对物理 IT 资源的抽象作用。虚拟化允许将服务器、存储设备和其他硬件视为一个资源池,而不是离散系统,这样就可以根据需要来分配这些资源。在云计算中,我们对像准虚拟化(Paravirtualization) 这样的技术很感兴趣,准虚拟化将单个服务器视为多个虚拟服务器和群集 (Clustering),这样就可以把多个服务器视为单个服务器。
作为一种物理资源封装 (Encapsulation) 手段,虚拟化技术解决数据中心经理面对的若干核心难题,并产生具体优势,其中包括:利用率更高 — 在虚拟化之前,企业数据中心的服务器和存储利用率一般平均不到 50% (事实上,通常利用率为 10% 到 15%)。通过虚拟化,可以把工作负载封装一并转移到空闲或使用不足的系统,这就意味着可以整合现有系统,因而可以延迟或避免购买更多服务器容量。资源整合 — 虚拟化使得整合多个 IT 资源成为可能。除服务器和存储整合之外,虚拟化提供一个整合系统架构、应用程序基础设施、数据和数据库、接口、网络、桌面系统甚至业务流程,因而可以节约成本和提高效率。节省电能/成本 — 运行企业级数据中心所需的电能不再无限制地使用,而成本呈螺旋式上升趋势。在服务器硬件上每花一美元,就会在电费上增加一美元 (包括服务器运行和散热方面的成本)。利用虚拟化进行整合使得降低总能耗和节约大量资金成为可能。节约空间 — 服务器膨胀仍然是多数企业数据中心面临的一个严重问题,可扩大数据中心并不总是一个良好的选择,因为每增大一平方英尺空间,就会平均增加数千美元建筑成本。虚拟化通过把多个虚拟系统整合到较少物理系统上,可以缓解空间压力。
灾难恢复 (Disaster recovery) /业务连续 (Business Continuity) — 虚拟化可提高总体服务级利用率,并提供灾难恢复解决方案新选项。降低经营成本 — 一般企业在新基础设施上每花费一美元,就得花费 8 美元进行维护工作。虚拟化可以改变服务器与管理员之比,减轻总体管理工作负荷,并降低总体经营成本。
在云架构中使用操作系统级虚拟化或分区技术 (如 LPAR、VPAR、NPAR、动态系统域等) 有助于解决一些核心的安全、隐私和管理问题;如果不解决这些问题,云计算的采用就会受到阻碍。例如,操作系统虚拟化 (如 Solaris? Containers 所提供的操作系统虚拟化) 允许在共享硬件资源的同时维持 “一台服务器一个应用程序” 的部署模式。Solaris Containers 利用软件定义的界限隔离应用程序,并且允许在单个 Solaris OS 实例中创建多个专用执行环境。每个环境都有自己的身份,独立于基本硬件,这样各个环境就像运行在其自己的系统之上一样,因而使整合变得简单、安全和可靠。这就可以降低管理费用,
并在减轻管理多个操作系统的复杂性的同时提高利用率。
平台虚拟化允许任意操作系统以及结果产生的应用程序环境运行于特定系统之上。此系统虚拟化存在两种基本模式: 完整虚拟化 (或全面模拟基本硬件) 和准虚拟化 (提供基本硬件的接近相似的模式)。这两种虚拟化模式是作为类型 1 管理程序实施的,这些管理程序直接在硬件上运行,而类型 2 管理程序则运行于传统操作系统顶端。
每个顶端虚拟化供应商都提供两种模式的变体。重要的是认识到任何系统虚拟化模式都存在设计和性能取舍问题。一般来说,从基本硬件制作的操作系统越抽象,可以访问的特定硬件的功能越少。增强操作系统抽象性同时会增加性能降低和受限的可能性。
负载均衡技术已成为云计算领域的一个热门话题,因为随着云内的物理系统和虚拟系统的升级,管理为提供服务而执行的工作负载的复杂性也会增加。负载均衡器通过虚拟 IP 地址把多个服务器和服务组合起来。他们根据资源情况调度服务情况,并在节点失败时自动进行故障转移。尽管硬件均衡器在性能上优于基于软件的均衡器,其灵活性始终受到限制。工程师要么以编写通过次优用户界面与硬件进行交互的软件而告终,要么使用大量计算机来解决问题。
云计算网络方面的重大挑战不仅是把具体虚拟网络接口预配置到特定虚拟环境,而且还面临云计算基础设施提供一个更复杂虚拟专用数据中心的日益增长的需要,虚拟专用数据中心配置一组不同的系统角色以及这些角色之间的逻辑互连接。
应用程序虚拟化云内还存在一个与“容器”的软件角。云中实施的 Web 容器技术对开发人员生产率和灵活性影响很大。
Web 容器是管理 Servlet、JavaServer Page (JSP) 文件和其它 Web 层组件的应用序服务器的组成部分。但并非所有 Web 容器技术都在创造之初就是均等的。例如,ApacheTomcat 就是一项流行的开放源 Web 容器技术,但他对于希望超越 Web 层应用程序的开发人员来说具有若干局限性。如果一个应用程序需要使用持久性、群集、故障转移、信息收发或 Enterprise Java
Beans (EJBTM),就必须将这些功能逐个添加到 Tomcat,而 GlassFish? Project 提供具有上述所有功能的一整套 Java EE 容器。
现在,多数云计算技术都注重平台虚拟化,而且开发人员选择操作系统和开发平台。但是越来越多的公用云当然还有专用云将会提供更高水平的开发环境编程抽象。随着时间的推移,我们可以预期达到以下抽象水平:随着越来越多功能渗透到平台之中,开发人员所连接的抽象水平也会逐步提高。
随着云计算提供的基本硬件抽象性的不断增强,必须进行一系列关于如何在云基础设施上部署软件和应用程序的决策。云计算模式具有极大的灵活性,足以适应各个开发和部署阶段的各种类型和规模的应用程序。云架构可以作为像 ERP 和 CRM 这样的单一专用应用程序的交付平台、开放源软件上构建的新型轻便、动态定型的应用程序的开发和部署平台,或者 IDE 和测试资源的来源。
软件打包对软件组建、数据、服务器和存储池以及其他云资源进行的基于软件的打包使得高效分配、重新利用和管理资源成为可能。
打包系统实际上是一种软件交付机制,它简化并加快安装从操作系统到应用程序再到最终用户数据的一切。例如,用于 OpenSolaris? OS 的映像包管理系统 (IPS) 允许创建映像,并在映像中安装、搜索、更新和管理软件包。IPS 还可以用来创建自定义包和存储库,以及把包发布到存储库并进行管理。云操作员和数据中心越来越多地抛弃在每个服务器上安装系统软件的做法,转而选择在服务器庄园上部署金像 (GoldenImage)。无论如何,必须在系统资源池上提供基本软件配置。
一种基于映像的相似部署模式正在日益成为在虚拟资源池上部署应用程序开发有效负载的主要机制。机器映像包含针对用户的应用程序、库、数据和关联
配置设置,并驻留在云内。也许最著名的示例是 Xen 映像。这种部署模式是 Amazon 机器映像 (AMI)的基础,而 AMI 是根据多种内核构建的。您可以在一系列公用 AMI (预配置、模板化映像) 中进行选择,也可以构建自己的自定义/专用 AMI。
多数 AMI 建立在某种形式的 Linux 之上,例如,Fedora 或 Ubuntu。它们都容易修改和共享,并由 Amazon 提供工具。付费 AMI 可由 ISV 创建,并存储在 Amazon 简单存储服务 (S3) 上。Amazon 机器映像可用于 OpenSolaris (32 位) 和 Solaris Express (32 位和 64位) 操作系统。
互联网经历了三个时代的变迁。第一个时代是Web1.0的时代,大家通过媒体的报道和文章的撰写来了解资讯和新闻。第二个时代是Web2.0的时代,我们看到的分享的互联网的时代,也就是说个人可以经过博客,经过BBS等其他的方式都可以发表他们的意见,引起了很大的轰动,也造成了很多人与人之间、网友与网友之间的互动。那么互联网的第三个时代Web3.0,应该是Web服务无处不在,普适计算的时代,而云计算正式互联网第三个时代的开始,让网络从一个文字的,社区性的一个平台,变成一个可以在任意时间、任意地点提供无限应用的,汇集众多服务的互联网时代。本文通过上面对于云计算概念、原理、体系结构的叙述,并对当前主流云计算的平台的分析比较,发现了当前云计算平台也面临着诸多挑战:
(1)数据安全性:用户数据的安全问题被认为是计算平台安全问题,云计算的一个重要问题是计算平台的安全问题。计算平台安全问题一般来讲要比网络安全复杂些。目前实现方案要用到一些不同计算机学科及实践的方法,是否可以采用可信计算(Trusted Computing)加虚拟化(Virtualization)技术来实现计算平台安全问题,这里云存储安全也需要对数据的安全性、容错性、连续数据保护等方面关注;
(2)个人隐私的保护:在云计算平台中,每个人都处在开放的环境中,在云计算平台中提供或者接受服务,这样很容易使得个人隐私缺乏必要的关注,在云计算中,隐私的保护也是一个挑战;
(3)服务互操作性:当前云计算对于服务的互操作性支持不够,这对于用户进行跨平台的服务,同平台不同服务之间的服务存在障碍,这也是将来云计算研究的挑战。
云计算将超级计算能力推向了大众,相信不久的将来,云计算就如天空中的朵朵白云一样,它无所不在,同时又让人无法察觉,为人们的生活提供着无限便利。
开放式存储使得云计算能够以比传统的私有式存储较低成本和较大规模进行。开放式存储就是使用行业标准的组件 (包括作为存储控制器和闪存的 x64/x86 服务器),使低成本、高容量磁盘驱动器提速,并利用企业级开放源软件创造出低价、高容量、高度可扩展的架构。
开放式存储为数据管理创造您的架构模式。利用行业标准硬件上运行的开放源存储栈 (包括 x64 和 SPARC 系统),我们能够使数据更接近于处理器。这样,通过消除在网络上移动数据的必要,简化了数据密集的计算。适合此模式的设备或服务器包括 SunFire X4540 服务器,它们提供 12 到 48-TB 的存储配置,而且所有这一切都包含在一个带有四核 x64 处理器的 4RU 平台中。共享 JBOD 受益于开放式存储栈,并实现高度可用的存储架构。开放式存储使得人们能够用行业标准的组件扩建企业级架构。
客户、开发人员和消费者可以下载此开放式存储栈,并构建自己的存储设备。不过,那些愿意购买完全集成化的设备的客户可以选择 Sun Storage 7000 统一存储系统系列产品。这些系统遵循开放式存储模式,采用行业标准的服务器构建而成,利用行业标准的 SATA II 驱动器的容量优势,并把基于 Flash 的 SSD 集成到一个混合存储模式中,所有这一切都是采用一个简单易用且精致的用户界面进行的。通过利用通用硬件和软件,一种新的系统成为可能。开放式存储还提供一种新颖而独特的商业模式。像快照、复制和压缩这样的功能都包含在内,而且不会给数据服务增加成本。此开放源栈还包括像 NFS、CIFS、iSCSI 和 FC这样的协议。开放式存储架构得益于信息技术行业的创新。由于这种架构建立在行业标准的组件之上,因而能够更快地适应新型处理器和新式互连接 (例如,1GigE 和 10GigE),以及采用像基于 Flash 的 SSD 的新技术。
Sun 公司具有突破性意义的 Sun Fire X4540 系列数据服务器正在重新定义
存储密度。通过集成最先进的服务器和存储技术,Sun Fire X4500 服务器可提供四路 x64 服务器的非凡性能,以及在一个 4U 机架空间中提供高达 48 TB 的存储容量。此系统还提供令人难以置信的高数据吞吐量 (大约是竞争性系统的三倍),所需成本只有传统解决方案的一半左右。
参考文献
[1]
[2]
[3]
[4]
[5]
C/S与B/S结合的软件体系结构
摘 要 无论是C/S模式的体系结构还是B/S的体系结构,都无法满足当前越来越复杂的软件设计与开发。我们不妨将C/S与B/S这两种结构结合起来,充分发挥各自的优势,使开发出来的软件具备优良的性能。 【关键词】C/S、B/S、C/S结合B/S 1 C/S体系结构 随着计算机应用和计算机网络的发展,Client/Server模式(客户机/服务器模式,简称C/S模式)逐渐流行起来,用来管理各种各样的信息资源。早期的C/S模式是两层结构,第一层结构在客户机的系统上结合了业务逻辑和形式逻辑,前端的可执行代码由菜单、按钮、SQL语句、GUI窗体流和数据验证等元素组成;第二层结构通过计算机网络结合数据库(如Oracle、Sybase、Informix等数据库系统)服务器,后端的数据内容包括数据表、触发器、安全策略、引用一致性定义等元素。它将多个网络应用的用户交互界面处理程序与数据库的访问及处理分离,客户端与服务器之间通过消息传递机制来进行对话,先由客户端先将请求发送给服务器,服务器接收到请求后进行相应的,再将处理后的信息传递给客户端。C/S模式的结构图如图1所示。 C/S结构的优点主要体现在以下几个方面: (1)C/S结构合理地将任务分配到Client(客户)端和Server(服务器)端,充分地利用两端硬件环境的优势,减少了整个软件系统的通讯开销。 (2)C/S结构具有很强的交互性,在客户端的电脑上有一套完成的应用程序,可以在子程序中自由切换,在线帮助和出错提示也有强大的功能。 (3)C/S结构采用点对点的结构,采用局域网中安全性较好的协议(如:NetBEUI协议等),即保证了数据的完整性约束,又保证了数据的安全。 (4)C/S结构到目前为止已经非常成熟,有大量的开发工具支持。 (5)C/S结构要求各种应用必须通过前羰的应用程序完成,系统安全可靠。 随着计算机网络规模的不断扩大,应用程序复杂程度不断提高,C/S模式的缺点也逐渐显露出来,这些缺点具体体现在以下几个方面: (1)一但客户端与服务器建立的连接后,这个连接就会保持,直到客户端主动放弃时连接才被销毁,这样就会造成可建立的服务数目有限,进而使用户数目受到限制。 (2)客户端即要完成用户数据的交互及表示,又要处理应用程序与数据的交互,用户的界面必须要与应用逻辑在统一平台上,这样就会造成软件系统的可伸缩性差,对数据的管理不够灵活,软件系统的维护和升级费用高。 (3)客户端上的程序的代码重用机会少,客户端需要处理数据,如果这些逻辑需求发生变化,则每上客户端上的程序都要进行相应的修改。 (4)客户端上的应用程序庞大,软件需要特定的开发平台决定,造成了客户端软件系统跨平台不理想。 C/S结构一般建立在局域网中,再通过特定的服务器提供与英特网的连接和数据交换服务,面向固定的用户群,有较强的控制能力,高度机密的软件系统采用C/S结构比较合适。 2 B/S体系结构 随着IT产业的迅速发展,C/S体系结构暴露出了许多不足,客户端程序过于庞大、客户需求千变万化等问题尤为突出。在止其间,Internet技术不断发展,基于Web(HTTP、HTML)的发布和检索技术,导致了软件体系结构从C/S结构向灵活的多层分布式结构演化,这种新型的多层分布式结构就是B/S(Browser/Server,即浏览器/服务器)结构。 B/S结构由Browser(浏览器)和Server(服务器,主要是Web服务器)组成。客户机与服务器通常都不在同一个局域网中,数据库服务器与应用服务器往往在高速局域网,应用程序和数据都放在服务器上,浏览器通过下载服务器上的程序得到动态扩展。B/S结构是三层体系结构,用户首先通过浏览器(如IE、Firefox等)向网络上的服务器(如Web服务器)发出请求,服务器如果接收到了浏览器的请求,就会对这些请求进行处理(如数据的加工、结果的返回以及动态网页的生成等工作都由Web服务器完成),再将用户所需要的信息传送到浏览器上。B/S结构的运行模式,简化了客户机的工作,客户机上只需要配置少量的相关软件,更多的工作负担是由服务器来承受,这样就减轻了客户机的压力,更适合千变万化的客户需求。B/S结构图2所示: B/S结构的优点主要体现在以下几个方面: (1)B/S结构容易实现跨平台工作,各种平台上的用户均可通过浏览器访问及获取所需的信息。 (2)在B/S结构中,用户只需在客户机安装浏览器就可以有交互界面,系统的升级和维护工作大部分都在服务器上进行,在客户端上极少需要甚至不需要进行改动,这样大大降低了开发及维护成本。 (3)浏览器在下Web服务器交互时采用的协议主要是HTTP协议,该协议是无连接协议,浏览器只在有请求时才与Web服务器连接,当浏览器获取到所需结果后马上会结束连接,这样服务器可以同时为几千、几万甚至更大数量的并发请求服务。 (4)当应用服务器无法满足客户的需求量,可以通过增加应用服务器的数目,由多台应用服务器同时为终端客户服务,实现负载均衡,消除数据的瓶颈。 (5)因为B/S结构中,服务器接受用户请求后会将结果一次返回,B/S三层结构消耗的时间大大小于C/S二层结构消耗的时间。 B/S体系结构经过多年的应用,也暴露出许多不足的地方,具体表现在以下几个方面: (1)B/S体系结构中虽然可以用Java、ActiveX等技术开发应用脚本,但如果是开发复杂的应用程序,这些技术相对没有C/S的一系列开发工具成熟。 (2)客户端的浏览器大多是为了进行Web浏览而设计开发的,当B/S体系结构应用于非Web系统时,许多功能实现起来比较困难。 (3)数据库的客户端实际上是Web服务器成为对数据库的唯一的客户,所有对数据库的连接及信息传递都是通过Web服务器来实现,这样Web服务器就要同时处理客户的请求以及数据库的连接,当访问量大时,Web服务器端负载过重。 (4)对于管理者来说,采用浏览器方式进行系统的维护和管理是非常不方便与不安全的。 (5)由于源代码开放性,使得商业规则很容易暴露,而商业规则对应用程序来说则是非常重要的。 3 C/S与B/S混合的体系结构 通过前面的分析,可知C/S体系结构并非一无是处,B/S体系结构也并不是十全十美,如果将这两种体系结构结合起来,就能使它们的优劣互补,形成C/S与B/S混合的软件体系结构。在这种体系结构中,一些能够满足大多数客户请求的信息采用B/S结构,这些信息用Web服务器进行处理,如数据库管理维护这些交互性强、安全性要求高、数据查询灵活、数据处理量大,管理员之类的少数人使用的功能应用采用C/S结构。C/S与B/S混合的软件体系结构图3所示。 以学生管理系统为例,教学管理系统主要分为系统后台管理模块、学籍信息管理模块、成绩管理模块、信息发布模块、查询模块等子系统组成。系统的硬件平台主要有:客户机、Web服务器及校园网等资源;系统的软件平台主要有: (1)C/S结构模块部分:选用C#开发的客户端及SQL Server数据库管理工具。 (2)B/S结构模块部分:选用IE浏览器的客户机、选用IIS及ASP.Net开发的Web服务器及选用SQL Server数据库管理工具。工作时,客户机的浏览器向Web服务器发出请求,Web服务器将请求交给IIS服务器,IIS接受请求并调用ASP程序,ASP程序通过ADO接口与SQL Server数据库连接并进行数据库操作,数据库将处理后的数据返回给Web服务器,Web服务器通过ASP程序处理后再将操作结果以HTML文本的形式发送给客户机的浏览器。对系统进行管理时,客户机通过C/S结构中的ODBC接口向SQL服务器发送SQL语句请求,SQL数据库服务器根据SQL语句生成所需的数据结果集,并将这些结果信息传递给客户机相关的C#程序,并生成管理者所需的结果界面。 在C/S与B/S混合的软件体系结构中,信息发布采用了B/S结构,这样保证了客户机软件简单通用,客户机上的软件可以统一采用WWW浏览器,由于WWW浏览器有固定的标准,因此其可以在所有的平台上完成相应的工作;数据库管理采用了C/S结构,这部分只涉及到数据更新与系统维护等特定的工作,可在专用的客户机上安装相关的客户端软件,并且在客户机上可以构造非常复杂的应用程序,这样只需要维护少量的客户端,解决了完全采用C/S结构带来的客户端维护及更新工作量大等缺点,从安全角度讲,达到封装源代码,保护数据的目的。。这样便充分发挥了C/S与B/S体系结构的优势,进而弥补了二者不足,即充分考虑用户的方便与利益,又保证了系统管理者查询、维护与更新操作的简单灵活。 如果原有的系统采用的是C/S体系结构,我们也可以非常容易地升级到这种C/S与B/S混合的软件体系结构,只需要开发用于发布的WWW客户机界面,保留原有C/S结构的某些子系统用于管理与维护。 4 结束语 C/S与B/S混合的软件体系结构,充分发挥了两种模式各自的优点,保证了系统的可实现性和安全性,简化了客户端,即满足了不同用户的需求,又使系统便于维护。在软件开发中,只要找到C/S结构与B/S结构的契合点,就能使软件系统在具备优良的性能。 参考文献 [1]王丽平.基于C/S与B/S混合体系结构的教务管理系统设计[J];科技情报开发与经济,2008. [2]王伟伟.软件体系结构模式探析[J].科技传播,2011. [3]黄沛.基于B/S体系结构以及ActiveX技术的计算机应用系统开发[J].技术与市场,2008. [4]李云云.浅析B/S和C/S体系结构[J].科学之友,2011. [5]宋涛.CS体系的传统二层结构与流行三层结构的比较分析[J].硅谷,2012. 作者简介 陈俊斌,男,大学本科学历,学士学位。现为广东省高级技工学校计算机科学与技术讲师。 作者单位 广东省高级技工学校 广东省惠州市 516100
软件体系结构试题与解答
模拟试题(一)
第一题:名词解释 (每题5分,共20分)
1. 软件体系结构(Software Architecture)
2. 软件体系结构风格(Software Architecture Style)
3. 软件质量属性
4. 质量属性驱动的设计方法(ADD)
第二题: 单项选择 (每题4分,共20分)
1. 下面哪种策略能够用来满足可测试性(Testability)的质量属性? A) 心跳(Heartbeat) B) 模块的抽象化(Generalize the module)
C) 记录/重放 D) 授权用户
2. “系统在提供服务给合法用户的同时抵制未授权使用的能力”这是哪种质量属性关心的
问题,
A) 性能 B) 可测试性
C) 可移植性 D) 安全性
3. 下面哪种视图不属于软件体系结构中定义的“4+1”视图? A) 物理视图 B) 设计视图
C) 场景视图 D) 开发视图
4. 下面的图是什么图,
A) 序列图 B) 组件图
C) 对象图 D) 用例图
5. 下面的图形描述了何种体系结构风格,
A) C/S B) 有序批处理 C) 主程序/子程序 D) 面向对象
第三题:简答(每题5分,共20分)
1. 请描述管道-过滤器体系结构风格的特点并给出适合使用这种风格的一个应用场景。
2. 请简要说明黑板风格的定义。
3. 请简要说明体系结构权衡分析方法和该方法的特点。
4. 什么是“4+1视图”,分别给出每个视图的名称和主要关注点。
软件体系结构分析:效用树(20分)
某公司要开发一个在线交易系统,该系统主要关注性能、可更改性、可用性和安全这五个质量属性。负责开发的团队分析了各个质量属性,设计了一个参考的体系结构。该团队欲采用效用树技术对体系结构进行评估,下面是相关的场景:
, 站点1断电后,能够在3秒内完成流量到站点2的迁移;
, 信用卡交易需要有99.999% 的安全性;
, 用户的授权数据库需要在 99.999% 的情况下保证可用;
, 视频必须实时传输;
, 能够在4人-周内完成对Web用户界面的改变网络失效和恢复必须在1.5分钟内
完成;
, 减少对客户数据库访问的时间至200毫秒以内;
请根据以上描述,构建相应的效用树
2. 软件体系结构构建(20分)
Travelling.com是一家新兴的旅游服务提供商,能够在线为用户提供在线的实时旅游信息服务,包括路线信息,景点介绍,公交线路查询等,其系统的基本的功能如下所示:
, 用户可以在网站上注册帐号和密码,成为该站点的客户;
, 客户可以使用浏览器访问网上的站点,搜索并返回感兴趣的景点信息;
, 该公司需要集成来自旅游线路提供商的数据库,提供旅游线路支持;
, 需要集成来自景点的信息提供商的数据库,提供景点信息;
, 需要集成公交公司的应用系统,提供公交信息查询能力。
请首先给出一个基于Java EE平台的企业级分布式系统体系结构图,并根据描述给出各个需求应该分别在体系结构中的哪些部分给予实现。
答案
第一题:名词解释 (每题5分,共20分)
1. 软件体系结构(Software Architecture)
软件体系结构以组件和组件交互的方式定义系统,说明需求与成品系统之间的对应
关系,描述系统级别的可伸缩性、能力、吞吐量、一致性和兼容性等属性。 软件体
系结构由组件、连接件和属性组成。
2. 软件体系结构风格(Software Architecture Style)
软件体系结构风格
, 描述一类体系结构
, 独立于实际问题,强调了软件系统中通用的组织结构
, 在实践中被多次设计、应用
, 是若干设计思想的综合
, 具有已经被熟知的特性,并且可以复用
3. 体系结构折衷分析方法(ATAM)
体系结构折衷分析(ATAM)是一种通过业务驱动,质量属性、情景等方面进行软
件体系结构评估的方法。
4. 质量属性驱动的设计方法(ADD)
质量属性驱动的设计方法 (ADD) 是一个逐步的方法,用来系统化地为一个系统生
成第一个体系结构设计。
第二题 选择题
1. C
2. D
3. B
4. D
5. B
第三题:简答(每题5分,共20分)
1. 请描述管道-过滤器体系结构风格的特点并给出适合使用这种风格的一个应用场景。
管道-过滤器风格将整个系统的输入输出特性理解为各个过滤器功能的简单合成。支持功能模块的重用:任意两个过滤器只要相互间所传输的数据格式上达成一致,就可以连接在一起系统容易维护和扩展:新的过滤器容易加入到系统中,旧的过滤器也可被改进的过滤器替换。使用该风格的一个应用场景:Unix Shell
2. 请简要说明黑板风格的定义。
黑板结构是一个六至八层的层次结构,每一层都抽象了与之相邻的较低一层的信息。
知识源代表整个问题求解中的独立的子任务。
每个知识源被组织成一个条件部分和一个动作部分,条件部分规定什么时候知识源可用,动作部分负责处理相关的黑板元素并产生新的元素。
控制构件作为黑板的监控程序和调度程序;通常将黑板知识源应用到黑板中各种元素具有优先次序,调度程序负责监控黑板和计算的优先次序。
3. 请简要说明体系结构权衡分析方法和该方法的特点。
体系结构权衡分析(ATAM)就是一种进行评估的方法,ATAM是一种帮助参与者(stakeholder)提出正确的问题来发现潜在的有问题的体系结构设计决定的方法。发现的风险能够使得人员关注迁移活动: 比如:进一步的设计、进一步的分析、原型化。可以显示地识别和文档化权衡。ATAM的目标不是提供精确的分析...目标是发现体系结构决定中的风险。找到体系结构决定和系统属性预测之间的关系。
4. 什么是“4+1视图”,分别给出每个视图的名称和主要关注点。
“4+1”的视图模型是Kruchten于1995年提出的用于描述软件体系结构的方式,
主要用5个不同的视图:逻辑视图、进程视图、物理视图、开发视图和场景视图来
描述软件体系结构。 每一个视图只关心系统的一个侧面,5个视图结合在一起才能
反映系统的软件体系结构的全部内容
第四题:体系结构分析和设计 (每题20分,共40 分)
) 1. 软件体系结构分析:效用树(20分
在回答本题时,核心是找出各种属性属于那种质量属性,并用树状结构给出相应的描述。
2. 软件体系结构构建(20分)
Java EE开发的系统是一个分层的分布式应用系统,可以看作一个三层或四层的层次化系统。其主要的体系结构如下所示:
自上而下依次是:
, 客户层:主要用于处理用户交互,其中需求:
, 用户可以在网站上注册帐号和密码,成为该站点的客户;
, 客户可以使用浏览器访问网上的站点,搜索并返回感兴趣的景点信息;
的功能在客户层实现;
, Web层,主要处理客户端的一些动作,控制页面跳转等,前面两个需求在Web层也均
有实现;
, 业务层:主要处理实际的业务逻辑;
, 数据与企业信息集成层,这一层主要处理数据集成以及与现有系统的集成,其中需求
, 该公司需要集成来自旅游线路提供商的数据库,提供旅游线路支持;
, 需要集成来自景点的信息提供商的数据库,提供景点信息;
, 需要集成公交公司的应用系统,提供公交信息查询能力。
对应的功能在数据与信息系统集成层实现。
下面是励志经典语录!! 不需要的朋友可以下载后编辑删除!!! 谢谢
1、爱,不只是对视,而是往一个方向看去;爱,不是往一个方向看去,而是想
法也是一致。2、一直相信,阴影也是可以很美的,因为那是光的赐予。 3、开在
尘埃里的花,更灿烂。伫立在尘埃里微笑,更从容。
4、一个人临死的时候,天使和恶魔会在你身旁打牌,你所做过的善亊,就是天
使手中的牌。
5、生活不能等别人来安排,要自已去争取和奋斗;而不论其结果是喜是悲,但
可以慰藉的是,你总不枉在这世界上活了一场。
6、你失败过很多次,虽然你可能不记得。你第一次尝试走路,你摔倒了。你第一次张嘴说话,你说错了。你第一次游泳,你快淹死了。你第一次投篮,你没有投进。不要担心失败;需要担心的是如果你畏惧失败,你将丧失机会。
7、挫折会来,也会过去,热泪会流下,也会收起,没有什么可以让你气馁的。
8、只有在一个人旅行时,才听得到自己的声音。它会告诉你,这世界比想象中的宽阔。你的人生不会没有出口,你会发现自己有一双翅膀,不必经过任何人同意就能飞。 9、不同的人,为你做同一件亊,你会感到天壤之别。因为我们在意的,往往不是人做的亊,而只是做亊的人。
10、曾经在某一个瞬间,我们以为自己长大了,有一天,我们终二发现,长大的含义除了欲望还有勇气和坚强,以及某种必须的牺牲。
11、不其相见,不如怀念,不其攀缘,不如随缘。人生不过是一场旅行,你路过我,我路过你,然后,各自修行,各自向前。
12、如何遇见不要紧,要紧的是,如何告别。有些人,没有在一起,也好。当回忆时,心里仍旧生出温暖,那终究是一场“善缘”。
13、人在最好的时光,总会犯上一些痴,一些傻。哪一段青春不荒唐!哪一场爱情不受伤!别强调你的情绪吧,你看我们这些人,哪个不是裹挟着隐痛四处逃亡!
14、人生中大多数的痛苦不是别人给你造成的,而是自己跟自己过不去。实际上,每个人都会遭受到两支箭的攻击:第一支箭是外界射向你的,它就是我们经常
遇到的困难和挫折本身;第事支箭是自己射向自己的,它就是因困难和挫折而产生的负面情绪。
15、每个你认为幸福的回忆,其实都带着伤。
16、生活会给你所想要的一切,只要你不断的向它要,只要你在要的时候讲
得清楚。
17、偶然的成功比失败更可怕,不去冒险有时比冒险更危险。
华罗庚说过的名言名句
1、天才在于积累,聪明在于勤奋。
2、时间是由分秒积成的,善于利用零星时间的人,才会做出更大的成绩来。
3、人家帮我,永志不忘,我帮人家,莫记心上。
4、科学是实事求是的学问,来不得半点虚假。
5、日累月积见功勋,山穷水尽惜寸阴。
6、自学,不怕起点低,就怕不到底。
7、抓住自己最有兴趣的东西,由浅入深,循序渐进地学……
8、在寻求真理的长河中,唯有学习,不断地学习,勤奋地学习,有创造性地学习,才能越重山跨峻岭。
9、独立思考能力,对于从事科学研究或其他任何工作,都是十分必要的。在历史上,任何科学上的重大发明创造,都是由于发明者充分发挥了这种独创精神。
10、凡是较有成就的科学工作者,毫无例外地都是利用时间的能手,也都是决心在大量时间中投入大量劳动的人。
11、一个人的生命是有限的、短促的,如果我们要把短短的生活过程使用得更有效力,我们最好是把自己的生命看成是前人生命的延续,是现在共同生命的一部分,同时也是后人生命的开端。
12、任何一个人,都要必须养成自学的习惯,即使是今天在学校的学生,也要养成自学的习惯,因为迟早总要离开学校的~自学,就是一种独立学习,独立思考的能力。行路,还是要靠行路人自己。
13、科学上没有平坦的大道,真理长河中有无数礁石险滩。只有不畏攀登的采药者,只有不怕巨浪的弄潮儿,才能登上高峰采得仙草,深入水底觅得骊珠。
14、天才是不足恃的,聪明是不可靠的,要想顺手拣来的伟大科学发明是不可想象的。
15、科学成就是由一点一滴积累起来的,惟有长期的积聚才能由点滴汇成大海。摘自:励志名言网 www.geyanw.com
16、科学是老老实实的学问,不可能靠运气来创造发明,对一个问题的本质不了解,就是碰上机会也是枉然。入宝山而空手回,原因在此。
17、壮士临阵决死哪管些许伤痕,向千年老魔作战,为百代新风斗争。慷慨掷此身。
18、我们最好把自己的生命看做前人生命的延续,是现在共同生命的一部分,同时也后人生命的开端。如此延续下去,科学就会一天比一天灿烂,社会就会一天比一天更美好。
19、我想,人有两个肩膀,应该同时发挥作用,我要用一个肩挑着送货上门的担子,把科学知识和科学工具送到工人师傅手里;另一个肩膀可以作人梯,让青年们踏着攀登科学的更高一层山峰。
20、时间是由分秒积成的,善于利用零星时间的人,才会做出更大的成绩来。
21、学习和研究好比爬梯子,要一步一步地往上爬,企图一脚跨上四五步,平地登天,那就必须会摔跤了。
22、面对悬崖峭壁,一百年也看不出一条缝来,但用斧凿,得进一寸进一寸,得进一尺进一尺,不断积累,飞跃必来,突破随之。
23、科学的灵感,决不是坐等可以等来的。如果说,科学上的发现有什么偶然的机遇的话,那么这种“偶然的机遇”只能给那些学有素养的人,给那些善于独立思考的人,给那些具有锲而不舍的精神的人,而不会给懒汉。
关于积累的名言警句
1、冰冻三尺,非一日之寒。
2、水滴石穿,绳锯木断。
3、积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。
4、故不积跬步,无以至千里;不积小流,无以成江海。——《荀子》
5、骐骥一跃,不能十步;驽马十驾,功在不舍。——《荀子》
6、锲而舍之,朽木不折;锲而不舍,金石可镂。——《荀子》
7、千里之堤,溃于蚁穴。
8、祸患常积于忽微,而智勇多困于所溺。——欧阳修
9、读书破万卷,下笔如有神。——杜甫
10、外物之味,久则可厌;读书之味,愈久愈深。——程颐
11、熟读唐诗三百首,不会作诗也会吟。——孙洙《唐诗三百首序》
12、聪明在于勤奋,天才在于积累。——华罗庚
13、任何业绩的质变都来自于量变的积累。
14、成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。
15、再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。
16、“难”也是如此,面对悬崖峭壁,一百年也看不出一条缝来,但用斧凿,能进一寸进一寸,
得进一尺进一尺,不断积累,飞跃必来,突破随之。——华罗庚
计算机软件体系结构实验三
计算机软件体系结构
实验报告
2013-2014学年第2学期
班 级: 11计科本1
学 号: 2011081109
姓 名: 陈彦广
指导教师: 梁海丽
数学与信息技术学院
实验三 软件体系结构描述
一、 实验目的
1.理解软件体系结构描述框架标准;
2.应用软件体系结构描述语言描述软件体系结构。
二、 实验要求
使用UML描述一个信息管理系统的体系结构,从网上选课系统、图书管理系统、票务查询系统或库存管理系统、网上评教评学系统这五个系统中任选一个。 三、 实验步骤
1. 研究软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。根据建模的侧重点的不同,可以将软件体系结构的模型分为5种:结构模型、框架模型、动态模型、过程模型和功能模型。在这5个模型中,最常用的是结构模型和动态模型。
(1)结构模型
这是一个最直观、最普遍的建模方法。这种方法以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是体系结构描述语言。
(2)框架模型
框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。 (3)动态模型
动态模型是对结构或框架模型的补充,研究系统的"大颗粒"的行为性质。例如,描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。
(4)过程模型
过程模型研究构造系统的步骤和过程。因而结构是遵循某些过程脚本的结果。
(5)功能模型
该模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。它可以看作是一种特殊的框架模型。
2. 利用“4+1”视图建模方法进行“网上选课系统”软件体系结构设计。
(1) 网上选课系统场景建模
(2)网上选课系统逻辑视图 应用层
表示层
会话层
商务逻辑层
持久层与连通层(DAO)
数据库层
网上选课系统架构的逻辑视图 (3)网上选课系统开发视图
(4)网上选课系统物理视图
总结 四、 实验
(通过实验对计算机软件体系结构课程知识获得哪些深入的理解、实验的心得体会、对改进实验过程的合理化建议等。)
注意:上述三、四项应能体现个人特色,不能雷同,若有雷同,重新返工。实验报告必须打印。
本文通过比较系统地描述网上选课系统的用例图的一步步操作完成过程和相关的用户时序图以及更加深入的“4+1”视图中的逻辑视图、开发视图、进程视图、物理视图和场景视图的绘制描述,并对涉及到的软件架构模式进行了简单明了的解释说明,直接深入地描述展示了软件需求开发过程中包括非功能和功能方面的各种需要要求,展示说明了软件体系结构设计在软件开发和程序设计中的重要地位。
计算机软件体系结构知识点总结
软件体系结构的基础知识
2.1 软件体系结构概论
1、软件危机:软件应用需求的发展,致使软件复杂化,造成软件成本、开发进度、质量、维护难以控制,总而言之,软件开发越来越复杂困难。
危机产生的原因: 缺乏正确的软件开发理论是根本,此外,软件需求不明确、软件规模不复杂度也是造成的重要原因。
2、软件工程:克服软件危机的办法,以工程的方法来进行软件生产的开发、生产不管理。核心就是标准化,实现软件生产全流程的标准化。软件工程三要素:方法、工具和过程。 3、可重用性不构件:标准化的软件开发流程,使应对特定问题的软件代码重用成为可能,当可重用的代码被抽取出来,并配以标准化的接口不应用文档,形成构件。 4、构件:语义完整、语法正确和可重用价值的单元软件,其中最核心的是可重用性。在结构上,是语义描述、通信接口不实现代码的复合体。
5、领域:一组具有相似或相近软件需求的应用系统的覆盖的功能区域。具有内聚性,问题的特定性,和稳定性,特定问题在较长的问题多次出现,。
6、商业化构件的分类: 用户界面类、数据库类、商务应用类、工具类、网络通讯类、核心技术类。
2.2 软件体系的定义
1、软件体系结构定义:软件体系结构为软件系统提供了一个结构、行为、属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束的组成。
2.3 软件体系的建模
1、建模的本质:从软件开发不同角度看问题 、隐含在软件工程不同阶段,不同的参不人员对于工程的视角。
2、现有的模型:
结构模型:注重构件不连接件,试图以结构来反映系统,哲学:结构不功能的关系 框架模型:注重更高层次的可重用性,对于构件则不太关注,试图在构件及功能可替换情况下,重用框架。
动态模型:反映系统动态行为,对前二者静态描述的补充。
过程模型:试图反映系统构造的过程,典型的增量开发过程,也是期望能在主框架重用的情况下,开发系统。
功能模型:试图按功能模块组件来描述系统,易于理解,极为常用。
3、4+1视图模型
逻辑视图:支持系统的功能需求,注意是支持,不是表述,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。逻辑视图解释系统功能的实现,建模人员一般为开发人员。
开发视图:又称为模块视图,主要侧重于软件模块的组织和管理,建模人员一般为项目经理。 进程视图:侧重于系统的运行特性,主要关注一些非功能性的需求,如系统的性能和可用性,建模人员一般为测试人员。
物理视图:主要考虑如何把软件映射到硬件上,考虑系统性能、规模、可靠性等,一般建模人员为项目部署人员。
场景:可以看作是那些重要系统活动的抽象,有机联系以上四个视图,某种意义上说场景是最重要的需求抽象。一般建模人员为项目主管。
2.4 软件体系的生命周期
1、需求,〉建立,〉设计,〉实现,以及各阶段的大致内容了解。
2.5 软件体系结构的核心元素
构件:具有某种功能的可重用的软件单元
连接件:构件之间的交互,数据交互的中间件,如数据库JDBC、ODBC之类 配置:构件不连接件之间的拓扑逻辑不约束
端口:也就是构件的接口,接口可不构件相分离,形成独立的要素
角色:本质为场景,构件在场景中发挥的作用
2.6 风格不模式
1. 定义不含义:
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。 体系结构风格定义了一个系统家族,即定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
2. 经典的体系结构风格的分类
数据流风格:批处理序列;管道/过滤器。
调用/迒回风格:主程序/子程序;面向对象风格;层次结构。
独立构件风格:进程通讯;事件系统。
虚拟机风格:解释器;基于规则的系统。
仓库风格:数据库系统;超文本系统;黑板系统。
2.7经典体系结构风格:
1、管道不过滤器:每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。
2、数据抽象不面向对象:含义:这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。
3、基于事件的隐式调用:构件不直接调用一个过程,而是触发或广播一个或多个事件。 4、分层系统:层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。 5、仓库系统及知识库:有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行。控制原则的选取产生两个主要的子类。若输入流中某类时间触发进程执行的选择,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。
6、C2风格 :通过连接件绑定在一起的、按照一组规则运作的并行构件网络。
C2风格中的系统组织规则如下:
系统中的构件和连接件都有一个顶部和一个底部; 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件不构件之间的直接连接是不允许的;
一个连接件可以和仸意数目的其它构件和连接件连接;
当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。 1.C/S 含义:
C/S软件体系结构是基于资源不对等,且为实现共享而提出来的,C/S体系结构定义了工作站如何不服务器相连,以实现数据和应用分布到多个处理机上。
C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。
2.B/S 含义:
浏览器/服务器,B/S,风格就是三层应用结构的一种实现方式,其具体结构为:浏览器/Web服务器/数据库服务器。
3.CORBA体系结构
CORBA是由对象管理组织OMG制定的一个工业标准,主要目标是提供一种机制,使得对象可以透明的发出请求和获得应答,从而建立起一个异质的分布式应用环境。 4.正交软件体系结构
含义: 正交软件体系结构由组织层和线索的构件构成。 层是由一组具有相同抽象级别的构件构成。 每条线索完成系统中相对独立的一部分功能,由完成不同层次功能的构件组成。 每条线索的实现不其他线索的实现无关或关联很少。
5.基于层次消息总线的体系结构(Hierarchy Message Bus, HMB) 基于HMB的风格,支持构件的分布和并发,构件之间通过消息总线进行通信。消息总线是系统的连接件,负责消息的分派,传递和过滤以及处理结果的迒回。
5 UML九种图辨析
1. 用例图:用来定义系统的功能需求,表示用户使用本系统可以实现哪些事; 2. 类图:基于面向对象概念实现对整个系统中存在的类及类之间的关系的描述,是一种基
于类的系统结构表述;
3. 对象图:表示系统中某些类的对象实例,通常用来示例一个复杂的类图,通过对象图反
映真正的实例是什么,它们之间有什么样的关系,辅助开发人员对类的理解; 4. 状态图:描述系统中各个功能模块或类所可能具有状态,以及引发这些状态变迁的原因
不动作;
5. 序列图:反映若干对象之间的动态协作关系,在时间轴上,对象之间是如何交互的; 6. 协作图:和序列图作用相同,比序列图多显示了对象和它们之间的关系,上下文关系,。
强调时间和序列则选择序列图;强调上下文相关则选择协作图。
7. 活动图:反映一个连续的活动流,用于描述某个操作执行时的活动状况。
8. 组件图:反映代码的物理结构;
9. 部署图:用来显示系统中软件和硬件的物理构架
转载请注明出处范文大全网 » 云计算软件体系结构研究