随笔(一):我对体系结构的一点想法

原创 2002年11月29日 16:38:00
 

随笔(一):我对体系结构的一点想法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

由于在软件业迈向组件装配工业(software component industry) 的过程中﹐不断发现组件设计者对其组件之应用场合的预想环境与应用软件师的软体结构常无法完美地整合起来﹐导致应用软件师难以灵活地再使用(reuse) 他人设计之组件,造成软件组件工业成长上的瓶颈。OO软件专家也逐渐认识到其问题是来自于软件主架构的不相合(mismatch)。

软件主架构的重要性并非今天才呈现出来﹐20多年前软件大师Fred. P. Brooks 就提到﹕软件设计的参与者之间﹐其设计的概念必须一致(conceptual integrety)才能共同创造出简单亲切的软件﹐同时他也强调软件主架构在达到概念一致的过程中,居于核心角色。这个20多年来的老问题﹐仍是今天OO软件师必须努力去克服的。

    要想追上它,必须知道它是什么。因此我先介绍一下相关知识的一些概念:

1.     体系结构(Architecture)

体系结构亦可称为架构,所谓软件架构﹐根据Perry 和Wolfe之定义:Software Architecture = {Elements,Forms, Rationale / Constraint },也就是软件主架构 = {组件元素,元素互助合作之模式,基础要求与限制}Philippe Kruchten采用上面的定义﹐并说明主架构之设计就是:将各组件元素以某些理想的合作模式组织起来﹐以达成系统的基本功能和限制。体系结构又分为多种样式,如Pipes and Filters等。

 

2.     框架(Framework)

框架亦可称为应用架构,框架的一般定义就是:在特定领域基于体系结构的可重用的设计。也可以认为框架是体系结构在特定领域下的应用。框架比较出名的例子就是MVC

 

3.     (Library)

库应该是可重用的、相互协作的资源的集合,供开发人员进行重复调用。它与框架的主要区别在于运行时与程序的调用关系。库是被程序调用,而框架则调用程序。比较好的库有JDK

 

4.     设计模式(Design Pattern)

设计模式大家应该很熟悉,尤其四人帮所写的书更是家喻户晓。四人帮”将模式描述为“在一定的环境中解决某一问题的方案”。这三个事物 — 问题、解决方案和环境 — 是模式的基本要素。给模式一个名称,考虑使用模式将产生的结果和提供一个或多个示例,对于说明模式也都是有用的。

 

5.     平台(PlatForm)

由多种系统构成,其中也可以包含硬件部分。

 

对于以上的概念有一个比较清楚的认识之后,就可以在软件的开发过程中进行应用。理论和实践是缺一不可的,相辅相成的。没有理论的指导,实践就缺乏基础;没有实践的证明,理论就缺乏依据,因此我一直认为:对于当代的程序员,在有一定的实践基础后,必须学习更深的理论知识。无论你是从那方面先开始学习的。

在软件的开发过程中,从许多过程实践和方法中,大致可以提炼出五大步骤:需求、分析、设计、编码、测试。而体系结构是软件的骨架,是最重要的基础。体系结构是涉及到每一步骤中。一般在获取需要的同时,就应该开始分析软件的体系结构。体系结构现在一般是各个大的功能模块组合成,然后描述各个部分的关系。

我一般认为框架是体系结构中每个模块中更细小的结构。如需要表示web技术,就会用到MVC框架,而web功能只是整个软件体系中的一个功能模块。每个框架可以有许多个实例,如用java实现的MVC框架structs

而在框架之下就是设计模式,设计模式一般是应用中框架之中的,也可以说是对框架的补充。因为框架只是提供了一个环境,需要我们我里面填入更多的东西。无论是否应用了设计模式,你都可以实现软件的功能,而正确应用了设计模式,是我们对前人软件的设计或实现方法的一种继承,从而让你的软件更软。

