已剪辑自: https://segmentfault.com/a/1190000022489060

软件架构

软件的架构是系统的一个草图、阐述了各个组件之间的通讯、划分层次、一旦系统开始详细设计、架构蓝图就很难甚至无法更改、是由软件架构师从无到有设计出来的。
比如说,多台机器负载均衡,用户访问多个不同业务的前端项目,前端项目通过HTTP接口访问服务器前端项目,服务器前端项目通过接口访问服务器后端项目,服务器后端项目访问并操作数据库的数据。

架构有广义和狭义的两种解释,广义上是指web服务的整体架构,即业务层,缓存层,Db层,异步任务层等等的负载和互相通信的机制。狭义上,也指细化到代码上的一些设计,使代码具有低耦合、高内聚、各司其职、易更换、修改、可以分散部署、编码构建的性质。

软件框架

软件框架:是在一定领域内、别人已经对这个领域制作软件所需的基础架构功能、进行了总结、做出了有代码实体的软件框架结构、如果要制作这一领域的软件、可以在别人写好的框架上、继续设计、编写自己的软件、骨头架上填肉、框架有一定的局限性。
例:MVC(框架)
英文 Model View Controller、是针对Web开发、已经写好有代码的框架、分别为M 模型(model)-V视图(view)-C控制器(controller)三部分
目的:模型和视图分离开、使得一个模型可被多个视图使用、简单说就是同样的一个网站、用手机的视图(界面)和电脑的视图、可以共用一个模型。

设计模式

对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案、是一种解决方案的思想、不拘泥于代码、通常以类型或对象来描述其中的关系和相互作用、依赖与抽象、来达到解耦和、可宽展、易维护等、设计模式是用来解决问题的。特征是,落脚点一定是代码本身。

三者的区别

软件架构是指软件架构师在软件服务上,对复杂的软件整体规划的一种蓝图、一般是分层、画出各个组件的关系。
软件框架是指在特定的领域内、已经有人写好的框架(有代码)、框架有局限性、只限特定领域。
设计模式是指针对一些编程实际的问题所提出的抽象解决方案、用类与类之间的关系相互作用、达到目的。


架构、框架、设计模式的定义和区别

已剪辑自: https://www.cnblogs.com/lsm-boke/p/12657791.html

一、架构

**架构即软件架构,**是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件体系结构是构建计算机软件实践的基础,简单来说,软件架构是一个系统的草图,是一种设计方案,将客户的不同需求抽象成为抽象组件,各个组件之间的连接则明确和相对细致地描述组件之间的通讯。

在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。

二、框架

**框架即软件框架,**通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。

框架的功能类似于基础设施,与具体的软件应用无关,是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,提供并实现最为基础的软件架构和体系。软件开发者通常依据特定的框架实现更为复杂的商业运用和业务逻辑。这样的软件应用可以在支持同一种框架的软件系统中运行。

简而言之,框架就是制定一套规范或者规则(思想),大家(程序员)在该规范或者规则(思想)下工作,不同领域的软件项目有着不同的框架类型。框架不是现成可用的应用系统。而是一个半成品,提供了诸多服务,开发人员进行二次开发,实现具体功能的应用系统。

三、设计模式

设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案,设计模式特指软件“设计”层次上的问题。

设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,它强调的是一个设计问题的解决方法。

面向对象设计模式通常以类别或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。


软件架构 :一般场景下拥有设计的选择权

设计模式 :选择后特定场景下的最佳实践


这么说吧

没有架构,楼很难搭起来,或者很容易塌

但没有设计模式,没有大事,顶多工人难受些

良好的架构对产品系统很有用

良好的模式对码农很有用


面向对象不同而不同。

——————进阶——————

面对客户哔哔时,我们用需求分析架构。

面对整个软件或系统时,我们谈论架构分析。

面对软件模块设计时,我们使用设计模式。用实际项目去理解:

你从事任何一个比较大型的项目,这个项目一定有它通用或独特的架构。

这里面可能包含了诺干设计模式。

总之你光会设计模式,还是搞不定软件架构的,软件架构可不像设计模式那样能编出书,统一成23种基本的设计模式。软件架构是依赖于具体软件具体领域的特性的。

面对模块实现时,我们应用特定编程语言的特性。

——————进阶——————

如果你能根据需求用编程语言倒逼一步步上去,实现语言的高效与功能的拓展。

——————进阶——————

如果你能根据需求直接倒逼到需要选择特定特点的特定语言,就可以称的上集大成者了,因为你能体察到每个层级的现有设计限制。

——————进阶——————

学会妥协,trade off.


用实际项目去理解:

你从事任何一个比较大型的项目,这个项目一定有它通用或独特的架构。

这里面可能包含了诺干设计模式。

总之你光会设计模式,还是搞不定软件架构的,软件架构可不像设计模式那样能编出书,统一成23种基本的设计模式。软件架构是依赖于具体软件具体领域的特性的。


