文档章节

软件架构初探

robertchao
 robertchao
发布于 2016/05/04 10:44
字数 617
阅读 4
收藏 0

  并不是只有架构师才需要考虑架构,作为一个普通程序员也需要了解。最近在读Simon Brown的《程序员必读之软件架构》,跟大家分享一下。

  什么是架构呢?作为名词,概括起来都与架构有关:将产品分解为一系列组件、模块和交换。作为动词,包括你要构建什么,设定愿景以便进行构建和做出恰当决策。

  架构的种类有多种,基础设施、安全、技术、解决方案子、网络、数据、硬件、数据库......他们的共同点都具有结构和愿景

  那什么是软件架构呢?软件架构不局限于软件,还有应用程序的架构、系统架构,甚至还有企业架构。其中企业架构需要更高层次的抽象,关乎广度而不是深度,关乎战略而非代码。

  人们现在都喜欢敏捷软件架构,那什么是敏捷呢?John Boyd提出了一个名为OODA循环的概念。你需要不断确定方位,决定做什么,并采取行动。敏捷是相对的,并且按照时间衡量,如果团队交付的软件跟不上环境变化,就不算敏捷。敏捷的架构在整体架构和微服务架构之间,要理解整体架构跟基于微服务的架构的这种权衡,并做出相应的选择。

  架构跟设计是什么关系呢?所有的架构都是设计,但并非所有的设计都是架构。架构反映了使一个系统成型的重要设计决策,而重要性则通过改变的成本来衡量。

  架构的重要性,缺乏架构带来的灾难,相信大家都有所经历。毫无疑问,所有软件项目都需要软件架构!

软件架构角色包括架构驱动力,软件设计,技术风险,架构演化,编写代码,质量保证。一个软件系统很少孤立存在,技术领导是一个角色而非级别。每个人都应该提出自己对这个角色的定义。

软件架构师是应该编码的,架构师需要构建工程原型、框架和基础,进行代码评审,但是架构师绝对不能把时间都花在编码上。



欢迎扫描二维码


 

© 著作权归作者所有

共有 人打赏支持
robertchao
粉丝 3
博文 55
码字总数 30285
作品 0
海淀
Android工程师
私信 提问
C#进阶系列——DDD领域驱动设计初探(一):聚合

原文:C#进阶系列——DDD领域驱动设计初探(一):聚合 前言:又有差不多半个月没写点什么了,感觉这样很对不起自己似的。今天看到一篇博文里面写道:越是忙人越有时间写博客。呵呵,似乎有点...

杰克.陈
2017/12/19
0
0
Elasticsearch技术分享(一)

场景 与同事分享一下最近学习es的心得 大纲 1)es使用场景 2)搭建环境与集群基本运维命令介绍 3)基础分布式架构初探与核心概念解读 4)实战 分析 一、es使用场景 1) 什么是 es A) 故事引入...

PENGYUCHENG32109
2017/03/20
0
0
OSChina 技术周刊第十八期 —— 2015 年 OSC 源创会行程计划

每周技术抢先看,总有你想要的! 移动开发 【软件】开源 Android ORM 框架 OpenDroid 【博客】自己动手做推送 前端开发 【软件】jQuery 全屏滚动插件 fullPage.js 服务端开发/管理 【软件】W...

OSC编辑部
2015/01/18
0
0
C#进阶系列——DDD领域驱动设计初探(四):WCF搭建

原文:C#进阶系列——DDD领域驱动设计初探(四):WCF搭建 前言:前面三篇分享了下DDD里面的两个主要特性:聚合和仓储。领域层的搭建基本完成,当然还涉及到领域事件和领域服务的部分,后面再...

杰克.陈
2017/12/19
0
0
干货来了!2016年DevExpress资源汇总(更新、文档)

在2016年,著名软件界面解决方案专家DevExpress进行了重大升级,EVGET围绕版本升级推出了一系列干货资源,现将2016年所有Dev资源使用教程汇总于此,欢迎收藏转发点赞哦~ DevExpress WPF入门指...

Miss_Hello_World
2016/11/25
36
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 - 第一种是将本地jar包安装在本地maven库 - 第二种是将本地j...

独钓渔
46分钟前
2
0
五、MyBatis缓存

一、MyBatis缓存介绍 缓存的使用可以明显的加快访问数据速度,提升程序处理性能,生活和工作中,使用缓存的地方很多。在开发过程中,从前端-->后端-->数据库等都涉及到缓存。MyBatis作为数据...

yangjianzhou
今天
2
0
最近研究如何加速UI界面开发,有点感觉了

最近在开发JFinal学院的JBolt开发平台,后端没啥说的,做各种极简使用的封装,开发者上手直接使用。 JBolt开发平台包含常用的用户、角色、权限、字典、全局配置、缓存、增删改查完整模块、电...

山东-小木
今天
3
0
《月亮与六便士》的读后感作文3000字

《月亮与六便士》的读后感作文3000字: 看完英国作家威廉.萨默塞特.毛姆所著《月亮与六便士》(李继宏译),第一疑问就是全书即没提到“月亮”,也没提到“六便士”。那这书名又与内容有什么...

原创小博客
昨天
2
0
微信网页授权获取用户信息(ThinkPHP5)+ 微信发送客服消息(一)

以thinkphp5为实例,创建控制器 class Kf extends Controller { /** * [protected description]微信公众号appid * @var [type] */ protected $appid = "xxxxxxxxxxxxxxx"; /** * [protected......

半缘修道半缘君丶
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部