🤖 AI Summary
Software engineering lacks a formal theoretical foundation; existing research predominantly applies formal methods at the technical level rather than formally modeling software engineering itself. Method: This paper introduces the “meta-software engineering theory” paradigm—the first systematic effort to treat software engineering processes, entities (e.g., projects, modules, tests, milestones), and their interrelationships as formal objects. Leveraging object-oriented modeling integrated with formal methodologies, it constructs a structured theoretical prototype of core software engineering concepts, rigorously defining key abstractions and constraint relations. Contribution/Results: The work transcends conventional boundaries of formal method application, establishing a foundation for systematic, verifiable, and open-collaborative evolution of software engineering theory. It enables scalable development of a unified theoretical framework, supporting rigorous analysis, verification, and interoperable tooling across the software lifecycle.
📝 Abstract
Software engineering concepts and processes are worthy of formal study; and yet we seldom formalize them. This"research ideas"article explores what a theory of software engineering could and should look like. Software engineering research has developed formal techniques of specification and verification as an application of mathematics to specify and verify systems addressing needs of various application domains. These domains usually do not include the domain of software engineering itself. It is, however, a rich domain with many processes and properties that cry for formalization and potential verification. This article outlines the structure of a possible theory of software engineering in the form of an object-oriented model, isolating abstractions corresponding to fundamental software concepts of project, milestone, code module, test and other staples of our field, and their mutual relationships. While the presentation is only a sketch of the full theory, it provides a set of guidelines for how a comprehensive and practical Theory of Software Engineering should (through an open-source community effort) be developed.