01从软件体系结构(架构)谈起

01

关于软件架构(Software Architecture),这其实也是仁者见仁,智者见智,不过也早有了一个国际标准了,我所使用的概念全都来自国际标准。

国外软件架构的书有很多,有卡耐基梅隆大学的《软件构架实践》,作者们是美国国防部军事软件的供应商,这个大学好像外包了美国的很多军事项目。不过这本书讲的项目都是军事项目,我们软件技术人员大多是没有搞过搞军事项目的。我们更多的是企业应用软件的开发,所以,那本书中的军事领域里面的那些术语,很多是和我们软件开发过程中的术语是不一样的,因此,我们不会太多的涉及这本书的内容,当然了,虽然我们无法用他书中的概念来谈关于架构的问题,但它的那里面的很多方法也是可以参考的。

What’s Software Architecture?

软件架构,也可以称为是软件系统结构,或者说软件实际上是软件系统的一个简称。

它最核心的一个方法论,是面对真正的需求,去寻找到一个架构,从而能够平衡(balance)的完成这个需求。

02

我们先来看看,软件是个什么东西?

What’s Software?

软件是什么?

Software is a general term used to describe a collection of computer programs, procedures and documentation that perform some tasks on an operating System.

这个软件它是用来干什么的呢?

它是一个计算机的程序,然后呢,是这样的一个集合或者一个收集物。要让程序通过系统来执行一些任务,就是一个执行过程,从操作系统的眼光看,它是运行在操作系统上的很小的一个局部的过程。

那什么又是软件系统呢?

What’s Software System?

The term software system is often used as a system of computer program or software.

A software system is a system based on software forming part of a computer system(a combination of hardware and software).

The term software system is related to the application of systems theory approaches in software engineering context. This approach is often used to study large and complex software,because it focuses on the major components of software and their interactions.

The term software system is also related to the field of Software Architecture.

我们再来对软件系统做一个更深刻的说明,软件系统这个术语,它常常也是一个计算机程序。或者软件的一个同义词。一个计算机系统包括了硬件、软件。当我们讲一个软件架构的时候,我们要跟硬件与软件,粘连在一起吗?软件架构是需要映射一个组织的架构吗?

核心问题是,软件有一个架构。先有架构,然后软件,然后又有一个语境。我们直观的看到软件要部署在硬件上,这样构成了一个计算机系统,而这个计算机系统,是需要运行在一个企业里面的,它首先要映射一个企业。这是我们的两个核心。

一个软件系统在一个企业里面,要包括四个部分,软件,硬件,组织,信息。

那么,软件系统有哪些分类?

Major Categories of Software Systems:

Application software/Programming software (DevelopmentTools)/System Software

应用软件/编程软件(开发工具)/系统软件

03

首先,介绍一下软件体系结构的核心概念和关键图像。

Architect (架构师) 名词/Architecting(构架) 动词/Architecture(架构,体系结构) 名词

Architect performs Architecting./Architecting results in Architecture./Architect creates Architecture.

他们的关系是,架构师构架体系结构。那,什么是架构师呢?

What is An Architect?

System stakeholder(涉众) responsible for a system’s architecture.

架构师是,负责系统体系结构的系统利益干系人(涉众)。

04

软件架构首先放在了一个软件工程的语境里面,它最重要的目标就是提高它的模块的通用性,以及关注点的分割,通过这两个核心的手段,来降低软件的复杂性,这是软件工程中要解决的重中之重的问题。

Approach,是一个途径。达到一个目标你有很多途径,在一些条件的限定下,你获得一种对各种资源的平衡(比如项目管理中,资源时间成本,三者互相统一又互相矛盾的关系),你再去选择一条适合你的一种途径。

各种类型的软件系统都有一个架构。它是系统里面一个有效的组成部分,这就把我们的范围在逐渐缩小,逐渐限定。我们首先要选择一下我们的方向,我在书中探讨的是,应用软件的架构。

