top of page

What is 'Good Software'

  • Saurabh Dhupkar
  • Sep 30, 2020
  • 2 min read

For all these years, we have strived for writing good software. We use various tools, techniques, methodologies; we follow many processes; all with the intention of writing good software. However, what exactly is good software?


Does it mean financially successful or popular or critically acclaimed?


Can there be any way where we can measure the 'Goodness' of the software?


We will first have to define the 'Goodness of the software'

Well, Goodness is something that you need to maintain your entire life, it is definitely not a one-time deal.

So what is meant by good software?


When we say 'Goodness' is a lifetime deal, first we should look at the life of the software.


Just like us, the life of software is mostly divided in four parts -

  1. Birth

  2. Learning

  3. Earning

  4. Retirement


Seems familiar, right?


Now let's also see what each of these phases means in general.


Birth

The software starts it's life as an 'idea' and then it becomes a 'concept'. This phase typically includes Requirement Gathering, Scope Definition, Use Cases, UML and EER diagrams, etc.


Learning

The moment a new project is created in IDE, the software gets into the learning phase. All 'Development' is done in this phase and the app undergoes all 'Tests' in this phase itself. Unless it doesn't pass all the tests, it can't get to the 'Earning' phase.


Earning

The moment the app is deployed in the production environment for the first time, the 'earning' phase starts.


Retirement

This point is slightly tricky. The app hits the retirement phase when the 'idea' of decommissioning this app strikes first. Believe me, it is not this vague. This point has a specific point in the life of the software. In mathematical terms, when the maintenance cost of the app surpasses the value generated, the 'Retirement point' is achieved and the app gets in the retirement phase.


Let's get back to the main question

So, what exactly 'Goodness' of software is?


We can define it in a simple formula


Goodness = (Length of Earning phase) / (Total life of the software)


In simple terms, the longer the Earning phase, the better the software is ...



But how?

One way is to reduce the length of 'Birth' and 'Learning' phases ..... but the most important is to delay the retirement phase as much as you can.


It is very simple to say, right?


But how to delay the Retirement?


Sir Charles Darwin has already answered that - "He whos is the one that's most adaptable to change, survives"



That also means, your application needs to be capable of undergoing the changes and stay healthy. That's possible only when the app is not burdened under Technical Debt.


Comments


Commenting has been turned off.

Saurabh Dhupkar

A research enthusiast and aspiring software architect.

Loves to design and build big systems from simplest and tiniest possible components.

 

Believes that true greatness lies in simplicity

Computer Engineer from University of Pune and Master of Technology from Birla Institute of Technology and Science, Pilani

Working as software professional since 2008

Continuously trying to contribute to subject through small scribbles which are available here.

Budding thinker who loves to look at bigger picture and think as much deep as possible.

'Coding Universe' is a scribbling pad for me to just write down and share ideas, concepts and knowledge about Software Engineering and JAVA in the form of Technical Blog.

You can get in touch with me at saurabh.dhupkar@gmail.com

© Copyright : Saurabh Dhupkar
  • Academia_edited
  • Academia_edited
  • LinkedIn
bottom of page