Software
Nature & Qualities
Himadri Barman
Centre for Management Studies, Dibrugarh University
Reference:
Ghezzi Carlo, Jajayeri Mehdi, Mandrioli Dino, Fundamentals of Software Engineering, c1991 Prentice-Hall Inc.
S/W Development – An Engineering Activity
How it differs?
Malleable – Modify the product itself – as
opposed to its design – rather easily
Software creation is human intensive: it requires
mostly engineering rather than manufacturing.
Here manufacturing is just the trivial process of
duplication
The s/w production process deals with design & implementation,
rather than manufacturing
Classification of S/W Qualities
Two different approaches:
9 External v/s Internal
9 Product v/s Process
The external qualities are visible to the users of the system; the
internal qualities are those that concern the developers of the system
The internal quality of reliability is necessary for achieving the
external quality of reliability – Distinction not sharp
We use a process or a set of processes to produce the s/w product.
Both are inter-related. Process quality enhances product reliability.
Configuration Management
Part of the s/w production process that is concerned
with maintaining and controlling the relationship
between all the related pieces of the various
versions of the product
We select a set of qualities
called representative qualities to
determine and assure the
quality of a software product.
What are these?
Correctness , Reliability & Robustness
Process Product Internal External
Reliability
• Satisfies/behaves according
Robustness to the specifications
•A mathematical property
Correctness
establishing an absolute
quantity
• An equivalence relation
between the product and its
specifications
Ideal Case
Performance
9Equated with efficiency Process
Product
Internal
User Friendliness External
9 Subjective – differs in different systems, for e.g.,
in an embedded system, user friendliness is
reflected in the ease with which the systems can
be configured and adapted to the h/w
environment
Verifiability
9 If its properties can be verified easily Process
Product
Reusability Internal
External
9 Characterizes maturity
Understandability
9 Characterizes user friendliness (external view
point)
Productivity
9Measures the efficiency of the process Process
Product
Timeliness Internal
External
9 Ability to deliver a product on time
Visibility
9 Glasnost (transparency or openness) – all steps
and its current status are documented clearly
Process
Product
Maintainability
Internal
External
9 S/W maintenance is divided into three categories
•Corrective – fixing bugs
•Adaptive
sources of change
•Perceptive
adjusting the application to changes in the environment
involves changing the s/w to improve some of its qualities – add
new functions, make it easier to use, etc.
Maintainability has two measurable dimensions
Reparability – if a s/w system allows the correction of
its defects with a limited amount of work
Evolvability – version releases
Process
Product
Portability
Internal
External
9 s/w is portable if it can run in different
environments (hardware platforms) or different
O/S s
9 o/s provides portability across h/w platforms
Interoperability
9 the ability of a system to coexist and cooperate
with other systems
How to achieve?
• Correctness
Experimental Approach Analytical Approach
(testing) (formal verification)
- using HLL
- using standard algorithms
- using libraries of standard modules
• Reliability
- extensive testing
• Robustness
- coding taking into consideration all possible errors
- extensive testing
How to achieve? (Contd…)
• Performance
three approaches
- measurement
- analysis
- simulation
• User friendliness
- standardization of the human interface
• Portability
- use techniques that allow the s/w to determine the
capability of the h/w and adapt to them
How to achieve? (Contd…)
• Repairability
- modular architecture
- use of proper tools
• Evolvability
- use of proper tools
• Reusability
- use of proper tools
• Verifiability (Understandability)
- modular design
- disciplined coding practices
- use of an appropriate programming language
How to achieve? (Contd…)
• Interoperability
- standardization of Interface
• Productivity
- work to plan
- leaving scope for contingencies
• Timeliness
- incremental delivery of the product (must be
combined with other software qualities)
• Visibility
- process steps be documented
- current status of intermediate products, such as
requirements specifications & design specifications be
maintained accurately