下载本文的 PDF 版本 PDF

利用应用框架

为什么框架很重要以及如何有效地应用它们

Douglas C. Schmidt、Aniruddha Gokhale 和 Balachandran Natarajan,范德堡大学

 

在当今竞争激烈、节奏快速的计算行业中,成功的软件必须日益具备以下特点:(1)可扩展性,以支持快速更新和添加,从而满足新的需求并利用新兴市场;(2)灵活性,以支持不断增长的多媒体数据类型、流量和端到端 QoS(服务质量)要求;(3)可移植性,以减少在异构操作系统平台和编译器上支持应用程序所需的工作量;(4)可靠性,以确保应用程序的健壮性和容错性;(5)可伸缩性,以使应用程序能够同时处理更多数量的客户端;以及(6)经济性,以确保软件购置和演进的总拥有成本不会过高。

然而,当出现以下情况时,实现这些质量是困难的:

1. 核心概念和软件工件不断被重新发现和发明——也就是说,当相同的功能被重复编写和重新验证时。应用程序软件在历史上主要从零开始开发。这种开发过程已经在许多公司、许多项目以及许多程序员的并行工作中被多次应用。更糟糕的是,它已经被同一团队在一系列项目中应用。遗憾的是,这种核心概念和代码的持续重新发现和再发明使得整个软件开发生命周期的成本居高不下,质量低下。随着硬件、网络、操作系统、中间件和编译器的不断发展,这些问题只会变得更糟。这种“基础设施动荡”不断地改变着应用程序软件开发的基础,导致了偶然复杂性的主要来源,这种复杂性源于用于开发软件的工具和技术的局限性。1

2. 软件以单体方式开发——作为紧密耦合的功能块,没有进行模块化组织。单体软件中的功能通常通过共享的全局变量紧密耦合,并且它们的控制流程图看起来像意大利面条。因此,单体软件不必要地难以理解、维护和扩展。2 虽然单体软件有时可能适用于由单个程序员编写的短期的、一次性原型3,但它非常不适合必须由多个开发人员在较长时间内维护和增强的应用程序。

为了避免编写和维护单体软件的陷阱和弊端,更有效地实现高质量软件的方法是使用框架。4,5 框架是软件工件(例如类、对象和组件)的集成集合,它们协同工作,为一系列相关应用程序提供可重用的架构。6 特别是,框架将软件中依赖于应用程序的部分与独立于应用程序和平台的部分解耦,从而在以下方面增强软件的可扩展性、灵活性和可移植性:

设计复用——例如,通过指导应用程序开发人员完成确保成功创建和部署复杂软件所需的步骤。

实现复用——例如,通过分摊软件生命周期成本并利用以前的开发和优化工作。

验证复用——例如,通过分摊验证软件中独立于应用程序和平台的部分的工作量,从而提高软件的可靠性和可伸缩性。

同样,随着框架的成熟并在 COTS(商业现货)产品的形式下变得商品化,它们通常变得更经济实惠。

尽管框架可能是降低软件成本和提高其质量的强大手段,但它们可能难以理解、选择、学习、使用、调试和优化。为了帮助在实践中更轻松地应用框架,本文研究了各种类型框架的关键特性,并探讨了在开发和重用框架时出现的关键挑战。然后,它描述了解决这些挑战的具体步骤。

框架的关键特性

尽管框架被广泛应用于电信、航空电子、制造和金融服务等不同的领域,但它们具有某些共同的定义特征。6 图 1 说明了框架的三个最重要的特征,这些特征帮助它们实现本文开头概述的质量。这三个特征如下:

框架在运行时通过回调表现出“控制反转”。 这些回调在事件发生后(例如鼠标点击或网络连接上到达数据)调用应用程序定义的组件的钩子方法。当事件发生时,框架回调到预注册的应用程序组件中的虚拟钩子方法,然后该方法执行应用程序定义的处理以响应事件。组件中的钩子方法将应用程序软件与可重用的框架软件解耦,这允许两者独立更改,只要接口签名和交互协议不被修改。由于框架表现出控制反转,它们可以简化应用程序设计,因为框架(而不是应用程序)运行事件循环来检测事件、将事件多路分解到事件处理程序,并在处理事件的处理程序上分派钩子方法。

