Quality Attributes of Web Software Applications
Quality Attributes of Web Software Applications ∗
Quality Attributes of Web Software Applications ∗
Quality Attributes of Web Software Applications ∗
Quality Attributes of Web Software Applications ∗
1. https://allaboutpaki.com/
S
SubmittedTo:
SubmittedBy:
"In The Name of Allah, The Most Beneficent, The Most Merciful"
Software Design And Architecture
Topic :
University ofthe Punjab
MAY 10, 2020
Research paper
Ma’am Sajiya Osama
MIT18-209
MSC-IT 4th SEMESTER
Hasnain Qayyum
2. https://allaboutpaki.com/
Abstract
Although the word “heterogeneous” is commonly used to describe web software, we
might easily forget to notice in how many ways it can be applied. This paper
discusses some of the unique technological aspects of building web software
applications, the unique requirements of quality attributes, and how they can be
achieved. Web applications have very high requirements for a number of quality
attributes. Some of these quality attributes have been important in other (mostly
relatively small) segments of the industry, but some of them are relatively
new. These exciting changes have been fuelled by many changes in software
technology, the software development process, and how software is deployed.
Summary
The World Wide Web (WWW) was utilized to make data accessible to web surfers.
These energizing changes have been fuelled by numerous adjustments in software
technology, the software development process, and how software is sent. In spite
of the fact that "heterogeneous" is generally used to portray web software, we may
effectively neglect to see from numerous points of view it very well may be applied.
Truth be told, the equal term "assorted" is progressively broad and recognizable and
might be increasingly proper. Web software applications utilize assorted sorts of
equipment, they incorporate a differing assortment of kinds of usage dialects, they
are made out of software written in various dialects, and they are worked by
assortments of individuals with exceptionally different arrangements of aptitudes.
https://allaboutpaki.com/
Despite the fact that these adjustments in how web applications are constructed are
intriguing and interesting, one of the most exceptional parts of web software
applications is regarding the necessities they should fulfil. Web applications have
exceptionally high prerequisites for various quality attributes. A portion of these
quality attributes have been significant in other (generally moderately little)
fragments of the business, yet some of them are moderately new. This paper talks
about a portion of the novel specialized parts of building web software applications,
the interesting prerequisites of quality attributes, and how they can be
accomplished.
3. https://allaboutpaki.com/
Pros and cons
Pros
Web apps are developed with programming languages such as HTML and CSS, which are
well known among IT professionals.
Unlike native apps, a single web app is able to reach out to all devices. It’s programmed
to run on any operating system.
These apps run on the device’s own web browser through a simple URL.
They don’t need to be downloaded and installed from app stores like Google Play or
Apple’s App Store.
They may also open websites. This means that they don’t require to be updated in the
way common apps do.
The most important benefit you can draw off from it is its price. Web app development
is the cheaper kind of app development.
Web app’s development time is lower.
Centralized storage on the server means fewer security concerns about local storage
(which is important for sensitive information such as health care data)
Cons
The website must, of course, be programmed in a way it can be shown regardless of the
device’s operating system. If it’s not a responsive website, you could experience
problems when displaying it on iOS, Android, or Windows Phone.
You will have to spend the money you intended to save developing the application
in improving your website.
If your website undergoes any kind of issue, your application will be in trouble too.
Don’t assume that your web app will work perfectly if you don’t have a quality
corporate website.
An Internet connection will be an absolute must to run it.
It will also lose visibility as it will not be on display in the stores.
There will be some access restrictions as to certain hardware features of the device it’s
running on.
Problems with certain websites on certain browsers not looking quite right.
Concerns over the storage, licensing, and use of uploaded data.
4. https://allaboutpaki.com/
Quality attribute
Interoperability describes the ability of a service to communicate with other services
and allow other services to communicate with it. It measures how freely information
can be exchanged. Measures like programming language agnostic data formats, content
negotiation, backwards compatible APIs, etc. can support interoperability between
services.
Reliability reflects the ability of a service to operate correctly. Automation to enable
roll-backs and recovery can reduce the mean time between failures (MTBF).
Availability is the ability of a service to answer to requests / be accessible. Uptime can
be increased by adding fault-tolerance measures and resilience, e.g. through
redundancy.
Usability measures the quality of user experience (UX) a service provides. It can be
increased by having a UX focused development workflow. As an unavailable or slow
service is also not usable there is a strong dependency between usability and other
attributes.
Security has two major aspects: Confidentiality (access only granted to authorize users)
and authenticity (trust the provided information). Helpful techniques are found in the
area of cryptography, e.g. encryption and digital signatures. Additionally you should
implement secure processes like regularly invalidating or rotating credentials or
enforcing two factor authentication. Check how you are doing by executing regular
penetration tests.
Performance is a broad topic. In the context of services people often refer to response
time or latency as a performance measure. It can be achieved by choosing the right
algorithms and data structures for the problem and sizing the system according to the
load. Add automated performance or load tests to detect regressions.
Scalability describes the ability to deal with changes. When talking about scalability it is
important to define what changes the system is reacting to, e.g. an increased number of
users, new products offered in a shop, more requests coming in, or even more
developers joining the company. Scalability is most commonly achieved by decoupling
and separation of concerns in combination with choosing algorithms and data structures
that allow a performance increase by adding more resources.
5. https://allaboutpaki.com/
Extensibility represents the ability to add functionality to a component without
touching other components or parts of the system. Architectures that involve loose
coupling, communication standards and evolution friendly interfaces and schemas
promote extensibility.
Adaptability influences how easy it is to change the system if requirements have
changed. Similarly to extensibility this can be achieved by loose coupling, but also
through abstraction, e.g. putting a layer between your database and application so you
can exchange the database technology. Adaptability is also influenced by configurability.
Testability matters when it comes to building and automating tests of individual
components, interactions between components, as well as the system as a whole. In
addition to that it is also crucial to know how well these tests can detect errors.
Testability is especially hard in distributed systems or service oriented architectures, as
components are connected through an unreliable network, different versions of services
might exist, and there is no single entity that knows the internal state of all components.
Note as well that behaviour of dynamic environments involving auto-scaling and service
discovery might be hard to predict.
Auditability captures the ability to perform audits of the system. Audits might be
required for legal, security, or financial reasons, for example. Auditability is a tough goal
as it requires all services involved in a process to be auditable. Generally, having
immutable storage and versioning of events and data already contributes a great deal
towards an auditable system.
Observability expresses whether changes in a systemare reflected, if possible, in a
quantitative manner. Promoting a Dev. Ops culture can increase observability because
the team responsible for change is also responsible for operations, which greatly
benefits from rich metrics being available.
Operability characterizes the ease at which the systemcan be deployed and operated
during runtime. Besides observability, operations can be supported by automation.
Techniques like chaos engineering can put your operability to the test by introducing
errors on purpose.
Correctness: The correctness of a software system refers to Agreement of program code
with specifications. Independence of the actual application of the software system.
The correctness of a program becomes especially critical when it is embedded in a
complex software system.
Efficiency: ability of a software system to fulfil its purpose with the best possible
utilization of all necessary resources (time, storage, transmission channels, and
peripherals).
Portability: the ease with which a software systemcan be adapted to run on computers
other than the one for which it was designed. The portability of a software system
6. https://allaboutpaki.com/
depends on, Degree of hardware independence, Implementation language Extent of
exploitation of specialized systemfunctions Hardware properties Structuredness:
System-dependent elements are collected in easily interchangeable program
components.
Maintainability: Maintainability = suitability for debugging (localization and correction
of errors) and for modification and extension of functionality.
Learnability: Learnability of a software systemdepends on: The design of user
interfaces, the clarity and the simplicity of the user instructions (tutorial or user
manual).The user interface should present information as close to reality as possible and
permit efficient utilization of the software’s failures.
Modifiability determines how many common changes need to be made to the system
to make changes to each item. The ideal is the case where each change affects only one
element.
https://allaboutpaki.com/
Supportability is the ability of the systemto provide useful information for identifying
and solving problems. The main issues in ensuring supportability can be addressed with
the following means:
Accessibility in the sense considered here refers to the design of products, devices,
services, or environments so as to be usable by people with disabilities. The concept of
accessible design and practice of accessible development ensures both "direct access"
(i.e. unassisted) and "indirect access" meaning compatibility with a person's assistive
technology (for example, computer screen readers).
Compatibility The state of being compatible; in which two or more things are able to
exist or work together in combination without problems or conflict.
(Telecommunications) the capability of two or more items or components of equipment
or material to exist or function in the same systemor environment without mutual
interference. (Computing) the ability to execute a given program on different types of
computers without modification of the program or the computers. See backward
compatibility and forward compatibility. (Computing) the capability that allows the
substitution of one subsystem (storage facility), or of one functional unit (e.g.,
hardware, software), for the originally designated systemor functional unit in a
relatively transparent manner, without loss of information and without the introduction
of errors.
Accuracy is closeness of the measurements to a specific value, while precision is the
closeness of the measurements to each other. More commonly, it is a description of
systematic errors, a measure of statistical bias; low accuracy causes a difference
between a result and a "true" value. ISO calls this trueness.
7. https://allaboutpaki.com/
Extensibility is a software engineering and systems design principle that provides for
future growth. Extensibility is a measure of the ability to extend a systemand the level
of effort required to implement the extension. Extensions can be through the addition
of new functionality or through modification of existing functionality. The principle
provides for enhancements without impairing existing systemfunctions.
Portability in high-level computer programming is the usability of the same software in
different environments. The prerequirement for portability is the
generalized abstraction between the application logic and system interfaces. When
software with the same functionality is produced for several computing platforms,
portability is the key issue for development cost reduction.
Effectiveness is the capability of producing a desired result or the ability to produce
desired output. When something is deemed effective, it means it has an intended or
expected outcome, or produces a deep, vivid impression.
Durability is the ACID property which guarantees that transactions that have committed
will survive permanently. For example, if a flight booking reports that a seat has
successfully been booked, then the seat will remain booked even if the system crashes.
Resolvability is defined as the capacity of a systemfor adaptive evolution. Resolvability
is the ability of a population of organisms to not merely generate genetic diversity, but
to generate adaptive genetic diversity, and thereby evolve through natural selection.
Flexibility is used as an attribute of various types of systems. In the field
of engineering systems design, it refers to designs that can adapt when external changes
occur. Flexibility has been defined differently in many fields of engineering, architecture,
biology, economics, etc. In the context of engineering design one can define flexibility as
the ability of a systemto respond to potential internal or external changes affecting its
value delivery, in a timely and cost-effective manner. Thus, flexibility for an engineering
system is the ease with which the system can respond to uncertainty in a manner to
sustain or increase its value delivery. Uncertainty is a key element in the definition of
flexibility. Uncertainty can create both risks and opportunities in a system, and it is with
the existence of uncertainty that flexibility becomes valuable.
https://allaboutpaki.com/https://allaboutpaki.com/
Simplicity is the state or quality of being simple. Something easy to understand or
explain seems simple, in contrast to something complicated. Alternatively, as Herbert A.
Simon suggests, something is simple or complex depending on the way we choose to
describe it. In some uses, the label "simplicity" can imply beauty, purity, or clarity. In
other cases, the term may suggest a lack of nuance or complexity relative to what is
required.
Traceability is the capability to trace something. In some cases, it is interpreted as the
ability to verify the history, location, or application of an item by means of documented
8. https://allaboutpaki.com/
recorded identification. Other common definitions include the capability (and
implementation) of keeping track of a given set or type of information to a given degree,
or the ability to chronologically interrelate uniquely identifiable entities in a way that is
verifiable.
Usability can be described as the capacity of a systemto provide a condition for its
users to perform the tasks safely, effectively, and efficiently while enjoying the
experience. In software engineering, usability is the degree to which a software can be
used by specified consumers to achieve quantified objectives with effectiveness,
efficiency, and satisfaction in a quantified context of use.
Understanding is a psychological process related to an abstract or physical object, such
as a person, situation, or message whereby one is able to think about it and
use concepts to deal adequately with that object. Understanding is a relation between
the knower and an object of understanding. Understanding implies abilities and
dispositions with respect to an object of knowledge that are sufficient to support
intelligent behaviour.
Simplicity is the state or quality of being simple. Something easy to understand or
explain seems simple, in contrast to something complicated. Alternatively, as Herbert A.
Simon suggests, something is simple or complex depending on the way we choose to
describe it. In some uses, the label "simplicity" can imply beauty, purity, or clarity. In
other cases, the term may suggest a lack of nuance or complexity relative to what is
required.
Robustness is the ability of a computer systemto cope with errors during execution and
cope with erroneous input. Robustness can encompass many areas of computer science,
such as robust programming, robust machine learning, and Robust Security Network.
Formal techniques, such as fuzz testing, are essential to showing robustness since this
type of testing involves invalid or unexpected inputs. Alternatively, fault injection can be
used to test robustness. Various commercial products perform robustness testing of
software analysis.
Responsiveness as a concept of computer science refers to the specific ability of a
system or functional unit to complete assigned tasks within a given time. For example, it
would refer to the ability of an artificial intelligence systemto understand and carry out
its tasks in a timely fashion. It is one of the criteria under the principle
of robustness (from a v principle). The other three are observability, recoverability,
and task conformance.
Relevance is the concept of one topic being connected to another topic in a way that
makes it useful to consider the second topic when considering the first. The concept of
relevance is studied in many different fields, including cognitive sciences, logic,
and library and information science. Most fundamentally, however, it is studied
9. https://allaboutpaki.com/
in epistemology (the theory of knowledge). Different theories of knowledge have
different implications for what is considered relevant and these fundamental views have
implications for all other fields as well.
Predictability is the degree to which a correct prediction or forecast of
a system's state can be made either qualitatively or quantitatively.
Interchangeable parts are parts (components) thatare,forpractical purposes,identical.They
are made to specifications thatensure thattheyare sonearlyidentical thattheywill fitintoany
assemblyof the same type.One suchpart can freelyreplace another,withoutanycustom
fitting,suchas filing.Thisinterchangeabilityallowseasyassemblyof new devices,andeasier
repairof existing
https://allaboutpaki.com/
https://allaboutpaki.com/
https://allaboutpaki.com/