Title: Software Reuse
1Software Reuse
- Cornelia Boldyreff
- Department of Computing and Informatics
2Overview
- Software Reuse
- Metrics
- Operationalizing Reusability Guidelines
- More Flexible Support for Reuse in OSS
- Future Directions
3Customer Requirements
RA
Spec/n
Maintenance
BIN
Design
Testing
Impl/n
4Customer Requirements
RA
Spec/n
Maintenance
Design
Testing
Impl/n
5Two possible definitions of Software Reusability
- 1 - the extent to which a software component can
be used (with or without adaptation) - in multiple problem solutions
- 2 - the extent to which a software component can
be used (with or without adaptation) - in a problem solution other than the one for
which it was originally developed. - where a software component refers to any part of
a software lifecycle product, e.g. Z schema, data
flow diagram, a code module, etc.
6- Definition 1
- - suggests planned effort
- - is more productivity oriented
- - recognises the need to emphasise reuse as meta
activity in development - Definition 2
- - implies reuse is accidental and ad hoc
- - is a more literal definition
- - characterises past achievements
- may lead people to think we already do that
- My view is that software reuse is simply a
metaphor for intellectual progress in software
engineering.
7Examples of Direct Reuse of Software Components
- Published algorithms
- OO Design Patterns from the Gang of Four
- Architectural Frameworks
- Standard programming languages
- Libraries of programs, modules, functions,
subroutines - Standard packages
- COTS
- Web Services
- This is also simply called component reuse.
8SPSS
grep
fork()
LDX 4 BRN J1
if xgt0 then ...
Sqrt()
1001001
Binary code
Assembler Source Code Fns.
Libraries Programs Packages
levels of abstraction
Each level of abstraction supports a higher level
of reuse.
9Indirect Reuse of Software(also called
Generative Reuse)
This can involve the use of books on software
design principles and design theory as well as
case studies of specific software. E.g. Books on
compiler construction This can also involve the
use of supporting software tools which generate
software, e.g. lex - lexical analyser generator
and yacc - compiler generator (which generates a
syntax analyser and associated actions).
Language description Compiler Generator
Compiler
10- Most software engineers implicitly reuse existing
software components and concepts - but how can we
make reuse within the development process more
explicit?
The Reuse Process
Software Reuse Support/Admin
Development with Reuse
Development for Reuse
Building up the reuse resources is a necessary
1st step, only then can reuse become an explicit
part of the SLC.
11Why reuse software?
- Quality - we can produce better software
- Productivity - we can produce software faster
- Progress - we can tackle bigger problems by
building on known solutions - So how can we measure reusability??
12Software Metrics
- SE is the application of a systematic,
disciplined, quantifiable approach to the
development, operation and maintenance of
software (SCC, Gibbs) - Early metrics focused on software complexity
(McCabe, Halstead) - product metric and software
cost estimation (Boehm) - process metric
- The advent of the OO paradigm has led to specific
OO metrics, both generic and language-specific. - Developments have led to the use of metrics in
software quality assurance (the -abilities) and
to inject more tractability and visibility into
the SLC, thus improving control and management.
13Operationalising Reusability Guidelines
- Analysis existing Ada Reusability Guidelines and
categorise under 4 properties Adaptability,
Comprehensibility, Independence and Robustness. - Identify corresponding metrics for each property
(G-Q-M) and weighting strategy. - Validate through application in a case study of
Ada components.
14Research to apply this in the OSS context
- Mining OSS projects to examine their directory
structures and dependences between source code
files in the directories - Hypothesis is that such analysis will enable us
to detect actual and potentially reusable OSS
components - Why directories? In the absence of designs, we
assume these reflect the hierarchical
decomposition of the system.
15Future Directions
- Building support for reuse in the OSS context is
difficult no central repository, nor management
and support. - Even company based reuse programmes can suffer
from lack of support and maintenance. - Why not try for a google like service based on
consolidated analysis of large OSS repositories,
e.g. SourceForge, Savannah, FreshMeat, etc?
16Reuse and Evolution
- Learning from the Past
- Whats already been done
- What we know/How we did it
- Laying the foundations
- Codification of experience
- Agreement on accepted practice
- Abstraction of theory
- Payback and Feedback in the Future
- Repeating what we did before more efficiently
- Tackling new situations
- Refining and extending whats known
17Background
- Software Engineering is a discipline concerned
with the development of software systems. - Its goal is continuous improvement of
- software technologies and products,
- software development processes and methods, and
- Software Engineering as a profession.
- It aims effectively to improve both software
development theory and practice.
18Key themes
- The evolution of Software Engineering
- its origin in the Software Crisis
- its emergence as an academic discipline
- its role as an enabler of society as we know it
- its future prospects.
- My underlying research in Software Reuse,
Maintenance, and Software Evolution and work on
Software Engineering Environments
19The Software Crisis
- Over 35 years ago, in Autumn 1968, the Software
Crisis was acknowledged, and the establishment
of Software Engineering was proposed as a means
of solving the Software Crisis. - Although software engineers can now solve the
problems that gave rise to the original crisis,
the software industry suffers chronically from
software crises as it develops new ways of
working, new technologies, and innovative
software applications of increasing complexity
and scale. - In some consumer products, the software component
is doubling yearly. The web-enabled fridge is
here!
20(No Transcript)
21Current Situation
- Programming has been an established profession
undergoing refinement for more than 50 years. The
British Computer Society, the UK professional
organisation for Computing, celebrates its 50th
anniversary this coming year. - Academics have made progress in establishing
Software Engineering as an academic discipline
and in instituting software engineering degrees. - Industrially led research has made progress
towards improved models, methods, and tools for
software engineering.
22Inaugural Meeting of the BCS Lincolnshire
Sub-branch
- 30 May EEMTEC Building 630 p.m. for 7 p.m.
- Debate Debate This house holds that Computing
is currently at best a semi-profession. - This is taken by adapting Beynon-Davis'
observation that "information systems is
currently at best a semi-profession", The
Computer Bulletin, September 1999, as quoted in
Frank Bott's book Professional Issues in
InformationTechnology. - Speakers Philip Levine, MBCS, CITP (Proposer)
and Adrian Wheal, Ceng, FBCS, CITP (Opposer)
23Software Engineering Textbooks
- Kernighan and Plauger's Software Tools teaches
how to write good programs that make good tools,
i.e. programs which have proved valuable in the
production of other programs (1976) - Sommerville's Software Engineering (1982),
currently in its 7th edition - McDermid's Software Engineer's Reference Book
(1991)
24Software Engineering is Applied Computer Science
- Engineering is a human endeavour and thus it is
subject to error. Petroski, TO ENGINEER IS
HUMAN The Role of Failure in Successful Design,
1982 - There is no silver bullet (Brookes)!
- Software Engineering has an empirical basis - we
always need applied research using industry as
laboratory (Potts)!
25Software in Society
- There is hardly any aspect of human life that is
not supported in some way by software systems
the Internet, telecommunications, commerce,
government, entertainment, transportation,
education, health care, the home and increasingly
the individual. - As our dependence of software grows and our
software systems become more interconnected, the
challenges of developing, i.e. modelling,
maintaining and evolving, these systems become
greater.
26New Approaches
- Community based Open Source Software development
- Increased globalisation of the software industry
- More agile approaches encouraging wider user
participation in the software development - New forms of distributed development
27Future Prospects
- Self-adapting software systems are becoming a
reality, e.g. self-healing networks. - The Internet and its development into the Grid
provides us a world computer. This is an
expanding network of all computers and
computational devices interconnected. - Intelligent cities, buildings, homes, wearable
computers are now becoming more common leading to
pervasive systems. - Self-assembling dynamically reconfigurable
systems where the components, typically service
based, are made self-aware through software. - Trade-offs between moving data or computation
through networks
28Caida/Science Photo Library Internet Traffic
29Software Complexity
- One program one computer software failures are
discrete events and these are essentially closed
systems. - N programs N computers each program breaks
down in different ways depending in part on
conditions under which it has been run. - Large distributed software systems consist of
many interconnected programs and data sources
running over networks of computers. These systems
are essentially open systems. They dynamically
change as new services and computer are added or
removed. - Modelling and managing such complexity is a key
challenge!
30Software Reuse
- Software reuse has been inspired by Alexander's
work on design patterns in architecture. - By studying existing software systems within a
particular domain, common design principles and
software design concepts can be abstracted for
reuse in the development of future systems. - Software reuse is a metaphor for intellectual
progress in Software Engineering.
31(No Transcript)
32Source UK Steel Association
33(No Transcript)
34(No Transcript)
35Software Evolution
- Software is created out of nothing but pure
thought but software developers draw on the huge
wealth of existing software principles, possibly
embodied in tools, and concepts. - Every software development starts with a blank
document and its subsequent maintenance. - Once created evolutionary software has the
potential to change in its environment and it
must be evolved in response to changes within its
environment if it is to continue to be useful. - Component/Service based systems exhibit
multi-dimensional evolution. Supporting change
awareness in such systems as they undergo
development is an exciting research challenge!
36The closed Loop Concept of Systems Engineering
The closed Loop Concept of System Engineering
From Alexander W. Boldyreff, 1954
37ECMA Reference Model for Software Engineering
Environments (ECMA 1993) (taken from
Sommervilles slides)
38Work on SEEs
- IST IPSE, ISTAR, mid 80s (Unix based)
- ESPRIT Practitioner Project, late 80s (Unix)
- ESPRIT AMES Project, mid 90s (early Web)
- EPSRC CARD Project, late 90s (closed n/w)
- Framework 5 GENESIS Project and EPSRC CoDEEDS
project, 2000s (Web service based OSS) - Current research on Eclipse based awareness
support (OSS) - Base Case Models, Methods, Tools and Evaluation
through usage - Inductive Step Theoretical Improvement based on
feedback and advances in Technology allows
progression from n to n1
39SEE of the future?!
40Thank you
- Dedicated teachers, inspiring and brilliant
colleagues, exceptional students - Supportive family and friends and
- Members of my research group, past and present.
41Questions