Software Quality Engineering Lecture 1
Software Quality Engineering Lecture 1
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.”
• Test development
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.
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.
Correctness
• Correctness refers to the ability to behave or function as per software
requirement specifications. This may include navigations, calculations,
form submissions, etc.
• 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.
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.
Flexibility
• focus on the ability to adapt to changing requirements and
coexist with other technologies
• 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.
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.
Compatibility
• focus on the ability to adapt to changing requirements and
coexist with other technologies
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.
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.
Interoperability
• exchange of data and resources between interconnected systems.