zoukankan      html  css  js  c++  java
  • 软件架构师如何工作

    软件架构师是指在软件项目开发过程中,根据客户的需求以及行业市场等需求将所开发的软件,根据客户的需求以及行业市场的需求将软件所要实现的需求功能转换为规范的软件开发计划及文本,将将软件开发过程中所涉及的流传的流程与架构进行设计和管理,制定项目的总体架构并指导整个开发团队实施的专业人员。是主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。

    什么是架构?

      架构是一个有些抽象的词汇,但转到其他行业或许会更容易理解。如古代朝廷的政府体系三省六部制、或者公司的部门分工等等,由一个个部分有机组成整体的概念有点类似架构的概念。比如一个远古部落,有男有女。这时候人们需要衣服以及食物,于是人们开始分工,男人出去打猎获取食物,而女人负责制衣等等形成了鲜明的分工,对每个角色有针对性的进行切分并有联系,最后有机的合并成为一个整体概念,这就形成了最简单的体系或类比为架构。若男女没有分工而是一同打猎,或者说是一同制衣这样的糟糕安排无疑是一种对人力的浪费,这也是架构需要解决的问题,即提高效率,增强稳定性,并在效率和稳定之中寻找一个最优的方案。

    架构其实就是指人们主动认识、解决问题的一个过程,对问题进行切分、合并并解决这个问题的实践活动。

    架构实际上解决的是人的问题

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

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

    架构的切分

      切分是利益的调整,对于古代帝王来说,自己一个人的权力太大就无法治理好整个天下,因为个人能力有限,因此,如何切分分配权力是历代帝王头疼的一个问题。而软件架构也是如此,不切分就会冗余而复杂。

      而切分的原则有几点:

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

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

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

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

      而所有的架构切分整体都应该是一个树状图,而不是有向图或者无向图。由整体切分为一个个大部分,然后再切分为一个个小部分。然后大问题就成了一个个小问题,因此可以分配给能力不同的个人去完成。而切分忌讳人的负载太重,而应使得每个执行者的权责对等,每个人可以对自己的部分负责,而对于一个总体树状图的架构切分来说,层数越多则必定沟通越多,则效率越低,所以分层越少越好,尽可能的变成平衡树,才能使效率最大化。

    架构师的前提条件

    必须要有足够的自信,且要及时发现是谁的问题,不只是要会沟通,更要有技术。

  • 相关阅读:
    移动端文本编辑器
    jquery移动端日期插件
    Spring 4集成 Quartz2(转)
    json 特殊字符 javascript 特殊字符处理(转载)
    解决使用JavaScriptConvert转换对象为Json时,中文和&符号被转码的问题
    RFID的winform程序心得2
    异步编程模型
    DataGridView获取或者设置当前单元格的内容
    DataGridView修改数据并传到数据库
    把存储过程结果集SELECT INTO到临时表
  • 原文地址:https://www.cnblogs.com/a155-/p/14477291.html
Copyright © 2011-2022 走看看