Theoretical Framework for Software Engineering

The Object-Oriented Programming (OOP) paradigm is a close simulation of the systems theoretical model of communication between distinct (identity) Self-Referential Machines (i.e. objects), that can be categorized (classification, inheritance), have certain sensors (i.e. inputs), certain behaviors (i.e. outputs) and, by virtue of their autonomy, can react differently to identical inputs (polymorphism).

Further, the OOP framework represents a human conception about the human conception of the world, and in that sense, it is the outcome of a recursive analysis that exemplifies first and second-order cybernetics and systems theory (Bateson G., 2002; Checkland P., 1999; Foerster von H., 1984; 2002; 2003; Heidegger M., 2006; Heylighen F., 2001; Maturana H.R., 2005).

In fact, the only thing that OOP lacks compared to the human conception of reality is Embodiment; but here too, if one considers software as residing in hardware (a legitimate conception in our opinion), the embodiment of software becomes a self-evident fact. It should be therefore of no surprise that we are proposing Systems Theory as a theoretical framework for software engineering in all of its aspects.

~

MAVROFIDES, Thomas, KAMEAS, Achilles and DIMARAKI, Evangelia, [no date]. A Theoretical Framework for Software Engineering: Rediscovering Cybernetics and Systems Theory.