从目前的记载来看,其实软件架构的具体起源已经很难被确定了。在1960年代,艾兹格·迪杰斯特拉等开始涉及软件架构领域,从1990年代后,软件架构这个概念开始变得愈发流行。而碰巧的是,1968年秋季,NATO科技委员会召集了一群优秀的软件工程师,进行头脑风暴,为了想出“软件危机”的解决方案,也是在这次会议上诞生了Software Engineering概念,即软件工程。
1993年,电气电子工程师学会(IEEE)给出了对于Software Engineering的定义:
软件工程是面向工程领域的,软件工程包含软件架构的设计,而软件架构即是一张开发蓝图,是一个计划,是整体的规划,亦是软件工程的指导方针。软件工程主要目标,如图所示。
想全面系统地了解计算机软件架构的知识,还可以参考《移动开发架构设计实战》,掌握架构体系知识。
企业架构与软件架构之间的关系主要有以下4种方面。
1、系统相互作用:企业架构和软件架构都相互作用。企业架构为软件架构提供了业务需求、架构目标和指导方针,而软件架构则实现了企业架构的目标和需求。
2、沟通协作:企业架构也要考虑到与软件架构的沟通协作。企业架构将业务目标转化为软件开发过程中的具体目标,从而使软件架构师更容易理解软件开发目标,并将其转化为具体的软件需求。
3、维护管理:企业架构和软件架构也都需要管理,但是针对的层面不同。企业架构需要关注企业的整体架构和管理,而软件架构需要关注具体软件的设计和管理。
4、变更处理:企业架构和软件架构在变更处理方面也有联系。企业架构和软件架构都要面对变化和需求变更,而且它们之间的变更也会相互影响。
1、概念不同:架构设计师指的是一种高级程序员;而软件设计师是指能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档的实用性人才。软考名师薛大龙课程免费试学
2、工作职责不同:架构设计师主要负责公司系统的架构设计、研发工作,同时参与部门研发技术方向规划负责提供产品框架和技术路线等;系统分析师在软件开发流程中主要从事需求分析工作,同时也涉及可行性分析和概要设计的部分工作。
想要学习软考的知识,推荐您来51CTO学堂,它是2013年由51CTO重磅推出的IT在线教育平台。51CTO学堂汇集各类IT精品视频课程,致力于打造顶尖IT培训讲师、网络技术精品培训课程、培训自测题三位一体的网络教育特色,是国内最完善、最专业的IT在线教育平台。51CTO学堂由精品视频课程和直播公开课两大主流形式,视频教程栏目包括:操作系统、考试认证、网络/安全、服务器、新技术、移动开发、开发技术、数据库等其它IT相关精品视频栏目。
软件设计中系统架构设计包括哪些内容
架构师的职责主要有如下4条: 1、确认需求 在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。 2、系统分解 依据用户需求,架
面向对象的设计中,系统架构设计的内容有哪些面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。
1)对象(Object) 可以对其做事情的一些东西。一个对象有状态、行为和标识三种属性。
2)类(class) 一个共享相同结构和行为的对象的集合。
类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。举例来说,“狗”这个类会包含狗的一切基础特征,例如它的孕育、毛皮颜色和吠叫的能力。类可以为程序提供模版和结构。一个类的方法和属性被称为“成员”。
系统架构设计师,难考吗系统架构师属于软考的高级,考试肯定是有有一定的难度的,但是如果自身基础好,通过考试自然是没问题;如果自身基础较为薄弱,参加培训通过系统的学习架构的知识体系,再做相关的试题,想要通过考试也是不难的。
系统架构设计师应学哪些书籍《软件体系结构原理、方法与实践》
《系统架构设计师教程(第2版)》
《系统架构设计师考试全程指导》
《系统架构设计师考试试题分类精解与题型练习》
《系统架构设计师考试串讲视频教程》
《新技术与新方法串讲视频教程(3课时)》
《数学与经济管理视频教程(7课时)》
《系统分析师技术指南(2009版)》
《系统分析师考试培训视频教程(88课时)》
《Beautiful Architecture》
《Beautiful Code》的姐妹作,里面有三成的架构是自己感兴趣的,已经有国内出版社拿下了,架构师的唐诗三百首------O'reilly新书Beautiful Architecture(InfoQ)。
《97 Things Every Sofare Architect Should Know 》
一个开放的wiki,O'Reilly 将它发布成书,不知道有没人在翻,架构公理的书(InfoQ)。
《Pattern-Oriented Sofare Architecture, Volume 4 - A Pattern Language forDistributed Computing》
架构模式的集大成者,号称有人在翻但等了一年中文版还是没翻出来啊,面向模式软件架构第4、5卷出版(InfoQ)。
架构技术类
云计算已经开始代替SOA成为新一代Buz Word,回顾一下整个SOA出版风潮,自己觉得值得一读不忽悠的居然只有一本《SOA in Practic - SOA实践指南-分布式系统设计的艺术》。
在热潮彻底退却前,SOA的书还在继续出着,OSGI与SCA的书也开始出现:
《SOA Design Patterns》
又是Thomas Erl的书,很奇怪的连电子版都找不到,SOA设计模式出版啦(InfoQ)。
还 没出版的呀一大堆 --《SOA Patterns》、《ESB Architecture for SOA》、《SOA with Java》、《Open Source SOA》、《OSGi in Action》、《SpringSource dm Server in Action》、《Modular Java: Creating Flexible Applications with OSGi and Spring》、《Understanding SCA》、《Apache Tuscany in Action》
编程匠师类
立志做一个匠师的人今年比较幸福,可以看的书很多:
《Beautiful Code - 代码之美》
很有经典潜质的一本,去年没有读完今年继续,《代码之美》的精选版(InfoQ)。
《Produtive Programmer - 卓有成效的程序员》
Thoughorks中国翻译的,看了下样章,熊节(透明)的翻译依然是这么好, 《卓有成效的程序员》推荐序:做一个懒人(InfoQ)。
《Clean Code: A Handbook of Agile Sofare Craft anship》
Rober。C大叔的书,不知道谁在翻,应该很容易翻啊,到后面大段大段都是代码。
《Effective Java中文版(第2版)》
怎么理解"软件概要设计是系统总体结构设计或系统架构设计概要设计的目标是描述软件模块的外观以及处理逻辑模块对外暴露的服务接口,以及需要引用的接口,接口标识,接口的访问协议,接口描述都属于模块的外观,其他的模块通过这些接口和模块打交道,自然需要在概要设计阶段对接口做细致的刻画,初此之外,对于关键的模块,外观还应该说明模块的非功能属性,比如并发处理能力,数据吞吐量以及接口调用的反馈时长等等处理逻辑是指模块从输入到输出的转换过程,描述其转换算法无论通过何种图例和表现形式,只要能够清晰地说明模块外观和处理逻辑描述,就是好的概要设计
系统架构设计师怎么复习比较好?系统架构设计师含金量。系统架构设计师含金量。考了两次系统分析师都没有通过,下半年没开考,所以想考系统架构设计师,考了几次都没通过,着实没太多信心了,不知道怎么办才好。 满意答案颠沛流离德小0级2011-07-13系统架构设计师,既然是架构设计,其实质是偏软,走的是纯技术专家路线。当然此处的偏软并非程序的设计,而是整个软件的体系架构的设计,架构设计的好坏将直接影响到软件的质量,从这点看,其技术含量是非常高的,其职业定位应该是纯软件技术专家的角度,职业选择可以主要是企业内的高级软件设计者或IT公司技术经理或技术总监一类的职位。
系统架构设计师考试武汉不报考le
系统架构设计师复习哪些重点?既然你男朋友要考的话,应该他自己是知道这个证是有说明作用。像系统架构设计设考的重点是数据库系统、嵌入式系统、数据通信与计算机网络、系统配置与性能评价、企业信息化与电子商务、分布式系统设计具体我建议你去看一些考试大纲,希赛教育的网站上就有关于系统架构设计师的考纲,复习的资料希赛的网站上也有,你去那里看就全明白了。
系统架构设计师能挂靠吗系统架构设计师属于软考高级工程师级别,
完全可以挂靠,一年8000以上,这要看是哪些城市。
计算机科学参与了复杂性学科的创立,并把复杂性引申为计算机科学的内涵。个人认为复杂性在软件架构领域引起重视有两个原因,其一是单体架构的承诺已经无效;其二是软件的使用者,即用户,开始深度参与到软件的架构设计中来。
随着单体架构的日渐式微,分布式架构的兴盛,微服务运动如火如荼,复杂性因此受到关注:目前,几乎所有的微服务文章开宗明义都会指出微服务架构是为了应对软件架构复杂性的挑战。
随着互联网的发展,特别是互联网+和移动互联网的发展,行业和用户开始深刻影响软件的架构和设计:软件架构设计再也不是架构师独立思考的产物,而是在和用户的互动中完成的。
复杂系统一般具有以下属性:具有大量组成成分的系统,成分互动关系的重要性大于成分本身;组成成分构成自我相似的多层级结构,高层级向下的因果关系,低层级向上的因果关系以及组成成分间的多重因果关系;系统是动态的,不停止的,具有突现,不可预测、不可化约、非线性;系统具有适应性,无中央控制,自我组织,正回馈或报酬递增等。
《Think Complexity》给出的定义是:复杂性科学是物理,数学和计算机科学交叉的跨学科领域,专注于具有许多组件相互作用的系统。如果想从更广泛意义上了解复杂性与进化、人工智能、计算、遗传、信息处理等领域的关系,可以参考梅拉妮·米歇尔(Melanie Mitchell) 的《复杂》一书。
在软件架构的领域研究复杂性,并不是要推翻还原论(比如模块化),而是探讨还原论在软件工业广泛应用之后,始终无法解决软件工程的组织效能问题,比如人月神话提出的挑战。复杂性更强调组件或者服务之间的关系,以及软件和用户之间的关系,用整体性思维观察软件开发的全过程。在企业中,架构的复杂属性往往对标系统架构师——那些在组织中缺位的一批人(很多国内架构师刚达到这个层级,就转向管理了)。系统架构师需要找到那些能够实现1+1>2的解决方案,实现整体最优。以飞机运输为例,乘客想要的是最快到达目的地,直接的方案是提高飞机的速度,但不能超过音速,以避免超过音速后引发的各种问题。从系统架构师的角度来看,这里要解决的问题并不是怎样飞的更快,而是如何缩短乘客从家中到机场,办理登机手续,过安检,上飞机,飞行,落地后取行李并达到最终目的地所需的总时间。
复杂性思考的本质就是从已知的未知向未知的未知延伸。这里的复杂(complex)并不是难懂的(complicated),难懂是已知的未知,复杂是未知的未知。传统软件开发是以实体为交付目标,逐层breakdown,整体等于部分之和。要做到这一点,软件各个实体从架构到实现都是需要提前study(已知的),需要探索的只是实现细节。所以传统软件开发特别强调需求的澄清,因为需求是可以澄清并且不会改变的。客户和开发者关注的都是成果本身,而不是成果的涌现物。而对于互联网软件来说,用整体性思维来看,需求变更本来就是常态。
涌现是系统运行过程中所表现,呈现和浮现的东西。涌现是我们构建系统的目标,是系统价值所在,也是系统思维的意义所在。功能是系统的第一层涌现,这里的功能包含基本功能和新的功能。性能是系统的第二层涌现,它是系统功能的对应。系统的第三层涌现是质量属性,包括可靠性,可维护性,可操作性,安全性,健壮性等。第三层涌现并不是立刻创造出价值,而是要通过系统在整个生命周期中的运作情况来体现。我觉得还存在系统的第四层涌现,就是软件设计者和开发者不能单独决定软件的功能和形态,而是和用户协同进化。
复杂性在软件架构领域的应用,首推《系统架构:复杂系统的产品设计与开发》一书。该书给出了一套具体的系统思考框架,供参考如下:
系统是由一组实体和这些实体之间的关系所构成的集合,其功能要大于这些实体各自的功能之和。在软件开发中,系统不能直接和产品简单对应。以微信为例,用户安装的产品是微信APP,但是在微信构建的系统中,包含了用户,数据,电商,公众号,小程序等实体。这些实体的功能要远大于各自功能之和,其架构也不能简单用APP+Cloud来描述。系统的架构原则就是对系统中的实体以及实体之间的关系进行抽象描述。
软件架构:整个软件系统的各个模块之间的结构设计,是软件工程范畴的概念,就象设计一栋房子由几个什么样的板块组成一样。
软件体系结构:是软件编程风格范畴的一个通俗概念,比如说用C++、PoworBuild、Delphi等来进行软件设计是面向对象的编程语言体系结构,而Basic、C、Foxbase的软件体系结构特点是面向任务流程的(不是面向对象的编程语言)。
以上就是关于你知道软件架构是从什么时候诞生的吗全部的内容,包括:你知道软件架构是从什么时候诞生的吗、企业架构与软件架构的关系、系统架构师和软件架构师区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!