SRE Bootcamp Series — Discipline of Software Engineering

Why is it so hard to build good software?

Jansutris Apriten Purba
4 min readMay 14, 2021

Hallo Geeks, I hope you feeling good and enjoy your entire life.

Now i’d like to convey to you:

  • what are the Discipline of Sofware Engineering (SE)?
  • Why is it so hard to build good software?
  • how can we do it?

All of these knowledge is come from Udacity. I found this link from my bootcamp’s learning syllabus arranged by AccelByte Inc. Happy Reading guys!

Fundamental SE Discipline in Computer Science (CS)

This is exactly the topic of this article. Let we start with base question.

Why SE is a fundamental Discipline in CS?

The discipline of SE are:

  • Methodologies
  • Techniques
  • Tools
  • High Quality software that works
  • Fits Budget
  • Make our costumers happy

SE is a fundamental Discipline in CS. Because, if we can apply all of these discipline in real world therefore our costumers or product user will happy.

The Software Crisis

Software Crisis is a condition when people realize that they were not able to build the software they needed for several reasons/cause which are:

1. Rising Demand for software

Now, You’re used to see software everywhere: in your phone, in your car evem in your washing machine. In 60s, the size and complexity of software was very limited and hardware component were really dominating the scene. Then things started to change and software started to be increasingly prevalent. This this qualitative plot will illustrate the growth in NASA’s software demand. The demand of Software in NASA grow exponentially. And the same happened in a lot of companies. For example is Boeing. Amount of software on airplanes became larger and larger.

Source: Udacity

2. The increasing amount of development effort

Unfortunatelly, software complexity does not increase linearly with size. it is not the same thing to write software for class exercise or small project or temp project than build a software for word processor, Operating system, distributed system or even complex and larger system. the class exercise might be 100 lines of code (LOC) or small project might be 1000 LOC than the distributed system project might be need 10⁷ LOC.

In fact, no matter how much programming languages, development environments and software tools improve, developers could not keep up with increasing software size and complexity. which leads us to the third problem for software crisis named slow developer’s productivity growth.

Source: Udacity

3. Developer’s Productivity Growth

Let me show you a qualitative diagram which taken from the IEEE Software Magazine. And what i’m showing here is the growth in software size and complexity over time, and how developers’ productivity really couldn’t keep up with this additional software complexity, which resulted in this gap between what was needed and what was actually available.

Source: Udacity

Software Development Contracts

What i want to discuss now is the result of a study performed by Davis in 1990s. The study was performed on nine software projects that were totaling a $7M in which i’m represent using the segment of pi representation. So clearly, this shows a pretty grim picture for software development and its success.

Source: Udacity

In short, there was evidence that the software was becoming too difficult to build and that the software industry was facing a crisis.

And this is what led us to the NATO software Engineering Conference that was held in January 1969 (also known as the birth of software engineering). What I want to showing here is the proceedings for that coference. You will find all of the the issues that we were discussed in this proceedings.

Source: Udacity

So the solutions from all of the isssues is implement software process (SP) in Software Development (Soft-Dev) which i want to convey in the next article.

That’s all, Thank you!

--

--