`
zhaoshg
  • 浏览: 259467 次
  • 性别: 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:逻辑、开发、过程、物理和场景。因此体系结构是逐渐细化的,你不可能开始就拿出一个完美的体系结构,而只能根据开发过程逐渐对体系结构进行细化。

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

分享到:
评论

相关推荐

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

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

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

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

    架构设计参考 高可用架构

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

    嵌入式系统软件架构设计.pdf

    有人问我,什么是架构师,怎么样才能成为架构师?我回答说:编码,编码,再编码;改错,改错,再改错。当你觉得厌烦的时候,停下来想想,怎么才能更快更好的完成这些工作?架构师就是在实践中产生的,架构师来自于...

    TOGAF企业架构框架中文培训课件.pptx

    一、什么是架构 架构是指对某种特定目标系统的具有体系性的、普遍性的问题而提供的通用的解决方案。它往往是对复杂形态的一种共性的体系抽象。架构是系统的基本结构,由多个组件以及它们彼此间的关系而组成,并且...

    架构漫谈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. **...

    华为企业数据架构、应用架构及技术架构设计方法.pptx

    华为企业数据架构、应用架构及技术架构设计方法 华为企业数据架构、应用架构及技术架构设计方法是企业架构设计的核心组件之一。企业数据架构旨在整合企业内的数据资源,提高数据的Accuracy、Completeness和...

    企业架构框架-TOGAF

    #### 什么是架构 架构是指构成一个系统的基本结构和组织方式。它可以应用于不同的领域,如建筑、软件工程等。在企业架构的背景下,架构是指支持企业目标的信息技术基础设施的设计。 #### 什么是企业架构 企业架构...

    大数据与商业智能 阿里大数据架构 系统架构概述 共37页.pptx

    了解什么是架构 了解Alibaba网站架构的历史 掌握Alibaba网站架构的现状 掌握网站架构设计的理念

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

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

    系统架构方法论 ppt

    在详细探讨系统架构方法论之前,我们首先需要明确什么是架构。在本PPT中,架构被定义为计算组件及其交互的组合,这一观点与Mary Shaw的研究相契合。架构师必须在系统组织、元素选择、接口设计和行为协同等关键领域...

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

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

    52页华为企业数据架构、应用架构及技术架构设计方法.pptx

    本资源摘要信息来自于一份52页的PPTX文件,标题为"华为企业数据架构、应用架构及技术架构设计方法",描述为"华为企业数据架构、应用架构及技术架构设计方法",标签为"智慧城市"。该资源主要介绍了华为企业数据架构、...

Global site tag (gtag.js) - Google Analytics