DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Last call! Secure your stack and shape the future! Help dev teams across the globe navigate their software supply chain security challenges.

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workloads.

Releasing software shouldn't be stressful or risky. Learn how to leverage progressive delivery techniques to ensure safer deployments.

Avoid machine learning mistakes and boost model performance! Discover key ML patterns, anti-patterns, data strategies, and more.

Related

  • 7 Essential Software Quality Metrics for Project Success
  • Data Testing: The Missing Component of Data Quality
  • Shifting Left: A Culture Change Plan for Early Bug Detection
  • XAI: Making ML Models Transparent for Smarter Hiring Decisions

Trending

  • Unlocking AI Coding Assistants Part 1: Real-World Use Cases
  • AI's Dilemma: When to Retrain and When to Unlearn?
  • Optimize Deployment Pipelines for Speed, Security and Seamless Automation
  • Java's Quiet Revolution: Thriving in the Serverless Kubernetes Era
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Maintenance
  4. Software Quality: A Three-Dimensional View

Software Quality: A Three-Dimensional View

We’ve discussed the importance of quality in the software industry and how it can be categorized into three essential aspects.

By 
Kayukaran Parameswaran user avatar
Kayukaran Parameswaran
·
Dec. 09, 23 · Analysis
Likes (2)
Comment
Save
Tweet
Share
3.7K Views

Join the DZone community and get the full member experience.

Join For Free

In the world of consumerism, the primary goal is to satisfy one's needs and desires. These needs find fulfillment in the satisfaction derived from the products or services we receive. Since human wants are diverse and unique, the nature and quality of the products or services are shaped accordingly. Quality, in this context, is determined by the level of human satisfaction it provides. Achieving this quality necessitates a continuous process of monitoring and improvement in the delivery of products or services.

In the software industry, software quality can be categorized into three essential aspects: decision quality, process quality, and product quality. These three dimensions collectively determine whether the software will ultimately satisfy both customers and end-users. Below, we'll delve into each dimension of quality and outline how each is monitored and improved.

Figure 1: A three-dimensional view of software quality 

Decision Quality 

In our lives, we frequently find ourselves at crossroads, faced with a multitude of decisions to make, each with its own set of considerations and potential consequences. These decisions become the building blocks of our life's journey. However, when working within a team or an organization, the process of decision-making takes on a collaborative dimension, where the choices made collectively have a profound impact on the outcomes achieved.

The Three Pillars of Decision-Making Described

In the software industry, decision-making features three key pillars: business decisions, management decisions, and technical decisions. Each of these pillars plays a crucial role in the success of software projects and, by extension, the organizations involved.

Business Decisions

Business decisions require a full understanding of market dynamics, customer needs, and the overarching goals of the organization.

Management Decisions

Management decisions involve evaluating available resources, setting priorities, and charting a clear roadmap for project execution.

Technical Decisions

Technical decisions include the selection of the technology stack, architectural design, and coding practices, among others. 

There are several ways to ensure the quality of our decisions.

The Three Pillars of Decision-Making in Action 

Proper Framing

The key to proper decision-making is framing. Framing helps us to define precisely and accurately the problem we aim to solve. Without proper framing, we may end up addressing the wrong problem. 

To develop an appropriate frame, you can use the following decision hierarchy as a tool (Figure 2). This pyramid structure helps define the scope of the questions to be answered, providing focus and preventing information overload:

Decisions to take as given: These decisions have already been made and need to be carried out.

Decisions to focus on: These are the decisions currently in focus.

Decisions to make later: These can be made later or separately.

In the example that follows, when we first start planning a new software development project, we need to determine the deployment methodology for this particular project. To make this decision, it's crucial that our discussion is framed properly.

“Selecting the best software deployment methodology is essential, especially considering that the project has a licensing period spanning the next five to ten years.”

Figure 2: Decision hierarchy for selecting the best software deployment methodology

In the decision hierarchy outlined above, the pyramid structure guides the decision-making process with distinct levels of focus.

Top Level: Take as Given

  • Ensure software supports production traffic for five to ten years.

  • Can practice the current deployment methodology (manual deployment) or new methodology: continuous integration / deployment (CI / CD) , serverless deployment, or another methodology.

  • Make the decision during the initial development phase.

  • Involve all stakeholders (business and technical) in the decision-making process.

Middle Level: Focus On

  • Choose a deployment methodology for long-term service (five to ten years).

  • Opt for manual deployment with partial automation or embrace a new approach?

Decision Later

At the base level, decisions can be deferred for later stages:

  • Improve the security of the chosen deployment method.

  • Evaluate the existing resource knowledge level.

  • Ensure software sustainability.

Identifying Creative Alternatives

Having a variety of creative alternatives is crucial for making sound decisions. Your list of alternatives should be extensive and diverse to encompass a wide range of possibilities. Good alternatives possess the following characteristics:

  • They are novel in some way, significant or minor. 

  • They differ significantly from one another.

  • They offer a broad range of choices.

  • They are feasible.

To identify alternatives effectively, you can use a strategy table as illustrated below (Table 1). Each decision within the problem's focus category becomes a column heading, while the left side lists the strategies associated with each decision. It is the responsibility of decision-makers to define a high-quality set of alternatives before proceeding with further evaluation.

Example 

There was a situation where management made a decision to initiate a new project, resulting in a change to the current deployment strategy and the introduction of a new CI/CD deployment strategy. This decision aligns with the structured decision hierarchy outlined below, characterized by distinct levels of focus.

Top Level: Take as Given

  • Adopt CI / CD as the new deployment methodology  

Middle Level: Focus On

  • Plan for necessary internal practices renewal.

  • Organize knowledge sharing sessions for current employees.

  • Introduce the technologies and tools involved. 

