[架构之路-92]:《软件架构设计:程序员向架构师转型必备》-2-解析软件架构的概念

文火冰糖的硅基工坊 文火冰糖的硅基工坊     2023-03-29     766

关键词:

前言:

什么是软件架构?不同的人,有不同的答案。因为架构无处不再,架构又有不同层面。

很多人都给架构定义,不同的人,对架构有不同的理解,很难统一。

本文是按照作者个人的理解,来展现一个程序员如何向架构师演进的路径。

第2章 解析软件架构概念

程序员要转向架构的第一道门槛就是:什么是架构?在众多定义中,如何立足自身的实际情况和起点,转型软件架构师?

2.1 软件架构概念分类

这个派别的思想源于建筑行业的架构,也源于架构这个单词本身,该派别人为,软件是一个系统,任何系统都是有组件、子系统、模块等组成的,通过分解还原一个软件系统,通过划分组件、子系统、模块来构建一个新的系统。

组成派是站在目标系统的角度,以目标系统为目标和中心。

决策派站在人的角度看目标系统,他们认为目标系统是人意愿的体现,是人的决策的体现,展现的是一种人对目标系统的一个愿景和规划。除了看得见的功能性需求,还包括了看不见的非功能性需求。

备注:站在程序员的角度,其实可以不用陷入到概念之争中,而是从实践出发,立足行为,先依葫芦画瓢,等进入高阶阶段后,再思考如何进行概念化和思想总结。

2.2 核心思想解析

2.2.1 关注软件系统的组成部分的分割与交互

任何系统,都是由各个子系统组成,子系统与子系统之间,子系统与外界一定存在一定的交互,没有交互的子系统是孤岛,注定没有存在的价值。组件本质是就是子系统。

2.2.2 架构是自顶向下逐步分层的树型决策

.......................................

2.2.3 架构无处不在

2.3 工程实践

2.3.1 基于手头上的实际代码理解架构

一方面,程序员能够跳出代码的细节,抽象出系统的架构。

另一方面,架构是不能脱离手头上的软件代码,重构架构,架构师的架构要落地,要有支撑点,在一个已有的系统上,架构是构建在代码之上的,是已有代码的抽象;在一个新系统中,代码是蓝图,是代码的蓝图,代码是按照架构的方式构建软件系统的。

一个好的系统,是架构师与程序员的通力合作和相互信任,程序员相信架构师的架构能力,架构师相信程序员的编程能力。

2.3.2 架构是类的抽象定义吗?

架构师如何只定义类的抽象定义,程序员只按照抽象定义去实现,就不需要架构师这个角色了,优秀的程序来充当就可以了。

架构师做能够程序员的基础上做增量工作:

  • 在更高层次上抽象系统,而不是类级别,如业务需求层面、用户层面和逻辑功能层面进行抽象,而类是实现层面的抽象。

  • 除了功能性需求,还要关注非功能性需求,确保架构的系统满足未来的需要,而不是仅仅当下的需要

  • 架构师要引领未来的方向,软件代码是满足业务需求的,软件架构要能够为当下的业务服务,同时也能适应未来的业务需求,只能需要有演进线路。

2.3.3 架构师不是需求工程师

架构师不仅仅要提软件的功能和非功能需要,还需要给出具体的技术方案,这是架构师与需求工程师最具备价值的地方。比如采用什么样的设计模式,技术方案选型等等。

2.4.4 不同派别不过是站的角度不同

感悟:

  • 架构的思想,不仅仅适合软件系统,也适合任何系统,包括国家、企业、公司、组织、团队。

  • 架构不仅仅是看得见的功能性需要,也包括看不见的非功能性需要,如稳定性、可靠性、安全性、伸缩性等。

  • 架构是不同层面上的抽象,是业务目标的一步一步实现过程:业务需求层=》用户层=》功能与非功能层=》代码设计=》代码

[架构之路-90]:《软件架构设计:程序员向架构师转型必备》-1-总结

前言软件行业技术开发从业人员众多,但具备若干年开发经验的普通的开发人员往往面临个人发展的瓶颈,即如何从普通开发人员转型成高层次的系统架构师和技术管理人员。想成为一名架构师,应当具备全面的知识... 查看详情

[架构之路-91]:《软件架构设计:程序员向架构师转型必备》-1-从程序员到架构师,学习本书的路径

第1章从程序员到架构师本书不是从系统培训的角度,也不是按照软件的开发流程来组织内容的和展现软件架构师在不同阶段中的职责和作用,而是立足于程序员,展现程序员走向架构师的路径。1.1软件业人才结构1.1.1... 查看详情

[架构之路-100]:《软件架构设计:程序员向架构师转型必备》-10-细化架构设计

...司:有财务、研发、有销售、有生产等部门一样。10.2程序员向架构师转型的关键突破——学会系统思考目标软件就是一个系统所谓系统思考,就是整体的视角参看整个系统,从不同的视角、不同的用户、不同的层面... 查看详情

[架构之路-95]:《软件架构设计:程序员向架构师转型必备》-5-需求分析之需求列表(功能需求质量需求约束条件)

前言:在业务需求分析领域,主要完成三个输出:需求列表:功能需求、质量需求、约束条件=》第5章用例图=》第6章概念架构=》第7章上述工作,通常是由需求分析工程师或系统工程师SE完成,也... 查看详情

