QQ的软件的架构,采用技术,具体功能模块划分的分析和总结.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
篇一:软件架构学习小结
软件架构学习小结
软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。
本文从架构师职责、软件架构定义、设计架构、评估架构、架构管理等方面来描述了解软件架构的含义和怎样设计软件架构。
一、软件架构师的职责
架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师(j2ee架构师、.net架构师等)、系统架构师。
1、架构师的职责主要体现
架构师的职责就是设计一个公司系统的基础架构,并提供关于怎样建立和维护系统的指导方针。
具体来讲,架构师的职责主要体现在以下几方面:
1)、负责公司系统的架构设计、研发工作。
2)、承担从业务向技术转换的桥梁作用。
3)、协助项目经理制定项目计划和控制项目进度。
4)、负责辅助并指导系统分析开展设计工作。
5)、负责组织技术研究和攻关工作。
6)、负责组织和管理公司内部的技术培训工作。
7)、负责组织及带领公司内部员工研究与项目相关的新技术。
8)、管理技术支撑团队并给项目、产品开发实施团队提供技术保障。
9)、理解系统的业务需求,制定系统的整体框架(包括、技术框架和业务框架)。
10)、对系统框架相关技术和业务进行培训,指导开发人员开发。
并解决系统开发、运行中出现的各种问题。
2、构架设计师必须具备的技能
经验:既包括在问题领域的经验(通过彻底了解需求),也包括在软件工程领域的经验。
对于一个构架团队,这些素质要求可由各团队成员来分别承担,但其中至少要有一名构架设计师能够把握项目的全局。
领导才能:能够推
动各个团队的技术进展,并能在压力下作出关键性的决策然后将其贯彻到底。
要提高效率,构架设计师和项目经理必须紧密协作。
构架设计师主要负责解决技术问题,项目经理主要负责解决行政管理问题。
构架设计师必须有权在技术问题上作出决定。
沟通:能够赢得他人的信任,以对其进行说服、激励和指导。
构架设计师不能靠命令进行领导,而必须要赢得项目中其他人员的赞同。
为了提高效率,构架设计师必须赢得项目团队、项目经理、客户、用户群体以及管理团队的尊敬。
以目标为中心、积极主动:不懈地追求成效。
构架设计师是推动项目发展的技术动力,而不是空想家。
在其职业生涯中,成功的构架设计师一直都要在捉摸不定和承受压力的情况下作出折衷决定。
构架设计师只有将注意力集中在该做的事情上,才能在项目中取得成功。
专业:精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如j2ee架构等)。
具备系统设计员的所有技能,但涉及面更广、抽象级别更高。
二、软件架构、架构模式、参考模型、参考架构
1、对于软件架构定义有很多种,通用的定义是:某个软件或计算机系统的软件架构是该系统的一个或多个结构,他们由软件元素,这些元素的外部可见属性以及这些元素之间的关系组成。
这里所说的某个元素的“外部可见属性”是指其他元素对该元素所做的假设,如它所提供的服务、性能特征、错误处理、共享资源的使用,等等。
其他的定义包括:架构是一种高层设计。
架构是系统的总体结构。
架构是一个软件或系
统的组件、组件之间的相互关系以及管理其设计和演变的原理和方针的结构。
架构是组件和连接器。
2、架构模式是对元素和关系类型以及一组对其使用方式的限制的描述。
3、参考模型是一种考虑数据流的功能划分。
4、参考架构是映射到软件元素(它们相互协作,共同实现在参考模型中定义的功能)及元素之间数据流上的参考模型。
5、软件架构、架构模式、参考模型、参考架构之间的关系:
出了8种体系结构模式:层(layers)、管道和过滤器(pipes and filters) 、黑板(black board )、代理者(broker)、模型-视图-控制器(model-view-controller)、表示-抽象-控制(presentation-abstraction-control)、微核(microkernel)、映像(reflection)。
6、架构定义中指出系统由多种结构构成的,下面列出一些常见的结构。
7、质量属性
系统从设计、实现到部署的整个过程中考虑质量属性的实现。
质量属性包括下列三类:
(1)、系统的质量
属性。
(可用性、可修改性、性能、安全性、可测试性和易用性)
(2)、受架构影响的商业属性。
(上市时间、成本和收益、所希望的系统生命期的长短、目标市场、推出计划、与老系统的集成)
(3)、与架构本身相关的一些质量属性。
(概念完整性、正确性与完整性、可构建性)
六个质量属性的战术列表:
三、设计架构
几乎在我们遇到的所有成功的面向对象系统中都具有但失败的系统中缺少的两个特性是:存在一个强大的构架构想,应用管理良好的迭代式增量开发周期。
功能、质量和商业需求的某个集合“塑造”了构架。
我们把这些塑造需求称为“构架驱动因素”。
构架设计必须按需求分析进行,但不需要在需求分析完成后在开始构架设计。
实际上,在确定了关键的构架驱动因素后,就可以开始构架设计了。
当设计了构架的足够多的部分后,就可以开始开发骨架系统了。
该骨架系统在上面进行迭代开发(以及其在任何一个点交付的能力)的框架。
组织结构对构架产生影响。
属性驱动的设计(add)是一个用于设计构架以满足质量需求和功能需求的方法。
add把一组质量属性场景作为输入,并使用对质量属性实现和构架之间的关系的了解,对构架进行设计。
add步骤:
(1)选择要分解的模块。
(2)根据这些步骤对模块进行求精。
对需要进一步分解的每个模块重复上述步骤。
在设计架构过程中可以重用架构,重用一些技术以方便来实现架构与设计。
高层重用技术分类
高层重用
设计模式
框架
软件架构
架构风格
架构设计风格
架构框架
架构平台
设计模式:使用相互通信的类和对象可为常见的设计问题提供通用的解决方案。
为了帮助用户掌握模式的概念并有效地设计模式,我通常为设计模式的描述提供一个带有比喻性的抽象。
常见的设计模式有:fvacade(外观模式),它为子系统中的一系列动作提供一个统一接口;ovbserver(观察
者模式),具体的设计模式内容参考gof23设计模式。
框架:提供一组相互协作的类及运行时对象,用于生成某些特定领域的应用软件。
我们可以根据特定应用的需求方便地对框架中的抽象和类进行定制,以重用框架的设计和代码。
软件架构:编制软件也称为架构软件。
一个可操作的软件内部应具有某种形式的架构。
软件架构技术中可重用的实体可以进一步地分为4类:架构风格、架构设计风格、架构框架、架构平台。
架构风格给出了精心设计的软件全局的通用形态。
例如,shaw和garlan提出了7种架构风格:管道和过滤器、面向对象的组织、隐式调用、分层系统、仓库、状态机、解释器,及过程控制。
架构设计风格给出了软件架构的设计方法论。
shaw将众多的设计风格分类为如下8种:功能分解、数据流、面向对象、状态机、面向事情、过程控制、数据结构及决定表。
架构框架是来为详细而完整的框架,它为开发特定领域的应用系统使用了一系列多种架构设计风格。
一个采用了某些设计风格的软件架构制品,只有当它具有完备的文档,并具备包含一个特定的应用领域所需要的充分灵活性时才可以作为软件框架来重用。
四、架构评估方法
软件构架的评估方法:saam和atam。
这里只详细说明atam方法。
atam一种进行构架评估的综合方法,atam
是评估软件构架的一个健壮的方法。
在该
篇二:软件体系结构作业2
软件体系结构作业(二)
1. 层次系统体系结构和基于消息的层次体系结构有什么区别?层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。
这种风格支持基于可增加抽象层的设计。
这样,允许将一个复杂问题分解成一个增量步骤序列的实现。
每一层最多影响两层。
在一些层次系统中,除了一些精心挑选的输出函数外,内部层次只对相邻层可见,这样的系统中,构建在一些层实现了虚拟机(在另一些层次系统中层是部分不透明的),连接件通过决定层间如何交互的来定义,拓扑约束包括相邻层间的交互约束。
jb/ hmb风格基于层次消息总线、支持构件的分布和并发,构件之间通过消息总线进行通讯消息总线是系统的连接件,负责消息的分派、传递和过滤,以及处理结果的返回;各个构件挂接在消息总线上,向总线登记感兴趣的消息类型;构件根据需要发出消息,由消息总线负责将该消息分派到系统中所有对此消息感兴趣的构件,消息是构件之间通讯的唯一方式;构件接收到消息后,根据自身状态对消息进行响应,并通过总线返回处理结果.由于构件通过总线进行连,并不要求各个构件具有相同的地址空间或局限在一台机器上.
2. 分析比较b/s,二层c/s,三层c/s,指出优缺点。
b/s 是基于浏览器
与服务器之间的应用程序,网站就基本上属于这种结构,输入一个地址就可以访问的,c/s 基于客户端与服务器之间的应用程序,比如说现在的一些网游,需要下载一个客户端才能运行的程序,b/s结构大部分处理都是由服务器来完成的,而c/s则可以在本机上处理大部分的事情,只需要把数据跟服务器交换下就可以了,在服务器的负载上,b/s显然要比c/s结构的要大的多 b/s、c/s结构软件技术上的比较:
c/s:client/server 在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网,client/server。
在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。
这里客户和服务器都是指通信中所涉及的两个应用进程(软件)。
使用计算机的人是计算机的“用户”(user)而不是“客户”(client)。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 client端和server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是client/server形式的两层结构,由于现在的软件应用系统正在向分布式
的web应用发展,web和client/server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
一、b/s模式的优点和缺点
b/s结构的优点
(1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。
(2)、业务扩展简单方便,通过增加网页即可增加服务器功能。
(3)、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
(4)、开发简单,共享性强
b/s 模式的缺点
(1)、个性化特点明显降低,无法实现具有个性化的功能要求。
(2)、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。
(3)、页面动态刷新,响应速度明显降低。
(4)、功能弱化,难以实现传统模式下的特殊功能要求。
二、c/s 模式的优点和缺点
c/s 模式的优点 1.由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。
2.操作界面漂亮、
形式多样,可以充分满足客户自身的个性化要求。
3.c/s结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
c/s 模式的缺点
1.需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
2.兼容性差,对于不同的开发工具,具有较大的局限性。
若采用不同工具,需要重新改写程序。
3.开发成本较高,需要具有一定专业水准的技术人员才能完成。
b/s、c/s结构软件技术上的比较
3. 组织或参考参与采用b/s,和c/s的体系项目开发,总结开发经验。
总结:
整体开发过程与一般项目开发一致,不过在工程准备的前期需要正对需求做好相关的架构,在该系统中,需要对聊天系统做好模块的划分,并依据这些模块的划分做好人员的安排和项目进度的调度。
其他的软件过程遵守如瀑布模型等标准过程。
需求变化 :项目的需要变化是肯定有的,而且变化一般都很频繁,我们怎么应对客户的这种需求变化呢,以不变应万变。
首先在前期的需求调研要做好,尽可能的替用户考虑,达到功能质量满足最大化。
需求调研前期的《目标与范围》和需求调研末期的《功能规格说明书》都要跟客户签字确认,这样既能保证我们所理解的需求就是客户所要的,也使得项目末期跟客户验收时有据可依。
在项目中期是发生需求变更是很常见的,这时要做好需求变更管理流程。
需求变更表,小的
变更自己掌握,客户要求的变更有开发人员和设计人员共同商讨后提交项目经理,项目经理预估变更损耗工程时间,在一定阶段一起提交给客户,大的变更直接提交客户,并且要把需求变更对项目产生的影响让客户知道,把球尽可能的踢给客户,让客户在进度、功能、资源三者中取舍出一个平衡来。
对需求进行分类评级,关键部分不能改动的做特别确认(如系统架构等,如果改变等于从头再来)。
同时完成客户签字确认,当然如果能将这部分写成合同细节中去是最好。
在某种意义上,全员设计可能增加交流的成本。
两个人之间有一条交流途径,三个人之间最多有三条,四个人之间最多有六条。
途径越多,信息量就越大,而这些信息不见得都是有用的信息。
详细设计的任务分解后,不可避免地有更多的人参与交流和沟通,大家要花更多的时间来理解他人的想法,也可能要花更多的时间向他人阐述自己的观点。
特别是在并行撰写详细设计的过程中,系统分析员反而可能成为另一个瓶颈了。
但从总体上来看,在设计阶段花费适当的代价发现更多的问题,比在实现阶段或测试阶段再发现问题,仍然是划算的。
分解后的详细设计可能引入冲突的设计内容。
由于设计由不同的程序员撰写,他们考虑问题的角度和思维的方式不可能完全一致,这增大了不同的设计内容之间的计算口径或交互方式不一致的可能性。
这需要设计者们尽可能遵循一致的设计原则,也需要审阅者们尽可能找到这些不一致的地方。
并不是所有的程序员都适合参与设计。
很明显,例如刚入职的同事就不适合参与设计,他们对系统架构还缺乏足够的认识。
另外兼职的同事也不适合参与设计,他们的工作方式可能无法保证及时提交设计文档与参与讨论等。
4.在软件开发中,采用异构结构有什么好处其负面影响有哪些?
(1)从最根本上说,不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。
(2)关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。
即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。
(3)实际工作中,总会遇到一些遗留下来的代码,它们仍有效用,但是总与新系统有某种程度上的不协调。
然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。
(4)即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。
坏处:
5.通过查资料然后分析,给出下列体系结构
windows7,android,p2p,web service,
要求:1.模块划分和功能描述。
2.模块间的关系。
3.典型功能模块的调用关系。
4.各自优缺点。
windows7:
window 7在图形架构方面的更新主要有如下方面:
wddm 1.1:新的驱动模型
directx 11:更新的direct3d 11,以及相关的新direct2d api
dxva-hd:高清视频回放加速
显示设备连接和配置
色彩管理
高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来完成
图形界面一直是windows系统的核心,而从windows vista开始,windows就开始将提供一个富图形化的桌面图形界面作为要目,不仅仅是因为vista和7的桌面本身就是一个3d应用程序,而是因为vista和7可以更好地发挥图形加速硬件的作用。
从windows vista到windows7,操作系统与gpu的结合越来越紧密。
win7优缺点:
多年的使用习惯让大家对于他的上手难度几乎为零,可使用的应用软件资源是目前所有操作系统中最为丰富的,而且它对硬件、软件的兼容性也是最好的.
它并不适合平板电脑,因为windows操作系统是专门为个人电脑设计的,而非平板电脑,再加上用户在使用习惯上的惯性思维,导致它无论从软硬件配合还是使用感受等多个方面,都无法满足用户苛刻的要求。
可以说在平板电脑平台上,windows操作系统有一个好的基础,但是无法发挥出相应的潜力.
android:
android的系统架构和其操作系统一样,采用了分层的架构。
从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
蓝色的代表java程序,黄色的代码为运行java程序而实现的虚拟机,绿色部分为c/c++语言编写的程序库,红色的代码内核(linux内核+drivers)
android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(os),中间件(middleware)和应用程序(application)。
根据android的软件框图,其android核心模块结构自下而上分为以下几个层次:
第一、操作系统层(os)
第二、各种库(libraries)和android 运行环境(runtime)
第三、应用程序框架(application framework)
第四、应用程序(application)
andoid各个层次的软件的重点及其相关技术:
● android核心模块之操作系统层(os)
篇三:软件架构学习小结 .
软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。
本文从架构师职责、软件架构定义、设计架构、评估架构、架构管理等方面来描述了解软件架构的含义和怎样设计软件架构。
一、软件架构师的职责
架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师(j2ee架构师、.net架构师等)、系统架构师。
1、架构师的职责主要体现
架构师的职责就是设计一个公司系统的基础架构,并提供关于怎样建立和维护系统的指导方针。
具体来讲,架构师的职责主要体现在以下几方面: 1)、负责公司系统的架构设计、研发工作。
2)、承担从业务向技术转换的桥梁作用。
3)、协助项目经理制定项目计划和控制项目进度。
4)、负责辅助并指导系统分析开展设计工作。
5)、负责组织技术研究和攻关工作。
6)、负责组织和管理公司内部的技术培训工作。
7)、负责组织及带领公司内部员工研究与项目相关的新技术。
8)、管理技术支撑团队并给项目、产品开发实施团队提供技术保障。
9)、理解系统的业务需求,制定系统的整体框架(包括、技术框架和业务框架)。
10)、对系统框架相关技术和业务进行培训,指导开发人员开发。
并解决系统开发、运行中出现的各种问题。
2、构架设计师必须具备的技能
经验:既包括在问题领域的经验(通过彻底了解需求),也包括在软件工程领域的经验。
对于一个构架团队,这些素质要求可由各团队成员来分别承担,但其中至少要有一名构架设计师能够把握项目的全局。
领导才能:能够推动各个团队的技术进展,并能在压力下作出关键性的决策然后将其贯彻到底。
要提高效率,构架设计师和项目经理必须紧密协作。
构架设计师主要负责解决技术问题,项目经理主要负责解决行政管理问题。
构架设计师必须有权在技术问题上作出决定。
沟通:能够赢得他人的信任,以对其进行说服、激励和指导。
构架设计师不能靠命令进行领导,而必须要赢得项目中其他人员的赞同。
为了提高效率,构架设计师必须赢得项目团队、项目经理、客户、用户群体以及管理团队的尊敬。
以目标为中心、积极主动:不懈地追求成效。
构架设计师是推动项目发展的技术动力,而不是空想家。
在其职业生涯中,成功的构架设计师一直都要在捉摸不定和承受压力的情况下作出折衷决定。
构架
设计师只有将注意力集中在该做的事情上,才能在项目中取得成功。
专业:精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和
模式(例如j2ee
架构等)。
具备系统设计员的所有技能,但涉及面更广、抽象级别更高。
二、软件架构、架构模式、参考模型、参考架构
1、对于软件架构定义有很多种,通用的定义是:某个软件或计算机系统的软件架构是该系统的一个或多个结构,他们由软件元素,这些元素的外部可见属性以及这些元素之间的关系组成。
这里所说的某个元素的“外部可见属性”是指其他元素对该元素所做的假设,如它所提供的服务、性能特征、错误处理、共享资源的使用,等等。
其他的定义包括:架构是一种高层设计。
架构是系统的总体结构。
架构是一个软件或系统的组件、组件之间的相互关系以及管理其设计和演变的原理和方针的结构。
架构是组件和连接器。
2、架构模式是对元素和关系类型以及一组对其使用方式的限制的描述。
3、参考模型是一种考虑数据流的功能划分。
4、参考架构是映射到软件元素(它们相互协作,共同实现在参考模型中定义的功能)及元素之间数据流上的参考模型。
5、软件架构、架构模式、参考模型、参考架构之间的关系:
面向模式的软件体系架构) >中首次提出了8种体系结构模式:层(layers)、管道和过滤器(pipes and filters) 、黑板(black board )、代理者(broker)、模型-视图-控制器(model-view-controller)、表示-抽象-控制(presentation-abstraction-control)、微核(microkernel)、映像(reflection)。
6、架构定义中指出系统由多种结构构成的,下面列出一些常见的结构。
7、质量属性
系统从设计、实现到部署的整个过程中考虑质量属性的实现。
质量属性包括下列三类:(1)、系统的质量属性。
(可用性、可修改性、性能、安全性、可测试性和易用性)(2)、受架构影响的商业属性。
(上市时间、成本和收益、所希望的系统生命期的长短、目标市场、推出计划、与老系统的集成)
(3)、与架构本身相关的一些质量属性。
(概念完整性、正确性与完整性、可构建性)
六个质量属性的战术列表:
三、设计架构。