`

我对体系结构的一点想法

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

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

相关推荐

    我对复习课的一点想法(1).doc

    文章首先明确了复习课的目的,强调复习课不仅仅是对旧知识的简单重复,而是帮助学生深化理解,形成知识体系,提高数学能力。复习课应该针对学生的需求,抓住关键知识点,通过合理的问题设计引导学生参与,让他们理解...

    GodotClientServer:如何在单个项目中的Godot中设置ClientServer体系结构的示例

    您可以想象有多种方法可以做到这一点,但是我非常希望只修复一次错误,而没有任何要记住的步骤。 因为我会忘记的。 因此,这里的想法是拥有一个Godot项目,并在客户端和服务器之间保持尽可能多的代码共享。 高层次...

    IndesignAddonPublications:该存储库包含进一步开发附加组件所需的所有源代码。 在这里,我还保留有关附加组件和安装说明的注意事项

    CEP-Adobe的附加程序库(通用扩展平台)CEF-Chrome嵌入式框架-要了解这一点,请参阅下一节有关体系结构的内容。 建筑学 CEP(通用扩展平台)使您可以在Adobe Creative Cloud应用程序(如Photoshop,Illustrator,...

    winforms-mvvm:演示应用程序将mvvm与Win Forms一起使用

    这是一个使用Windows Forms构建且使用的体系结构模式的示例应用程序。 它被认为可用于传统应用程序,在这些应用程序中,Form类被不同类型的代码污染。 该项目中使用的技术允许逐步引入它们(MVVM,依赖项注入,数据...

    fire-pr:以平易近人的方式创建拉取请求,此扩展程序将简化您的拉取请求过程

    为了使所有团队成员(包括QA和可能对这一过程没有经验的新同事)都可以轻松地做到这一点,我们尝试对通用过程进行相互理解,以使团队成员对创建拉动请求的想法有所了解。 我们高度信任此工具,几乎所有的“拉取...

    universities-pipeline:使用自定义传感器和操作员的简单气流项目

    我们正在使用Airflow,并采用了当前的体系结构来创建可伸缩且易于扩展的管道。 这是最终的气流管道(DAG): 目前,该管道仅处理三种格式的输入文件: “ uni1”:带标题的CSV。 “ uni2”:带有重复标题的CSV...

    lirejarp:JEE项目模板,可快速进行项目设置

    因此,此处描述的方法将提供有关如何设置实现持久性和RESTful接口层的体系结构的指南。 为了正确地做到这一点,提出了一种(可重用的)继承模式+通用数据类型。 这种(尚未命名的)模式被用于持久性,Enterprise ...

    elm-architecture-tutorial:如何创建可与您的应用很好地缩放的模块化Elm代码

    Elm体系结构是用于构建Web应用程序的简单模式。 其核心思想是你的代码是一个内置围绕Model应用程序的状态,一种方式来update你的模型和方法来view你的模型。 要了解更多关于这一点,阅读,并检查了是所有关于榆树...

    2021-2022收藏的精品资料互补性与次协调性.docx

    这种逻辑结构允许一定程度上的不一致性,但仍然保持逻辑体系的稳定性。与互补性类似,次协调性同样涉及到处理相互排斥的概念,但通过不同的逻辑框架来实现这一点。 #### 次经典逻辑的应用 近年来,随着次经典逻辑的...

    培育创新生态系统.pdf

    为了实现这一点,组织需要采用一系列的最佳实践和工具,其中包括使用看板(Kanban)来设定目标与关键结果(OKR)、调整和加速业务流程,以及通过不断优化和赋能团队来加强协作和实验。 首先,设定OKR机制和使用看板...

    address:荣耀的通讯录

    这与许多其他认识一起使我们相信,我们正在建立一个分布式数据库,需要分布式事务和各种其他机制,基于我们最初的期望,这使本来应该是一个简单体系结构的情况大大复杂化了和设计。 得到教训 Persister:这一部分...

    手机里的4级别语法.txt

    根据提供的文件信息,我们可以归纳出该文档...尽管具体符号和表达方式难以直接对应到已知语言体系中,但从结构和功能的角度来看,它提供了一套完整的语言学习框架,有助于读者理解和掌握这一语言的基本用法和高级技巧。

    计算机网络课后答案

    - **解析**:良好的网络体系结构设计对于确保网络稳定运行至关重要。它不仅需要满足当前的需求,还要具备一定的前瞻性和可扩展性,以便应对未来可能出现的新技术和应用需求。 **1-21** 协议兼容性的意义。 - **解析...

    人教高中英语选修UnitPPT学习教案.pptx

    9. **宗教 (Religion)**:宗教是一种信仰体系,包括对超自然或神圣存在的信念,以及与这些信念相关的仪式、教义和道德规范。 10. **所有 (Possession)**:在法律上,所有是指对财产的合法控制和所有权;在更广泛的...

    像咨询顾问一样思考(1)

    他们不仅能够为企业提供创新的想法,还能将这些想法转化为可执行的计划,并指导企业将其融入日常运营之中。一个完整的咨询项目可能涉及战略规划、流程设计、组织结构调整等多个方面,这需要咨询顾问具备丰富经验和...

    2010年湖北教师资格证考试真题。现场传出,速度下载

    理解这一点有助于教师掌握学校运作的基本框架,从而更好地适应和融入学校环境,有效开展教学工作。 2. **思维与行为的关系及转化机制**:该知识点强调了认知过程与行为之间的互动关系,即如何将学习到的知识和理论...

    安宁2020年事业编招聘考试真题及答案解析考试版.docx

    在这个句子中,“标志”的主语应该是“首家‘自助图书馆’现身深圳”,因为它强调了这一事件的重要性,即深圳在图书馆之城与公共文化服务体系建设方面取得了新的进展。 ### 5. 海峡西岸经济区的发展理念 题目提到...

    二十三种设计模式【PDF版】

    2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...

    第章视图及D显示.ppt

    等角投影分为三度轴测、四边轴测和等角轴测三种,适用于展示立方体或类似结构的物体。 正视图则是从物体的正面、背面、侧面等方向观察得到的视图,保持了形状和尺寸的一致性,常用于建筑规划和手册中,但无法展示...

Global site tag (gtag.js) - Google Analytics