• 软件架构师是如何工作的


    在软件行业的职业划分中存在三个不同的等级,软件工程师、软件设计师、软件架构师。软件架构师处在最高层次。以前只是听说过软件架构师很牛,对于软件架构师是做什么的,软件架构究竟有什么用并没有概念。时至今日,我没有做架构的经验,我只能在别人的经验中去寻找自己对架构的理解,根据文字的记载来探索架构师的工作之旅。《架构漫谈》是资深架构师王概凯之别的系列专栏,该专栏以作者的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。对于我们这样的初学架构的人有着很好的指导意义。

    该专栏的第一篇谈到了架构是什么。根据文章的描述,我对家都的理解是将需要解决的问题进行分析,切分为小的模块,设计解决方法,执行解决方法,最后将结果合并的一个过程。软件是由团队开发的,开发过程就会涉及到人员的分工,软件各个部分的分解,组合。那么软件怎样分割,人员怎么分配才能让软件开发周期最短,软件成本最低,质量最好就是架构师要解决的问题。对软件进行分割自然需要知道软件需要解决什么问题,才可以根据问题进行分析。那么如何识别问题就是架构师要做的第一步。

    作为软件够诚实或者架构师,我们大部分时间是要去解决别人的问题。“别人”是谁,是只得好好思考的,这才是问题的主体。明白了主体,这个主体就自然会带来很多边界约束,后续问题就能够出来了。由此可见,找出问题的主体,是做架构的首要问题。我们要解决的问题,一定是人的问题。架构师要解决的,基本都是别人的问题,不是自己的问题。任何找上架构师的问题,绝对都不是真正的问题,因为如果是真正的问题,提问题过来的人肯定能够自己解决了。对于架构师来说,发现问题永远都比解决问题来的更加重要。

    在识别出事谁的问题之后,会发现大部分情况下,问题都迎刃而解。很多时候问题的产生都是因为沟通的误解,或者主观上有很多不必要的利益诉求导致的。但是总是有部分确实是有问题的,需要做调整,那么就必须要所有动作,做相应的调整。这个调整就是架构的切分。切分调整都是对相关人的利益的调整。因为维护自己的利益,是每一个人的本性,是在骨子里面的。社会发展,每个人都希望能够把自己的利益最大化。对弈一个人干所有事,分工可以让大家都能够得到更过,也产生了一个相互依赖的社会,相互之间谁都离不开谁。那么究竟该怎么切分呢?

    每个人的时间呢是有限的,要在优先的时间内作出更多事情,就要把时间上连续的动作,切分成时间上可以并行的动作,在空间上横向扩展。切分需要遵守以下原则:1. 必须在连续时间内发生的一个活动,不能切分。2. 切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。3. 切分出来的部分,不应该超出一个自然人的负载。4. 切分是内部活动,内部无论怎么切,对整个系统的外部应该是透明的。切分的最终结果一定是一个树状,这也就是为什么会产生分层。层数越多沟通越多,效率越低,所以分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。

    软件架构师软件系统的核心,其影响久远,并不随着某个软件系统生命周期的结束而终结。我们经常把软件设计看作是为保证软件系统能够按照原来的设想正常运行而在各个环节上采取正确步骤,软件架构所要考虑的问题更夹广泛。架构设计师面临的时诸多相互竞争的因素和需求。软件架构对从事软件开发的组织产生深远影响的范式。在软件开发中,构架和其开发组织相互影响,相互帮助,共同成长、发展。

    对于刚刚接触到软件架构的大学生来说,是没有机会实际组织项目的。所以我们只能通过书本来增长自己的见识与学习别人的经验。书海浩如烟海,没有那一本书籍可以囊括所有知识,所以养成读书的好习惯尤为重要。

  • 相关阅读:
    无root权限安装tmux
    mosquitto_pub和mosquitto_sub 命令参数说明
    安装Mosquitto学习MOTT协议
    Linux之prink原理
    JZ2440支持设备树(1)-添加设备树之后kernel的启动参数跟dts里面不一致
    Linux可以生产uImage
    Ubuntu18.04下make menuconfig缺少ncurses库
    如何打开kernel最开始的打印
    buildroot管理uboot+kernel+rootfs
    STM32L071CBTX操作ECC508
  • 原文地址:https://www.cnblogs.com/maosonglin/p/8524129.html
Copyright © 2020-2023  润新知