Architecture in the end is what? Listen to the program veterans how to say! How to design a beautiful Web API?

Hot text index , adhere to the original is not easy, small partners please feel free to "recommend" support:

1.  How to design a beautiful Web API?

2. The  programmer must master tuning XYZ

3. The  programmer must understand architecture introductory course 123

4.  How to monolithic application broken down into micro-services? 【on】

5.  How to monolithic application broken down into micro-services? 【under】


Architect, veteran brother just to work in the industry who do not have this job, time with technology-related jobs is the development engineers, test engineers and systems engineers, and later with the growing size of the software produced, especially in the wave of the Internet the number of users and the sea views are quantified. In each chance, veteran brother combination of personal preference architects chose to go the path, from the muddle learning by doing, and now finally work out some doorways, review the process still has a lot of experience to share, followed by I am going to share the contents out after carding, reference to the needs of small partners. Today we take a look at what is the software architecture? It developed software for what unique value?

  • 1. textbook definitions

Software architecture, also known as software architecture, there is no uniform definition of the industry, common defined as follows:

On the basis of certain design principles, to match the various components and arrangements of systems from different angles, a plurality of structures formed from the composition of the system architecture. It includes various components of the system, the externally visible components of the relationship between attributes and components. Externally visible component attribute refers to the assumptions made for the other components of assembly. Software architecture, also including compliance system integrity, economic constraints, aesthetic needs and style, it does not only focus on internal considerations, but also the user's environment and consider the system as a whole, that is, at the same time focusing on external considerations. Abstract description of the software architecture, the overall configuration and components of the output system, a series of associated abstract pattern, sketch of a system, various aspects of the design guidelines for large software system construction.

Textbook definitions

In general, software architecture is a software system is divided from the whole to the highest level portion. Typically, a system is composed of elements, and how these elements are formed, how to play a role to each other, is an important information about the structure of the system itself, including:

  • Architecture components (Architecture Component): core elements make up the system.
  • Coupling (Connector): describes the communication path between components, mechanisms and expected results.
  • Task Flow (Task-flow): describes how to use these system components and coupling accomplish a demand.

Software architecture, is the highest level of decision made when building the system, is difficult to change after the decision is not just technical dimensions, as well as commercial dimension. Prior to the construction of a system, many important decisions need to be made in advance, but once the system start detailed design and even construction, that these decisions are difficult to change, or even can not be changed. Obviously, such a decision must be the most important decision about the success or failure of the system design, must be very careful research and study.

  • 2. how great God who said,

Above textbook definition is very professional, abstract and complete, but the lack of infrastructure work experience people, this style is difficult to understand the definition of absorption, read or can read, but no sense. Next, let's listen to the god within the industry is how to define a software architecture. Author of "software architecture" of Mary Shaw, David Garlan, classic books, has given relatively simplified definition:

Software Architecture = {member (Component), the connector (Connector), constraints (Constrain)}.

The great God who defined

Software architecture, the basic organizational structure to the relationship between the members, the relationship between members, members of the Environment for the content of a system, as well as the above principles to guide the design and evolution. In the software design process, it is a level beyond the design of algorithms and data structures. Structure and organization system comprises a global control structures, communication protocols, synchronization mechanism, various aspects of the data store, assigned specific functions to design elements, organization, scale and performance design elements, select between various designs and the like.

  • 3. Ground gas set forth

最近这些年,老兵哥我经常要给应届生同事培训应用架构,起初我就采用教科书上的定义,再附上大神的阐述,心想新同事们应该能够理解。但后来有机会给非计算机专业的学员介绍架构师相关工作职责时,我才发现人家无法理解这么专业抽象的答案,毕竟人家没有专业背景,也未曾做过相关工作。虽然上述定义都很好,但如果学员们无法体会理解并使用它的话,再正确也毫无意义。基于这层考虑,我开始采用学员们有亲身体验的案例来做类比。

Said building architecture

计算机软件,是构成虚拟世界的基本元素。它的历史开始于二十世纪五十年代,非常短暂,而构成物理世界的建筑从石器时代就开始出现了,人类在几千年的建筑实践中积累了丰富的经验和教训。如果将软件比作虚拟世界的建筑,而软件架构就是建筑的主体框架。建造土坯房不需要复杂的框架,就是在地基上不断垒土,同样小型软件也不需要太过复杂的架构,面向过程、面向对象等就能满足需要了。但建造高楼大厦、小区楼盘等现代建筑就离不开复杂的框架,否则就建造不出来,即使建造出来了,但会存在坍塌的危险,大规模软件也依赖复杂的架构,否则无法化解其复杂度,无法持续更新升级、运维等。从这个角度看,架构师就相当于建筑设计师,这是需要创新创造的工作。

