SEMAT Workshop on a General Theory of Software Engineering (GTSE)
Co-located with ICSE 2013, San Francisco, USA
Most academic disciplines emphasize the importance of their general theories. Examples of general theories include the Big Bang theory, Maxwell’s equations, the theory of the cell, the theory of evolution, the theory of demand and supply, but also theories with names such as the general theory of crime and the theory of marriage, both well-established within their respective fields. Few general theories of software engineering have, however, been proposed, and none have achieved significant recognition. This workshop, organized by the SEMAT initiative, aims to provide a forum for discussing the concept of a general theory of software engineering. The topics considered include the benefits, the desired qualities, the core components and the form of a general theory. The workshop follows the publication of an article with the title “Where is the Theory for Software Engineering?” in the September/October 2012 issue of IEEE Software, as well as the first SEMAT Workshop on a General Theory of Software Engineering, held in November 2012 in Stockholm, Sweden.
Many academic disciplines have emerged from practice without particular focus on any underlying theories. This was the case in the infancy of, for instance, civil, electrical and aeronautical engineering as well as of oncology and psychology. Being relatively void of explicit theory from the beginning, these disciplines have matured over the years, developing advanced scientific theories that allow them to explain and predict many phenomena that were previously only subject to trial-and-error and experience-based rules-of-thumb.
Mature academic disciplines generally emphasize the importance of their central theories. Various disciplines, including optics, circuit theory, psychology, organizational theory and international relations are either based on one single theory as the subject’s core foundation or on a limited set of alternative theories providing competing predictions about the discipline’s essence. A prime example of a single, dominant theory is Maxwell’s equations in the subject of electrical engineering. It’s difficult to imagine what electrical engineering would be today without those four concise equations. In psychology, two competing general theories, the cognitive and the psychodynamic ones, have dominated the field in recent decades. Even though electrical engineering and psychology are different in almost all respects, they are both highly concerned with and invested in their theories.
Software engineering has now been with us for some time. Despite this, few general theories of software engineering have been proposed, and none of them have achieved significant recognition so far. Within the SEMAT community, we believe that the time has come to start working on a general theory of software engineering. For this reason, the SEMAT Initiative, via its call for action, has invited the software community to launch “a process of re- founding software engineering to be based on a solid theory, proven principles, and best practices.” The call for action noted a current “lack of a sound, widely accepted theoretical basis” for software engineering.
But even if many other disciplines seem to value their core theories, what would such a theory bring to software engineering? Why can we not simply continue with what we have done so far? The main reason is that a craft without scientific foundation is limited to trial-and-error and rules-of-thumb (based on previous trials). Such a knowledge base cannot be used for other than the most rudimentary predictions. This, in turn, means that innovations can only be tested in vivo, which can be both expensive and painful. The long list of well-known software failures is a testament to the tradition of trial-and-error.
Theory addresses this problem, because a theory is a system of rules that mimics the real world, but cheaply and without pain. Theory can provide answers to questions that otherwise might be prohibitively expensive. A general theory of software engineering would ideally advise against costly error before the trial begins.
With this workshop series, we wish to promote the scientific process of proposing, criticizing and testing general theories of software engineering, in the hope that the discipline eventually will reach a state similar to that of many other academic disciplines, with one or a few theories that are able to make important predictions about concepts central to software engineering.
Following the publication of an article with the title “Where is the Theory for Software Engineering?” in September/October 2012 issue of IEEE Software and the 1st SEMAT Workshop on a General Theory of Software Engineering (GTSE 2012), held in Stockholm, Sweden on November 8-9, 2012, this second version of the workshop, GTSE 2013, aims to provide a forum for discussing the concept of a general theory in software engineering.
The workshop aims for an explorative discussion on questions such as these: How can a general theory of software engineering be of practical use? What are the objectives of such a theory? What questions should it address?What is a useful definition of theory? How foundational/universal should a general theory of software engineering be? What should its main concepts be? Should it be expressed formally? If formalized, what is a suitable language?