For a software to be classified as good, it must possess some key features.
1. Functionality: A good software must be able to do what it was designed to do. The software requirements must guide the design and implementation of the software.
2. Usability: The software must be usable; the users must not find it difficult to figure out how a good software works. A good software is user-centered and user-friendly.
3. Efficiency: Efficiency means that perform it's operations with minimal time and processing power. A good software uses the least amount of processing power and memory needed to achieve the desired result.
4. Maintainability: A good software must evolve with changing requirements.
5. Security: A good software must be secure. It should not cause physical or economic damage in the event of a system failure. Unauthorized users must not be allowed access to the system.
6. Reliability: A reliable system will rarely fail, and even when it does fail, there are recovery mechanisms in the software to recover from the failure with minimal losses.