像构件、连接件和约束等软件架构概念,它们在建筑这个领域也能够找到对应,例如:建筑中的构件就是砖块、水泥立柱、预制板等,连接件就是连通每个楼层的楼道、楼梯和电梯等,而约束就是根据所在地域位置的自然和社会条件来确定建筑设计内容,可见我们人类建造虚拟世界的经验主要源自改造物理世界的过程。

  • 4. 高大上的阐述

程序员是最喜欢自黑的一群人,我们常常用“码农”、“搬砖”来标榜自己,上面这种接地气的架构定义特别适合自黑的我们,从“搬砖”、“砌墙”的建筑工人转型升级至设计师,这应该也算比较自然、优化的选择。对程序员新人来说,上述阐述是比较形象易懂的,但是如果面向其他行业领域的人去解释,有没有更加高大上的阐述呢?老兵哥我经常要到外面做些职业发展类的培训授课,不管是学员还是合作伙伴都是非技术人员,为了让他们也能够理解我的本职工作职责,我经常用组织架构来类比软件架构。我们知道,组织架构是人力资源管理的重要工具,对于初创小企业来说,组织架构应该是简单实用的,但对于中大规模的企业来说,组织架构必须能够解决上规模员工的管理。

Organization says

首先,人力资源能够为组织架构选择招聘合适的人才,并能够识别每个人才的优劣势,然后将其安排到可以发挥其特长的岗位,最后让其在具体的业务项目当中创造价值,这是不是有点像古代战场上的选人用人、调兵遣将?那么软件架构跟组织架构是类似的,不同是组织架构是用于人的,而软件架构是用于软件系统的。架构师要了解熟悉各种主流的技术栈、中间件产品等,知道它们身上的优劣势,并在系统设计中引用它们来解决特定问题,让每个构件都能够发挥出最大的效用,最后通过优势互补、紧密协作来化解业务的各种挑战。这种阐述是否更高大上?俗话说学而优则仕,如果我们能够把架构工作做好做到极致,那么等以后你晋升至管理层,这套方法论也是通用的。

看山是山,看山不是山,看山还是山,好像这也是我们学习技术的三重境界,穿越这三重境界离不开对软件架构这个领域做深入专业的学习和实践,这也是老兵哥正在努力做的。今天暂时先分享到这里,接下来我们还要继续剖析软件架构,看看架构是怎样演进变化的,都经过了哪几代迭代,每种类型的架构都有什么优缺点。

If you feel valuable, trouble moving hands pointing "below the recommended " button, so that more small partners can see, I will insist on more power sharing. In addition, veterans will follow my brother to share career planning, job interview, skills upgrading, to build influence and other experience, welcome  attention to this column or crooked letter Princess " IT veteran brother  " !    

Micro-channel public number "IT veteran brother."

Watch " IT veteran brother " program enabling life!  

  • Soft skills - Popular articles first appeared in public :( No.)
  1. "Fancy" deep cuts routine, you know?
  2. Suffered layoffs, how you overcome the psychological crisis?
  3. How to find a good job in the winter?
  4. 2C or 2B, have anything to do with looking for a job?
  5. Large corporations vs small companies, which would you choose?
  6. With this in mind, not afraid to find a good job!
  7. Quit, jump or not to jump, how to jump?
  8. Programmer "seeking and nurturing" Raiders Secret
  9. Very hard, why do I still marking time?
  10. From the programmer to architect, there are shortcut?

 

  • Hard skills - popular articles:
  1. Illustration Spring: mechanism and process flow of the HTTP request [1]
  2. Illustration Spring: mechanism and process flow of the HTTP request [2]
  3. Illustration Spring: mechanism and process flow of the HTTP request [3]
  4. Illustration Spring: mechanism and process flow of the HTTP request [4]
  5. Illustration Spring: mechanism and process flow of the HTTP request [5]
  6. How to properly use Spring Cloud? 【on】
  7. How to properly use Spring Cloud? 【in】
  8. How to properly use Spring Cloud? 【under】
  9. Spring core technology and product concept analysis [on]
  10. Spring core technology and product concept analysis [next]

Guess you like

Origin www.cnblogs.com/itlaobingge/p/12119080.html