这几天,读了一篇系列文章《架构漫谈》,其中通俗易懂的语言,风趣幽默的风格,形象明了的对比形式让我对架构有了更进一步的了解。
首先,第一个问题什么是架构?
架构,英文的定义是:
Architecture (Latin architectura, from the Greek ἀρχιτέκτων arkhitekton"architect", from ἀρχι- "chief" and τέκτων "builder") is both the process and the product of planning, designing, and constructing buildings and other physical structures。
架构是规划、设计、建造建筑物和其他物理结构的过程和产物。
看起来很难理解,所以咱们再重新理解一下:
把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。
架构产生的必要条件包括:
- 必须由人执行的工作;
- 每个人的能力有限;
- 每个人的时间有限;
- 人们对目标系统有更高要求;
- 目标系统的复杂性超出单个人的能力范围。
为什么产生了构架?是因为社会的发展,我们学会了偷懒,学会了进步,理解到了分工的必须,以及分工之后带来的好处。
概念是一个名字,每个概念实际上所解决的,还是人遇到的某个特定的问题,我们把解决问题的解决方案,给定了一个名字,这个名字就是对应的某个特定的概念。
所以,我们明确概念的最重要的步骤,是考虑到这个物或者是方法,是为了解决人的什么问题的,从这个角度才能够深入的理解概念。
文章以日常生活中常见的“杯子”、“桌子”为例,揭示了概念并非简单指向实体物品本身,而是其所承载的功能或作用。例如,杯子解决的是人单手持握并能盛放液体的需要,而桌子则是为了解决人在坐姿状态下手部活动支撑和平稳放置物品的问题。这样的解读有助于我们跳出表象,洞察事物内在的目的和价值。
文中进一步阐述了抽象的概念,指出抽象并非用于定义事物,而是将多个概念中相似之处提取出来形成新概念的过程。然而,需要注意的是,抽象的新概念并不等同于原概念,两者解决的问题可能存在差异,如杯子与容器的关系。
作者提倡架构师应该具备准确识别和理解概念的能力,因为这是架构工作的基石。在面对新技术或新领域的挑战时,若能迅速抓住核心概念,理解其背后要解决的实际问题,则有助于快速有效地学习和应用。这对于架构设计、技术选型乃至创新都有着深远的影响。
总之,通过这篇文章,我们可以深刻认识到,无论是架构设计还是其他领域的知识学习,都需要从深层次理解概念出发,挖掘概念背后的实际需求和目的,这样才能更好地进行系统设计、高效学习和问题解决。
作者强调了识别问题在架构设计中的核心地位,指出正确识别问题是解决问题的关键,而这正是区分普通工程师与优秀架构师的重要标志之一。文章通过实例揭示了在处理问题时容易出现的误区,如混淆问题与解决方案、忽视问题的主体等,并提醒读者在面对问题时要问对问题:“这是谁的问题?”和“有什么问题?”
文中提到,在日常工作中,工程师们往往急于寻找解决方案,却忽略了对问题本身的深入理解和探究,这可能导致看似完成了任务,实则并未真正解决问题,反而可能带来更多后续问题。识别问题首先要明确问题的主体,即问题归属于谁,这将有助于划定问题边界,引导我们深入了解问题的具体内容和背景信息。
以切土豆的笑话为例,问题的主体是家庭成员而非单一的执行任务的个体,识别到这一点就能发现真正的需求是为家人准备晚餐,从而有可能质疑初始解决方案的合理性,并进一步提出一系列相关问题,确保最终解决问题并达成令人满意的结果。
在软件开发领域,架构师通常需要解决他人提出的问题,而这些问题往往是以解决方案的形式呈现。架构师的任务是追溯问题根源,识别真正的问题主体,从而确保问题得到正确定义和有效解决。在面对诸如用户提出“需要一把锤子”这样的解决方案式问题时,架构师需要通过访谈、体验和数据分析等方式,深入理解用户的真实需求,定位问题的真正主体和边界。
总结而言,识别问题是架构师的重要技能,正确理解问题主体、明确问题边界有助于架构师更精准地定位问题本质,从而设计出切实可行的解决方案。在面对复杂问题时,架构师需要有足够的耐心和洞察力,不断追问和探寻,直到找到问题的核心所在。通过精准识别问题,架构师不仅能从根本上解决问题,还能提高工作效率,降低因未能彻底解决问题带来的潜在成本。
软件架构师做什么工作呢?
软件架构师要做的就是从做好架构出发,让软件工程师写好代码,架构师对需求以及问题做好了分析和切分之后,设计系统框架,然后程序员按照框架来编写代码,如果最终编写出来的软件不能用来解决用户的需求或者问题,或者太复杂繁琐,说明在整个系统架构是上出现了问题,而一个好的架构师则会充分做好软件架构,包括代码架构以及承载代码运行的硬件部署架构,设计出来的框架会真正的解决各方的问题包括自己的。
做为软件架构师,其主要角色应该是解决业务问题,至于技术问题应该交给技术人员,自己专注于软件本身的架构,当然在解决业务问题的过程中,软件架构师还要准确识别要采用什么技术来解决问题更加高效方便,这个能力也是软件架构师所应该具备的。考虑的主要因素也是长期的成本和收益。
标签:读后感,架构,漫谈,问题,概念,软件架构,解决,架构师 From: https://www.cnblogs.com/jm56/p/18047219