Course: # 605.703.
The Johns-Hopkins University
Montgomery County Campus
Lecture # 1 - September 7, 2004
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
– 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
• 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.
• 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
• 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
• 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
• Desperately needed if we are to progress in reuse
• NOT A SOLVED PROBLEM.
• 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
– 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
• What is my org‟s potential to enable reuse
in other organizations ?
• 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
• Questions ?
• See you next week.