本文为《架构漫谈》系列第一篇。本文将会从:”什么是架构”,“架构能解决什么问题”,“架构和框架的区别”三个点来着重讨论,本文系个人观点,如有不正确的地方,欢迎指正讨论。

什么是架构?

  每当我们开发新的项目的时候都会新建一个解决方案,然后在解决方案中搭建N个项目。每个项目之间通过“引用”达到交互的功能,这个过程就可以称之架构,而架构最终的产物则是软件产品。不同的程序员在搭建架构的时候分两种情况:熟悉业务,根据业务进行架构、不熟悉业务,根据自己的理解进行架构。这两种情况在软件工程行业中有两个名词进行描述,分别是“隐式架构”和“显式架构”。

  举个例子,让一个经验丰富的程序员去开发一个Blog系统,经验丰富的程序员的脑中就会有一个Blog系统的大体架构,比如功能等等。。反之,如果让一个新手去开发一个Blog系统,那么他可能因为不了解需求、功能等问题需要耽搁很久,所以这时候就需要我们把架构给展现出来,通过草图或UML告诉程序员有哪些功能模块,以及它们之间的关联等等来帮助程序员开发。

  架构不能脱其需实现的系统而存在。在进行软件架构之前,我们需要理解系统是如何和外部环境发生关系的以及如何嵌入到外部环境中的。架构是一个系统最为核心的部分,是构造系统过程中的支柱。在进行系统架构前,我们往往需要了解很多方面的东西。例如:分析需求、设计系统、根据其技术语言的本身来确保架构的可行性。

  完美的设计不是包罗万向无所不在,而是完整自洽不可精简。

架构能解决什么问题

  这个问题可以用一句话来回答:架构是为了解决系统的复杂性,也同时保证了系统的可维护性。

  一旦进入开发阶段,在架构中我们所定义的一些功能则不能被轻易改变。这里仅仅是指不会轻易改变而不是不能改变。而一些功能可以会随着的业务的变更发生更改,但有了架构之后,我们改起来非常容易。举个例子,某公司需要开发一个金融系统,在开发系统前没有专业的人员进行架构,招了一些程序员分完工就开始写功能。这些程序员在写某一个功能点时根本不会去考虑这个功能别人有没有写过,直接就开始写,殊不知他们写的这个功能已经有几个人都写了。而这时,BOSS说某个功能需要修改,那么这些重复的"轮子"都要跟着修改,如果某位程序员忘记了修改则会导致系统的崩溃。再或者,当时写这个金融系统的程序员如果全部辞职,公司在招人来继续开发这个项目,由于没有整体的架构图可能会导致这个项目无法继续维护下去,最终可能导致项目失败。

  

架构和框架的区别

  很多人都会把框架和架构混为一谈,其实不然。框架是软件,而架构不是软件。

  框架是一种特殊的软件,它并不能提供完整无缺的解决方案,而是为你构建解决方案提供良好的基础。框架是半成品。典型地,框架是系统或子系统的半成品;框架中的服务尅被最终应用系统直接调用,而框架中的扩展点是供应用开发人员定制的“可变化点”。

架构不是软件,而是关于软件如何设计的重要策略。软件架构决策设计到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系等。经过完整的开发过程之后,这些架构决策将体现在最终开发出的软件系统中;当然,引入软件架构之后,整个开发过程变成了“分两步走”,而架构决策往往会体现在框架之中。或许,人们常把架构和框架混为一谈的原因就在于此吧!我们不能指着某些代码,说这就是软件架构,因为软件架构是比具体代码高一个抽象层次的概念。架构势必被代码所体现和遵循,但任何一段具体的代码都代表不了架构。

框架技术和架构技术的出现,都是为了解决软件系统日益复杂所带来的困难而采取“分而治之”思维的结果-----先大局后局部,就出现了架构;先通用后专用,就出现了框架。下图很好地揭示了这一点。架构是问题的抽象解决方案,它关注大局而忽略细节;而框架是通用半成品,还必须根据具体需求进一步定制开发才能变成应用系统。

转载于:https://www.cnblogs.com/dazhuangtage/p/5645302.html

