Defining Software Engineering
Think of one of your favorite or one of the most memorable types of software that you have used or use often, something that runs on your mobile phone, computer, browser, or game console. Imagine the first day the team that created it got together to get started on it; how did they go from a blank slate on day 1 to creating something you enjoy using? The team could have started coding at the beginning, but how would they know what they were building? There are many questions to answer before a team can get started on a software project. Software that serves the purpose it was intended for, for a long time, and without failure can be defined as high-quality. Building high-quality software consists of thoughtful decisions to make sure these requirements are met. The creators of your favorite software probably didn’t immediately put all their efforts into writing the code on that first day. Instead, they likely carefully planned how to create and deliver software that someone like you would enjoy. The effort that the team took to make quality software is a discipline within computer science called software engineering.
You may now be wondering how creating software relates to engineering. This chapter will answer this question by defining computer science and software engineering and exploring the relationship between the two. Next, we’ll dive further into software engineering by exploring common practices within the discipline.
This chapter will cover the following topics:
- Learning what computer science is
- An introduction to software engineering
- Reviewing why software engineering is so named by comparing it to another engineering discipline
- The six phases of the software engineering process and the challenges faced by software engineers in each phase
By the end of this chapter, you will have an understanding of the difference between computer science and software engineering and you’ll learn about the six phases of the software engineering process. You’ll also understand why building software is an engineered process and how software engineers contribute to a project before, during, and after writing code.