4 Identifying the Key Elements of Software Engineering

The goal of this chapter is to present key elements of the development endeavor, which later become "alphas", the building blocks of Essence - the things we work with when developing software. In this chapter, we discuss

the key elements within software engineering that deliver value to the customer;

the key elements in software engineering that are related to the targeted solution and development endeavor; and

the role and importance of different stakeholders, requirements, and team composition.

This knowledge will help us to lay out a model of software engineering with areas of concern and key elements, which will create the basis for our understanding of Essence. To understand this model in practical application, we now rejoin Smith in his journey into software development.

After studying this chapter, you should be able to:

list and explain the things involved in all development endeavors, related to the customer (i.e., opportunity, stakeholders), solution (i.e., requirements, software system), and endeavor (i.e., work, team, way of working);

give examples of different types of stakeholders, together with their interests and concerns;

explain the mediating role of requirements;

name and explain the three key characteristics of software systems (i.e., functionality, quality, and extensibility); and

explain what makes a good team.

Understanding the facets of software engineering covered in this chapter provides an overview of the main core of Essence. This core may seem fairly abstract at this point, but as you read on, you will recognize all these facets in the Essence alphas, and be able to apply them in more and more practical and detailed ways.