This document discusses the differences and similarities between reusability and extensibility. Reusability refers to using existing assets like code, components, and designs within software development. Extensibility considers future growth when implementing a system. Both aim to minimize changes to existing functions. The document also covers methodologies like CRC (Class Responsibility Collaborator), OOSD (Object Oriented Structured Design), and OORASS (Object Oriented Role Analysis, Synthesis and Structuring) that support reusability and extensibility through practices like modular design.
2. CONTENTS:
The Differences between Reusability and Extensibility
as follows:
1. Definitions
2. Frameworks
3. UML
Similarities
Methodologies
3. WHAT IS REUSABILITY?
Reusability is the use of existing assets in some form
within the software product development process.
Assets are products and by products of the software
development life cycle and include code, software
components, test suites, designs and documentation. A
chunk of code is regularly organized using modules or
namespaces into layers. Objects and software
components offer a more advanced form of reusability.
4. WHAT IS EXTENSIBILITY?
Extensibility is a system design principle where the
implementation takes future growth into consideration.
It is a systemic measure of the ability to extend a
system and the level of effort required to implement
the extension. Extensions can be through the addition
of new functionality or through modification of existing
functionality. The central theme is to provide for
change typically enhancements while minimizing
impact to existing system functions.
5. REUSABILITY
Reusability should be increased where possible
Components should be designed to work on different
context.
Generalize design as much as possible :
Use Frameworks, Patterns, and UML Collaborations.
Design the system to contain hooks .
Keep the design as simple as possible.
6. REUSE ANALYSIS, DESIGN, AND CODE
Reuse existing artifacts when possible, to take
advantage of existing investment.
Use Frameworks, Patterns, and UML Collaborations.
7. SOFTWARE FRAMEWORK
Represented by its code. , a Framework is
A set of classes, abstract classes and interfaces.
A set of behaviors, spread over these classes.
An incomplete application for a family of products.
A set of hooks, where subclasses can insert their
specialized behavior.
The expectations placed upon the subclasses.
A logic decomposition of a problem
8. FRAMEWORK GOALS
Reuse: code, design, domain analysis, and
documentation.
Simplify software development.
Reduce code writing.
Allow inexperienced designers and programmers to
develop good software.
Extract the knowledge of experimented designers
and programmers
9. REUSABILITY OF FRAMEWORK
Reuse of framework components improves
developer productivity, as well as software
performance, reliability, and interoperability.
The stable interfaces define generic components that
can be extended to create new applications.
10. EXTENSIBILITY OF FRAMEWORKS
A framework enhances extensibility by providing
explicit hook methods for planned variability.
Extensibility is essential to ensure rapid
customization of new application features.
11. REUSABILITY IN UML
We investigate reusability definition, assessment, and
analysis for the unified modeling language (UML),
focusing on using UML viaa tool prior to the
development of software(code). Thus, this work
concentrates on reusing a “design model” and
monitoring this reuse as the model is
transitionedintosoftware.
12. EXTENSIBILITY IN UML
UML extensibility features are simple way to store
additional information in models
Infact , they have a significant semantic impact in
expressive power of UML by allowing modelers to
extend UML with new modeling concepts.
UML tools match domain components and
frameworks .These tools used for rapid development
using reusable assets .
13. SIMILARITIES
Extensibility and reusability have many emphasized properties in
common, including low coupling, modularity and high cohesion.
Software reusability is boosted by extensibility and refers to
software elements’ ability to construct for many different software
systems, which is motivated by the observation of software systems
often sharing common elements. Reusability together with
extensibility allows a technology to be transferred to another project
with less development and maintenance time, as well as enhanced
reliability and consistency
17. How To Create CRCs ?
Find classes.
Find responsibilities.
Define collaborators.
Move the cards around.
18.
19. OOSD (Object Oriented Structured Design)
“Goal of OOSD is to provide a single architectural
design notation that can support every software
design."
20. Properties
OOSD notation is neutral.
Designers can develop and use their own design and
design metrics within the framework of OOSD.
OOSD supports a wide range of design philosophies.
21.
22. OORASS (Object Oriented Role Analysis,
Synthesis and Structuring)
“OORASS is an analysis and design method which
emphasizes the role played by objects in the system."
23. Goals
Total lifecycle support – Support For Lifecycle of the
software.
Integrated description – Includes Formal Or Informal
Description Of Everything.
Separation of concerns – Programs Should be
Understandable in parts.
Reuse – Should Implement Reusability on every asset
of the product.