设计模式是从coding层面提炼出来的一种总结,用来使得代码的耦合度达到最大限度的分离,从而可以使你的代码更好的被复用,更容易被替换,更好的拥抱需求的变化。

架构则是着眼于更全局的高度,包括硬件,操作系统,网络环境,包括从立项到维护之间的所有过程(需求,设计,编码,部署,维护,功能迭代等)。架构的责任是保证软件的可用性,可扩展性,可伸缩性,安全等等一系列的指标。


软件架构, 软件框架,设计模式的区别相关推荐

  1. 软件框架和软件架构的区别?

    软件框架和软件架构的区别? 初学java,遇到jdk,sdk概念:软件开发工具包(外语首字母缩写:SDK.外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件 ...

  2. 知识工程.Vs.软件构架,框架,设计模式.

    软件工程-原文链接:http://tech.it168.com/a2009/0902/672/000000672853.shtml 此文章详细给出了软件设计的基本概念和用途,文章链接:http://w ...

  3. 【设计模式 2】设计模式的来源,及其相混淆的模型、框架、架构区别

    导读:周日,又给徒弟验收项目了.以往常的习惯一样,每次验收,我都陪着徒弟一起总结学习过程中的问题,然后互相交流.这次,一个徒弟验收的是设计模式,一个徒弟验收的是UML,本篇博客,就先写写设计模式的东西 ...

  4. 框架和设计模式的区别

    框架和设计模式的区别 有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式.实际上它们完全是不同的概念. 框架.设计模式这两个概念总容易被混淆,其实它们之间还是有区别的.框架通常是代码重 ...

  5. 框架模式和设计模式的区别

    框架模式和设计模式的区别 有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式.实际上它们完全是不同的概念.[7] 框架.设计模式这两个概念总容易被混淆,其实它们之间还是有区别的. 框架 ...

  6. 架构师成长之路:什么是软件框架?框架和设计模式什么关系?

    前面,已经把概要设计阶段要完成的任务和方法做了基本的讲述. 接下来看看如何做基础框架设计,在讲之前,我们先来统一一下对软件框架的认识:然后去理解框架和设计模式的关系,为后续的讲解做好准备. 一:什么是 ...

  7. 直播软件框架及功能介绍

    作为互联网的新生力量,一种新型的社交互动方式,直播软件快速在互联网行业占有一席之地. 查看全文 http://www.taodudu.cc/news/show-3884724.html 相关文章: 什 ...

  8. Atitit. 高级软件工程师and 普通的区别 高级编程的门槛总结

    Atitit.  高级软件工程师and 普通的区别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握常用的概念(ORM,IOC,AOP,event driv ...

  9. 《大象:thinking in uml 》(第二版) 11章 系统分析 3-4节 用例实现、软件架构和框架

    只供参考,喜欢请支持正版图书 一个用例可能有多个用例实现,每个用例实现都是设想的一种实现方式.虽然实现方式和过程不同,但目的是相同的,同样要达到用例所规定的系统目标.为了表示出用例实现与它所实现的用例 ...

最新文章

  1. Java学习总结:25
  2. java中的asList_Java Arrays.AsList原理及用法实例
  3. 实现安卓里边下边播的播放器(源码公开)
  4. 两台服务器之间mysql数据库怎么做同步_mysql数据库占满磁盘导致服务器无法运行...
  5. 定时器计数器工作方式
  6. 指标公式c语言源码下载,通达信99.75%成功率指标公式 源码
  7. vue项目中通过图片url下载图片
  8. html暴风粒子代码,魔兽世界课物品代码及gm指令大全(全部整理自网上).doc
  9. 关于flex布局中,父元素设置display:flex;flex-direction:row;子元素1高度撑开400px,子元素2、子元素3高度40px,如何设置全部自适应撑开?
  10. PCL中点云配准精通级实例解析
  11. Activiti表结构
  12. 启动jupyter notebook链接不上内核 + 终端报错:Replacing stale connection
  13. cf103202M. United in Stormwind
  14. 阿里面试必备:100个高频Spring面试题,助你一臂之力!
  15. python生成图像公章,用PPT就可以做印章?是的,超简单超逼真,教你一分钟搞定...
  16. Git-git diff命令结果解析
  17. 收费站计算机安全应急预案,收费站突发事 件应急处置预案.doc
  18. 37个!中国电信5G行业应用案例!
  19. QGIS中怎样实现数据坐标系转换
  20. 大转盘H5模板的游戏优点

热门文章

  1. P5322 BJOI2019 排兵布阵
  2. Orangepi(香橙派)提高实时性
  3. XTU1255 勾股数
  4. 2、刚接手一个新团队要做什么?
  5. 使用 GPG 签名 Git Commits
  6. axure 调整中继器列宽_Axure中继器:柱状图灵活变幻的诀窍
  7. python泊松分布计算_当λ很大时泊松分布如何计算?
  8. 作业调度-先来先服务算法
  9. 2022-03-22 学好大数据先攻克 Linux 之管道(重点)与网络管理
  10. 对于目标文件系统文件过大放不到u盘里,怎么办?超实用!!!