| .: Technical Publications | »» SQI Home » Publications » Technical |
| Information |
|
This page provides access to all of the technical publications of the SQI.
The links to your left are to postscript/PDF documents. To view these documents you must have your Web browser setup to call a postscript viewer such as: Ghostview(WIN32, UNIX, MAC) Ghostscript(WIN32, UNIX, MAC) or have a postscript printer. or an Adobe Acrobat viewer such as: Acrobat (WIN32, UNIX, MAC) |
Software Quality - Prevention Versus Cure?
April 2003
R.Geoff Dromey
Abstract: In traditional engineering disciplines a preventative
approach is used to tackle defects and thereby produce quality products and
systems. A recent case study suggests that in software engineering a curative
approach to finding defects and producing quality software may be the most practical
way to proceed. Here, the argument for a curative approach to software quality
is challenged, and suggestions are made on how appropriate component-based quality
models, that contain both generic and domainspecific quality knowledge, may
be used to support a preventative approach to producing quality software products
and systems.
Making Requirements Defect Detection Repeatable
January 2003
X. Zheng, R.G. Dromey
Abstract: Given a set of functional requirements, if they
are subject to a repeatable requirements defect detection process by different
parties, the same set of defects should be detected. And, at the same time,
when a model we propose fails, we want to be able to detect failure and easily
correct the model. To make progress towards realizing these goals three things
are needed: (1) representations of requirements information that reveal or make
it much easier to “see” defects, (2) a clear formal characterization
of defects with respect to each representation, and (3) well-defined and independently
repeatable processes for first constructing then using each representation to
elicit the defects it reveals. The representations we choose must accurately
capture not only the behaviour expressed in the original individual functional
requirements, but equally importantly, the integrated behaviour of a set of
requirements - many defects only arise from the combined effect of more than
one functional requirement.
From Requirements To Design – Without Miracles
September 2002
R.G.Dromey
Abstract: Despite the advances in software engineering
since 1968, current methods for going from a set of functional requirements
to a design are not as direct, repeatable and constructive as we would like.
Progress with this fundamental problem is possible once we recognize that individual
functional requirements represent fragments of behaviour, while a design that
satisfies a set of functional requirements represents integrated behaviour.
This perspective admits the prospect of constructing a design out of its requirements.
A formal representation for individual functional requirements, called behavior
trees makes this possible. Behaviour trees of individual functional requirements
may be composed, one at a time, to create an integrated design behaviour tree.
From this problem domain representation it is then possible to transition directly
and systematically to a solution domain representation of the component architecture
of the system and the behaviour designs of the individual components that make
up the system – both are emergent properties.
On Expressing and Monitoring Behaviour in Contracts
September 2002
Z. Milosevic, R.G. Dromey,
Abstract: This paper addresses the problem of transforming
natural language descriptions of contracts into a form that is suitable for
automating various contract management functions. We investigate two complementary
methods that can be used to achieve this.
One method is suitable for the contract specification phase – to specify
expected behaviour of contracting parties so that they can satisfy policies
stated in a contract. This method also allows for checking aspects of contract
consistency as well as flexible integration of internal organisational policies
with the contract policies. Another method targets the contact run-time phase
– for monitoring behaviour of parties to the contract and other aspects
of contract performance. When combined, these two methods provide a basis to
support an increasing level of automation of many mundane contract activities,
while allowing humans to be involved in ultimate decision making.
GENES, JIGSAW PUZZLES AND SOFTWARE ENGINEERING
July 2002
R.G. Dromey,
Abstract: This paper discusses the use of a representation
called behaviour trees that allows significant reduction in the complexity of
the software design process. Functional requirements are first translated, one
at a time, into behaviour trees. The resulting set of composable requirements
behaviour trees may then be integrated one at a time to create a design behaviour
tree. A component architecture, and the component behaviour trees for each of
the components in the system, can then be systematically derived from the design
behaviour tree. This provides a design specification which can be directly used
to guide the detailed design and implementation of the system. This amounts
to building a system out of its functional requirements rather than the conventional
process of building a system that will satisfy its functional requirements.
The whole process relies on the observation, that like genes and jigsaw puzzles,
a set of functional requirements for a system, when represented as behaviour
trees contain enough information to allow their composition to realize a design.
This approach to software
design fits well as a front-end method for developing object-oriented and component-based
implementations.
GENETIC SOFTWARE ENGINEERING
April 2002
R.G. Dromey,
Abstract: Many software projects have large numbers of
functional requirements and constraints. The challenge is always how to use
this information systematically to create a software design that will satisfy
all of its requirements. Direct translation of individual requirements, each
to a component/state-based behavior-tree representation, allows us to reduce
the design process to a systematic, incremental, requirements integration process.
Individual requirements, in behavior-tree form, can be grafted, one at a time,
onto the behavior tree representing the evolving design. Once the design behavior
tree has been assembled, it can be used to derive the supporting component-based
software architecture, the design for each individual component and their interfaces.
The method provides constructive support for component-based development, objected-oriented
implementation, requirements traceability, and the creation of reusable software
components and systems. The method also provides an effective means for identifying
individual requirements defects and requirements integration defects.
SOFTWARE PRODUCT QUALITY: Theory, Model, and Practice
March 1998
R.G.Dromey
Abstract: Existing proposals for software product qua
lity have not been underpinned by the sort of empirical theory and supporting
models that are found in most scientific endeavours. The present proposal provides
a set of axioms and supporting software and quality models needed to construct
a comprehensive model for software product quality.
Re-engineering
Loops
February
1995
Si Pan, R.Geoff Dromey
Abstract: Loops with multiple-exits and flags detract from
the quality of imperative programs. They tend to make control-structures difficult
to understand and, at the same time, introduce the risk of non-termination and
other correctness problems. A systematic, generally applicable procedure, called
loop rationalization, which removes such features and simplifies loop structures
is presented. This method, which is founded on the principle of separation of
concerns, is based on strongest postcondition calculations and congruent equivalence
transformations. Not only does this method logically simplify loop structures;
it also detects a range of defects including a class of non-termination problems
and unreachable code.
Software
Quality Improvement using Formal Methods February 1995
Si Pan, R.Geoff Dromey
Using
Strongest Postconditions To Improve Software Quality
February 1995
Si Pan, R.Geoff Dromey
Abstract: The cost of developing and maintaining high quality
software remains at a premium. In this paper we introduce a practical approach
for enhancement of software quality, based on calculation of strongest postconditions
of program components. The method provides a powerful means for detecting and
removing by transformation various forms of redundancy and inconsistency in
programs. The feasibility of this approach depends upon calculations of strongest
postconditions for iterative constructs and assignments.
A
Formal Basis for Removing GOTO Statements
January 1995
Si Pan, R.Geoff Dromey
Abstract: Goto statements detract from the quality of imperative
programs. They tend to make control-structures difficult to understand and,
at the same time, introduce the risk of non-termination and other correctness
problems. A new, formal, generally applicable procedure, for removing all goto
statements from program structures is presented. This method, is based on formal
semantics and congruent equivalence transformations. Not only does the method
logically simplify program structures; it also detects a range of defects including
a class of non-termination problems, unreachable code and redundancy problems.
The method can also be used to eliminate recursion.
Applying
Formal Methods to Restructure Loops with Multiple Exits
January 1995
Si Pan, R.Geoff Dromey
Abstract: Loops with multiple-exits and flags detract from
the quality of imperative programs. They tend to make control structures difficult
to understand and, at the same time, introduce the risk of non-termination and
other correctness problems. A systematic, generally applicable procedure, called
loop rationalization which removes such features and simplifies loop structures
is presented. This method, which is founded on the principle of separation of
concerns is based on strongest postcondition calculations and congruent equivalence
transformations. Not only does this method logically simplify loop structures;
it also detects a range of defects including non-termination problems and unreachable
code.
A
Model for Software Product Quality
October 1994
R.G. Dromey
Abstract: A model for software product quality is defined.
It has been formulated by associating a set of quality carrying properties with
each of the structural forms that are used to define the statements and statement
components of a programming language. These quality-carrying properties are
in turn linked to the high level quality attributes of the International Standard
for Software Product Evaluation ISO-9126. The model supports building quality
into software, definition of language-specific coding standards, systematically
classifying quality defects, and the development of automated code auditors
for detecting quality defects in software.
Stepwise
Programming Derivation
1991
R.G.Dromey and D.Billington
Abstract: Our understanding of the program derivation process
has evolved to the point where it can be described in terms of a clearly defined
sequence of steps. In this paper, we will identify those steps and show how
they may be used to derive programs from formal
specifications. In describing the program derivation
process we will focus on two things, its broad structure, and some detail for
each of the principal steps. The suggestions made are practical and easily integrated
with conventional methodologies for handling larger problems. The detailed steps
described also provide the basis for the construction of a system for computer-assisted
program derivation from formal specifications.