Table of Contents
Fetching ...

Abstraction Engineering

Nelly Bencomo, Jordi Cabot, Marsha Chechik, Betty H. C. Cheng, Benoit Combemale, Andrzej Wąsowski, Steffen Zschaler

TL;DR

The paper argues that modern software systems must cope with rapid change and high uncertainty, and that abstractions are the central mechanism for reasoning, assurance, and evolution. It defines Abstraction Engineering (AE) as a disciplined practice for constructing and manipulating abstractions across life-cycle stages, including both designed and learned/discovered abstractions. By detailing foundations and a four-question anatomy of abstractions, it identifies key challenges in complexity, uncertainty, compositionality, and reuse, and surveys partial solutions from multiple fields. It then presents a roadmap spanning technical research, education, artifacts, and collaborative practices to establish AE as a principled lens for future software and system engineering.

Abstract

Modern software-based systems operate under rapidly changing conditions and face ever-increasing uncertainty. In response, systems are increasingly adaptive and reliant on artificial-intelligence methods. In addition to the ubiquity of software with respect to users and application areas (e.g., transportation, smart grids, medicine, etc.), these high-impact software systems necessarily draw from many disciplines for foundational principles, domain expertise, and workflows. Recent progress with lowering the barrier to entry for coding has led to a broader community of developers, who are not necessarily software engineers. As such, the field of software engineering needs to adapt accordingly and offer new methods to systematically develop high-quality software systems by a broad range of experts and non-experts. This paper looks at these new challenges and proposes to address them through the lens of Abstraction. Abstraction is already used across many disciplines involved in software development -- from the time-honored classical deductive reasoning and formal modeling to the inductive reasoning employed by modern data science. The software engineering of the future requires Abstraction Engineering -- a systematic approach to abstraction across the inductive and deductive spaces. We discuss the foundations of Abstraction Engineering, identify key challenges, highlight the research questions that help address these challenges, and create a roadmap for future research.

Abstraction Engineering

TL;DR

The paper argues that modern software systems must cope with rapid change and high uncertainty, and that abstractions are the central mechanism for reasoning, assurance, and evolution. It defines Abstraction Engineering (AE) as a disciplined practice for constructing and manipulating abstractions across life-cycle stages, including both designed and learned/discovered abstractions. By detailing foundations and a four-question anatomy of abstractions, it identifies key challenges in complexity, uncertainty, compositionality, and reuse, and surveys partial solutions from multiple fields. It then presents a roadmap spanning technical research, education, artifacts, and collaborative practices to establish AE as a principled lens for future software and system engineering.

Abstract

Modern software-based systems operate under rapidly changing conditions and face ever-increasing uncertainty. In response, systems are increasingly adaptive and reliant on artificial-intelligence methods. In addition to the ubiquity of software with respect to users and application areas (e.g., transportation, smart grids, medicine, etc.), these high-impact software systems necessarily draw from many disciplines for foundational principles, domain expertise, and workflows. Recent progress with lowering the barrier to entry for coding has led to a broader community of developers, who are not necessarily software engineers. As such, the field of software engineering needs to adapt accordingly and offer new methods to systematically develop high-quality software systems by a broad range of experts and non-experts. This paper looks at these new challenges and proposes to address them through the lens of Abstraction. Abstraction is already used across many disciplines involved in software development -- from the time-honored classical deductive reasoning and formal modeling to the inductive reasoning employed by modern data science. The software engineering of the future requires Abstraction Engineering -- a systematic approach to abstraction across the inductive and deductive spaces. We discuss the foundations of Abstraction Engineering, identify key challenges, highlight the research questions that help address these challenges, and create a roadmap for future research.
Paper Structure (23 sections, 1 figure, 1 table)

This paper contains 23 sections, 1 figure, 1 table.

Figures (1)

  • Figure 1: A deceivingly simple feature model of types of abstractions. A different configuration of the feature model may apply to each individual abstraction. The right column of the figure underlies how the changing characteristics of software systems, changes the nature of modern abstractions and their engineering.

Theorems & Definitions (2)

  • Definition 1
  • Definition 2