ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

软件架构师是如何工作的

2020-02-19 16:53:35  阅读:189  来源: 互联网

标签:架构 计算机 工作 技术 如何 软件架构 软件 师是


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

架构是什么

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

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

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

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

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

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

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

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

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

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

  

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

标签:架构,计算机,工作,技术,如何,软件架构,软件,师是
来源: https://www.cnblogs.com/limitCM/p/12331742.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有