7 Reflection on Theory

The goal of this chapter is to present the role that Essence plays in working toward a theory of software engineering. Theoretical foundations bring technology to new heights. We have seen that in every engineering discipline, and it would apply for software engineering as well. In this chapter, we discuss

  • that software engineering is still on its way toward appropriate theory;
  • the need for a software engineering theory and the expected benefits of it;
  • the differences between descriptive and predictive theories;
  • the role Essence plays as a descriptive theory; and
  • the role Tarpit plays as an example of a predictive theory.

The intent is to encourage readers to research and evolve a theory that helps teams and organizations deliver software much better.

After studying this chapter, you should be able to

  • explain what is expected from a software engineering theory and what in general are the purpose and goals of a theory;
  • present arguments why software engineering needs a theory;
  • explain the connection of a software engineering theory and predictability (give examples to support the explanation);
  • explain the difference between descriptive and predictive theory;
  • explain the role and key characteristics of Essence (i.e., that it is practical, actionable, extensible) in the context of a software engineering theory; and
  • explain the propositions of the Tarpit theory.