框架提供基于模式的集成的一组特定于领域的结构和功能。 模式编纂了可重用的设计专业知识,为特定上下文和领域中常见的软件问题提供了经过时间考验的解决方案。7 框架可以被认为是相关模式组(称为模式语言)的具体实现,这些模式语言通过捕获应用程序领域的通用抽象(包括其结构和行为)来实现代码重用,同时将应用程序特定结构和行为的控制权交给应用程序开发人员。框架将应用程序领域中软件组件之间的关键角色、关系和交互模式具体化为可重用的代码。因此,它们可以增加软件重用的数量,这反过来有助于大大减少(重新)编写、调试和维护的新软件的数量。

框架是一个半成品应用程序。 开发人员通过扩展和定制框架中的可重用组件来形成完整的应用程序。特别是,框架有助于将领域内应用程序中的常见控制流抽象为产品线架构和相关组件系列。在运行时,这些组件可以协作,将可定制的独立于应用程序的可重用代码与定制的应用程序定义代码集成在一起。由于框架是一个半成品应用程序,因此它实现了比重用单个组件或独立函数更大的软件重用规模。

某些领域的开发人员已经成功应用框架数十年。例如,早期的框架,如 MacApp、X Windows 和 Interviews,起源于 GUI(图形用户界面)领域。JFC(Java 基础类)、MFC(Microsoft 基础类)和 Qt 是当代的 GUI 框架,它们被广泛用于在操作系统平台上创建图形应用程序。可重用 GUI 框架的广泛采用为业务和桌面应用程序带来了许多生产力和质量优势。

电信、金融服务、过程制造和航空航天等更复杂领域的应用程序开发人员传统上缺乏可重用的 COTS 框架。因此,这些领域的开发人员从头开始构建、验证和维护他们的软件。幸运的是,当前一代可重用的应用服务器框架(如 JBoss、BEA 的 WebLogic Server、Microsoft 的 .NET 和 ACE)、网络服务配置框架(如 Cisco 的 IOS 和 Element Management 框架)、实时和嵌入式系统开发和测试框架(如 TimeSys 的 TimeStorm IDE 和 MathWorks 的 Matlab Realtime Workshop)、IDE(集成开发环境)框架(如 Eclipse、Microsoft 的 Visual Studio 和 Sun 的 NetBeans)以及 CAD 启用的产品数据和生产线管理框架(如 EDS 的 Teamcenter 和 EMG 的 E-Matrix)旨在解决比 GUI 更广泛和更深入的领域。

开发和重用框架的关键挑战

框架是一种很有前途的技术,用于实例化经过验证的软件设计和实现,以降低软件成本并提高软件质量。然而,有效地开发和使用框架可能需要相当多的时间和精力,这取决于领域的复杂性、现有框架的成熟度、良好文档的可用性、可以提供帮助的其他用户的意愿(例如,互联网上的邮件列表和其他新闻组),以及开发人员掌握与框架相关的关键概念、模式、功能和工具的能力。当面临这些挑战时,软件开发人员通常需要执行以下活动:

• 确定特定框架是否适用于他们的问题领域,以及它是否具有足够的质量成为有效的解决方案。

• 评估学习框架所花费的时间是否超过通过重用节省的时间。

• 学习如何调试使用框架编写的应用程序。

• 确定将应用程序逻辑集成到框架中的性能影响。

• 评估开发新框架所需的工作量。

本节探讨了这些活动中的每一项,并描述了在实践中成功使用框架的具体步骤。

确定框架的适用性和质量

框架最适用于问题领域,在这些领域中,解决方案空间的功能和 QoS 要求具有相当大的共性,但每个解决方案在某些方面可能有所不同,因此需要一个框架来管理共性和可变性点。例如,Xerces 提供了一个强大的框架,用于解析和验证 XML 数据是否符合特定的 DTD(文档类型定义)或模式。Xerces 还支持从 XML 文件构建数据,以构建应用程序,例如支持 XML 的 Web 服务器、使用 XML 作为其数据格式的垂直应用程序以及 XML 编辑器的即时验证。Xerces 框架在所有这些应用程序中处理的关键共性是构建应用程序所需的 XML 解析,然后这些应用程序可以使用不同的编程语言(如 C++、Java 和 Perl)以不同的方式处理 XML 内容。

在决定是否可以将框架用于特定应用程序或领域时,您应该考虑以下几点:

