A good software possesses three primary characteristics, namely maintenance ability, transitional ability, and operational ability.