Good Software Characteristics

A good software is one which have the characteristics which meet end user needs and demands. At the same time, satisfying them.

https://www.youtube.com/watch?v=ehuYDUUuRio

What is a Good Software

Good software is functional

If any piece of software is not able to execute its core functionality then it is useless.

Good software is robust

What this means is that good software is resistant to changes around it and failures, it also means being able to recognize and deal with failures.

Good software is measurable

This trait has taken time to grow on me personally. It should be possible to see how well the code is doing outside of a test environment. Usually, the best measures are how the software can facilitate the business needs. A good measure for a UI is how long does it take to load or react to an interaction.

Good software is debuggable

This does not mean being able to log everything for the heck of it but being able to bulk dump debug on demand can be very handy.

Good software is maintainable

A software can be easy to maintain if it has consistent styling, good comments, is modular, etc. In fact, there is a lot of literature on good software design that just focuses on design principles that make it easy to make changes to parts of the software without breaking its functionality.

Good software is reusable

Generalizing a solution can be hard and time-consuming. Obviously, we are all on deadlines so unless you are absolutely sure that you are going to reuse this piece of functionality elsewhere, you can time-bound the effort of making it reusable.

Good software is extensible

Usually, the conversation starts with “but suppose that tomorrow somebody wants to add X here”. Like the general copy command on all OSs, it does not care where you are copying to or from these are extensions to the original program, making it immeasurably more valuable.

Operational Characteristics

  • Correctness: The software which we are making should meet all the specifications stated by the customer.
  • Usability/Learnability: The amount of efforts or time required to learn how to use the software should be less. Hence, this makes the software user-friendly even for IT-illiterate people.
  • Integrity : Just like medicines have side-effects, in the same way a software may have a side-effects. For instance, it may affect the working of another application. But a quality software should not have side effects.
  • Reliability : The software product should not have any defects. Not only this, it should not fail while execution.
  • Efficiency : This characteristic relates to the way software uses the available resources. Hence, the software should make effective use of the storage space and execute command as per desired timing requirements.
  • Security : With the increase in security threats nowadays, this factor is gaining importance. The software should not have ill effects on data / hardware.
  • Safety : The software should not be hazardous to the environment/life.

Transition Characteristics

  • Interoperability : Interoperability is the ability of software to exchange information with other applications. And hence, make use of information transparently.
  • Reusability : If we are able to use the software code with some modifications for different purpose then we call software to be reusable.
  • Portability : The ability of software to perform same functions across all environments and also on all platforms demonstrate its portability.

Revision Characteristics

  • Maintainability : Maintenance of the software should be easy for any kind of user.
  • Flexibility : Changes in the software should be easy to make.
  • Extensibility : It should be easy to increase the functions performed by it.
  • Scalability : It should be very easy to upgrade it for more work (or for more number of users).
  • Testability : Testing the software should be easy.
  • Modularity : Any software is said to made of units and modules which are independent of each other. If the software is divided into separate independent parts that can be modified, tested separately, it has high modularity.

In Conclusion

Finally, software is treated as a good software by the means of different factors. In other words, software product is concluded as a good software by what it offers and how well it can be used. 

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *