`
zhaoshg
  • 浏览: 258195 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

什么是架构

阅读更多
由于在软件业迈向组件装配工业(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:逻辑、开发、过程、物理和场景。因此体系结构是逐渐细化的,你不可能开始就拿出一个完美的体系结构,而只能根据开发过程逐渐对体系结构进行细化。

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

分享到:
评论

相关推荐

    软件的架构与设计模式之什么是架构

    软件架构是构建软件系统的基础,它是从整体到部分的最高层次划分,决定了系统的基本结构和组织方式。在软件开发中,架构设计至关重要,因为它影响着系统的稳定性和可扩展性,直接关乎项目的成功与否。 架构主要包含...

    架构漫谈(王概凯架构系列文章整理)

    架构漫谈(一):什么是架构? 架构漫谈(二):认识概念是理解架构的基础 架构漫谈(三):如何做好架构之识别问题 架构漫谈(四):如何做好架构之架构切分 架构漫谈(五):什么是软件 架构漫谈(六):软件架构...

    架构设计参考 高可用架构

    首先,我们要理解什么是架构设计。架构设计是系统开发的早期阶段,它定义了系统的主要组件、它们之间的关系、接口和交互方式。这个过程包括选择适当的技术栈、确定系统架构模式,并确保这些设计决策符合业务需求和...

    架构师成长之路 架构师培训 什么是架构师 共19页.pptx

    【架构师的角色与职责】 架构师在IT行业中扮演着至关重要的角色,他们既是技术专家,又是项目管理者。架构师的工作不仅是关注技术实现,还需要具备深入理解业务需求的能力。他们需要评估系统需求,给出开发规范,...

    架构漫谈PDF

    1. **什么是架构**:软件架构是指软件系统的设计蓝图,它定义了系统的组织结构和行为模式。架构设计的目标是创建一个能够适应未来变化、满足当前需求并且易于维护和扩展的系统。 2. **架构设计原则**:架构设计应...

    architecture-decision-record:软件规划、IT 领导力和模板文档的架构决策记录 (ADR) 示例

    内容:模板:Paulo Merson 的决策记录模板例子: CSS框架环境变量配置指标、监视器、警报微软 Azure DevOps Monorepo 与多仓库编程语言秘密存储时间戳格式 什么是架构决策记录? 架构决策记录(ADR) 是一份文档,它...

    架构设计例子

    首先,我们要理解什么是架构设计。架构设计是软件开发过程中的高层次决策,它定义了系统的结构和组织方式。这包括选择关键的组件、接口、数据存储以及它们之间的交互方式。架构师需要考虑业务需求、技术限制、性能...

    逻辑架构和物理架构在架构设计中的应用

    在不同的架构设计方法中出现的软件架构视图种类很多,本文介绍最常用的两种架构视图——逻辑架构视图和物理架构视图,并通过具体案例的分析说明如何运用它们进行架构设计。当观察和描述事物大局的时候,逻辑架构和...

    架构风格与基于网络应用软件的架构设计

    首先,我们来了解什么是架构风格。架构风格是描述特定领域中一类系统共有的结构和行为特征的模板,它包括一组构件(components)、连接器(connectors)和约束(constraints)。例如,客户端-服务器(Client-Server...

    PLM软件架构.pdf

    在讨论 PLM 软件架构之前,我们首先需要了解什么是架构。架构是指对系统或事物的结构和组织方式的描述。架构的描述方法有多种,常见的有结构树、层次结构图等。层次结构图是用来描述复杂的抽象事物的结构,它可以将...

    论架构,对于想成为架构师能有一些帮助

    1. **什么是架构** 架构通常指的是一种结构化的框架或者模型,用于描述一个系统的主要组成部分以及这些部分之间的关系。在IT领域,架构可以理解为对软件系统、硬件平台或网络设施等进行规划和设计的过程。 2. **...

    系统架构方法 - 基础篇.pdf

    "什么是架构"部分引用了Mary Shaw的观点,强调架构是对计算组件及其交互的定义,同时涵盖了决策派的视角,即架构涉及关键决策,如组件的选择、组织方式、接口设计以及系统行为。此外,架构不仅仅是软件结构,还包括...

    架构设计师与SOA.docx

    什么是基于 SOA 的架构?架构就是一套构建系统的准则。通过这套准则,我们可以把一个复杂的系统划分为一套更简单的子系统的集合,这些子系统之间应该保持相互独立,并与整个系统保持一致。SOA 本身就是一种面向企业...

    架构师最好的入门参考资料

    在架构设计的世界里,首要的知识点是理解什么是架构。架构是指一个系统的基本构造和组织形式,它定义了系统的主要组件、组件之间的关系以及它们如何协同工作以实现业务目标。架构师的角色就是规划这种结构,确保系统...

    架构这点事.zip

    首先,我们需要理解什么是架构。架构可以被看作是系统的基本结构,它定义了系统的组成部分、这些部分之间的关系以及它们如何协同工作以实现系统目标。一个好的架构应当满足业务需求,同时具备良好的可维护性、可扩展...

    提供一个完整的微服务架构轻量级支撑运行时系统.rar

    如果我们不理解什么是架构,或者对架构师的职责感到疑惑,那么很难让架构这项工作有效地落地。我们将在本节重新认识架构,并重新定义架构师的职责。此外,架构演进是一个曲折的过程,但我们却不难看出架构的发展规律...

Global site tag (gtag.js) - Google Analytics