Design-by-contract for reusable components and realizable architectures

M. Ozkaya, C. Kloukinas
{"title":"Design-by-contract for reusable components and realizable architectures","authors":"M. Ozkaya, C. Kloukinas","doi":"10.1145/2602458.2602463","DOIUrl":null,"url":null,"abstract":"Architectural connectors can increase the modularity and reusability benefits of Component-based Software Engineering, as they allow one to specify the general case of an interaction pattern and reuse it from then on. At the same time they enable components to be protocol-independent - components do not need to know under which interaction patterns they will be used, as long as their minimal, local interaction constraints are satisfied. Without connectors one can specify only specific instances of such patterns and components need to specify themselves the interaction protocols that they will follow, thus reducing their reusability.\n Connector frameworks so far allow designers to specify systems that are unrealizable in a decentralized manner, as they allow designers to impose global interaction constraints. These frameworks either ignore the realizability problem altogether, ignore connector behaviour when generating code, or introduce a centralized controller that enforces these global constraints but does so at the price of invalidating any decentralized properties of the architecture.\n We show how the Xcd ADL extends Design-by-Contract (DbC) for specifying (i) protocol-independent components, and (ii) arbitrary connectors that are always realizable in a decentralized manner as specified by an architecture - Xcd connectors impose local constraints only. Use of DbC will hopefully make it easier for practitioners to use the language, compared to languages using process algebras. We show how Xcd specifications can be translated to ProMeLa so as to verify that (i) provided services local interaction constraints are satisfied, (ii) provided services functional pre-conditions are complete, (iii) there are no race-conditions, (iv) event buffer sizes suffice, and (v) there is no global deadlock. Without formally analyzable architectures errors can remain undiscovered for a long time and cost too much to repair.","PeriodicalId":399536,"journal":{"name":"International Symposium on Component-Based Software Engineering","volume":"28 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2014-06-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"16","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"International Symposium on Component-Based Software Engineering","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2602458.2602463","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 16

Abstract

Architectural connectors can increase the modularity and reusability benefits of Component-based Software Engineering, as they allow one to specify the general case of an interaction pattern and reuse it from then on. At the same time they enable components to be protocol-independent - components do not need to know under which interaction patterns they will be used, as long as their minimal, local interaction constraints are satisfied. Without connectors one can specify only specific instances of such patterns and components need to specify themselves the interaction protocols that they will follow, thus reducing their reusability. Connector frameworks so far allow designers to specify systems that are unrealizable in a decentralized manner, as they allow designers to impose global interaction constraints. These frameworks either ignore the realizability problem altogether, ignore connector behaviour when generating code, or introduce a centralized controller that enforces these global constraints but does so at the price of invalidating any decentralized properties of the architecture. We show how the Xcd ADL extends Design-by-Contract (DbC) for specifying (i) protocol-independent components, and (ii) arbitrary connectors that are always realizable in a decentralized manner as specified by an architecture - Xcd connectors impose local constraints only. Use of DbC will hopefully make it easier for practitioners to use the language, compared to languages using process algebras. We show how Xcd specifications can be translated to ProMeLa so as to verify that (i) provided services local interaction constraints are satisfied, (ii) provided services functional pre-conditions are complete, (iii) there are no race-conditions, (iv) event buffer sizes suffice, and (v) there is no global deadlock. Without formally analyzable architectures errors can remain undiscovered for a long time and cost too much to repair.
可重用组件和可实现架构的契约式设计
体系结构连接器可以增加基于组件的软件工程的模块化和可重用性优势,因为它们允许指定交互模式的一般情况并从此重用它。同时,它们使组件能够独立于协议——组件不需要知道它们将在哪种交互模式下被使用,只要它们最小的本地交互约束得到满足。如果没有连接器,人们只能指定这种模式的特定实例,组件需要指定它们将遵循的交互协议,从而降低了它们的可重用性。到目前为止,连接器框架允许设计人员指定无法以分散方式实现的系统,因为它们允许设计人员强加全局交互约束。这些框架要么完全忽略可实现性问题,要么在生成代码时忽略连接器行为,要么引入强制执行这些全局约束的集中式控制器,但这样做的代价是使体系结构的任何分散属性失效。我们将展示Xcd ADL如何扩展契约式设计(DbC)来指定(i)与协议无关的组件,以及(ii)总是可以按照体系结构指定的分散方式实现的任意连接器——Xcd连接器仅施加本地约束。与使用过程代数的语言相比,使用DbC有望使从业者更容易使用该语言。我们展示了如何将Xcd规范转换为ProMeLa,以便验证(i)提供的服务满足本地交互约束,(ii)提供的服务功能先决条件完整,(iii)没有竞争条件,(iv)事件缓冲区大小足够,(v)没有全局死锁。如果没有正式的可分析的体系结构,错误可能在很长一段时间内都不会被发现,而且修复的成本也很高。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信