什么是SA?

SA即Systems Architecture,是系统体系结构。

系统体系结构是定义系统的结构、行为和系统视图的概念模型。架构师将其系统的形式化描述或表示出来,以支持结构和行为的推理的方式组织。

谈起SA,我第一印象总觉得他是一个概念,一个混淆的概念,因为他被提出时就是模糊的。然而随时不断的接触,它其实是会越来越清晰的出现在我们眼前,他是那么的有条理,那么的明确,甚至连动态变化都可以被用文字语言描述。

我看过一些架构相关的书籍,然而大部分书中描述的内容都是一种作者最熟悉,或者自己创新的结构。当然,它们很有用,但某一种结构或几种组合都不能代表SA,它们只是SA繁衍出来的具体行为的指导思想或结构模板。

ABSD

ABSD(architecture-based softwar design)基于体系结构的软件设计。ABSD方法是一个【自顶向下】,【递归细化】的方法。ABSD把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现、演化6个子过程。

什么意思呢?就是在做架构时,有一个正常的顺序:

【需求=>设计=>文档化=>复审=>实现=>演化】

这是一个自顶向下的顺序,但节点之间和节点内部还存在递归,并且每个节点都有自己独特的细化方案。

有兴趣的同学可以百度了解一下ABSD。或者买些相关书籍。

为什么推荐ABSD呢,因为我觉得大多数系统结构,都是基于ABSD扩展的。学会ABSD以后,在阅读其他相关书籍时,会事半功倍。

我心中的SA

SA并不是只有思想,在实践的过程中,我们还要设计或者选择框架,在ABSD中,SA被被分为三个基础元素,分解、风格、模板。然而我觉得风格和模板可以合并,改称为框架,相信很多架构师都有自己的框架,而且可能有很多个框架。

SA实践时,有很多种方法,步骤也可以不同,书上的概念总是希望将很多内容归纳或归类为一;然而现实中,我们在实现SA时,往往是设计与框架同时进行。所以我觉得实战中,大部分架构师的设计顺序应该是这样的。

一,分解子系统和功能模块;

二,设计框架模型;

三,分析功能模块;

四,设计框架详细。

然而现实中不会有这么清晰的边界,真实的情况可能是,这四步也相互穿插,同步进行。

为什么SA的解释那么多?

这是个很有趣的问题,因为很多人都在用学习,创新SA,他们在尝试为它定义的同时,还尝试将软件设计模式,软件开发方法,软件管理方法,软件风格,软件模板等等概念与SA进行分离,并逐一明确其概念和实现。

虽然细节很重要,没有细节的SA都是空谈,但如此多的书籍和定义,导致的结果就是,很多人在学习时,需要面对茫茫多的概念,找不到总纲,然后混乱的一沓糊涂。

我突然想起了王阳明先生的“知行合一”;知行本是一,却被拆分为二,圣贤教人知行,却被后人传为知与行。

我觉得软件概念目前也存在着这样的情况。例如XP极限编程,如此详细的构建了开发细节,明明是SA的一种,可却被定义为软件开发方法,看起来好像XP和ABSD和ADMEMS是不同的东西了。

为什么呢,因为很多SA的书籍在编写时,有些书想重点突出设计思想,因为他觉得那是他的亮点,而人员分配,设计模式,并未提及。但依据其思想其实是可以推理出开发测试分工的。再比如,XP重点突出其特殊的人员配置和分工模式,但其分布式模块,独立设计的设计思想也是跃然纸上。

【PS:但如果你都能依据他的书中的部分内容,推理出整个SA细节,那我觉得你也不需要看他的书了。】

回到现实中,在茫茫的网络世界里,我们只是因为其突出的侧重点不同,而强行将其分类定义,只是增加后学的学习难度和成本,而已。

后记

架构重点关注问题

理解系统要解决的问题

认识系统特性与要解决的问题间的关系

识别系统的核心行为

整理系统的非功能性需求

确定架构需求

管理需求

规划系统的高层组织

确定架构机制

分析用例场景

演进系统的高层组织并形成组件模型

规划系统的运行时架构和部署模型

规划系统的实现模型

编写核心代码

验证架构设计

整理架构文档

----------------------------------------------------------------------------------------------------

注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!

转载于:https://www.cnblogs.com/kiba/p/9207052.html

