初识软件体系结构(架构)

学习软件体系结构(架构、构架),首先应该了解一下什么是软件体系结构(架构、构架)?

(软件体系结构、架构、构架说的是同一个概念)

关于软件体系结构的定义太多了,并没有一个准确的定义,列出以下三种种定义作为比对:

1、来自百度百科的定义

  软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。

2、From Wikipedia, the free encyclopedia

  Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. These structures are needed to reason about the software system.

  Each structure comprises software elements, relations among them, and properties of both elements and relations.

  The architecture of a software system is a metaphor, analogous to the architecture of a building.

3、IEEE的定义

  构架是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。

其实光看定义,并不是很理解。通过看一些文章,我是这么理解架构的。

  架构是一种长期进行工作后,为了方便,减少工作时间,同时又可以提高工作效率而提出的一种实践经验的总结。比如说盖房,自己一个人或者朋友帮助自己盖房,只是一点一点的堆积成一个房子,这并不是架构。而是以一种方便快速的方式,构造出一个房子的轮廓,然后盖好房子。这里面就有可能用到了架构。就好比平底建金字塔,普通的堆积是没有用到架构的,但是涉及到内部空间:机关、墓穴等的设计就用到了架构了。架构之间必须有着某种联系。比如一个房间要有窗户,用来沟通外界与内部。

  作为架构师,首先需要找到利益相关者,从而确定问题是谁的,这个是非常重要的,之后才能确定是什么问题。确定问题之后,就可以将大问题切分成一个一个小问题。但是并不是所有问题都可以切分的。当然能随着问题的切分,与其相关的利益也随着切分了。有付出是有回报的,利益与付出需要对等,否则员工就会消极怠工了。

什么是软件架构呢?

  软件体系架构又可以分为部署架构、代码架构。

  当做一款小程序的时候,是用不到架构的,一个人,一台电脑,就可以完成工作。

  但是,一旦这个工程庞大复杂,就需要进行很多人同时工作。我们如何将这个工程做好呢?这就需要一个架构师了,进行一个全方位的控制,以一个上帝的视角观看着整个工程。

  首先,需要将工程划分,可以以功能的角度划分成一块一块的;

  然后,各个功能块之间通过某种联系连接起来;功能之间的层次结构越少越好,有助于管理;

  最后,就是分配任务,同时也是利益的分配。

利益最大化,是每个人所期盼的。架构师的义务就是让利益最大化,效率最大化。

 

posted @ 2016-04-28 17:45  植入代码  阅读(664)  评论(2编辑  收藏  举报