• 请领域专家和产品架构师识别与其他领域的通用功能,并在项目的设计阶段研究可用的 COTS 框架,以解决特定于领域和独立于领域的功能。

• 进行试点研究,应用各种 COTS 框架来开发代表性的原型应用程序。此类试点研究可以作为迭代开发方法的一部分进行,例如,螺旋模型或 XP(极限编程)。

这里的目标是确定现有框架的功能,并确定将领域和产品特定逻辑与选定的框架集成所需的工作量。

然而,重要的是要认识到,在学习曲线趋于平缓之前,框架对于特定应用程序的适用性可能并不明显,这种情况通常发生在第二个和后续使用框架的项目中。由于应用程序开发人员可能需要六到九个月才能在框架方面变得高效,因此实践指导和培训课程可以帮助开发人员更快、更有效地掌握新框架。应用程序开发人员还可以通过原型设计和逐步专注于框架中与其最紧迫的任务直接相关的子集来减轻学习曲线的影响。

然而,适用性只是评估框架的标准的一部分。另一部分是质量——如何区分好的框架和坏的框架。在评估框架的质量时,需要考虑的一些具体问题包括:

• 框架是否允许应用程序干净地将回调逻辑与软件的其余部分解耦——也就是说,框架是否会与软件其他部分的开发、调试、未来增强和维护过于紧密地耦合?

• 应用程序是否可以通过狭窄且定义明确的接口和外观模式与框架交互?7 框架是否记录了应用程序用于与框架交互的所有 API——例如,它是否通过契约定义了回调方法的前提条件和后置条件?

• 框架是否明确指定了可供客户端使用的启动、关闭、同步和内存管理契约?

评估框架的经济性

尽管框架被设计为可重用的软件,但在实践中,它们的可重用性通常取决于它们对跨应用程序领域(如业务数据处理、电信呼叫处理、图形用户界面或实时中间件)的共性和可变性建模的程度。通过利用经验丰富的开发人员的领域知识和先前的工作,框架为常见问题提供解决方案,并为扩展和定制现有基础设施以创建针对特定领域问题的特定领域解决方案和软件设计挑战提供方法。然而,除非学习框架所需的工作量可以在许多项目中分摊,否则这种投资可能不具有成本效益;内部构建新功能可能比重用现有框架更好。

在决定是重用现有框架还是构建代码时,需要采取的一些具体步骤包括:8

• 确定有效的框架成本指标,这些指标衡量重用框架组件与从头开始构建应用程序的节省量。

• 进行成本/工作量估算,这包括准确预测购买、构建或调整特定框架的成本。

• 执行投资分析和论证,这确定了应用框架在投资回报方面的收益。

Cocomo 2.0 是一个广泛使用的软件成本模型估算器的示例,它可以帮助预测新软件活动的工作量。这些类型的模型的估算值可以用作确定使用框架可能节省的成本的基础。然而,软件开发组织面临的一个挑战是,许多现有的软件成本/工作量估算方法都没有很好地校准以处理可重用框架或基于标准的框架,这些框架提供微妙的优势,例如代码可移植性或重构。因此,有必要进行更多研究,以表征选择框架的适当技术/经济标准。

有效的框架调试技术

框架通常以一种隐藏交互的方式使使用框架开发的应用程序难以调试。如图 1 所示,框架在运行时通过回调到组件钩子方法来表现出控制反转,这发生在事件发生之后。

各种问题使使用框架开发的应用程序的调试变得复杂。例如,应用程序开发人员可能不熟悉框架的设计和实现,这可能导致由于对接口的语义和协议的误解而引起的细微错误。此外,对于像 C++ 这样不支持自动垃圾回收的语言,可能需要复杂且容易出错的内存管理规则。一些框架还要求应用程序开发人员遵循微妙的初始化和终止协议,这些协议指定对象创建或销毁的顺序。未能正确遵循这些协议可能会导致难以追踪和调试的问题。

传统的应用程序调试技术(例如,使用调试器单步执行应用程序并验证状态信息)通常对于使用框架构建的应用程序无效,因为错误通常源于对框架隐藏的交互的错误假设和误解。调试基于框架的应用程序更有效的方法是使用执行以下功能的工具:

• 通过监视对象的引用计数来跟踪对象的生命周期。

• 监视框架维护的内部请求队列长度和缓冲区大小。

