Internal Quality is important too!

The issue of quality is key to the success of any software product; and there are essentially two main aspects of quality that can be looked at. The first is external quality, which is the quality that is perceived by the users of the product and is also something everyone can appreciate.

The second, internal quality, is a lot more difficult to get right, however it is arguably as important if not more so than external quality.

The internal quality relates to the quality of the source code, architecture, development processes, etc. which is not seen by the end users of the product, below is a list of what qualities this may include (with quotes!):

Flexibility

“…if you’re afraid to change something it is clearly poorly designed.” – Martin Fowler

Portability – reuse code on different environments and computers

“If a program is properly written, portability comes automatically” – University Professor

Re-usability – easy to extend, high cohesion, low coupling

“… with proper design, the features come cheaply. This approach is arduous, but continues to succeed.” – Dennis Ritchie

Readability – easy to read, clean code

“Programs must be written for people to read, and only incidentally for machines to execute.” – Abelson and Sussman

Testability – unit tests, component tests, acceptance tests

“The principle objective of software testing is to give confidence in the software.” – P D Coward

Understandability – e.g. documented code

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” – Martin Fowler, Refactoring: Improving the Design of Existing Code

Simplicity

“Remember that there is no code faster than no code.” – Taligent’s Guide to Designing Programs

“Everything should be made as simple as possible, but no simpler.” – Albert Einstein

Maintainability

“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” – Rick Osborne

The external quality covers aspects such as: correctness, usability, efficiency, reliability (potential likelihood of application failures), integrity, adaptability, accuracy and robustness.

These are all very valuable qualities any software product should try and adhere to, but when it comes to adapting to changes in the software, a good code base with great internal qualities can save a huge amount of resources and time in the long term of a project.

2 thoughts on “Internal Quality is important too!”

  1. Nick, would you say you operate on a Utilitarian basis or do you have some other source of ethical guidance? I always think a Kantian approach to coding is best – make sure you can universalise your principles,…. Know what I mean 🙂 xxxw

Leave a Reply

Your e-mail address will not be published. Required fields are marked *