zoukankan      html  css  js  c++  java
  • 《架构漫谈》读后感 之“关于软件架构师如何工作”

      通过社会的架构举例,从原始自给自足独立完成衣食住行,到发展中分工合作、相互沟通、将事物完成到一个更好的水平。从而我知道了架构的动力:

    1. 必须由人执行的工作

    2. 每个人的能力有限

    3. 每个人的时间有限

    4. 人对目标系统有更高的要求

    5. 目标系统的复杂性使得比单个人完成这个系统更能提高质量,提高个人的时间效率

      一个主动的去改造解决目标系统的方法,需要我们确定目标系统边界,按照一定原则进行切分,切分后的部分设立沟通机制,将切分部分形成有机的联系合为一个整体。

      同时要明白架构是为了解决人的问题存在的,那么首先就要知道是为谁来解决问题?也就是主体是谁、是为谁服务。另外也要知道,问题是什么?知道问题是什么才能去解决问题。

      上文提到架构的存在是为了更好地通过合作来解决问题,那么问题该如何切分。如何切分,1当然是应该找到个人擅长的部分,去交换别人擅长的东西,2并且应该考虑到切分结果与利益关系、本质来看切分就与利益密不可分,如何切分能使得利益相关人之间的相对公平也很重要,这样通力合作完成一个优秀的作品。切分原则根据时间和空间归纳,因为每个人的时间是有限的,怎么在有限的时间内做出更多的事情?那么只有把时间上连续的动作,切分成时间上可以并行的动作,在空间上横向扩展。所以切分就要有几个原则,如:

    1. 必须在连续时间内发生的一个活动,不能切分。

    2. 切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。

    3. 切分出来的部分,不应该超出一个自然人的负载。

    4. 切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的

      将问题切分出来之后,不同人分工合作解决因人的负载太重、利益冲突、组织架构无法落地实行、分层太多导致的效率低下问题。

      架构切分的输出实际上就是一个系统的模型,对于一个整体问题,有多少的相关方,每个相关方需要承担哪些权利和义务,不同的相关方是如何结合起来完成系统的整体任务的。有的时候是从上往下切(企业),有的时候是从下往上合并,有的时候两者皆有之(人类社会的发展)。而切分的结果最终都会体现在组织架构上,因为我们切分的实际上就是人的利益。

      关于软件架构,软件是把现实生活模拟到计算机中解决,硬软件来模拟解决人的问题。由于在有限时间内一个软件工程师难以完成任务,所以我们应用到架构。 一、业务问题

      具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的?

      计算机问题:

    如何把现实生活用软件来模拟?模拟出来的软件,需要哪些硬件设施才能够满足要求? 并且当访问量越来越大的时候,软件能否支持硬件慢慢长大,性能线性扩展?因为硬件是可能会失效的,软件如何在硬件失效的情况下,仍然能够保证可用性,让用户能够不中断的访问软件提供的服务?怎么收集软件产生的数据,为下一阶段的工作提供依据?

      同样我们需要知道是谁的问题,有什么问题。架构实际上是在量不断的增大,超过了单台服务器的容量,逐渐的分拆,同时导致超过单个人员的能力,工作人员不断的增多,工作内容不断的分拆形成的。这本身就是架构的意义所在。不管怎么分拆,所达到的目标没有任何变化,就是完成业务在计算机中的虚拟化。要成为一个软件架构师是要去平衡别人的利益,甚至会调整别人的利益的。需要有一定实权和义务。

      

    主动的去改造解决

  • 相关阅读:
    《走近心理学》第一章之行为和心理学
    《解忧杂货铺》读书笔记
    追求得到之日即其终止之时, 寻觅的过程亦即失去的过程。——村上
    简朴的生活、高贵的灵魂是人生的至高境界。——杨绛
    Laravel Seeder
    Git的使用 checkout push merge
    基于 GraphQL 构建 Laravel API —— 基本使用篇
    awk基础04-内置函数
    awk基础03-分支和循环语句
    awk基础02-变量-分隔符-数组
  • 原文地址:https://www.cnblogs.com/Amyheartxy/p/8530093.html
Copyright © 2011-2022 走看看