由于在软件业迈向组件装配工业(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:逻辑、开发、过程、物理和场景。因此体系结构是逐渐细化的,你不可能开始就拿出一个完美的体系结构,而只能根据开发过程逐渐对体系结构进行细化。
打个比方:如果我们准备建一个房子,那房子如果按功能来分:墙壁、地板、照明等,它是按那种样式来组成的,房子是四方的还是圆形的等,这样就组成了房子的体系结构。在体系结构之下,我们可以把框架应用在每个模块中,例如墙壁,我们准备应用什么框架。墙壁可以包括:窗户、门等。窗户和门的组成的就是一种框架。而窗户是什么形状的或者是大还是小,是要为了实现屋内的亮度的,因此挑选什么样的窗户就是设计模式。
分享到:
相关推荐
三环自主教学模式为我们提供了一个结构化的框架,让复习课既具有针对性,又能激发学生的学习热情,促进他们的深度学习,这是在设计复习课程时应当予以重视和应用的。通过对这些策略的灵活运用和不断的探索实践,我们...
您可以想象有多种方法可以做到这一点,但是我非常希望只修复一次错误,而没有任何要记住的步骤。 因为我会忘记的。 因此,这里的想法是拥有一个Godot项目,并在客户端和服务器之间保持尽可能多的代码共享。 高层次...
CEP-Adobe的附加程序库(通用扩展平台)CEF-Chrome嵌入式框架-要了解这一点,请参阅下一节有关体系结构的内容。 建筑学 CEP(通用扩展平台)使您可以在Adobe Creative Cloud应用程序(如Photoshop,Illustrator,...
在答题规范方面,选择题和非选择题的作答工具有着严格的要求,这一点也体现了对考生答题规范性的重视。2B铅笔与0.5毫米黑字迹签字笔的使用,不仅仅是对工具的限定,更是在提醒考生注意答题的标准化。不得使用涂改液...
这是一个使用Windows Forms构建且使用的体系结构模式的示例应用程序。 它被认为可用于传统应用程序,在这些应用程序中,Form类被不同类型的代码污染。 该项目中使用的技术允许逐步引入它们(MVVM,依赖项注入,数据...
为了使所有团队成员(包括QA和可能对这一过程没有经验的新同事)都可以轻松地做到这一点,我们尝试对通用过程进行相互理解,以使团队成员对创建拉动请求的想法有所了解。 我们高度信任此工具,几乎所有的“拉取...
我们正在使用Airflow,并采用了当前的体系结构来创建可伸缩且易于扩展的管道。 这是最终的气流管道(DAG): 目前,该管道仅处理三种格式的输入文件: “ uni1”:带标题的CSV。 “ uni2”:带有重复标题的CSV...
因此,此处描述的方法将提供有关如何设置实现持久性和RESTful接口层的体系结构的指南。 为了正确地做到这一点,提出了一种(可重用的)继承模式+通用数据类型。 这种(尚未命名的)模式被用于持久性,Enterprise ...
在当前的教育体系中,创新的教学方法愈发显示出其不可或缺的重要性。特别是在语言文字的学习过程中,如何让学生轻松愉快地掌握汉字,成为语文教育者们不断探索和实践的课题。本篇论文即以“西瓜有籽”为创意点,阐释...
某市中医院深刻认识到这一点,积极引入并实践了品管圈这一质量管理方法,以期实现服务流程的优化和医疗质量的持续提升。 品管圈,即Quality Control Circles,它的概念最早于20世纪60年代在美国萌芽,随后在日本...
Elm体系结构是用于构建Web应用程序的简单模式。 其核心思想是你的代码是一个内置围绕Model应用程序的状态,一种方式来update你的模型和方法来view你的模型。 要了解更多关于这一点,阅读,并检查了是所有关于榆树...
这种逻辑结构允许一定程度上的不一致性,但仍然保持逻辑体系的稳定性。与互补性类似,次协调性同样涉及到处理相互排斥的概念,但通过不同的逻辑框架来实现这一点。 #### 次经典逻辑的应用 近年来,随着次经典逻辑的...
为了实现这一点,组织需要采用一系列的最佳实践和工具,其中包括使用看板(Kanban)来设定目标与关键结果(OKR)、调整和加速业务流程,以及通过不断优化和赋能团队来加强协作和实验。 首先,设定OKR机制和使用看板...
该体系旨在培养大学生的创新精神和创业能力,提升团队的综合素质,并引导项目对社会产生积极影响。通过这一系列的评审规则,大赛期望能够选拔出一批有潜力的创新创业项目,推动高校科技成果转化为现实生产力,助力...
这与许多其他认识一起使我们相信,我们正在建立一个分布式数据库,需要分布式事务和各种其他机制,基于我们最初的期望,这使本来应该是一个简单体系结构的情况大大复杂化了和设计。 得到教训 Persister:这一部分...
根据提供的文件信息,我们可以归纳出该文档...尽管具体符号和表达方式难以直接对应到已知语言体系中,但从结构和功能的角度来看,它提供了一套完整的语言学习框架,有助于读者理解和掌握这一语言的基本用法和高级技巧。
通过这些数据,集团可以更加精准地把握员工的真实想法和诉求,从而设计出更加人性化的管理制度,增强员工对企业的归属感和认同感。 综合以上分析,某集团人力资源咨询诊断报告不仅诊断出该集团在人力资源管理方面的...
通过这种综合性的学习方法,学生可以对运动项目有一个全面的认识,从而建立起更为立体和完整的知识结构。例如,在研究美式足球时,学生可以同时了解美国的体育文化、历史背景、地理分布、社会影响以及涉及的物理学...
- **解析**:良好的网络体系结构设计对于确保网络稳定运行至关重要。它不仅需要满足当前的需求,还要具备一定的前瞻性和可扩展性,以便应对未来可能出现的新技术和应用需求。 **1-21** 协议兼容性的意义。 - **解析...