The concept of software quality has been a cornerstone of software engineering for decades, and while technology continues to evolve, the foundational principles of quality remain remarkably consistent. Drawing inspiration from Pfleeger and Atlee (2006) and Selby and Boehm (2009), we can revisit the key characteristics of quality software in light of advancements in tools, processes, and methodologies as of 2025.
Defining Software Quality
Software quality encompasses a variety of granular characteristics that may hold different levels of importance depending on the organization, industry, or specific project. However, several generic properties of quality are broadly recognized and remain universally relevant:
- Portability
Portability measures how easily software can operate across different environments or platforms. In 2025, with the rise of containerization (e.g., Docker) and platform-agnostic frameworks, portability is more achievable than ever. However, challenges remain when software is tightly coupled to specific third-party tools or hardware, such as proprietary APIs or specialized dongles. - "As-Is" Utility
Software with strong "as-is" utility requires minimal customization after deployment. Customers increasingly expect solutions that work out-of-the-box with built-in flexibility, especially in cloud-based environments where adaptability is paramount. Reliability, efficiency, and user-centric design (human engineering) are key indicators of strong utility. - Maintainability
A critical question for any software system is whether it will remain viable over time. In 2025, maintainability is not just about fixing bugs or adding features but also about ensuring compatibility with evolving technologies. Testability, understandability, and modifiability are essential to future-proofing software, as systems need to adapt to rapid advancements like AI-driven development and automation.
Human Factors in Software Quality
Bernard’s observation remains highly relevant: inadequate training and preparation are still among the most significant reasons for failed software implementations. Even the most advanced and high-quality software can falter if the end-users are unprepared or resistant to change.
From my experience, users with a vested interest in their organization's success don’t want to see a new system fail. However, without proper training, they may unintentionally resist the new solution by defaulting to “the way we’ve always done it.” In 2025, effective change management and robust onboarding programs are more critical than ever, particularly as systems grow increasingly complex.
Key approaches to overcoming human factors include:
- Proactive Training Programs: Leveraging AI-powered learning tools and simulations to train staff before deployment.
- Stakeholder Involvement: Engaging users in the design and testing phases to foster a sense of ownership.
- Clear Communication of Benefits: Demonstrating how new software improves workflows and aligns with organizational goals.
Advancing the Discussion
While the foundational characteristics of quality software haven’t changed significantly, their context has evolved. For instance:
- Portability now includes considerations for cloud-native architectures and edge computing.
- "As-Is" Utility increasingly revolves around AI-driven customization and adaptable interfaces.
- Maintainability often involves integration with automated CI/CD pipelines and the ability to handle data streams from IoT devices.
The human factor also remains critical. No matter how advanced the software, success hinges on the people who use it. Ensuring user buy-in through training, communication, and engagement is as important in 2025 as it was a decade ago.
Joseph Reynolds originally posted this in July 2009. It was reposted here on February 12, 2009. This post is updated for 2025.