Software Reuse - PowerPoint PPT Presentation

1 / 41
About This Presentation
Title:

Software Reuse

Description:

1 - the extent to which a software component can be used (with or without adaptation) ... Ada Reusability Guidelines and categorise under 4 properties: Adaptability, ... – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 42
Provided by: hemswellL
Category:

less

Transcript and Presenter's Notes

Title: Software Reuse


1
Software Reuse
  • Cornelia Boldyreff
  • Department of Computing and Informatics

2
Overview
  • Software Reuse
  • Metrics
  • Operationalizing Reusability Guidelines
  • More Flexible Support for Reuse in OSS
  • Future Directions

3
Customer Requirements
RA
Spec/n
Maintenance
BIN
Design
Testing
Impl/n
4
Customer Requirements
RA
Spec/n
Maintenance
Design
Testing
Impl/n
5
Two 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.

7
Examples 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.

8
SPSS
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.
9
Indirect 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.
11
Why 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??

12
Software 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.

13
Operationalising 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.

14
Research 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.

15
Future 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?

16
Reuse 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

17
Background
  • 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.

18
Key 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

19
The 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)
21
Current 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.

22
Inaugural 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)

23
Software 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)

24
Software 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)!

25
Software 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.

26
New 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

27
Future 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

28
Caida/Science Photo Library Internet Traffic
29
Software 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!

30
Software 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)
32
Source UK Steel Association
33
(No Transcript)
34
(No Transcript)
35
Software 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!

36
The closed Loop Concept of Systems Engineering
The closed Loop Concept of System Engineering
From Alexander W. Boldyreff, 1954
37
ECMA Reference Model for Software Engineering
Environments (ECMA 1993) (taken from
Sommervilles slides)
38
Work 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

39
SEE of the future?!
40
Thank you
  • Dedicated teachers, inspiring and brilliant
    colleagues, exceptional students
  • Supportive family and friends and
  • Members of my research group, past and present.

41
Questions
Write a Comment
User Comments (0)
About PowerShow.com