Software Reuse

Document Sample
Software Reuse Powered By Docstoc
					     Software Reuse

      Course: # 605.703.
 The Johns-Hopkins University
 Montgomery County Campus
           Fall 2000
Lecture # 1 - September 7, 2004
       Contact Information
Thomas Pole
571 226 1790 (day)
   Class Requirements (1 of 3)
• Text: “Software Reuse”, by Jacobson, Griss and
  Jonsson, ISBN 0-20-192476-5
• Development Platform: PC running a 32 bit
  Windows platform, Win98, NT 4.0 or Win 2000
• An IDE (Integrated Development Environment)
  capable of supporting
   – Component development (e.g. COM, JavaBeans,
     CORBA, .NET assemblies)
   – C++, Java or Visual Basic development
   – Visual Studio 6.0 or .NET strongly suggested
      • (if you want debugging help from me)
   Class Requirements (2 of 3)
• You will need to understand before you complete
  this course:
   –   Traditional Software Development Life Cycle process.
   –   System Requirements analysis
   –   System design
   –   Component Development
   –   Component Integration
   –   Domain definition
   –   Domain analysis
   –   Component Based Software Engineering
    Class Requirements (3 of 3)
• You will need to be able to do before you
  complete this course
   – Generic Application Design
   – Component Design
   – Component Implementation
      • Language of your choice from options listed earlier.
   – Component Integration
   – Requirements and/or design traceability.
   – Discuss and write about (in clear concise English) the
     issues and methods in Reuse
       Software Reuse: Definition
• Precise definitions have not only evolved, they have
  propagated. The more definitions you have, the less
  meaning in the term „Reuse‟.
• Good definitions exist for: Reusable Asset, Leveraged
  Reuse, Systematic Reuse
• Bad definitions exist for: „Software Reuse‟ itself
   – Contradictory, inexact, some published definitions are almost
• We will define these terms in this course, for this course.
   – Other texts, classes, and organizations will define them somewhat
     differently, but in this class we‟ll have specific definitions we can
     Software Reuse Definition
• Software Reuse is a method of increasing the
  efficiency of developing new software, by
  reusing existing software assets on a new project,
  that were created outside of and usually prior to
  that new project.
   – More details later.
• A software asset is any work product created in
  the normal software development life cycle.
        Major Trends in Reuse
• As we cover the rest of tonight‟s letter, think
  about where you and your company fit in.
• SW represents knowledge management of
   – SW implementation knowledge
   – Problem solving knowledge
   – Business and Engineering Domain knowledge.
• Therefore, reuse of SW requires knowledge
  management skills.
          Defining Knowledge
• Managing what an organization, its staff, its
  customers, and its user base know about:
   – The business domain that organization participated in.
   – The products that organization creates.
   – The engineering domains the organization employs to
     perform its tasks and reach its goals.
   – The organization itself.
            More Definitions
• Reuse - When any product (or by product) of a
  software development effort which occurred
  before, or independently of a second separate
  development effort, is also used in that second
  development effort.
• Reuse potential - Is the commonality stable
  enough and the predictable variability great
  enough to support the expense of a reuse driven
        Still More Definitions
• Software Module - source and object code reuse.
• DIAE Component (or simply Component) –
  Dynamically Integrable. Autonomously
  Executable software module.
• Framework or Architecture Based Reuse – A
  generic architectural captures the commonality,
  swappable individual components represent the
  variability of a framework for building
  applications from a software framework.
       State of: Modules and
• Modules: Java applets, classes, Java Beans
  etc. C++ libraries, language or application
  specific libraries.
• Components: COM component, CORBA
  components, Web Services.
         State of: Reuse Tools
• A marketplace sadly in great disarray.
• Oversold by the marketers, similar to the
  Artificial Intelligence Winter syndrome of the
  mid 1990‟s.
• Desperately needed if we are to progress in reuse
  process maturity.
• E.g. component collections, library/archive
  mechanisms, process support tools, training.
     State of: Reuse Training
• Fallen on bad times.
• Replaced with some success by technology
  specific training:
  – VB/COM/COM+ training
  – CORBA training
  – framework SDK training
• Reuse process and systematic reuse
  training almost non-existent.
    Reuse Potential Self Exam
• To ask yourself:
• What is my potential to reuse software ?
• What is my potential to enable reuse ?
• What is my org‟s potential to reuse?
• What is my org‟s potential for systematic
  reuse ?
• What is my org‟s potential to enable reuse
  in other organizations ?
       Reading Assignments
• See Chapters listed in Schedule - read
  these chapters PRIOR to the lectures.
• No assignment this week other than too get
  your work station/PC set up with a
  recommended Integrated Development
  Environment (IDE)
• Questions ?
• See you next week.

Shared By: