架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别

架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别。经常看到这些概念,但是有些含糊,花点儿功夫整理一下,结果还是有些地方理解的不透彻,先将整理的内容写下来,以供交流。左侧英文栏中有些单词被分成了两半,放到了两行中,看的时候需要注意。欢迎各路大虾、大牛、大神拍砖警醒,油锤灌顶~~~

术语 英文解释 中文解释

软件架构

architecture:

  • Architecture is the art of planning, designing, and constructing buildings. 
  • 软件架构,也称为软件体系结构。简单地说,软件架构就是一个蓝图,是一种设计方案,将客户的不同需求抽象成为抽象组件,并且能够描述这些抽象组件之间的通信和调用。它是对软件系统的系统组织,是对构成系统的构件的接口,行为模式,协作关系等体系问题的决策总和。它不仅涉及到结构与行为,而且还涉及到系统的使用,功能,性能,适应性,重用性,可理解性,经济性和技术约束的权衡和美学考虑。
  • 使用方法:软件架构会分析工程中的问题,针对问题设计解决方案,针对解决方案分析应具有的功能,针对功能设计软件系统的层次和模块及层次模块之间的逻辑交互关系,确定各个功能如何由这些逻辑实现。工程开发者,可以根据软件架构中分析出来的层次和模块进行软件的编写。

软件框架

Framework :
  • A framework is a structure that forms a support or frame for something.  A structure is something that consists of parts connected together in an ordered way. 
  •  A framework is a set of classes that embodies an abstract design for solutions to a family of related problems, and supports reuses at a larger granularity than classes.
  • A software framework provides the skeleton of an application that can be customized by an application developer. 
  • 软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架不是现成可用的应用系统,而是一个半成品,是一个提供了诸多服务,供开发人员进行二次开发,实现具体功能的应用系统。特别强调,框架是一个可供二次开发的程序实体。
  • 框架与架构关系 :首先说框架不是架构,框架比架构更具体,更偏重于技术,而架构偏重于设计。还有一个关系就是架构可以通过多种框架来实现。
  • 另外,生活中说的“框架”跟软件术语中“框架”的意思不同,要注意区别。
  • 使用方法:特定领域软件有一些共性部分形成的软件架构,将这个共性的软件架构开发出来,形成一个可供二次开发的程序实体,这个程序实体就是软件框架。 可供二次开发。

设计模式

Pattern:
  • A pattern is the repeated or regular way in which something happens or is done. If you refer to a way of doing something, you are referring to how you can do it, for example, the action you can take or the method you can use to achieve it.
  • 设计模式强调的一个设计问题的解决方法,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
  • 框架与设计模式关系 :设计模式研究的是针对单一问题的设计思路和解决方法,一个模式可应用于不同的框架和被不同的程序语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体。虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。
  • 架构与设计模式关系 :两者的关系也是很好区分的,设计模式主要是针对单一问题的解决方法,范畴比较小,而架构是高层次的针对体系结构的一种设计思路,范畴比较大。可以这么说,一个架构中可能会出现多个设计模式来解决多个架构中的问题。
  • 使用方法:针对特定问题提供解决方案,以供问题解决者参考

模块

Module:

  • In software, a module is a part of a program. Programs are composed of one or more independently developed modules that are not combined until the program is linked. A single module can contain one or several routines.
  • A software module encapsulates related functions in a program together.
  • one of a set of parts that can be connected or combined to build or complete something.
  • 模块,module,模块是一个通用概念,可能从功能或其他目的来区分。模块可以是子系统子领域,主要取决于上下文环境的用法。通常我们会说程序模块,功能模块,这实际上是在按照不同的标准对模块的内容和范围的不同定义。
  • 通常我们说的程序模块,是指的一段能够实现某个有价值目标的的成员代码段,这样的东西,我们还有另一个称呼:例程,而例程有两种,即函数和过程,它们都能实现一个有价值的目标供其它的模块使用。
  • 而功能模块的说法一般在分析和设计阶段出现得比较频繁,通常我们用一个功能模块来说明一个功能所包含的系统行为,当我们觉得分析的颗粒度可能更大一些的时候我们可以用一个功能模块来表示一组功能的集合,这似乎让我们觉得,模块这个词的概念和“子系统”这个词的概念有些模糊,是的,事实上,有些大的模块会慢慢的让我们觉得称呼他们子系统更合适,或者一个子系统,我们会慢慢发现你还包含着一些模块。
  • 但是无论怎样,定义模块的原则应该是:高内聚和低耦合
  • 使用方法:就是一个描述全局中问题的概念,至于全局是什么,这个随便,比如一个人,可以看成各种功能系统,那么模块就是各种呼吸系统、消化系统等;可以看成社会关系,模块就有劳动能力、生产关系等,全在于怎么看了。

组件

