0% found this document useful (0 votes)
8 views9 pages

Software Quality Engineering Lecture 1

Quality Engineering (QE) is a process ensuring product quality through rigorous checks during development, while Software Quality Engineering (SQE) applies these principles specifically to software development, integrating them with agile and DevOps practices. Key goals of SQE include process oversight, standards implementation, and issue identification, with various quality attributes such as reliability, maintainability, usability, and security playing critical roles. The document emphasizes that high-quality software meets user needs and requirements, and outlines the importance of attributes like flexibility, scalability, and interoperability in achieving software excellence.

Uploaded by

Sameed Washi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views9 pages

Software Quality Engineering Lecture 1

Quality Engineering (QE) is a process ensuring product quality through rigorous checks during development, while Software Quality Engineering (SQE) applies these principles specifically to software development, integrating them with agile and DevOps practices. Key goals of SQE include process oversight, standards implementation, and issue identification, with various quality attributes such as reliability, maintainability, usability, and security playing critical roles. The document emphasizes that high-quality software meets user needs and requirements, and outlines the importance of attributes like flexibility, scalability, and interoperability in achieving software excellence.

Uploaded by

Sameed Washi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Software Quality Engineering Lecture 1

What Is Quality Engineering?


Quality engineering (QE) is a process that applies rigorous quality checks to
each stage of product development. It does this through analysis,
development, management, and maintenance of quality assurance (QA)
protocols. QA is often continued after a product has been delivered.

The goal of QE is to ensure the quality of a product from the beginning,


minimizing potential losses caused by defects. QE is different from traditional
quality control measures in that it is present throughout the production
process. In traditional systems, quality is only checked in the final production
stages.

What Is Software Quality Engineering?


Software quality engineering (SQE) is the application of QE practices to the
software development lifecycle (SDLC). In software quality engineering, QE is
closely integrated with existing agile and DevOps processes, as opposed to
being added as a layer on top of existing workflows. This mirrors the shifted-
left testing principles of DevSecOps teams and is intended to identify issues
early on.

In software quality engineering, engineers play a key role. Quality engineers


design, implement, and maintain policies and procedures used to ensure the
quality of development processes. This requires a thorough understanding of
evaluation practices and technologies in use, including artificial intelligence
(AI), big data analytics, and automation.

Software Quality
• Software quality refers to the degree to which software conforms to its
requirements and meets the needs of its users. It is formally defined as
“the capability of a software product to satisfy stated and implied
needs when used under specified conditions.”

• “the degree to which those established requirements accurately


represent stakeholder needs, wants, and expectations.”
• High quality software meets its requirements, which in turn should
accurately reflect stakeholder needs. Quality is about aligning the
software with both its formal requirements as well as true user needs.

The primary goals of software quality engineering are:

• Process control and oversight

• Implementing standards and metrics

• Data collection and analysis

• Test development

• Identification of issues and solutions

• Follow-up to ensure corrective actions

Software Quality Attributes


• Software Quality is a term used to measure the degree of
excellence of software. Software Quality attributes are
extremely important while designing a software application.

• There is a misconception that if the software application is


bug-free then the quality of the software is high. However, a
bug-free product is just one of the Software Quality Attributes.
The quality of the software also depends on the user
requirements, satisfaction, clearer design, usability, etc.

• A list of software quality attributes are:

1.Reliability 5.Correctness 9.Flexibility 13.Reusability

2.Maintainability 6.Efficiency 10.Scalability 14.


Interoperability

3.Usability 7.Security 11.Compatibility

4.Portability 8.Testability 12.Supportability


Reliability
Reliability is the ability of software applications to behave as
expected and function under the maximum possible load.
Reliability is made up of different types
 Availability: The percentage of time the application is
available for use. 100% availability refers to the system
being always available and never going down under any
circumstances.
 Recoverability: Recoverability refers to the ability to
recover the system quickly and efficiently.
 Fault Tolerance: This attribute refers to the extent to
which the system can tolerate hardware failures.
Let’s take an example of an e-commerce website. The website
went down as one of the server nodes crashed. In an ideal
situation, if the reliability attribute is implemented then the
system should automatically failover to the other server node.

Maintainability
• Maintainability refers to how easily software developers can add new
features and update existing features with new technologies. The
application architecture plays a critical role in maintainability. The well-
architected software makes maintenance easier and more cost-
effective.

• Consider the scenario where the law enforces new privacy laws. If your
software is running on legacy code, adhering to new laws might be
challenging. If the software is well-architected and the code is well
documented, implementing such changes would be an easy task.

Usability
• The Usability attributes refer to the end user’s ease of use. Usability is
tied to application performance, application UX design, and
accessibility. To understand usability better let’s consider an e-
commerce page – user has purchased an item and wants to return the
item. Good usability makes the return option available on the orders
page. In some cases, the return option may appear on to contact us
page – in this situation user easily gets confused and faces difficulty to
find the return option.

• The usability design principles can help to design a good customer


experience. The meaningful option texts, tooltips, and info icons are a
great way to encourage self-learning.

Portability
• the ability to migrate or deploy software across different environments

• The portability quality attribute refers to how easily the system can be
ported or migrated to other environments containing different
hardware or operating system specifications. The portability problem is
majorly faced in mobile native applications.

• An example of a portability issue – you have designed a web


application that works perfectly fine on Android devices but when it is
ported to iPhone devices (iOS), it fails to render. If your application is
abstracted from UI and business logic, fixing such issues becomes
easy.

Correctness
• Correctness refers to the ability to behave or function as per software
requirement specifications. This may include navigations, calculations,
form submissions, etc.

