阿哥论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 1108|回复: 0

帮助你认识 什么是架构?

[复制链接]

11

主题

0

好友

43

积分

IT工程师

Rank: 1

升级  86%

发表于 2013-1-1 22:09:30 |显示全部楼层
<div id="cnblogs_post_body"><div class="Section0" style="layout-grid: both loose 15.6pt none;">
  想当初在学校初次接触asp.net的时候   书上就给出ASP.NET架构 是一个……。我们脱口而出的架构 ,在脑海中 就是一团隐晦的 云团,看不清,道不明,它到底是个什么。困扰了我好段儿时间。今天我来总结一下我所理解的架构,帮助跟我一样的菜鸟们提供一个理解的参考,更希望一些大能前辈们给出一些指点,以及未来向此发展的方向。

(注:以下均参考,百度百科)
百度名片给出了一个架构的解释:
架构,jià gòu。人们对一个结构内的元素及元素间关系的一种主观映射的产物。也可指构筑,建造。
(看到这里,还是没有一个清晰的概念,什么结构,元素,映射产物。没关系。往下继续看,看到最后,再回归这句话,也许会有拨云见山的感觉)

我们理解的架构当然属于软件方面的
下面我们来看看软件架构的简介
软件架构
1.(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
2.软件架构是一个系统的草图。
3.软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。
4.在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个或者对象。
5.在面向对象领域中,组件之间的连接通常用接口(计算机科学)来实现。

从上述软件架构的简介中,我们来捕获接个关键词:
1抽象模式。2设计。3草图。4抽象组件。
从中我们会意识到什么呢? 我所理解的是,
架构,它是一个抽象的,即非实物的,它无法表现出来,它是设计出来的,可以把它设计成一份草图,通过图像形式表现出来,构成图像的内容,可以用抽象出来的元素(组件)。关系(连接线)来表示。
在一个软件开发的项目中,我们根据需求,设计出这个系统的元素,和元素间的关系,通过图表现出来。并根据设计图。完成我们的工作。这就是一个软件系统的架构。呈现架构的图,叫做架构设计图。(如图)


这个图,我们就可以称之为,一个架构的表现形式。也就是架构设计图。
我们可以把每一个矩形,看做一个元素,可视为我们软件的一个组件。元素间的线,表示各个元素间的关系。这些线,在软件开发中,我们可以用接口来连接。
当一个开发项目被架构师,架构出来之后。我们所做的就是开发出架构所需要的每一个元素。然后在把这些元素根据不同需求联系起来。
架构,它就相当于,一片文章的大纲,一本书的目录,一个项目的设计规划。
现在我们再来看看架构的解释
架构,jià gòu。人们对一个结构内的元素及元素间关系的一种主观映射的产物
再想一想,是不是不在那么隐晦难懂了?
写这篇内容的目的是认识架构是什么,虽然它是一种设计,是抽象的,但是它可以让你脑海中有一副清晰的画面存在,表示它是架构。这就表示,我的目的打到了。
架构领域博大精深,要求过硬的,软硬件基础,和丰富的经验做铺垫,还要有超一般人的能力和毅力。(当然,待遇也是没话说的。)也许在很久的将来,我也能成为一名自豪的架构师。YY一下。
希望对大家有所帮助。

(附加一些架构的相关知识)
要素
一般而言,软件系统架构Architecture)有两个要素:   
1它是一个软件系统从整体到部分的最高层次的划分。   
一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。   详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)。所谓架构元素,也就是组成系统的核心"砖瓦",而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。   
2建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。   
在建造一个系统之前会有很多的重要决定需要事先作出,而一旦系统开始进行详细设计甚至建造,这些决定就很难更改甚至无法更改。显然,这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察。
目标
  正如同软件本身有其要达到的目标一样,架构设计要达到的目标是什么呢?一般而言,软件架构设计要达到如下的目标:   
·可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。   
·安全性(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。   
·可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。   
·可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。   
·可伸缩 (Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展。   
·可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费。   
·客户体验(Customer Experience)。软件系统必须易于使用。   
·市场时机(Time to Market)。软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部