Base Level: Decision Later

  • Enhance security measures with the new deployment methodology.

  • Establish software support level practices 

Figure 3: Decision hierarchy for adopting CI/CD for deployment

Each decision in the problem's focus category becomes a column heading across the top of the table. These column headings are derived from the middle section of the decision hierarchy.

These strategies are associated with adopting CI/CD as the new deployment methodology: adopting CI/CD in-house, considering a third-party deployment service, and contemplating a hybrid approach. 

  • If the strategy of adopting CI/CD in-house is chosen, a coherent CI/CD practice needs to be documented, a training plan needs to be created, and the tools need to be identified. 

  • When considering the third-party deployment service as an alternative, there is no need for training and tool selection. 

  • With the hybrid approach, there won't be significant changes in the current practices and tools. 

In summary, if we can come up with a set of sound alternative strategies for the decisions we need to make, it will help us come to a good overall decision.

Table 1: Strategy table for adaptation to CI/CD deployment

Structuring Relevant Information

Many decisions pertain to the future. To make informed judgments in such cases, structuring relevant information becomes crucial. Decisions about something that hasn’t happened yet often involve assessing probability and possibility. Decision trees (Figure 4) serve as a valuable tool for structuring these types of decisions.

Decision trees represent the sequence of decisions and uncertainties, illustrating possible outcomes and associated probabilities.

Example 

Reducing the count of Customer Reported Bugs (CRBs) and implementing an effective regression testing mechanism, which our organization had previously carried out manually, necessitated several decisions.

To make informed decisions in this regard, it's essential to gather information, including estimates of future costs and revenues, to understand the value of this opportunity. In the scenario below, we need to consider person days (PDs) required for implementing appropriate automation practices as well as potential CRB increases on the project — both of which carry uncertainty. Predicting these uncertainties and their outcomes accurately is crucial. 

A decision tree, such as the one presented below, proves to be an effective tool for conveying decision-related information. It lays out a clear sequence of possibilities, including the entire path of cause and effect, along with associated probabilities.

Figure 4: Decision tree: Probability of success in automating regression tests  

In the decision tree diagram shown above, we contemplate whether to opt for manual regression testing or establish a team for implementing an automated regression suite. 

To arrive at good decisions, practice is essential. In the software industry, where multiple decisions contribute to producing quality products, it's imperative that these decisions point to clear and achievable goals.

Process Quality 

Any mature organization should follow defined processes, monitor their effectiveness, and provide for continuous improvement. Several standards and models have been developed for monitoring processes, including the CMMI Model, Six Sigma Model, ISO 9001 Model, and others.

In the software industry, processes are typically classified as follows:

  • Software development process

  • Software operation process

  • Software maintenance process

  • Management process

  • Subprocesses within departments such as HR, sales and marketing, purchasing, office administration, and so on

All of the processes mentioned above need to be well-defined in a software development organization and subject to regular audits. The best approach to ensuring solid processes is to conduct quarterly internal audits. Audits help identify areas for improvement within the aforementioned process classifications, and the necessary changes can then be incorporated. 

The Plan-Do-Check-Act (PDCA) cycle is a useful mechanism for achieving this continuous improvement.

Figure 5: PDCA Cycle

The PDCA cycle enables an organization to ensure that its processes are adequately resourced and managed, and that opportunities for improvement are determined and acted on. (ISO 9001:2015 Section: Introduction)

Product Quality

Product quality in the software industry is defined as the degree to which the software meets customer or end-user needs or expectations. Quality is evaluated through the perspectives of the user, the builder, and the manager. In actual user experience, software quality depends on the following characteristics:

  • Functionality

  • Reliability

  • Usability

  • Efficiency

  • Maintainability

  • Portability

In the software development life cycle (SDLC), it is imperative to monitor and continuously update the following:

  • Clear requirements

  • Architecture design quality (peer review / team review)

  • Code quality (peer code review / tools)

  • Secure implementation at server and application levels

  • UI / UX feedback

  • Clear maintenance and operational documentation

To ensure that standards and best practices are applied, we conduct reviews and use tools. Subsequently, we employ the following monitoring metrics to gauge improvement on a quarterly basis.

Monitoring Matrix 

Number of issues or feedback in the following categories:

Quarter 1

Quarter 2

Quarter 3

Quarter 4

Requirement issues





Architecture design issues





Code quality-related issues (flawed logic, lack of ode optimization, and security practices missed)





Issues related to software implementation in production





UI / UX Feedback





Maintenance / operation document concerns 





Table 2:  Monitoring matrix

In a software organization, we typically receive issues and feedback for delivered projects. It is essential to align these updates with the categories mentioned above. Conducting an annual review allows us to evaluate and determine the standards and practices we follow at each stage of the SDLC. This review is crucial for improving code quality. If we are using tools for this purpose, there might be occasions when upgrading existing tools or exploring new ones becomes necessary.

To Wrap Up

We’ve discussed the importance of quality in the software industry and how it can be categorized into three essential aspects: Decision quality, process quality, and product quality. Overall, we emphasize the significance of quality in decision-making, processes, and software products, highlighting the need for continuous improvement in each of these areas to meet customer and user satisfaction.

"Quality is fitness for use." -Joseph Juran

Decision tree Software deployment Software development process Software quality

Published at DZone with permission of Kayukaran Parameswaran. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • 7 Essential Software Quality Metrics for Project Success
  • Data Testing: The Missing Component of Data Quality
  • Shifting Left: A Culture Change Plan for Early Bug Detection
  • XAI: Making ML Models Transparent for Smarter Hiring Decisions

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!