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


      学习计算机技术的过程中往往会遇到一个问题:这个东西是干什么的。如果能弄清这个问题的答案,那就能理解我们所要学习的技术的整体架构。在这就有了架构这个概念。

    架构是什么

      在弄清架构是什么之前,更需要弄清我们日常生活中常见事务的过程,这是因为计算机是个神奇的领域,在需求我们的创造力的同时,更需要我们的逻辑感,所以软件工程师往往会用现实生活中的东西来作为灵感来源,方便他们为手上的工作做出最精妙的设想。从原始社会开始就有了分工这个概念,男人狩猎女人采摘,使得整个氏族能有条不紊地发展起来,这对于古人类学家来说就是一种社会架构;而随着人类社会的复杂化,这种简单的工作划分就完全不再适用了,而到了现代社会,估计就人类学家而言这个社会架构也就像他们这一辈子都无法完全研读的一本百科全书了。

      计算机是人类为了降低自己的工作复杂度而产生的工具,也不知道为什么,在创造这个机器的时候,人们总是有意无意的使它更接近于现实中存在的东西或者逻辑,面向对象技术就是最好的例子,这也是软件工程师为了把现实映射到计算机里的伟大实践。如果计算机工作的过程只是二进制的不断延伸,那估计没几个人能用计算机。所以,我们现实中存在的架构这个东西也就顺理成章地在计算机里面产生了。

    软件架构师能力一——判断

      架构好比分层的鸡尾酒,相互之间不能过度的交流,否则会混成一杯平凡的酒,如何判断出某种液体适合这种酒就是调酒师的工作了——同理,判断软件内各个实体部件存在的必要性就是软件架构师最需要做的工作。

      在学习一项技术的时候,我们一般都是从一些比较旧的技术着手,这对于软件工程这样日新月异的学科来说似乎是一个吃力不讨好的工作。。吗?不,这个过程不仅必要而且很重要。过去的技术可能用不到,但肯定的是现在技术是其延伸,而新技术的架构一个菜鸟是很难理解的,所以从过去的技术来入门最好了。在这个过程里面,我们可以学会最重要的一门技术——认清什么是干什么的。就想最开始的javaweb技术,刚入手java语言的我们完全无法适应这样一个开始区分功能的大型架构(偏大吧),不说最基本的jsp+javabean+servlet都很难理解,很多人包括我最开始都是把所有东西都往小小的jsp里面写,当网站开始变得复杂时,只写jsp开始说明了它是多么愚蠢——往往写着写着就全部晕头转向,网页跳转也开始混乱不堪,这个时候servle可以说救了我,servlet的管理跳转的分工理清了我的头绪。而javabean和dao层、service层在之后成为了我处理数据的地方,尽管最开始我还认为这几个东西多此一举。

      就算现在,我还是会认为某样东西是多余的,这也是我判断能力不足以及经验的浅薄导致的。我还是无论如何也无法理解RDD在Spark中的作用,无法理解SparkStream的工作目的,但这些对于设计他们的设计师来说都是必要的,这也是境界的不同。判断软件项目的需求就是软件架构师的最重要的工作。

    软件架构师能力二——切分

      混乱的软件团队会无限制地扩大软件需求。《人月神话》中的例子就很明显, 向进度落后的项目中增加人手,只会使进度更加落后。对于软件架构师来说,他确实应该拥有说一不二的权利,而软件架构师也确实拥有能拯救一个项目的能力,这就是他的基本能力——切分架构的分层。

      软件架构师不必接触底层的东西,他应该看到更宏观的层面——面向软件系统整体,但有时又要面向微观的细节——包括硬件的各种情况、业务流程、数据保存等等,这些底层的软件写手们是不会去考虑的。拥有了业务知识的软件架构师可以完全决定一个项目的走向,让技术人员致力于为业务在计算机中跑起来而努力。

      之所以软件工程难学,主要还是对于各种技术的理解与运用,不要重复造轮子在软件行业里面被奉为金句,但行业内五花八门的轮子足以让大部分人都眼花缭乱,有时候方轮子都用可能成为一个项目的重要部件。所以,准确识别采用什么技术的能力,也是架构师所要具备的能力之一。考虑的主要因素也是长期的成本和收益。

      

      所以,软件架构师的工作也是如此复杂,无论是判断还是决定,不懂架构的人永远只会帮倒忙。

  • 相关阅读:
    使用JDBC连接并操作数据库
    JDBC连接数据库的url设useSSL参数为true产生的问题
    0-1背包问题的学习及LeetCode相关习题练习
    MySQL---操作数据库
    6、Python Requests库高级操作【2】
    5、Python Requests库高级操作【1】
    4、Python 数据解析【2】
    3、Python 数据解析【1】
    Python正则re.S,re.I等作用
    2、Python 使用Requests库通用爬取数据操作
  • 原文地址:https://www.cnblogs.com/limitCM/p/12331742.html
Copyright © 2020-2023  润新知