软件一定会有一个架构,不管你有没有意识到,架构一定存在。那我们研究架构的时候需要考虑,是哪一种类型的架构,我们先下决心去做一种选择,然后再确定我们研究的是应用软件,那应用软件也会有很多呀,我们到底要做什么,我们最终要选择的是做一个application,在企业的环境中,去做一个企业级的应用。

通过这样一系列的选择,用的这个方法,其实是非常复杂,因为你要进行取舍,最后才能确定方向。然后呢,还要找到一个架构,来达到一种很好的平衡,这样才算理解了前进的方向。

05

架构师通过他的思考与设计,构建了一个符合要求达到标准的软件架构。

注意我们的主语和谓语,我们现在的目光要聚焦在谁在干这个事儿,不是如何干,也不是干成的结果是什么,也不是等着这个结论与结果,然后用一个东西把它描述一下。

很多人,把架构理解成了一种结果性的东西,比如系统文档,他们认为通过这些文档,就理解了这种文档背后的系统交流的语言,这个方向其实有点问题,搞成了反推机制,也就是说我们开发好一个软件后,然后再解释这个软件是如何产生的,反过来再解释这个软件的架构,而不是把架构理解成一个动态正向的过程,是一个前期的设计过程,这其实已经搞反了。

我们有时候,会看到软件工程中有很多的蓝图,这其实是设计上的东西。

而这三者的关系是,架构师通过执行构架这个活动,然后设计实现了一个架构。

06

当然,在现实生活中,很多时候架构实际上是三个要素(政治,经济与技术),斗争与评价,甚至是迭代的动态平衡后的一个结果。

首先是一个技术面临的实现因素,你在企业里面呆久了之后你就会知道,架构,首先是政治斗争的结果,然后是经济斗争的结果,再然后才是技术选择的结果。

比如,在一个公司里,每个销售经理从怎么维护自己部门的利益的角度来看问题,其他部门的负责人也是如此,而很少有人能从大局观来看问题,当然老板必须从大局观来看。这是因为公司的政策都会影响他们,会影响他们的收入,地位,以及未来发展前途。

所以,每一个架构也会影响他们,组织结构也是一种balance的结果。因为我参与了一些事务的决策过程,这里面的利益之争是非常复杂的。

第一个要素首先是正视权力斗争的结果,然后下一个是经济利益斗争的结果,第三位才是技术选择的结果。

如果我们有足够多的开发经验和人生阅历的话,你慢慢就会接受一个概念,架构没有最好的,只有适合自己的,只有适合自己特定的企业环境的。

当然了,这个世界上充满智慧的人也很多,很多人都是高标准、严要求,甚至很多都算是完美主义者,包括我自己,但我发现这种思考问题的角度是大有问题的。

我们在开发软件的过程中,尤其是在实现软件架构的过程中,有很多人在技术上喜欢用比较新的东西,有技术含量的东西,以体现出我是牛人的特点的东西。从而,力争把软件设想得比较先进,以证明我的伟大。

但实际经验,我要告诉你,你那叫找死,你只要能够解决问题,达到平衡,能按时完成任务,让老板们赚到钱,然后你也赚到钱,你只需要比别人多想一小步就足够厉害了。

因此,在架构面前,我们不做best,做到better,我认为就很perfect了,这是因为,在技术面前,总有更新的,也总有更先进的,你追求这个永远追求不完。当然了,我们还要有一个考虑,步子不能太大,要结合实际情况,财、物、人、力,各种资源整体协调前进,做先锋做先驱可以,做先烈就有点惨了,如果没有各方面足够的投入,那就没有必要了。

你可以做一个先驱,而不要紧接着做了先烈,一不小心把自己作死了,这就是有点冒进了,因此,我们要把握好这个度。

所以,有这样一句话,叫尺度把握人生,高度决定视野,角度改变观念。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容