1、软件体系结构作业(二)1. 层次系统体系结构和基于消息层次体系结构有什么区分?层次系统组织成一个层次结构,每一层为上层服务,并作为下层用户。这种风格支持基于可增加抽象层设计。这么,许可将一个复杂问题分解成一个增量步骤序列实现。每一层最多影响两层。在部分层次系统中,除了部分精心挑选输出函数外,内部层次只对相邻层可见,这么系统中,构建在部分层实现了虚拟机(在另部分层次系统中层是部分不透明),连接件经过决定层间怎样交互来定义,拓扑约束包含相邻层间交互约束。JB/ HMB风格基于层次消息总线、支持构件分布和并发,构件之间经过消息总线进行通讯消息总线是系统连接件,负责消息分配、传输和过滤,和处理结果返回
2、;各个构件挂接在消息总线上,向总线登记感爱好消息类型;构件依据需要发出消息,由消息总线负责将该消息分配到系统中全部对此消息感爱好构件,消息是构件之间通讯唯一方法;构件接收到消息后,依据本身状态对消息进行响应,并经过总线返回处理结果.因为构件经过总线进行连,并不要求各个构件含有相同地址空间或局限在一台机器上.2. 分析比较b/s,二层c/s,三层c/s,指出优缺点。B/S 是基于浏览器和服务器之间应用程序,网站就基础上属于这种结构,输入一个地址就能够访问,C/S基于用户端和服务器之间应用程序,比如说现在部分网游,需要下载一个用户端才能运行程序,B/S结构大部分处理全部是由服务器来完成,而C/S则
3、能够在本机上处理大部分事情,只需要把数据跟服务器交换下就能够了,在服务器负载上,B/S显然要比C/S结构要大多B/S、C/S结构软件技术上比较:B/S: Browser/Server结构结构即浏览器和服务器结构。它是伴随Internet技术兴起,对C/S结构一个改变或改善结构。在这种结构下,用户工作界面是经过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,不过关键事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这么就大大简化了用户端电脑载荷,减轻了系统维护和升级成本和工作量,降低了用户总体成本(TCO)。C/S:Client/Server 在网络连接模式
4、中,除对等网外,还有另一个形式网络,即用户机/服务器网,Client/Server。在用户机/服务器网络中,服务器是网络关键,而用户机是网络基础,用户机依靠服务器取得所需要网络资源,而服务器为用户机提供网络必需资源。这里用户和服务器全部是指通信中所包含两个应用进程(软件)。使用计算机人是计算机“用户”(user)而不是“用户”(client)。它是软件系统体系结构,经过它能够充足利用两端硬件环境优势,将任务合理分配到 Client端和Server端来实现,降低了系统通讯开销。现在大多数应用软件系统全部是Client/Server形式两层结构,因为现在软件应用系统正在向分布式Web应用发展,We
5、b和Client/Server 应用全部能够进行一样业务处理,应用不一样模块共享逻辑组件;所以,内部和外部用户全部能够访问新和现有应用系统,经过现有应用系统中逻辑能够扩展出新应用系统。这也就是现在应用系统发展方向。一、B/S模式优点和缺点B/S结构优点(1)、含有分布性特点,能够随时随地进行查询、浏览等业务处理。 (2)、业务扩展简单方便,经过增加网页即可增加服务器功效。 (3)、维护简单方便,只需要改变网页,即可实现全部用户同时更新。 (4)、开发简单,共享性强B/S 模式缺点(1)、个性化特点显著降低,无法实现含有个性化功效要求。 (2)、操作是以鼠标为最基础操作方法,无法满足快速操作要求
6、。 (3)、页面动态刷新,响应速度显著降低。 (4)、功效弱化,难以实现传统模式下特殊功效要求。二、C/S 模式优点和缺点 C/S 模式优点 1.因为用户端实现和服务器直接相连,没有中间步骤,所以响应速度快。 2.操作界面漂亮、形式多样,能够充足满足用户本身个性化要求。 3.C/S结构管理信息系统含有较强事务处理能力,能实现复杂业务步骤。 C/S 模式缺点 1.需要专门用户端安装程序,分布功效弱,针对点多面广且不含有网络条件用户群体,不能够实现快速布署安装和配置。 2.兼容性差,对于不一样开发工具,含有较大不足。若采取不一样工具,需要重新改写程序。 3.开发成本较高,需要含有一定专业水准技术人
7、员才能完成。B/S、C/S结构软件技术上比较3. 组织或参考参与采取B/S,和C/S体系项目开发,总结开发经验。总结:整体开发过程和通常项目开发一致,不过在工程准备前期需要正对需求做好相关架构,在该系统中,需要对聊天系统做好模块划分,并依据这些模块划分做好人员安排和项目进度调度。其它软件过程遵守如瀑布模型等标准过程。需求改变 :项目标需要改变是肯定有,而且改变通常全部很频繁,我们怎么应对用户这种需求改变呢,以不变应万变。首先在前期需求调研要做好,尽可能替用户考虑,达成功效质量满足最大化。需求调研前期目标和范围和需求调研末期功效规格说明书全部要跟用户签字确定,这么既能确保我们所了解需求就是用户所
8、要,也使得项目末期跟用户验收时有据可依。在项目中期是发生需求变更是很常见,这时要做好需求变更管理步骤。需求变更表,小变更自己掌握,用户要求变更有开发人员和设计人员共同商讨后提交项目经理,项目经理预估变更损耗工程时间,在一定阶段一起提交给用户,大变更直接提交用户,而且要把需求变更对项目产生影响让用户知道,把球尽可能踢给用户,让用户在进度、功效、资源三者中取舍出一个平衡来。对需求进行分类评级,关键部分不能改动做尤其确定(如系统架构等,假如改变等于从头再来)。同时完成用户签字确定,当然假如能将这部分写成协议细节中去是最好。在某种意义上,全员设计可能增加交流成本。两个人之间有一条交流路径,三个人之间最
9、多有三条,四个人之间最多有六条。路径越多,信息量就越大,而这些信息不见得全部是有用信息。具体设计任务分解后,不可避免地有更多人参与交流和沟通,大家要花更多时间来了解她人想法,也可能要花更多时间向她人叙述自己见解。尤其是在并行撰写具体设计过程中,系统分析员反而可能成为另一个瓶颈了。但从总体上来看,在设计阶段花费合适代价发觉更多问题,比在实现阶段或测试阶段再发觉问题,仍然是划算。 分解后具体设计可能引入冲突设计内容。因为设计由不一样程序员撰写,她们考虑问题角度和思维方法不可能完全一致,这增大了不一样设计内容之间计算口径或交互方法不一致可能性。这需要设计者们尽可能遵照一致设计标准,也需要审阅者们尽可
10、能找到这些不一致地方。 并不是全部程序员全部适合参与设计。很显著,比如刚入职同事就不适合参与设计,她们对系统架构还缺乏足够认识。另外兼职同事也不适合参与设计,她们工作方法可能无法确保立即提交设计文档和参与讨论等。4.在软件开发中,采取异构结构有什么好处其负面影响有哪些?(1)从最根本上说,不一样结构有不一样处理能力强项和弱点,一个系统体系结构应该依据实际需要进行选择,以处理实际问题。(2)相关软件包、框架、通信和其它部分体系结构上问题,现在存在多个标准。即使在某段时间内某一个标准占统治地位,但变动最终是绝正确。(3)实际工作中,总会碰到部分遗留下来代码,它们仍有效用,不过总和新系统有某种程度上
11、不协调。然而在很多场所,将技术和经济综合进行考虑时,总是决定不再重写它们。(4)即使在某一单位中,要求了共享共同软件包或相互关系部分标准,仍会存在解释或表示习惯上不一样。 坏处:5 经过查资料然后分析,给出下列体系结构Windows7,Android,P2P,web service,要求:1.模块划分和功效描述。2.模块间关系。3.经典功效模块调用关系。4.各自优缺点。Windows7:Window 7在图形架构方面更新关键有以下方面:WDDM 1.1:新驱动模型DirectX 11:更新Direct3D 11,和相关新Direct2D APIDXVA-HD:高清视频回放加速显示设备连接和配置
12、色彩管理高DPI输出和可读性多GPU系统联合显示适配器(又叫联合渲染)Windows 7关键图形架构老GDI/GDI+仍被单独支持,不过,Windows 7提供了它们对应功效新实现方法相比Vista带DirectX 10,Windows 7自带了DirectX 11,和WDDM 1.0到1.1改变不一样,DirectX 11版本号表示其改变更大部分。Windows 7 DirectX 11改变了以往工作模式,将Direct3D 10.1升级到Direct3D 11,同时将以前Vista无法硬件加速GDI/GDI+工作重新划分、引入新Direct2D和DirectWrite API来完成图形界面
13、一直是Windows系统关键,而从Windows Vista开始,Windows就开始将提供一个富图形化桌面图形界面作为要目,不仅仅是因为Vista和7桌面本身就是一个3D应用程序,而是因为 Vista和7能够愈加好地发挥图形加速硬件作用。从Windows Vista到Windows7,操作系统和GPU结合越来越紧密。Win7优缺点:多年使用习惯让大家对于她上手难度几乎为零,可使用应用软件资源是现在全部操作系统中最为丰富,而且它对硬件、软件兼容性也是最好.它并不适合平板电脑,因为Windows操作系统是专门为个人电脑设计,而非平板电脑,再加上用户在使用习惯上惯性思维,造成它不管从软硬件配合还是
14、使用感受等多个方面,全部无法满足用户苛刻要求。能够说在平板电脑平台上,Windows操作系统有一个好基础,不过无法发挥出对应潜力.Android:Android系统架构和其操作系统一样,采取了分层架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux关键层。蓝色代表java程序,黄色代码为运行JAVA程序而实现虚拟机,绿色部分为C/C+语言编写程序库,红色代码内核(Linux内核+drivers)Android作为一个移动设备平台,其软件层次结构包含了一个操作系统(OS),中间件(MiddleWare)和应用程序(Applicatio
15、n)。依据Android软件框图,其Android关键模块结构自下而上分为以下多个层次:第一、操作系统层(OS)第二、多种库(Libraries)和Android 运行环境(RunTime)第三、应用程序框架(Application Framework)第四、应用程序(Application)以下分别介绍Andoid各个层次软件关键及其相关技术: Android关键模块之操作系统层(OS)Android使用Linux2.6作为操作系统,Linux2.6是一个标准技术,Linux也是一个开放操作系统。Android对操作系统使用包含关键和驱动程序两部分,AndroidLinux关键为标准Linu
16、x2.6内核,Android更多是需要部分和移动设备相关驱动程序。关键驱动以下所表示:显示驱动(Display Driver):常见基于Linux帧缓冲(Frame Buffer)驱动。Flash内存驱动(Flash Memory Driver)摄影机驱动(Camera Driver):常见基于Linuxv4l(Video for )驱动。音频驱动(Audio Driver):常见基于ALSA(Advanced Linux Sound Architecture,高级Linux声音体系)驱动。WiFi驱动(Camera Driver):基于IEEE 802.11标准驱动程序键盘驱动(KeyBoa
17、rd Driver)蓝牙驱动(Bluetooth Driver)Binder IPC驱动: Andoid一个特殊驱动程序,含有单独设备节点,提供进程间通讯功效。Power Management(能源管理) Android关键模块之多种库(Libraries)和Android 运行环境(RunTime)本层次对应通常嵌入式系统,相当于中间件层次。Android本层次分成两个部分一个是多种库,另一个是Android 运行环境。本层内容大多是使用C+实现。在其中,多种库包含: C库 :C语言标准库,这也是系统中一个最为底层库,C库是经过Linux系统调用来实现。 多媒体框架(MediaFramewo
18、rd):这部分内容是Android多媒体关键部分,基于PacketVideo(即PV)OpenCORE,从功效上本库一共分为两大部分,一个部分是音频、视频回放(PlayBack),另一部分是则是音视频纪录(Recorder)。 SGL:2D图像引擎。 SSL:即Secure Socket Layer在TCP/IP协议和多种应用层协议之间,为数据通讯提供安全支持。 OpenGL ES 1.0 :本部分提供了对3D支持。 界面管理工具(Surface Management):本部分提供了对管理显示子系统等功效。 SQLite:一个通用嵌入式数据库 WebKit:网络浏览器关键 FreeType:位
19、图和矢量字体功效。Android 多种库通常是以系统中间件形式提供,它们全部有一个显着特点就是和移动设备平台应用亲密相关。Android 运行环境关键指虚拟机技术Dalvik。Dalvik虚拟机和通常JAVA虚拟机(Java VM)不一样,它实施不是JAVA标准字节码(bytecode )而是Dalvik可实施格式(.dex)中实施文件。在实施过程中,每一个应用程序即一个进程(Linux一个Process)。 二者最大区分在于Java VM是以基于栈虚拟机(Stack-based),而Dalvik是基于寄存器虚拟机(Register-based)。显然,后者最大好处于于能够依据硬件实现更大优化
20、,这更适合移动设备特点。 Android关键模块之应用程序框架(Application Framework)Android应用程序框架为应用程序层开发者提供APIs,它实际上是一个应用程序框架。因为上层应用程序是以JAVA构建,所以本层次提供首先包含了UI程序中所需要多种控件:比如: Views (视图组件)包含 lists(列表), grids(栅格), text boxes(文本框), buttons(按钮)等。甚至一个嵌入式Web浏览器。一个Andoid应用程序能够利用应用程序框架中以下多个部分:Activity (活动)Broadcast Intent Receiver (广播意图接收
21、者)Service (服务)Content Provider (内容提供者) Android关键模块之应用程序(Application)Android应用程序关键是用户界面(User Interface)方面,通常以JAVA程序编写,其中还能够包含多种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。Android本身提供了主屏幕(Home),联络人(Contact),电话(Phone),浏览器(Browers)等众多关键应用。同时应用程序开发者还能够使用应用程序框架层API实现自己程序。这也是Android开源巨大潜力表现。Android架构详解Androi
22、d系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。第二部分将具体介绍这5个部分。下面自底向上分析各层。安卓优点: Android是一款开放、基于Linux内核嵌入式操作系统,将被广泛地应用到多种移动手持设备中,充足发挥其强大网络功效;因为开源特征,Android不区分关键应用程序和第三方应用程序,并可自由吸纳新出现尖端技术;同时,Android提供广泛而实用函数库和工具,利用它们能够开发丰富应用程序。由此能够展望,基于开放手机联盟(Open Handset Alli
23、ance)平台强大技术实力和市场推广,Android系统在移动嵌入式领域应用将会很宽广 缺点:Android系统手机泄密,不支持关机闹铃 和用户需求严重背离,对硬件配置要求高 制造成本增加,死机现象频现。 P2P技术 P2P可定义为以非集中方法使用分布式资源来完成关键任务一类系统或技术。P2P假如仅仅看作是一个网络拓扑结构,则不是新鲜事物,最原始P2P形态就是网络诞生时点点通信方法。以后,互联网资源丰富起来并趋于集中化,出现了服务器和用户端概念。但Client/Server网络体系结构使得服务缺乏个性化,资源无法得到充足利用。所以,大家渴望打破Server对网络资源全方面控制,在TCP/IP基
24、础上演化出新P2P技术。P2P技术模型和应用P2P强调Serverless意识,根据业务提供方法能够分为三种,即P2P三种模型:(1)完全基于Server(Server-based)(即C/S),服务器提供相连peer名字索引和网络上全部资源,同时,peer之间通信建立也需要依靠服务器初始化。服务器在系统中处于支配地位,和传统C/S模型一样,图1所表示。(2)部分基于Server(with-Server);通常,准备加入网络peer通知一个索引服务器它已经登录,服务器作用仅仅是为正在加入peer提供已经连接peer名字索引,资源仍然分布式存放在各个peer上,怎样建立连接和以后通信则仍然属于p
25、eer之间事情。图2所表示。最早Napster,Kazaa和近期Edoney, Emule,Skype等就属于部分基于ServerP2P技术架构,它们关键提供文件高速传输和实时通信为关键目标。(3)完全Serverless(non-Server)。此模型中,完全没有服务器概念,全部组员全部是对等端,peer动态地发觉其连接peer,peer之间通信完全不需要来自服务器任何帮助,打破了C/S模型传统通信方法。它能够在某种规则下,将网络中全部资源完全共享,并快速提供,同时支持每个peer快速加入和退出。这种纯P2P模型许可用户自己设定通信规则,建立含有特色网络环境,图3。其能够使得网络资源使用率最
26、大化,最优化系统性能。这类纯P2P系统包含Gnutella和Freenet,Myjxta及中国SNS社会网络,Nexter等。纯P2P模型能够提供近似即插即用特征,但其缺点在于网络上peer之间怎样相互发觉,并和之建立通信问题。 图1 P2P三种技术模型对比2.2 P2P较C/S模式优越性P2P含有以下部分特征:(1)peer知道相互存在和位置;(2)peer既能够作为Client也能够作为Server而存在;(3)多个peer能够形成一个peer组,并进而形成覆盖网;(4)peer全部是运行在那个虚拟覆盖网上。这些特征使得P2P系统含有很良好可扩展性,使得在较低成本情况下完成资源聚合和共享,
27、也许可peer在相互数据管理和资源共享上拥有较大自治控制。因为出色性能,基于部分Serverless和完全ServerlessP2P技术,出现了大量互联网相关增值业务,比如分布计算,协同工作,文件共享,即时通信等。现在大多互联网上应用全部是基于传统C/S模式,包含IPTV也是如此。C/S模式使得网络上资源向服务器端集中,用户之间通信高度依靠于服务器,无法直接交流信息。所以,在网络性能方面,P2P优点在于它是基于互联网对等架构,能够大大改善资源流量分布,处理网络拥塞和带宽瓶颈问题,减缓存放服务器响应压力。在通信方法上,基于P2P系统因为peer之间协作,含有高度容错性和很好可扩展性,能够快速对数
28、据进行公布和资源聚合,数据传输即时性和成本全部含有C/S所无法比拟优越性。混合P2P-IPTV体系结构:系统结构含有综合服务能力,可经过同一个平台来完成直播电视、点播电视和时移电视三种业务形态。还要求系统含有很好开放性架构,使得网络系统能够在大规模用户频繁加入退出时保持稳定,并支持当地和异地用户之间连接和业务认证。同时,其体系结构还需要提供有QoS确保多媒体服务,及必需安全、保密方法。现在,IPTV通常是运行在支持组播应用IP网络中。其采取体系结构为C/S模式,提供组播实时业务和点播存放媒体业务服务。显然,因为输入/输出带宽限制,使得服务器只能支持有限并发用户。当大规模网络用户同时收看节目时,
29、要确保系统稳定和QoS,ICP必需用大量服务器来平衡网络访问负载,并增加网络出口带宽。不过,服务器数量和网络容量增加永远会落后于用户规模增加。现在临时处理措施是采取组播传输技术来提供广播服务或采取内容传送网等覆盖网技术。这些过渡性质技术需要对现有网络进行升级改造,大大增加了网络建设成本,浪费已经有资源投资。为了根本处理问题,必需打破C/S模式体系结构,使得IPTV体系结构向含有对等连接特征P2P模式演化,从而将服务器负荷负载平衡到每个参与peer上去。基于P2PIPTV体系结构能够使得IPTV业务广播和转播等门槛得到降低,能够让更多用户参与并提供自制多媒体内容得到基于全球覆盖共享和分发,同时还
30、能够节省电信运行商之间对接流量,降低网络建设成本。图3是一个采取混合网络体系结构P2P-IPTV网络拓扑图。属于第三代P2P体系结构,综合了第一代中央控制网络体系结构和第二代分散分布体系结构IPTV优点。在网络边缘节点采取集中式网络结构,聚适用户,在超级节点之间采取分布式网络结构,为IPTV稳定度协同工作。图中,分布式放置超级节点替换了中央索引检索服务器,同时,采取分层次快速搜索算法改善IPTV多媒体资源和内容搜索性能,缩短了电视节目标反应速度和频道切换速度。含有高性能超级节点相互间相互协作,即使一个超级节点瓦解,对应peers节点仍然和其它网络peer有连接,并在新频道搜索中,使用新超级节点
31、。这种超级节点IPTV架构和Skype中超级节点类似,P2P IPTV体系结构中超级节点其实也是一个peer,可作为一个动态点对点索引服务器。超级节点还可为处于局域网NAT或防火墙IPTV用户建立和外界用户peer间连接并为其媒体流做转发服务。 图3 包含超级节点P2P-IPTV体系结构优缺点:P2P最大优点在于能够提供可靠信息查询,P2P网络和人际网络含有一定相同性。但从社会和法律意义来说,绝大多数P2P服务全部将不可避免地碰到知识产权冲突,也可能成为部分非法内容传输平台。同时因为缺乏中心监管和自由平等动态特征,自组织P2P网络在技术层面也有很多难以处理问题。WEB SERVICE:1.We
32、b Service模型Web Service体系结构基于三种角色(服务提供者、服务注册中心和服务请求者)之间交互。交互包含公布、查找和绑定操作。这些角色和操作一起作用于Web Service构件Web Service软件模块及其描述。服务提供者定义Web Service服务描述并把它公布到服务请求者或服务注册中心;服务请求者使用查找操作来从当地或服务注册中心检索服务描述,然后使用服务描述和服务提供者进行绑定并调用Web Service实现或同它交互。2.体系结构概览 Web Service提供者公布服务使用UDDI,查找服务使用UDDI和WSDL组合。绑定服务使用WSDL和SOAP,其中包含服务实际使用。正是因为服务提供者和服务请求者对SOAP规范全力支持,才实现了无缝互操作性。优缺点:长项: 跨防火墙通信. 应用程序集成. B2B集成. 软件和数据重用。短处:单机应用程序,局域网同构应用程序,