• Consider an example of sign-up. Your application should navigate to


the terms and conditions page after signing up as per the requirement
specification. However, it is landing on the home page without showing
the terms and conditions page. Strict code reviews checklist and Unit
testing can help to discover such bugs.
Efficiency
• Efficiency can be defined as the time taken by the system to complete
a specific task. In layman’s terms, it can be the performance of the
application. Performance is the most critical software quality attribute
as it can make the user system to a hung state. The utilization of
system resources should be taken care with the most efficient way,
and any memory leaks should be avoided to achieve high efficiency.

• For example, if you open one of the video editor applications on your
desktop, as soon as you open your system freezes, and all the other
open application start to behave in an unintended way. This is a bad
application design and shows the poor efficiency of the software.

Security
• Security attribute focuses on the ability to safeguard applications,
data, and information from unauthorized entities. This is very crucial as
the data leaks may incur huge losses in terms of organization’s brand
name and reputation. Furthermore, the organization may face a
lawsuit.

• Authentication, authorization, and data encryption are a few key areas


that can safeguard from malicious attacks. Add on to this, if your
application is B2C, educating customers also plays an important role.

• An example of a security attribute is, you have developed an API


endpoint that is exposed to the public however, there is no
authorization required to access this endpoint. This can make API and
the underlying system, less secure. To make the API secure you can
consider enabling a JWT security token as mandatory, which can be
created only by authorized users.

Testability
• Testability is how easily QA members can test the software and log a
defect and how easy it is to automate the software applications. Your
application design should focus on making the testing easier and
faster.

• Consider an example, you have designed a web application that


doesn’t contain any uniquely identifiable locators. This makes
automation more complicated. Adding ids, data-testid, and class helps
to cover more scenarios through automation.

• Nowadays automation testing is most recommended as it makes the


delivery faster. If your application is automation friendly then one can
easily automate the application using automation software like
Testsigma and identify the defects in the early stage.

Flexibility
• focus on the ability to adapt to changing requirements and
coexist with other technologies

• Technology changes are more common nowadays. Flexibility refers to


how quickly your application can adapt to future and current
technology demands. Indirectly the flexibility attribute is tied up with
your competency in the market. If your application is not up to date
with the latest technology then you might not be able to deliver all the
user needs.

• refers to the adaptability or versatility of a system or component to


accommodate changes or variations in requirements or conditions.

• For example, You are using a third-party library for styling your
application. Due to some reasons, the third-party library declares the
end of development. Now the question arises of how quickly your
application can switch to another library. If it takes longer, then it might
cost your business.

• Never develop applications with tight coupling of libraries you have


reference to, rather design applications in a generic manner and hook
the libraries.

Scalability
• Scalability is how easily your system can handle increasing demands
without affecting the application’s performance. Vertical Scalability and
Horizontal Scalability are two primary areas that help to meet the
scalability criteria.

• For example, an e-commerce website declares a Black Friday sale. On


sale day, the application sees huge traffic. If your application is
designed according to the scalability attribute, as soon as the traffic
increases, the system should automatically add the server nodes and
distribute the traffic. Failing to do that may result in your application
going down.

Compatibility
• focus on the ability to adapt to changing requirements and
coexist with other technologies

• Compatibility refers to the ability of software, hardware, or


systems to work together without conflict or disruption.

• Compatibility focuses on the ability to work software systems on


different operating systems, and browsers seamlessly as expected
without affecting any functionality.

• This encompasses various aspects, including compatibility between


different software versions, compatibility with specific hardware
configurations or operating systems, and compatibility with external
standards or protocols.

• Compatible systems are designed to interact smoothly and reliably,


avoiding issues such as incompatibility errors, data corruption, or
performance degradation.

• A most common problem with the web application where it works on


Chrome but it doesn’t on Firefox. This is because of compatibility
issues. When it comes to business, you can’t restrict users to use a
specific browser.

Supportability
• It is the degree to which a software system can provide useful
information for identifying and resolving the issues when
application/functionality stops working. Enabling logging, monitoring,
and health checks are most useful to adapt supportability.

• For Example, Your application has a profile information page, which


works perfectly fine for some users and only a few users are facing
issues with the profile page. In this case, it is difficult to reproduce in a
lower-level environment. The logs come in handy to identify the call
stack and reference APIs which is causing the issue.

Reusability
• It is the degree to which software components can be reused in
another application or the same application. Reusable software
components reduce the development cost and effort. This is one of the
reasons most companies are encouraging component-based
development.

• For example, your organization is developing two different applications


where both the application needs sign-in and sign-up forms. If you
don’t have a reusable components strategy then you need to develop
the same thing two times. On the other hand, if you have identified
common components and designed those as reusable and shareable
components it would be much easier to integrate sign-in and sign-up
screens into both the application. The reusable component can also
decrease maintenance costs.

Interoperability
• exchange of data and resources between interconnected systems.

• Interoperability refers to the ability of different systems,


software applications, or components to communicate with
each other and exchange data effectively.

• This includes the ability to understand and interpret shared data


formats, protocols, and interfaces, enabling seamless interaction and
collaboration between disparate systems.
• Interoperable systems often adhere to common standards or
specifications to ensure compatibility and consistency in data
exchange and processing

• Interoperability refers to the ability to communicate or exchange data


between different systems. Which can be operating systems,
databases, or protocols. The interoperability problem arises due to the
legacy code base, poorly architectured application, and poor code
quality.

• For example, Your application needs to communicate with the payment


gateway but you are facing challenges to integrate with the payment
gateway due to various standards mismatch. If you had taken all the
security, data, and standard API design approach this wouldn’t have
happened.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy