What is Software Engineering?

What is Software Engineering?

Software Engineering #

Software engineering is more than just people who write code. It also includes:

  • The upper management
  • Project managers
  • HR
  • Artists/asset creators
  • etc.

Software engineering is not the same as computer science. Computer science is a science – it’s a discipline focused around finding better ways to implement processes, such as finding a better way to implement an algorithm. Software engineering is focused around building systems that have practical use.

The term “software engineering” was first coined in 1968. Back then, programming was small in scale and usually used to solve complex or repetitive scientific problems. Nowadays, things are much different. You use software to acquire software. You often have to pay a subscription to use the software. Programs are far, far more powerful and far-reaching in scope.

It’s important to remember that programming, while important, is actually a small part of software engineering. There’s much more to it: How do you determine what your clients want? How do you share code with your teammates? How do you determine who has the rights to copy or use your code?

Another definition: a stakeholder is any individual or entity with a vested interest in your software. Understanding what your stakeholders want and building something that meets their requirements is the goal of software engineering.

The Five Phases of Software Engineering #

  1. Requirements – what do the stakeholders need?
  2. Design – what is the best approach to this problem?
  3. Implementation – how do we convert this into code?
  4. Testing – how do we ensure we have a correct, working solution?
  5. Maintenance – how do we continue to support this software into the future?

Difficulties #

There are tons of different software issues:

  • Cost overruns
  • Late delivery
  • Wrong requirements
  • Delivered product not accepted by (potential) customers