Component:

  • The components of something are the parts that it is made of. 
  • 组件,Component,首先说,组件已经不是一个抽线的概念了,是封装了一个或多个实体程序模块的实体。
  • 组件这个词通常是现在描述产品的时候出现,一个大的产品会有很多小的部分组成,而小的部分除了是一个大的组件的部分以外,自己可能还包含更小的组件,所以组件是递归的,那么组件到底是什么呢?最常见的组件就是我们已经写好的程序代码,任何一小段代码都可以是一个组件它可以和其它代码段连接起来组成更大的一段程序代码,一个更大的组件,然后可能是一个函数,或者一个类程序单元,或者数个类单元文件的集成,当不同的组件的组装形成更大的组件时候,我们实际就是在做我们通常提到的一件事情:集成,软件中有很多集成工作要做,每日集成,重要版本集成等等,集成是什么呢?软件中,就是链编调试。这样一来,我们知道集成是需要对被集成的组件有规模要求的,换句话说,至少是一个单元文件,所以通常说到的组件就可以直观的理解为单元文件,或者可以组成软件的其他文件,以及编译后的文件。
  • 组件是面向对象里面的一个重[chóng]用的概念,也称为构件,组件非常类似机械中构件概念,现在机械都是走向构件生成,通过不同构件组装成一个机械成品,软件目前也是这样的一个生成方式。
  • 维基百科上说,组件之间通过接口进行交互,这个挺起来有些象插件,现实中也是这样,比如一个dll文件,可以说是插件,也可以说是组件插件是是组件的一个子类,就是将组件中具有某些特点的组件归为插件,这些特点是:益于与系统分离,接口明晰,可以替换的程序模块。
  • 组件强调的是封装,利用接口进行交互。因为封装有不同层次的封装,对应不同层次的接口,(比如将一个人封装成一个组件,比如国家主席,多个人封装成一个组合,比如中央的常委们),所以组件所表述的范围和层次也是多种多样的,在谈论组件的时候一定要分辨清楚谈论的层次和范围。层次是相对的。你说地球是整个世界,但是将地球放到银河系中,地球就显得渺小了;你说物质世界是整个世界,但是人类的精神世界也是无比的浩瀚;你说物质世界和精神世界合起来是整个世界,但是历史又是那么的神秘和真实;你说物质世界、精神世界、历史时空是整个世界,但是科学家又说人类可以探察的宇宙物质仅占全部宇宙的百分之四。
  • 使用方法:就是一个描述系统中实体单元的概念。

插件

Plug-in:(addin,add-in,add-on,addon,app)

  • A plug-in is something such as a piece of software that can be added to a computer system to give extra features or functions.
  • 根据对组件和模块的分析,插件属于组件,而且还是一个程序模块,也是一个功能模块。插件是一种电脑程序,通过和应用程序的互动,来替应用程式增加一些特定的功能。 插件必须依赖于应用程序才能发挥自身功能,仅靠插件是无法正常运行的。
  • 插件是一种遵循一定规范的应用程序接口编写出来的程序。
  • 使用方法:满足一定接口规范的具有一定功能的程序模块。开发者可以在自己软件系统中设计相应的接口以匹配某个插件,也可以设计一定的接口规范,来让别人开发插件。插件和程序之间通过接口进行交互。
  • IE浏览器常见的插件例如:Flash插件、RealPlayer插件、MMS插件、MIDI五线谱插件、ActiveX插件等等;再比如Winamp的DFX,也是插件。还有很多插件都是程序员新开发的。在IE中安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。
控件

Control:

  • A control is a device such as a switch or lever which you use in order to operate a machine or other piece of equipment.
  • 可视化的组件。组件在ASP中就是控件

中间件

Middleware:

  • computer software that has an intermediary function between the various applications of a computer and its operating system.
  • Middleware is computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".[1] Middleware makes it easier for software developers to perform communication and input/output, so they can focus on the specific purpose of their application.
  • 中间件是一种独立的(系统软件或服务程序)程序,中间件是提供系统软件应用软件之间连接的软件,以便于软件各部件之间的沟通。 借助这种软件在不同的技术之间共享资源,即使相连的独立应用和独立的系统具有不同的接口,通过中间程序的适配,仍能进行信息交换。
  • 执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。例如:IBM MQSeries,CICS/TXSeries
套件   套件(package)Java提供package机制 ,它就像是一个管理容器,可以将您所定义的名称区隔管理在package下,而不会有相互冲突的发生,例如您定义了一个dimension2d与dimension3d的package,在它们之下都有一个Point类别,但由于属于不同的package,所以这两个名称并不会有所冲突。

部分来自 https://www.cnblogs.com/enshrineZither/p/4093872.html

 

 

组件和插件的区别是,插件是属于程序接口的程序,组件在ASP中就是控件、对象,ASP/IIS的标准安装提供了11个可安装组件。ASP的FSO组件,编程的朋友都如雷贯耳吧,它就是最常用的Scripting.FileSystemObject对象。

 

 

你可能感兴趣的:(软件工程设计相关概念)