• 监视分布式系统中网络连接的状态。

• 跟踪线程池中指定线程的活动。

• 跟踪服务器向后端数据库发出的 SQL 语句。

• 识别实时系统中的优先级倒置。

• 跟踪身份验证和授权活动。

尽管有许多通用的软件调试工具,但很少有广泛使用的商业工具支持有效的框架调试。项目通常必须开发灵活的框架调试工具,这些工具集成了上面列出的各个工具功能,并且可以配置为适合正在调试的框架。例如,企业应用程序框架的调试工具提供了一些通用功能,例如跟踪对象生命周期、网络连接、线程策略、数据库活动和安全性。

此外,由于框架通常专门用于特定领域,因此好的调试器需要深入了解框架的设计规则才能有效。OCI 的 Ovation 就是一个例子,它是一个开源工具,通过捕获和可视化呈现以下内容来帮助开发人员调试分布式应用程序:进程、线程、组件和对象之间的相互依赖性;消息的时间信息,以绝对时间和相对于用户定义的里程碑的时间;以及重要的时期,例如客户端/服务器的预调用和后调用。

以下是一些减少使用框架测试和调试应用程序的复杂性的具体步骤:

• 在应用程序开发过程的早期进行设计评审,以传达框架和应用程序逻辑之间的交互类型。例如,应用程序开发人员应该了解框架中的回调点,并将这些点作为帮助调试应用程序的起点。

• 进行代码检查,重点关注常见错误,例如错误地应用框架中预注册组件的内存所有权规则。

• 选择良好的自动化调试工具,例如内存边界检查器和代码覆盖率检测/分析工具,以帮助应用程序开发人员识别和查明常见问题。这些工具的示例包括 Rational Purify、开源 Valgrind 和 Compuware Boundschecker。