体系结构是可以从不同视角来进行分析的,所以软件体系结构的设计可以按照不同的视角来进行的。按4+1 views的论述,那是四种views:逻辑、开发、过程、物理和场景。因此体系结构是逐渐细化的,你不可能开始就拿出一个完美的体系结构,而只能根据开发过程逐渐对体系结构进行细化。

打个比方:如果我们准备建一个房子,那房子如果按功能来分:墙壁、地板、照明等,它是按那种样式来组成的,房子是四方的还是圆形的等,这样就组成了房子的体系结构。在体系结构之下,我们可以把框架应用在每个模块中,例如墙壁,我们准备应用什么框架。墙壁可以包括:窗户、门等。窗户和门的组成的就是一种框架。而窗户是什么形状的或者是大还是小,是要为了实现屋内的亮度的,因此挑选什么样的窗户就是设计模式。

ARM体系结构(一)——ARM体系结构的特点

ARM内核采用精简指令计算机结构(RISC,Reduced Instruction Set Computer)。RISC技术产生于上世纪70年代,其目标是设计出一套能在高时钟频率下单周期执行简单而有效...
  • SC_Stanley
  • SC_Stanley
  • 2014年09月20日 18:56
  • 2520

类、接口、结构的联系和区别

一.C#类与结构的差别 1. 值类型与引用类型 结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 sys...
  • yanguan55
  • yanguan55
  • 2013年02月28日 16:36
  • 1695

Dijkstra算法总结

Dijkstra算法(单源最短路径)       单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。 一.最...
  • MAGANG255
  • MAGANG255
  • 2016年05月03日 06:47
  • 1605

openstack 体系结构随笔

以下是我对Openstack的一些自我认识和感想。      Openstack看起来很神秘很牛b,但是可以将其进行简单的理解。Openstack其实主要就是一个虚拟机群集管理软件(不考虑Barem...
  • wangyish201201
  • wangyish201201
  • 2013年05月11日 09:17
  • 1018

体系结构 云计算论文随笔

云计算 论文 Hyracks一个灵活的和可扩展的基础数据密集型计算 DAG:Database Availability Group The Stratosphere platform f...
  • huiyuanai222
  • huiyuanai222
  • 2015年07月01日 11:07
  • 382

linux系统编程之基础必备(一):计算机体系结构一点基础知识

无论是在CPU外部接总线的设备还是在CPU内部接总线的设备都有各自的地址范围,都可以像访问内存一样访问,很多体系结构(比如ARM)采用这种方式操作设备,称为内存映射I/O(Memory-mappedI...
  • Simba888888
  • Simba888888
  • 2013年04月16日 11:57
  • 5294

互联网体系结构的一点认识

xxx
  • hkhkhk180
  • hkhkhk180
  • 2015年01月14日 16:59
  • 483

linux系统编程之基础必备(一):计算机体系结构一点基础知识

下面这张图来自《深入理解计算机系统》: IO桥部分一般还分为北桥和南桥,北桥当然是靠上的了。 •CPU –主频: CPU的时钟频率,内核工作的时钟频率 –外频: 系统总线的工作频率 ...
  • Sandeldeng
  • Sandeldeng
  • 2016年10月23日 16:25
  • 209

操作系统虚拟化之安全体系结构

安全体系结构概述 安全体系结构定义:安全体系结构描述的是一个系统如何组织成一个整体以满足既定的安全性要求 安全体系结构组成: 1. 详细描述系统中安全相关的所有方面。这包括系统可能提供的所...
  • dpengwang
  • dpengwang
  • 2018年01月14日 19:24
  • 9

spring framework体系结构及内部各模块jar之间的maven依赖关系[即spring引入所需要的所有jar包]

转自:http://www.cnblogs.com/ywlaker/p/6136625.html 很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些s...
  • gengxiaoming7
  • gengxiaoming7
  • 2017年05月15日 22:25
  • 852
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:随笔(一):我对体系结构的一点想法
举报原因:
原因补充:

(最多只允许输入30个字)