您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

软件架构的历史

时间:2020-03-28 10:10:40  来源:  作者:

际上,很早就想写一篇“软件架构"的历史,但一直没找到时间。写这个的原因比较简单,就像我们学很多东西的时候我都会关注历史一样,以史为鉴,指导未来。外,我发现还没有人写过类似的文章。希望给大家有所启示,共同学习。

第一阶段:20世纪50年代后期“块状图”出现

1928年,一种通过有限的指令序列来解决这个问题的算法被提出。 冯·诺依曼于1947年开发了“流程图”(Flow Chart),该流程图是对指令流的可视化表示,目的是通过继承流程图(Flow Process)和多流程图的思想,来规划计算机程序。 但是,这里有一个缺口来指出控制的流程。 因此,“控制流程图”(Control Flow Diagram, CFD)是在20世纪50年代后期发展起来的,用来描述业务流程和程序的控制流。 这不足以查看复杂的系统。 因此,为了通过划分块来揭示整个系统,50年代后期开发了“块状图”。 每个模块的功能以及模块之间的连接将在图中显示。在这个时候,你会发现很多架构师常用的块状图就已经出现了。

软件架构的历史
 
 
 

第二阶段:1968年艾兹格·迪科斯彻提出 “software structure matters”

Edsger Wybe Dijkstra(艾兹赫尔·戴克斯特拉),这位是公认的结构程序设计之父 ,1968年,他提出了“软件结构很重要”,虽然当时并没有提到“架构(architecture)”概念,但是我觉得软件“结构”的设计和实现是软件架构的基础,其重要意义不言而喻。同年又引出了“模块化编程”, 组件之间的逻辑边界称为模块。

第三阶段:1975年"Three-schema Approach"提出

在1975年,采用基于模块化编程的分层体系结构的“三模式法”得到了发展。 它用于在系统开发中使用三个不同的视图构建信息系统,分别是external,conceptual以及physical。

软件架构的历史
 
 
 

第四阶段:1987年"Zachman Framework"提出

在1987年,约翰·扎克曼(John Zachman)提出了基于上面的三层框架的六层框架,即所谓的“扎克曼框架”(Zachman Framework),它在“企业架构”时代仍然发挥着重要作用,并对框架 DODAF、 TOGAF、 TEAF和 FEAF产生了影响。 1993年, Zachman发布了修改后的 Zachman框架,其中包含了更多的视图。

软件架构的历史
 
 
 

第五阶段:1995年 Philippe Kruchten 提出了 4+1 视图

在1995年,Kruchten提出跨时代的4+1视图,我觉得这个4+1视图基本上每一个架构师都学习过,这个应该是经典中经典。同年,第一个正式版本的TOGAF也诞生了。次年,Mary Shaw和David Garlan 提出了另外一个经典的“Architecture as high level abstractions”。详细内容可以参考Mary Shaw 的 wiki。

软件架构的历史
 
 
 

第六阶段:2000年 IEEE 1471

在2000年,世界最大的专业技术学会(IEEE)终于批准软件架构的第一份正式的标准(Standard for Architecture documentation)。

2006年,ISO采纳了IEEE 1471作为内部标准,然后IEEE和ISO一起修订并以ISO 42010- Systems and Software Engineering Architectural Description为新标题发布,涉及修订的内容有,

术语澄清:例如架构关注点、架构模型、架构视点

应用范围:从软件密集型系统扩展到更大范围

和ISO生命周期一致:对应ISO 12207和ISO 15288

概念演化:调查‘架构描述’和‘架构决策’是否已有实用的描述

此外,42010还往元模型中添加了架构框架的概念,如下

软件架构的历史
 
 
 

第七阶段:2005年Jansen,A.,Bosch,J:提出了‘架构即设计决策’

在2005年,Jansen等人提出了,架构即设计决策(Architecture as design decisions)。如果说之前所有的工作都是回答"什么是架构"(what),这篇文章告诉我们怎么(how)去做‘软件架构’。

第八阶段:2011年Poort 和Van Vliet 提出 RCDA

在2011年,RCDA(Architecting as a risk- and cost management discipline)提出,将架构视为风险和成本管理学科有助于软件架构师和利益相关者集中精力他们在高影响力问题上的活动,从而提高架构对组织的价值,这里回答了我们为什么(why)要做软件的架构。

到此为止,从软件架构的发展历史上,已经回答了1)什么是软件架构2)怎么做架构3)我们为什么要做软件架构三个重要的问题。



Tags:软件架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
如何设计一个好的软件架构,如何提高软件的扩展性,移植性,复用性和可读性?很多做嵌入式开发的朋友经常会遇到这种情况:一个项目软件设计完成了,客户提出了一些新的功能需求。这时侯...【详细内容】
2021-11-08  Tags: 软件架构  点击:(35)  评论:(0)  加入收藏
一、架构软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础...【详细内容】
2021-08-31  Tags: 软件架构  点击:(78)  评论:(0)  加入收藏
1. 前言嵌入式是软件设计领域的一个分支,它自身的诸多特点决定了系统架构师的选择,同时它的一些问题又具有相当的通用性,可以推广到其他的领域。提起嵌入式软件设计,传统的印象...【详细内容】
2021-04-15  Tags: 软件架构  点击:(250)  评论:(0)  加入收藏
存在任何解决实际人类问题的业务。它可能是提高速度,降低成本,提高便利性,增加生活乐趣或使知识触手可及。通常用于解决这些业务问题的技术。但是,为什么设计模式很重要?IT系统的典型挑战是可用性,可伸缩性,弹性,数据管理,性能...【详细内容】
2021-01-14  Tags: 软件架构  点击:(176)  评论:(0)  加入收藏
今天谈下架构设计中的分层思维和分层模型以及基于分层思维下的架构构图逻辑。架构思维概述对于架构思维本身仍然是类似系统思维,结构化思维,编程思维等诸多思维模式的一个合...【详细内容】
2020-11-23  Tags: 软件架构  点击:(106)  评论:(0)  加入收藏
解耦的对立面是耦合,耦合是指阻碍变化的依赖;解耦是要在依赖的基础上,做到应对可能的变化。架构的定义架构是软件方法学的范畴,它解决的是软件组织的问题,不解决软件算法的问题。...【详细内容】
2020-11-23  Tags: 软件架构  点击:(132)  评论:(0)  加入收藏
编者语:微服务,就是将单体(monolithic)代码分解为易于维护的块,而这正是运维(devops)哲学的关键。或者说是基于不断扩展的业务而实现针对业务功能域的应用商业价值的快速交付或敏捷...【详细内容】
2020-10-30  Tags: 软件架构  点击:(101)  评论:(0)  加入收藏
架构模式是对给定上下文的软件架构中常见问题的一种通用的可复用的解决方案。一种模式就是特定上下文的问题的一种解决方案。然而,很多开发者至今还对各种软件架构模式之间的...【详细内容】
2020-10-30  Tags: 软件架构  点击:(96)  评论:(0)  加入收藏
SQLite是一个非常受欢迎的数据库,在数据库排行榜中已经进入前十的行列。这主要是因为该数据库非常小巧,而且可以支持Linux、Windows、iOS和Andriod的主流的操作系统。 SQLite...【详细内容】
2020-09-25  Tags: 软件架构  点击:(91)  评论:(0)  加入收藏
阿里达摩院的一位大佬曾经说过:要成为一名优秀的软件架构师,需要攻克以下三个难关: 需要掌握各种技术的优缺点与特性,才能知道如何使用。 站在架构设计者的角度,思考一款优秀的...【详细内容】
2020-09-02  Tags: 软件架构  点击:(103)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条