• 开发自动化回归测试,在应用程序场景的上下文中练习各种框架功能,以更好地了解框架的优势和劣势。分布式持续质量保证工具(例如 http://www.dre.vanderbilt.edu/scoreboard 上显示的工具)可以帮助在整个开发周期中识别问题。

识别框架内存和性能开销

尽管编写良好的框架可以提高应用程序开发人员的生产力,但由于其额外的通用性和功能,它们也可能产生显著的内存和性能开销。理解框架的时间和空间开销对于沿其关键路径使用框架的性能敏感型应用程序至关重要。例如,用于调用远程操作的框架(如 CORBA(公共对象请求代理体系结构)和 Java RMI(远程方法调用))通常管理操作系统资源(如套接字连接、线程、锁和共享内存),如果它们的设计、实现或优化不当,可能会增加相当大的开销。框架中时间/空间开销的常见来源源于以下因素:

事件分发延迟——框架在事件到达时回调应用程序处理程序所花费的时间。

同步延迟——在框架内的单线程和多线程操作模式下,尝试获取和释放关键路径上的锁所花费的时间。

资源管理延迟——在单线程和多线程操作模式下,尝试分配和释放资源(如内存和套接字句柄)所花费的时间。

框架功能延迟——框架内控制线程为其处理的每个操作所花费的时间。

动态内存开销——通常涉及用于解决刚刚概述的延迟来源的资源。例如,框架可以缓存动态分配的内存以减少事件分发延迟,这反过来可能会增加使用该框架的应用程序的运行时内存。

静态内存开销——应用程序在使用框架时需要的额外磁盘空间量——例如,由于链接到应用程序中的额外框架代码,即使应用程序可能不一定使用它。

评估使用框架开发的应用程序的性能时,需要采取的具体步骤包括:

• 进行系统的工程分析,以确定框架所需的功能和属性(如可伸缩性、对常见故障的容错能力和可预测性)。框架在仅使用其有限的功能集时通常表现良好,但在使用许多功能(或某些功能组合)时表现不佳。

• 开发测试用例,以实证评估与每个功能和功能组合相关的开销。不同领域的应用程序可能需要不同类型的数据。例如,实时应用程序可能需要可预测的低延迟,而科学可视化应用程序可能需要高吞吐量。测试用例应评估所需的特性。

• 查找第三方性能基准测试和分析,以便与收集的数据进行比较。用于开发基准测试的技术(包括回归基准测试)可作为开发框架基准测试平台的良好参考资料。9

评估开发新框架的工作量

尽管现有的 COTS 框架具有深度和广度,但开发人员仍然可能遇到没有现有框架适用于其领域或产品需求的情况。例如,用于在现有框架中提供控制反转的事件循环机制并不总是与遗留应用程序组件无缝集成。同样,现有框架可能无法满足性能要求,或者可能无法通过回调为某些领域(特别是具有严格 QoS 要求的应用程序)中的应用程序提供足够的信息。由于缺乏对特定编程语言或操作系统的支持,现有框架也可能无法使用。在这些情况下,软件团队可能需要开发自己的框架,以适应其领域的需求。

鉴于开发软件通常有多么困难,开发高质量、可扩展5 和可重用框架6 就更难了,这不足为奇。设计框架的一个关键挑战是将框架的功能分解为一组可重用的类,同时预测未来的用途和更改。在开发新框架时应解决的一些具体问题包括:

• 确定哪些类应该是固定的,从而定义框架的稳定形状和使用特性。如果框架中的关键接口不稳定,用户可能难以有效且高效地理解和应用框架,因为自由度会太多。

• 确定哪些类应该是可扩展的——例如,通过子类化或模板实例化——以支持使用框架进行新应用程序所需的调整。如果框架无法扩展,则用户无法根据自己的需求对其进行定制,这使得难以适应在框架初始设计期间未预见的各种应用程序和用例。

• 确定正确的启动和关闭操作序列协议。如果应用程序开发人员无法选择框架操作的初始化和终止序列,则应用程序和框架的生命周期可能会以复杂的方式耦合在一起。这会大大降低灵活性。

• 为框架开发正确的内存管理和可重入规则。如果框架可以由多个线程使用,则框架开发人员应提供机制来序列化对共享数据的访问,并确定通过最小化过度锁定来提供更高并发性以获得更好性能的方法。

• 为客户端确定正确的狭窄接口集以供使用。接口太窄可能会导致限制并给应用程序带来不必要的负担,而接口太宽可能会导致 API 用法混乱。

框架可以应用的领域的多样性使得难以定义开发框架的单一通用策略;来之不易的经验和见解是成功的关键要素。然而,总的来说,设计良好的框架通常是通过系统地识别特定应用领域中策略和机制的共性和可变性10 来开发的。共性应分解为稳定的可重用类接口。可变性应分解为可重用类,这些类的实现符合通用接口,因此可以轻松替换它们以满足特定上下文中特定应用程序的需求。

幸运的是,现在有许多已记录的模式7 和模式语言1 可以帮助指导和加速框架的设计和实现,从而使开发人员能够重用更高级别的软件应用程序设计,例如发布者/订阅者架构、微内核和代理。11 这些设计工件代表了复杂软件系统的一些关键战略方面。如果通过框架正确地理解和应用它们,许多令人烦恼的复杂性的影响可以大大减轻。即便如此,正确地设计和实现框架可能需要多次迭代。因此,为了从开发良好框架所需的投资中获得良好的回报,这项工作必须在多个应用程序和项目中分摊——否则,投资可能根本不具有成本效益。

未来的益处

过去十年,框架的开发和重用取得了显著进展。因此,我们现在拥有基于开放标准(如 Java 和 CORBA)的框架,这些框架提供了一组可移植且可互操作的软件工件,例如可互操作的安全性、分布式资源管理和容错服务。未来,许多应用程序将通过集成和脚本化特定于领域和通用的“可插拔”框架组件来组装,而不是像今天这样从头开始编程。迄今为止,从框架基础工作中受益的关键主题和领域包括:

分布式实时和嵌入式系统。 最近记录了越来越多与并发和网络系统框架相关的模式。12,1 下一步的关键是开发 DRE(分布式实时和嵌入式)系统框架。这将扩展早期的工作,重点关注管理 DRE 系统中关键 QoS 属性(包括网络带宽和延迟、CPU 速度、内存访问时间和功耗级别)的有效策略和战术。由于开发高质量的 DRE 系统很困难,并且在某种程度上仍然是一门“黑魔法”,因此今天可用于该领域的可重用模式13 和框架14 相对较少。然而,我们预计未来对 DRE 系统的关注将会增加,因为可重用框架技术日趋成熟,同时开发工具、技术和流程也使框架能够在 DRE 领域成功应用。

移动系统。 无线网络正变得无处不在,嵌入式设备正变得更小、更轻、功能更强大。因此,移动系统很快将支持许多消费者通信和计算需求。移动系统的应用领域包括普适计算、移动代理、个人助理、位置相关信息提供、远程医疗诊断和远程放射学以及家庭和办公室自动化。6 此外,从 Web 浏览到在线银行的互联网服务将从移动系统访问。移动系统提出了许多挑战,例如管理低带宽和可变带宽及功耗、适应频繁的连接中断和服务质量下降、不同的协议以及跨断开连接的网络节点维护缓存一致性。我们期望移动系统的经验丰富的开发人员将他们的专业知识以可重用框架的形式捕获,以帮助满足该领域对高质量软件不断增长的需求。

COTS 系统的自适应 QoS。 分布式应用程序,如流媒体视频、互联网电话和大规模交互式模拟系统,对 QoS 的要求越来越严格。为了减少开发周期时间和成本,这些应用程序越来越多地使用多层 COTS 硬件、操作系统和中间件组件进行开发。然而,从历史上看,很难配置可以同时满足多个 QoS 属性(如安全性、及时性和容错能力)的基于 COTS 的系统。15 随着开发人员和集成商继续掌握提供端到端 QoS 保证的复杂性,至关重要的是,他们创建自适应和反射式框架,以帮助其他人配置、监视和控制具有一系列相互依赖的 QoS 属性的基于 COTS 的分布式系统。

尽管框架有很多好处,但它们并不是万能药。特别是,它们并没有免除开发人员解决所有复杂的并发和网络软件分析、设计、实现、验证和优化问题的责任。最终,人类的创造力、经验、纪律、勤奋和判断力是无法替代的。然而,当使用本文中描述的技术应用时,框架可以帮助减轻许多偶然的和固有的复杂性,从而以更少的总体时间和精力产生更高质量的软件。

参考文献

1. Schmidt, D. C., Stal, M., Rohnert, H., 和 Buschmann, F. 面向模式的软件架构:并发和网络对象模式,第 2 卷。Wiley & Sons, New York: NY, 2000。

2. Fowler, M., Beck, K., Brant, J., Opdyke, W., 和 Roberts, D. 重构——改进现有代码的设计。 Addison-Wesley, Reading: MA, 1999。

3. Foote, B., 和 Yoder, J. 大泥球。在程序设计模式语言 4, Foote, B., Harrison, N., 和 Rohnert, H., 编辑。Addison-Wesley, Boston: MA, 2000。

4. Fayad, M., Johnson, R., 和 Schmidt, D. C., 编辑。实现应用程序框架:工作中的面向对象框架。Wiley & Sons, New York: NY, 1999。

5. Fayad, M., Johnson, R., 和 Schmidt, D. C., 编辑。 构建应用程序框架:框架设计的面向对象基础。 Wiley & Sons, New York: NY, 1999。

6. Johnson, R. 框架 = (模式 + 组件)。 通讯 40, 10 (1997 年 10 月), 39-42。

7. Gamma, E., Helm, R. Johnson, R., 和 Vlissides, J. 设计模式:可重用面向对象软件的元素。Addison-Wesley, Reading: MA, 1995。

8. Fayad, M. E., 和 Hamu, D. S. 企业框架:选择指南。 计算调查 (2000 年 3 月)。

9. Lockheed Martin Advanced Technology Labs, ATL QoS 主页; http://www.atl.external.lmco.com/projects/QoS/.

10. Coplien, J., Hoffman, D., 和 Weiss, D. 软件工程中的共性和可变性。 IEEE 软件 15, 6 (1998 年 11 月/12 月), 37-45。

11. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., 和 Stal, M. 面向模式的软件架构——模式系统。 Wiley & Sons, New York: NY, 1996。

12. Lea, D. Java 并发编程:设计原则和模式,第二版。Addison-Wesley, Boston: MA, 2000。

13. Noble J., 和 Weir, C. 小内存软件:内存受限系统的模式。Addison-Wesley, Boston: MA, 2001。

14. Schmidt, D. C., 和 Huston, S. D. C++ 网络编程,第 2 卷:使用 ACE 和框架的系统重用。 Addison-Wesley, Reading: MA, 2002。

15. Zinky, J. A., Bakken, D. E., 和 Schantz, R. CORBA 对象的服务质量的架构支持。 对象系统理论与实践 3, 1 (1997), 1-20。

喜欢还是讨厌?请告诉我们

[email protected]www.acmqueue.com/forums

DOUGLAS C. SCHMIDT, Ph.D ([email protected]),是范德堡大学电气工程与计算机科学系的教授,也是软件集成系统研究所的高级成员。

他已发表超过 250 篇技术论文和书籍,内容涵盖模式、优化技术以及对软件框架的实证分析,这些框架促进了 DRE(分布式实时和嵌入式)中间件的开发,该中间件运行于高速网络和嵌入式系统互连之上。Schmidt 曾担任 DARPA(国防高级研究计划局)的副办公室主任和项目经理,在那里他领导了国家关于 DRE 系统中间件的研发工作。Schmidt 拥有超过 15 年的领导 ACE(自适应通信环境)和 TAO 开发的经验,它们是被广泛使用的开源 DRE 中间件框架。

ANIRUDDHA S. GOKHALE ([email protected]) 是范德堡大学电气工程与计算机科学系的助理教授,也是软件集成系统研究所的研究科学家。他的研究兴趣在于实时组件中间件优化、应用于基于组件中间件的应用程序的模型驱动软件合成以及分布式资源管理。他正在领导 DARPA(国防高级研究计划局)的项目,这些项目涉及建模和中间件解决方案以及分布式动态资源管理。此外,他还领导着名为 CoSMIC 的开源模型驱动中间件框架的研发工作。

Gokhale 之前曾在贝尔实验室、朗讯科技工作。他获得了印度浦那大学计算机工程学士学位;亚利桑那州立大学计算机科学硕士学位;以及华盛顿大学计算机科学博士学位。

BALACHANDRAN NATARAJAN ([email protected]) 是软件集成系统研究所的高级工程师,也是范德堡大学电气工程与计算机科学系的博士生。他的研究重点是将模式、优化原则和框架应用于构建高性能、可靠和实时的分布式对象计算系统。Natarajan 在华盛顿大学获得了计算机科学硕士学位。

© 2004 1542-7730/04/0700 $5.00

acmqueue

最初发表于 Queue vol. 2, no. 5
数字图书馆 中评论这篇文章





更多相关文章

Satnam Singh - 使用容器对容器进行集群级日志记录
本文展示了如何使用开源工具实现集群级日志记录基础设施,并使用与组合和管理被记录的软件系统相同的抽象概念进行部署。收集和分析日志信息是运行生产系统以确保其可靠性并提供重要的审计信息的必要方面。已经开发了许多工具来帮助聚合和收集特定服务器(例如,Fluentd 和 Logstash)上运行的特定软件组件(例如,Apache Web 服务器)的日志。


Peter Kriens - OSGi 如何改变了我的生活
在 1980 年代初期,我发现了 OOP(面向对象编程),并深深地爱上了它。像往常一样,这种爱意味着说服管理层投资这项新技术,最重要的是,送我去参加酷炫的会议。所以我向我的经理推销了这项技术。我向他描绘了美好的未来,有一天我们将从现成的类创建应用程序。我们将从存储库中获取这些类,将它们放在一起,瞧,一个新的应用程序就诞生了。今天我们或多或少地认为对象是理所当然的,但如果我诚实地说,我在 1985 年向我的经理提出的想法从未真正实现。


Len Takeuchi - ASPs:集成挑战
使用 ASP 和向 ASP 提供增值产品的第三方供应商的组织需要与它们集成。ASP 通过提供基于 Web 服务的 API 来实现这种集成。通过 Internet 与 ASP 集成和与本地应用程序集成之间存在显着差异。在与 ASP 集成时,用户必须考虑许多问题,包括延迟、不可用性、升级、性能、负载限制和缺乏事务支持。


Chris Richardson - 解开企业级 Java 的复杂性
关注点分离是计算机科学中最古老的概念之一。这个术语是由 Dijkstra 在 1974 年创造的。1 它很重要,因为它简化了软件,使其更易于开发和维护。关注点分离通常通过将应用程序分解为组件来实现。然而,存在跨多个组件的横切关注点。这些类型的关注点无法通过传统的模块化形式来处理,并且会使应用程序更加复杂且难以维护。





© 保留所有权利。

© . All rights reserved.