谈谈我理解的SA——Systems Architecture相关推荐

  1. 面试精讲之面试考点及大厂真题 - 分布式专栏 18 谈谈怎么理解幂等,接口如何保证幂等

    18谈谈怎么理解幂等,接口如何保证幂等 时间像海绵里的水,只要你愿意挤,总还是有的. --鲁迅 引言 稳定性设计第一篇:这一小节开始讲设计系统稳定性保证的相关设计,谁都不想自己负责的系统三天两头就出故 ...

  2. 白杨SEO:谈谈我理解的品牌,个人与企业品牌的区别

    前言:这是白杨SEO公众号原创第236篇.为什么写这个?因为我发现很多不管是公司还是个人,对于品牌的理解有一些误差.要么不足,要么又太过.所以白杨来谈谈,也许对你启发.如果觉得不错,点赞或分享需要的朋 ...

  3. 白杨SEO:谈谈我理解的营销,企业营销怎样做?

    前言:这是白杨SEO公众号第244篇.有好几天没写了,上周几天在忙结婚的事,末尾有图哦.今天来写一篇我理解的营销,也许会对一些打工人或老板会有一些启发,觉得不错,点个在看哦~ 新知达人, 白杨SEO: ...

  4. 互联网流量是什么意思_谈谈我理解的流量

    互联网流量是什么意思_谈谈我理解的流量 我们先从标题说起,谈谈我理解的流量.流量前并没有加互联网,也没有加线上.线下,也没有加付费.免费,说明这个是包含所有流量.当然这个不包含手机流量那一类!为什么今 ...

  5. 谈谈如何理解“大数据”

    谈谈如何理解"大数据" 大数据(Big Data),字面意思是"海量数据",简单讲就是所涉及的数据量规模巨大到无法通过目前的主流技术和工具来处理,这里的&quo ...

  6. 预言机理解:A Scalable Architecture for On-Demand, Untrusted Delivery of Entropy

    阅读背景 由于要做智能合约随机数监测相关的内容,所以也需要调研清楚目前智能合约随机数生成的手段之一:预言机. 本文来自链接智能合约预言机随机数生成案例的github主页,感兴趣也可以阅读. 概览 Th ...

  7. 谈谈我理解的文化包容性

        按中国古代的观点,人由身心两个部分组成,心主旨人的精神,身乃心的附属,随着人类的发展逐渐形成了自身的生活方式.文化从字面的意思来说,文是代词,代人的精神和文明:化是动词,表示一种变化.进化和转 ...

  8. 用matlab的ADC和DAC过程,谈谈我理解的ADC和DAC

    0 序言 在讲模数转换(Analog Digital Converter,ADC)和数模转换(Digital Analog Convert,DAC)之前先说一下什么是模拟信号和数字信号. 模拟信号可以 ...

  9. 谈谈我理解的敏捷开发--转载

    "敏捷开发" 几乎成了互联网家户喻晓的一个热门话题.每个人都在聊敏捷.Scrum.XP. 我对"敏捷"的认识还算是在一个正在探索的阶段.网上有非常多的资料,五花 ...

最新文章

  1. 简单介绍 ghost封装过程
  2. linux 入侵检测
  3. mac使用被动ftp模式(pasv)_网络安全工程师与白帽子黑客教你:Kali Linux之使用Metasploit进行FTP服务扫描实战...
  4. discrete mathematics important questions
  5. Android复习03(Get请求访问网络[详解]、获取文章列表)
  6. FP、FN、TP、TN、精确率(Precision)、召回率(Recall)、准确率(Accuracy)评价指标详述
  7. 【Python】时间处理:日期减少n年(考虑闰年)
  8. winfrom软件开发汽车测试_ETci — 全自动软件测试调度(持续集成)平台
  9. php基础知识总结大全,php基础知识回顾 —— 常量
  10. word 2016 for Mac 如何缩小编号与后面文字之间的缩进间隙
  11. mysql 系统月份_MySQL里求给定的时间是所在月份的第几个星期
  12. OC中类别、扩展、协议与托付
  13. 史上最全linux内核配置--Device drivers
  14. 资本家的收割阴谋---空气币FIL“挖矿”庞氏骗局还能坚持多久?
  15. 支付宝支付原理以及测试接口获取支付url
  16. xcopy 跳过已经存在的_南京的野猪已经会逛奶茶店了?!
  17. UVA 12304 2D Geometry 110 in 1! 六个直线与圆的问题+经典几何
  18. 特征筛选利器:详解T-test(T检验)原理、参数分析、单\双尾检验选择
  19. WPS公式编辑器的MTExtra字体无效,将无法显示和打印某些字符
  20. windows10删除自带输入法

热门文章

  1. Android的消息循环机制:Handler
  2. ajax同步和异步区别
  3. DSP、SSP、RTB的理解--计算广告
  4. 逻辑运算符以及逻辑表达式
  5. scrapy爬取豆瓣电影教程
  6. CUDA在VS中的环境搭建
  7. 0930-值得纪念的一天,永远不要心存侥幸
  8. 【NIPS 2016图神经网络论文解读】Variational Graph Auto-Encoders (VGAE) 基于VAE的图变分自编码器
  9. Android常用五大平台上架详解
  10. C# 参考 cool edit 样式, 绘制音频波形图