Software: Its Nature and Qualities
Software: Its Nature and Qualities
Ch.2 1
Outline
• Software engineering (SE) is an intellectual
activity and thus human-intensive
• Software is built to meet a certain functional
goal and satisfy certain qualities
• Software processes also must meet certain
qualities
• Software qualities are sometimes referred to
as “ilities”
Ch.2 2
Software product
• Different from traditional types of
products
– intangible
• difficult to describe and evaluate
– malleable
– human intensive
• involves only trivial “manufacturing”
process
Ch.2 3
Classification of sw qualities
"ilities"
• Internal vs. external
– External visible to users
– Internal concern developers
• Product vs. process
– Our goal is to develop software products
– The process is how we do it
• Internal qualities affect external qualities
• Process quality affects product quality
Ch.2 4
Correctness
• Software is correct if it satisfies the functional
requirements specifications
– assuming that specification exists!
• If specifications are formal, since programs are
formal objects, correctness can be defined
formally
– It can be proven as a theorem or disproved by
counterexamples (testing)
Ch.2 5
The limits of correctness
• It is an absolute (yes/no) quality
– there is no concept of “degree of
correctness”
– there is no concept of severity of
deviation
• What if specifications are wrong?
– (e.g., they derive from incorrect
requirements or errors in domain
knowledge)
Ch.2 6
Reliability
• Reliability
– informally, user can rely on it
– can be defined mathematically as
“probability of absence of failures for a
certain time period”
– if specs are correct, all correct software
is reliable, but not vice-versa (in
practice, however, specs can be
incorrect …)
Ch.2 7
Idealized situation
• Requirements are correct
Reliability
Correctness
Ch.2 8
Robustness
• Robustness
– software behaves “reasonably”
even in unforeseen
circumstances (e.g., incorrect
input, hardware failure)
Ch.2 9
Performance
• Efficient use of resources
– memory, processing time,
communication
• Can be verified
• complexity analysis
• performance evaluation (on a model, via
simulation)
• Performance can affect scalability
• a solution that works on a small local
network may not work on a large intranet
Ch.2 10
Usability
• Expected users find the system easy
to use
• Other term: user-friendliness
• Rather subjective, difficult to
evaluate
• Affected mostly by user interface
• e.g., visual vs. textual
Ch.2 11
Verifiability
• How easy it is to verify properties
– mostly an internal quality
– can be external as well (e.g., security
critical application)
Ch.2 12
Maintainability
• Maintainability: ease of maintenance
• Maintenance: changes after release
• Maintenance costs exceed 60% of total cost
of software
• Three main categories of maintenance
– corrective: removing residual errors (20%)
– adaptive: adjusting to environment changes
(20%)
– perfective: quality improvements (>50%)
Ch.2 13
Maintainability
• Can be decomposed as
– Repairability
• ability to correct defects in reasonable
time
– Evolvability
• ability to adapt sw to environment
changes and to improve it in reasonable
time
Ch.2 14
Reusability
• Existing product (or components)
used (with minor modifications) to
build another product
– (Similar to evolvability)
• Also applies to process
• Reuse of standard parts measure
of maturity of the field
Ch.2 15
Portability
• Software can run on different hw
platforms or sw environments
• Remains relevant as new platforms
and environments are introduced
(e.g. digital assistants)
• Relevant when downloading
software in a heterogeneous
network environment
Ch.2 16
Understandability
• Ease of understanding software
• Program modification requires
program understanding
Ch.2 17
Interoperability
• Ability of a system to coexist and
cooperate with other systems
– e.g., word processor and spreadsheet
Ch.2 18
Typical process qualities
• Productivity
– denotes its efficiency and performance
• Timeliness
– ability to deliver a product on time
• Visibility
– all of its steps and current status are
documented clearly
Ch.2 19
Timeliness: issues
• Often the development process
does not follow the evolution of
user requirements
• A mismatch occurs between user
requirements and status of the
product
Ch.2 20
Timeliness: a visual
description of the mismatch
Function
User
needs
Actual
system
capabilities
t2 Time
t0 t1 t3 t4
Ch.2 21
Application-specific qualities
• E.g., information systems
– Data integrity
– Security
– Data availability
– Transaction performance.
Ch.2 22
Quality measurement
• Many qualities are subjective
• No standard metrics defined for
most qualities
Ch.2 23