由于在软件业迈向组件装配工业(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:逻辑、开发、过程、物理和场景。因此体系结构是逐渐细化的,你不可能开始就拿出一个完美的体系结构,而只能根据开发过程逐渐对体系结构进行细化。
打个比方:如果我们准备建一个房子,那房子如果按功能来分:墙壁、地板、照明等,它是按那种样式来组成的,房子是四方的还是圆形的等,这样就组成了房子的体系结构。在体系结构之下,我们可以把框架应用在每个模块中,例如墙壁,我们准备应用什么框架。墙壁可以包括:窗户、门等。窗户和门的组成的就是一种框架。而窗户是什么形状的或者是大还是小,是要为了实现屋内的亮度的,因此挑选什么样的窗户就是设计模式。
分享到:
相关推荐
【架构师的角色与职责】 架构师在IT行业中扮演着至关重要的角色,他们既是技术专家,又是项目管理者。架构师的工作不仅是关注技术实现,还需要具备深入理解业务需求的能力。他们需要评估系统需求,给出开发规范,...
有人问我,什么是架构师,怎么样才能成为架构师?我回答说:编码,编码,再编码;改错,改错,再改错。当你觉得厌烦的时候,停下来想想,怎么才能更快更好的完成这些工作?架构师就是在实践中产生的,架构师来自于...
一、什么是架构 架构是指对某种特定目标系统的具有体系性的、普遍性的问题而提供的通用的解决方案。它往往是对复杂形态的一种共性的体系抽象。架构是系统的基本结构,由多个组件以及它们彼此间的关系而组成,并且...
1. **什么是架构**:软件架构是指软件系统的设计蓝图,它定义了系统的组织结构和行为模式。架构设计的目标是创建一个能够适应未来变化、满足当前需求并且易于维护和扩展的系统。 2. **架构设计原则**:架构设计应...
首先,我们要理解什么是架构设计。架构设计是软件开发过程中的高层次决策,它定义了系统的结构和组织方式。这包括选择关键的组件、接口、数据存储以及它们之间的交互方式。架构师需要考虑业务需求、技术限制、性能...
首先,我们来了解什么是架构风格。架构风格是描述特定领域中一类系统共有的结构和行为特征的模板,它包括一组构件(components)、连接器(connectors)和约束(constraints)。例如,客户端-服务器(Client-Server...
首先,我们需要理解什么是架构。架构是对软件整体结构和抽象的描述,它定义了软件的主要组成部分以及它们之间的关系。架构决策通常是难以扭转的,因为它们对软件的高级形式和流程有着深远的影响。例如,选择编程语言...
1. **什么是架构** 架构通常指的是一种结构化的框架或者模型,用于描述一个系统的主要组成部分以及这些部分之间的关系。在IT领域,架构可以理解为对软件系统、硬件平台或网络设施等进行规划和设计的过程。 2. **...
华为企业数据架构、应用架构及技术架构设计方法 华为企业数据架构、应用架构及技术架构设计方法是企业架构设计的核心组件之一。企业数据架构旨在整合企业内的数据资源,提高数据的Accuracy、Completeness和...
了解什么是架构 了解Alibaba网站架构的历史 掌握Alibaba网站架构的现状 掌握网站架构设计的理念
"什么是架构"部分引用了Mary Shaw的观点,强调架构是对计算组件及其交互的定义,同时涵盖了决策派的视角,即架构涉及关键决策,如组件的选择、组织方式、接口设计以及系统行为。此外,架构不仅仅是软件结构,还包括...
什么是基于 SOA 的架构?架构就是一套构建系统的准则。通过这套准则,我们可以把一个复杂的系统划分为一套更简单的子系统的集合,这些子系统之间应该保持相互独立,并与整个系统保持一致。SOA 本身就是一种面向企业...
首先,什么是架构?架构实际上是对人的问题的解答,它的产出是问题分析和解决方案。架构设计包括确定系统边界、按照一定原则进行系统切分,以及建立有效的沟通机制,使各个部分能够协同工作,形成一个完整系统。架构...
在架构设计的世界里,首要的知识点是理解什么是架构。架构是指一个系统的基本构造和组织形式,它定义了系统的主要组件、组件之间的关系以及它们如何协同工作以实现业务目标。架构师的角色就是规划这种结构,确保系统...
如果我们不理解什么是架构,或者对架构师的职责感到疑惑,那么很难让架构这项工作有效地落地。我们将在本节重新认识架构,并重新定义架构师的职责。此外,架构演进是一个曲折的过程,但我们却不难看出架构的发展规律...