SOFTWARE ISSUES: RISKS AND
LIABILITIES
J.M. Kizza, Ethical and Social Issues in the
Information Age, Texts in Computer Science, 157
DEFINITIONS…
Relationship between software producers and users made
up of: user expectations and developer limits
For a healthy relationship all the following must be
agreed on:
1. Standard
2. Reliability
3. Security
4. Safety
5. Quality
2
DEFINITIONS…
(1) Standards – universally accepted level of confidence
Standards depend on:
Development testing (series of random tests)
Verification and Validation(static formal mathematical techniques
(2) Reliability – Software reliability - is the probability that
the software does not encounter an input sequence
resulting into failure.
A software product, therefore, is reliable if it can continue to
function on numerous unpredictable input sequences
Ethical and Social...J.M.Kizza 3
DEFINITIONS…
(3) security-
more security attacks on systems through software “holes”
than hardware (piracy, deletion, and alteration of
programs and data)
According to Neumann
improper encapsulation, inheritance of unnecessary
privileges, and inadequate enforcement of polymorphism
are the most common sources of software security flaws.
A computer system software can be protected from
undetected modification through
strong and sound design principles
enforcement of proper encapsulation
separation of all privileges, and ethical education of
system developers
users about security issues
Ethical and Social...J.M.Kizza 4
DEFINITIONS…
(4) Safety – the safety of a software product
means the absence of a likelihood of an
accident, a hazard, or a risk
A number of life critical systems depend on software,
therefore, software safety is important.
good and safe software depends on
good programming practice, which includes control techniques,
application of various types of safety, analysis during the
development cycle, and evaluation of the effectiveness of these
techniques.
Ethical and Social...J.M.Kizza 5
DEFINITIONS…
(5) Quality- a software product has quality if it
maintains a high degree of excellence in standards,
security, safety and dependability.
Apply quality improvements techniques (total quality
management (TQM).
A TQM technique that tries to improve software quality
through a software development process known as the
software quality function development (SQFD)
focus on user specification in this early phase leads to fewer
design changes and reduces transfer errors across design
phases.
Ethical and Social...J.M.Kizza 6
QUALITY OF SERVICE
For a software product, quality of service (QoS)
means providing consistent, predictable service delivery that will
satisfy customer application requirements.
Example,
For Internet, QoS would mean that the network elements like
routers and hosts expect a high level of assurance that its traffic
and service requirements can be satisfied.
This requirement and expectations are important because the
working and the architecture of the Internet are based on “dumb”
network concept, which at its simplest involves two smart end
routers, one transmitting and one receiving and no intelligence in
between. Then datagrams with source and destination addresses
traverse a network of routers independently as they move from the
sender to the receiver.
IP provides only an addressing mechanism and nothing else. It
provides no guarantees of the delivery of any independent
datagram in the network. So QoS is needed in network protocols.
CAUSES OF SOFTWARE FAILURES
There are factors that contribute to software
failures:
Human factors (page 208/209)
Memory lapses and attentional failures: For example,
someone was supposed to have removed or added a line
of code, tested, or verified but did not because of simple
forgetfulness.
Rush to finish: The result of pressure, most often from
management, to get the product on the market either to
cut development costs or to meet a client deadline can
cause problems.
Overconfidence and use of nonstandard or untested
algorithms: Before algorithms are fully tested by peers,
they are put into the product line because they seem to
have worked on a few test runs.
Ethical and Social...J.M.Kizza 8
Malice: Software developers, like any other professionals,
have malicious people in their ranks. Bugs, viruses, and
worms have been known to be embedded and downloaded in
software as is the case with Trojan horse software, which
boots itself at a timed location.
Complacency: When either an individual or a software
producer has significant experience in software
development, it is easy to overlook certain testing and other
error control measures in those parts of software that were
tested previously in a similar or related product, forgetting
that no one software product can conform to all requirements in
all environments.
Ethical and Social...J.M.Kizza 9
Nature of software
Complexity
Unlike hardwired programming in which it easy to
exhaust the possible outcomes on a given set of input
sequences, in software programming a similar
program may present billions of possible outcomes
on the same input sequence.
Difficult testing
There will never be a complete set of test programs to
check software exhaustively for all bugs for a given
input sequence.
Ethical and Social...J.M.Kizza 10
Ease of programming
The fact that software programming is easy to learn
encourages many people with little formal training and
education in the field to start developing programs, but
many are not knowledgeable about good programming
practices or able to check for errors.
Misunderstanding of basic design specifications:
This affects the subsequent design phases including
coding, documenting, and testing
Ethical and Social...J.M.Kizza 11