架构漫谈:我心中的架构相关推荐

  1. 架构 | 聊聊我心中的架构设计观

    [架构设计]| 总结/Edison Zhou 在各种面试场合,可能都会被问到"你对架构设计的理解",我也在最近的转正答辩中被技术委员会负责人问到,这里我重新整理一下思绪,聊聊我心中 ...

  2. 架构漫谈(八):从架构的角度看如何写好代码 + 我的思考

    我的总结:当先前对于利益相关者的关系理清了,系统基本架构和测试方法等也有了,进入实际Coding阶段.在Coding前,需要我们考虑好业务功能的分配,关注于功能会频繁变更的部分,为未来的维护和扩展打下 ...

  3. 《架构漫谈》阅读感想

    谈及架构,源于建筑. 一想到建筑,就能想到一块空间,有墙,有门,有窗. 用墙围住的一块密闭的盒子空间,通过门窗与外界保持沟通. 空间内根据住户的生活需求不同,划分为各个房间,有不同的功用. 然后人们对 ...

  4. 架构漫谈读后感之软件架构师如何工作

    这学期开始学习软件架构,通过阅读王概凯架构漫谈九篇博客,对软件架构有了进一步的了解.感觉学习了架构之后,能对自己的学习和实践有更大的帮助.架构漫谈主要从什么是架构.认识概念是理解架构的基础.如何做好架 ...

  5. 《架构漫谈》阅读笔记

    这个礼拜,我精读了架构漫谈这本书,感觉自己对架构方面的知识有了更为深刻的了解.感觉学习了架构之后,能对自己的学习和实践有更大的帮助.在这个学期众多的结组任务中,我们可以通过架构的知识,来界定小组目标系 ...

  6. 架构漫谈(二):认识概念是理解架构的基础

    原文:架构漫谈(二):认识概念是理解架构的基础 架 构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,专栏将会以Kevin的架构经验为基础,逐步讨论什么是架构.怎样做好架构.软件架构如何落地.如 何 ...

  7. PaaS服务之路漫谈(二):Monolithic架构分析

    网易杭州研究院·尧飘海 本文作于2015年2月 天下大势,分久必合,合久必分,社会历史的发展方向总有着惊人的相似. 把这种规律应用到软件应用架构的发展方向上,当生产力和生产关系到了不可调和的矛盾时,也 ...

  8. 架构漫谈(1):什么是架构

    今天阅读了架构漫谈第一章,什么是架构,文章讲的很详细,语言描述很生动.下面就是文章的内容: 为什么会产生架构? 想象一下,在最早期,每个人都完全独立生活,衣.食.住.行等等全部都自己搞定,整个人类都是 ...

  9. 阅读王概凯老师架构漫谈系列总结

    这学期在学软件体系架构的课程,老师推荐了王概凯老师的架构漫谈系列专栏,在阅读专栏之后,对于什么是架构,怎样做好架构,软件架构如何落地,如何写好程序等问题有了较深的理解,在此简单记录一下阅读之后的感想 ...

最新文章

  1. 信息安全系统设计基础期末总结
  2. JMeter场景设置叙述
  3. oracle 网关下载,oracle透明网关访问sqlserver2000
  4. php上传大文件时,服务器端php.ini文件中需要额外修改的选项
  5. HPU 1476: 括号括号
  6. 书摘—智能主义:未来商业与社会的新生态
  7. python 获取json中最大值_Python中高效使用JSON的四个小窍门
  8. ORACLE 制定时间 加N月
  9. H3C OSPF实验
  10. 视频工具mencoder
  11. 利用ESP8266与米思齐从零制作模拟温室大棚--程序篇
  12. bat怎么发起网络请求_批处理命令教程之网络入侵
  13. Android实现侧滑recycleView+CardVeiw卡片阴影效果
  14. 2022年全球市场三维测量产品总体规模、主要生产商、主要地区、产品和应用细分研究报告
  15. 基于卷积自编码网络结构的图像修复
  16. Linux下Socket编程一 socket 基础
  17. Vue3折叠面板(Collapse)
  18. UmiJS基础+UmiUI安装使用+Mock使用示例+DvaJS案例
  19. UFD203A101 3BHE019361R0101电 工理论、电子技术、信息处理、控制理论、电力系统分析
  20. linux命令行连接蓝牙音箱,Linux: Ubuntu蓝牙音频设备可以配对但没声音的临时解决方案【转】...

热门文章

  1. 会员日亚马逊工人罢工:反抗“与机器比速度”的考核制!
  2. Tensorflow的基本运行方式--demo程序
  3. 机器学习规则 (Rules of Machine Learning): 关于机器学习工程的最佳实践
  4. #pragma message的作用
  5. xrdp安装包linux,linux xrdp0.6 安装
  6. c语言不用switch做计算器,超级新手,用switch写了个计算器程序,求指导
  7. easypoi导出数值型_SpringBoot使用EasyPoi进行数据导入导出Excel(一)
  8. Idea实体类上加@Data注解但get/set方法不生效
  9. ssm框架app管理平台_后端程序员跨平台应用的前端框架uni-app初探
  10. linux命令上常用命令