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

文火冰糖的硅基工坊 文火冰糖的硅基工坊     2023-02-13     520

关键词:

前言:

同一个软件系统,从不同的视角View,得到不同的视觉和感受。

所有的视角得到的视觉感受综合而成了整个系统的架构。

有些视角是用眼睛看,有些视角是耳朵听,有些视角用探测器探。

不同的人,视角不同!!!

第3章 软件架构设计中的视图

这里有两个核心观点:

(1)架构设计是为了解决复杂的业务问题,没有要解决的复杂问题,就没有必要有架构设计。

(2)架构设计是化繁为简,从不同的层面、不同的侧面、不同的视角观察目标系统。不同的人,关注不同的视图。

软件架构就是满足所有人的需要,给出他们关心的视图,给出他们站在他们的角度看到的目标系统的愿景。

视图的组织方式:树型图

(1)层次性:自上而下,抽象到具体

业务架构视图=》用户架构视图=》功能架构视图=》类图=》....

(2)多角度性:纵向切分,左右分叉

逻辑功能图、物理部署图、消息交互图、状态图

3.1 软件架构为谁设计

软件架构不是写个机器看的,而是写给不同的人看的,向不同的人展现未来目标系统的愿景。

不同人关注的目标系统的角度不同,看到的视图自然就不相同,因此,有必要先弄清楚,有哪些人会关注目标系统:公司管理层、用户、架构师、系统分析员、程序员、程序经理、配置管理员、部署工程师

架构师的职责:就是为不同的人,用不同的视图展现自己对目标软件系统愿景的理解和设计。

3.1.0 为公司的业务战略而设计(容易被忽略)

公司是盈利为目的的,公司的所有活动都是为社会创作价值,为公司赚取利润。

利润有短期利润,有长期利润,长期利润就是战略目标,业务战略。

得到的视图就是:业务架构视图。

3.1.1 为客户的业务目标而设计

软件系统是为客户解决客户的问题,才有解决客户的真正关系的问题,客户才会为此买单。

公司的才能获取利润,战略目标才能得以实现。

客户是为软件系统最先买单的人。

得到的视图是:业务目标和非功能需求、约束条件等

  • 业务目标

  • 上线时间要求

  • 预算要求

  • 业务规则

  • 业务限制

  • 其他约束条件

3.3.2 为使用软件的用户而设计

用户:软件系统的使用者。

得到的视图就是:用户功能需求

3.1.3 为实现软件的开发人员而设计

3.1.4 为管理人员而设计

3.1.5 总结

因此,软件架构师设计的系统,关于上游、中游、下游的所有人员,不同的人员,关注点不同,看到的视图也就不尽相同。架构师需要为不同视角的人设计不同的架构视图

3.2 什么是架构视图

3.2.1 什么是架构视图

3.2.2 一个直观是示例:展示不同的视图的含义

2.3.3 多视图是应对复杂问题的方法论

每个视图,实际上代表了一个复杂系统的某一个方面。

3.3 两大基本的功能视图:逻辑视图与物理视图

物理视图:物理机器

逻辑视图:功能逻辑

3.3.1 逻辑架构 =》 逻辑视图

3.3.2 物理架构 =》 物理视图

  • 组成软件系统的物理元素(计算机、进程、线程、实例对象都是物理物理元素,而不仅仅是物理)

  • 物理元素之间的关系

  • 把逻辑单元部署到物理单元上的策略

3.3.3 “逻辑架构 + 物理架构”到设计实现

3.4 实际应用:开发人员快速成长之路

3.4.1 开发人员应该多尝试架构架构设计

3.4.2 用例视图

3.4.3 逻辑架构设计:第一次迭代

3.4.4 物理架构设计: 第一次迭代

3.4.5 逻辑架构设计:第二次迭代

3.4.6 物理架构设计:第二次迭代

备注:

本文的主要目的是理解架构是有多层次、多阶段、服务于不同角色的各种视图组成。

其中最重要的两个基本视图是:逻辑视图与物理视图,这是程序员最关心的两张视图。

[架构之路-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... 查看详情

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

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

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

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

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

...;很难统一。本文是按照作者个人的理解,来展现一个程序员如何向架构师演进的路径。第2章解析软件架构概念程序员要转向架构的第一道门槛就是:什么是架构?在众多定义中,如何立足自身的实际情况和起点&#... 查看详情

[架构之路-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模块划... 查看详情

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

...;很难统一。本文是按照作者个人的理解,来展现一个程序员如何向架构师演进的路径。第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.系统与子系统系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。关联:系统是由一群有关联的个体组成的,没有关联的个体堆在一起不... 查看详情