[架构之路-96]:《软件架构设计:程序员向架构师转型必备》-6-需求与用户用例usercase/senario建模

第6章需求与用户用例UserCase建模备注:严格意义上讲,用户用例属于需求分析领域,不属于架构设计。用户用例是架构设计最重要的输入参考之一。UserCase和UserSenario是非常重要的描述需求的重要手段6.1常用的4种用例... 查看详情

[架构之路-103]:《软件架构设计:程序员向架构师转型必备》-13-软件架构如何分层(四层架构)

第13章如何分层13.1分层架构13.1.1常见模式:展现层、业务层、数据层13.1.2案例一则13.1.3常见模式:UI层、SI层、PD层、DM层13.1.4案例一则13.2分层架构实践技巧13.2.1设计思想:分层架构的“封装外部交互”思想备注:... 查看详情

[架构之路-90]:《软件架构设计:程序员向架构师转型必备》-0-总结

...路径。今天分享的这份资料主要包含:软件开发普通程序员向系统架构师转型的一些思路、方法和工程实践。也包括转型过程中意识形态的转变、技术体系的掌握、系统工程学的拓展及各项软技能的提升等内容。本书深入剖... 查看详情

[架构之路-91]:《软件架构设计:程序员向架构师转型必备》-1-从程序员到架构师,学习本书的路径

第1章从程序员到架构师本书不是从系统培训的角度,也不是按照软件的开发流程来组织内容的和展现软件架构师在不同阶段中的职责和作用,而是立足于程序员,展现程序员走向架构师的路径。1.1软件业人才结构1.1.1... 查看详情

[架构之路-93]:《软件架构设计:程序员向架构师转型必备》-3-软件架构设计中的视图view

前言:同一个软件系统,从不同的视角View,得到不同的视觉和感受。所有的视角得到的视觉感受综合而成了整个系统的架构。有些视角是用眼睛看,有些视角是耳朵听,有些视角用探测器探。不同的人,... 查看详情

[架构之路-94]:《软件架构设计:程序员向架构师转型必备》-4-软件架构设计的通用过程

第4章软件架构设计的通用过程本文给出了进行架构设计的通用过程,每个步骤过程的详细方法,在后续的章节中单独探讨。4.1架构设计的实践脉络/步骤4.1.1架构设计的三大原则:看需求、把方向、细设计(1)... 查看详情

[架构之路-94]:《软件架构设计:程序员向架构师转型必备》-4-软件架构设计的通用过程

第4章软件架构设计的通用过程本文给出了进行架构设计的通用过程,每个步骤过程的详细方法,在后续的章节中单独探讨。4.1架构设计的实践脉络/步骤4.1.1架构设计的三大原则:看需求、把方向、细设计(1)... 查看详情

[架构之路-102]:《软件架构设计:程序员向架构师转型必备》-12-粗粒度“软件架构的功能模块”划分,架构师必备基础技能

第12章粗粒度“功能模块”划分备注:(1)功能划分的基本原则:高内聚、低耦合每个子系统、子模块可以独立设计(2)划分方法功能化水平切分垂直切分分层接口12.1功能树12.1.1什么是功能树同一层次的... 查看详情

[架构之路-105]:《软件架构设计:程序员向架构师转型必备》-15-模块划分的综合技术与4步骤法

15.模块划分的综合技术与4步骤法本章把前面切分模块的各种方法都综合了起来,模块划分的综合技术与4步骤法。15.1像专家一样思考15.1.1自顶向下vs.自底向上,垂直切分vs.水平切分15.1.2横切竖割,并不矛盾15.2模块划... 查看详情

[架构之路-101]:《软件架构设计:程序员向架构师转型必备》-11-原型设计与架构评估与提前验证

11.架构评估与提前验证所谓架构验证,就是在架构还没有实施之前,通过原型的方法,提前评估和验证设计的架构是否合理、是否可行。软件原型模型又叫软件快速原型模型,它指的是在执行实际软件的开发之前&... 查看详情

架构师之路系列文章

目录文章目录目录企业数字化转型架构师之路业务架构应用架构API经济数据库设计设计模式系统架构分布式系统RPC远程调用分布式消息队列分布式任务队列微服务架构ServiceComb部署架构高可靠、高可用、高并发、高性能、高可扩... 查看详情

[架构之路-99]:《软件架构设计:程序员向架构师转型必备》-9-确定关键性需求与决定系统架构的因素

第9章确定关键性需求与决定系统架构的因素9.1概念架构是什么9.1.1概念架构是直指目标的设计思想、重大选择9.1.2案例1:汽车电子AUTOSAR——跨平台复用NA9.1.3案例2:腾讯QQvideo架构——高性能NA9.1.4案例3:微软MFC架构—... 查看详情

[架构之路-98]:《软件架构设计:程序员向架构师转型必备》-8-确定关键性需求与决定系统架构的因素

第8章确定关键性需求是什么决定了软件系统的架构?!没有大的争议的是:需求决定了软件系统的架构!那么什么样的需求对软件系统的架构影响最大?8.1众说纷纭——什么决定了架构8.1.1用例驱动论:功... 查看详情

[架构之路-106]:《软件架构设计:程序员向架构师转型必备》-16-常见的十余种软件分层架构

1.软件架构体系1.1.系统与子系统系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。关联:系统是由一群有关联的个体组成的,没有关联的个体堆在一起不... 查看详情