{"title":"重新审视软件体系结构的抽象和支持它们的工具","authors":"Mary Shaw;Daniel V. Klein;Theodore L. Ross","doi":"10.1109/TSE.2025.3533549","DOIUrl":null,"url":null,"abstract":"The mid-1990s saw the design of programming languages for software architectures, which define the high-level aspects of software systems including how code components were composed to form full systems. Our paper <italic>Abstractions for Software Architecture and Tools to Support Them</i> presented a conceptual view of software architecture based on abstractions used in practice to organize software systems, a language that supported these abstractions, and a prototype implementation of this language (Shaw et al., 1995). By invitation, we reflect on the paper’s principal ideas about system-level abstractions, place the work in a historical context of steadily increasing abstraction power in software development languages and infrastructure, and reflect on how progress since the paper’s 1995 publication has been influenced, directly or indirectly, by this work. We describe current manifestations of architectural ideas and current challenges. We suggest how the strategy we used to identify and reify architectural abstractions may apply to current opportunities.","PeriodicalId":13324,"journal":{"name":"IEEE Transactions on Software Engineering","volume":"51 3","pages":"768-773"},"PeriodicalIF":5.6000,"publicationDate":"2025-01-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10854557","citationCount":"0","resultStr":"{\"title\":\"Revisiting Abstractions for Software Architecture and Tools to Support Them\",\"authors\":\"Mary Shaw;Daniel V. Klein;Theodore L. Ross\",\"doi\":\"10.1109/TSE.2025.3533549\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"The mid-1990s saw the design of programming languages for software architectures, which define the high-level aspects of software systems including how code components were composed to form full systems. Our paper <italic>Abstractions for Software Architecture and Tools to Support Them</i> presented a conceptual view of software architecture based on abstractions used in practice to organize software systems, a language that supported these abstractions, and a prototype implementation of this language (Shaw et al., 1995). By invitation, we reflect on the paper’s principal ideas about system-level abstractions, place the work in a historical context of steadily increasing abstraction power in software development languages and infrastructure, and reflect on how progress since the paper’s 1995 publication has been influenced, directly or indirectly, by this work. We describe current manifestations of architectural ideas and current challenges. We suggest how the strategy we used to identify and reify architectural abstractions may apply to current opportunities.\",\"PeriodicalId\":13324,\"journal\":{\"name\":\"IEEE Transactions on Software Engineering\",\"volume\":\"51 3\",\"pages\":\"768-773\"},\"PeriodicalIF\":5.6000,\"publicationDate\":\"2025-01-27\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10854557\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"IEEE Transactions on Software Engineering\",\"FirstCategoryId\":\"94\",\"ListUrlMain\":\"https://ieeexplore.ieee.org/document/10854557/\",\"RegionNum\":1,\"RegionCategory\":\"计算机科学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q1\",\"JCRName\":\"COMPUTER SCIENCE, SOFTWARE ENGINEERING\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"IEEE Transactions on Software Engineering","FirstCategoryId":"94","ListUrlMain":"https://ieeexplore.ieee.org/document/10854557/","RegionNum":1,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q1","JCRName":"COMPUTER SCIENCE, SOFTWARE ENGINEERING","Score":null,"Total":0}
引用次数: 0
摘要
20世纪90年代中期出现了软件体系结构编程语言的设计,这些语言定义了软件系统的高级方面,包括如何组合代码组件以形成完整的系统。我们的论文《软件体系结构的抽象和支持它们的工具》提出了软件体系结构的概念视图,该视图基于在实践中用于组织软件系统的抽象、支持这些抽象的语言以及该语言的原型实现(Shaw et al., 1995)。通过邀请,我们反思了论文中关于系统级抽象的主要思想,将工作置于软件开发语言和基础结构中稳步增长的抽象能力的历史背景中,并反思了自论文1995年出版以来,该工作是如何直接或间接地影响了进展的。我们描述了当前建筑理念的表现形式和当前的挑战。我们建议我们用来识别和具体化架构抽象的策略如何应用于当前的机会。
Revisiting Abstractions for Software Architecture and Tools to Support Them
The mid-1990s saw the design of programming languages for software architectures, which define the high-level aspects of software systems including how code components were composed to form full systems. Our paper Abstractions for Software Architecture and Tools to Support Them presented a conceptual view of software architecture based on abstractions used in practice to organize software systems, a language that supported these abstractions, and a prototype implementation of this language (Shaw et al., 1995). By invitation, we reflect on the paper’s principal ideas about system-level abstractions, place the work in a historical context of steadily increasing abstraction power in software development languages and infrastructure, and reflect on how progress since the paper’s 1995 publication has been influenced, directly or indirectly, by this work. We describe current manifestations of architectural ideas and current challenges. We suggest how the strategy we used to identify and reify architectural abstractions may apply to current opportunities.
期刊介绍:
IEEE Transactions on Software Engineering seeks contributions comprising well-defined theoretical results and empirical studies with potential impacts on software construction, analysis, or management. The scope of this Transactions extends from fundamental mechanisms to the development of principles and their application in specific environments. Specific topic areas include:
a) Development and maintenance methods and models: Techniques and principles for specifying, designing, and implementing software systems, encompassing notations and process models.
b) Assessment methods: Software tests, validation, reliability models, test and diagnosis procedures, software redundancy, design for error control, and measurements and evaluation of process and product aspects.
c) Software project management: Productivity factors, cost models, schedule and organizational issues, and standards.
d) Tools and environments: Specific tools, integrated tool environments, associated architectures, databases, and parallel and distributed processing issues.
e) System issues: Hardware-software trade-offs.
f) State-of-the-art surveys: Syntheses and comprehensive reviews of the historical development within specific areas of interest.