Software Reuse in Engineering Explained
Software Reuse in Engineering Explained
References
Definition
In software engineering, software reuse is the process of creating
software systems from existing software components rather than
building from scratch. These components can include:
Source code
Libraries
Frameworks
Designs
Documentation
Requirements
Test cases
1
Aspect Description Examples
development component-level
2
Here’s a well-organized overview of the levels of software reuse, often
referred to as the reuse hierarchy in software engineering:
Notes:
· Lower levels (function, object) offer more flexibility but less impact on
overall productivity.
3
Benefits of software reuse
Key Benefits of Software Reuse
Benefit Description
Reduced Development Minimizes coding and design work by reusing
Effort existing components.
Lower Development Less time, labor, and resources lead to
Costs significant cost savings.
Reused components are proven in previous
Higher Reliability
systems, reducing bugs and failures.
Speeds up delivery by avoiding duplicate
Faster Time-to-Market
development efforts.
Consistency and Ensures uniform architecture, design, and user
Standardization experience across applications.
Using well-tested components lowers the risk
Reduced Process Risk
of project delays or failures.
Reused components often follow industry or
Standards Compliance
organizational standards.
Problem Description
Creating and Maintaining Requires significant effort and resources
Component Libraries to build and manage reusable assets.
Finding and Understanding Difficulty locating suitable components
Reusable Components and understanding their functionality.
Challenges in modifying components to fit
Adapting Components
new requirements or environments.
Increased Maintenance Costs Changes in reused components can affect
4
Problem Description
multiple dependent systems.
Insufficient tools for searching,
Lack of Tool Support
integrating, and managing reusable parts.
Not-Invented-Here Resistance by developers to use existing
Syndrome components, preferring custom solutions.
Compatibility and Problems combining reused components
Integration Issues with new or existing systems.
Inadequate or missing documentation
Poor Documentation
hampers effective reuse.
Legal restrictions may limit the use or
Licensing and IP Constraints
modification of components.
Risk of Outdated Reused components may become
Components obsolete if not properly maintained.
Aspect Description
The overall environment and ecosystem where
Definition software reuse happens, covering all related
elements and factors.
System reuse, application reuse, component
Types of Reuse
reuse, object/function reuse.
Code libraries, frameworks, design patterns,
Reusable Assets
documentation, test cases, architectures.
Activities like identifying, cataloging, retrieving,
Reuse Processes
adapting, and integrating reusable components.
Tools and Repositories, search tools, version control
5
Aspect Description
Technologies systems, automated integration tools supporting
reuse.
Organizational Policies, training, incentives, and mindset that
Culture & Governance promote or hinder reuse practices.
Issues such as difficulty finding components,
Challenges integration problems, maintenance overhead,
and NIH syndrome.
Cost reduction, faster development, improved
Benefits
quality, and standardization through reuse.
Approaches like ad hoc reuse, systematic reuse,
Reuse Strategies component-based development, and service-
oriented reuse.
6
Approach Description Examples
MVC, Layered
Architectural Reusable solutions for high-
Architecture,
Patterns level software architecture.
Microservices
Aspect-Oriented
Encapsulates cross-cutting
Software AspectJ (Java),
concerns for reuse across
Development PostSharp (.NET)
modules.
(AOSD)
Component-Based Building software from
JavaBeans, COM,
Software modular, reusable
OSGi
Engineering (CBSE) components.
Systems that are pre-built
Configurable WordPress, Moodle
but can be configured for
Application Systems with plugins
specific needs.
General reusable design
Singleton, Factory,
Design Patterns solutions to common
Observer
problems.
Modular enterprise software
SAP, Oracle ERP,
ERP Systems with reusable business
Microsoft Dynamics
processes.
Encapsulating older systems
Legacy System Wrapping a COBOL
with new interfaces to
Wrapping app with a REST API
enable reuse.
UML with code
Model-Driven Generating code or systems
generation tools
Engineering (MDE) from high-level models.
(e.g., MagicDraw)
Tools that generate
Yeoman, Angular CLI,
Program Generators boilerplate code from
Rails scaffolding
templates.
Collections of reusable NumPy (Python), STL
Program Libraries functions, classes, or (C++), jQuery
modules. (JavaScript)
Applications built from REST APIs, AWS
Service-Oriented
loosely coupled, reusable Lambda, SOAP
Systems (SOA)
services. services
Creating product families by Android OS variants,
Software Product
reusing core assets and automotive software
Lines (SPL)
features. platforms
7
Approach Description Examples
Combining multiple Smart cities,
Systems of Systems
independent systems into a integrated
(SoS)
larger, reusable ecosystem. healthcare systems
Application frameworks
What is an Application Framework?
8
Programming Use Case /
Framework Domain
Language Description
Enterprise Backend systems
Spring Java
applications and microservices
Web, desktop,
.NET General- cloud, and
C#, [Link]
Framework purpose enterprise
applications
Single-page
Front-end web
Angular TypeScript applications with
apps
rich UI
Convention-over-
Ruby on Web
Ruby configuration web
Rails development
development
Cross-platform
Mobile and
Flutter Dart mobile and web UI
web apps
apps
React (with Dynamic web and
Web apps JavaScript/TypeScript
[Link]) static site generation
Summary:
9
Web Application Frameworks Overview
Topic Description Examples
Software frameworks designed
Web Django, Flask, Laravel,
to support the development of
Application Ruby on Rails,
web applications including web
Frameworks [Link], Spring Boot,
services, web APIs, and
(WAF) Angular, React
websites.
A common architectural pattern
Model-View- Model (data), View
used in WAFs that separates an
Controller (UI), Controller (logic
application into three
(MVC) and flow)
interconnected components:
- Routing and URL mapping - Provided by most
Templating engines - Form modern WAFs (e.g.,
WAF Key
validation - Database ORM Django’s admin,
Features
support - Authentication and Laravel’s Eloquent
authorization ORM)
Frameworks can be extended
Django apps, Flask
Extending using plugins, middleware, and
extensions, Angular
Frameworks modules to add or modify
modules, Rails gems
behavior.
Predefined classes that provide HttpRequest in
Framework reusable components like Django, Controller in
Classes controllers, models, views, Laravel, Component in
middleware, and services. Angular
Summary
10
Web Application Framework (WAF)
A Web Application Framework (WAF) is a software platform that
provides tools, libraries, and a structure to help developers build web
applications faster, more efficiently, and more securely.
11
MVC Components Overview
Component Role Responsibilities
- Represents the data and business logic-
Model Data Layer
Manages database operations
Presentation - Displays data to the user- Responsible for
View
Layer UI and layout
- Handles user input- Updates the model
Controller Logic Layer
and selects the appropriate view
MVC Workflow
Controller handles the input, processes it, and updates the Model
12
Feature Description
database abstraction layers for easier DB
access.
Authentication & Manages user login, roles, and permissions
Authorization securely.
Keeps track of user state across multiple
Session Management
requests.
Allows inserting code that can process
Middleware Support requests and responses (e.g., logging,
security).
Centralized management of errors and
Error Handling exceptions to improve reliability and
debugging.
Protection against common web vulnerabilities
Security Features
like CSRF, XSS, SQL injection.
Improves performance by storing frequently
Caching
accessed data or pages temporarily.
Internationalization Support for multiple languages and locale-
(i18n) specific formatting.
Tools and conventions to build REST APIs
RESTful API Support
easily.
Support for plugins, modules, or packages to
Extensibility
extend framework capabilities.
Built-in support for unit, integration, and
Testing Tools
functional testing.
Extending frameworks
13
Aspect Description Examples
cycle.- Modules/Components: Self- WordPress
contained units that can be plugged in.- plugins,
Subclassing/Inheritance: Extend or override Angular
base classes.- Hooks/Events: Custom code modules
triggered by specific actions.
- Enables framework adaptability-
Benefits Encourages modular design- Facilitates
reuse and maintenance
- Compatibility issues with framework
Challenges updates- Managing dependencies between
extensions
Framework Classes
Predefined classes that provide reusable components like controllers,
models, views, middleware, and services.
14
Software Product Lines in Software
Engineering
Software Product Lines (SPL) refer to a method in software engineering
where a group of related software products is developed from a shared
set of core assets (such as code, designs, and components). These
products share common features but also have variations to meet
different requirements or market needs.
Example:
Imagine a company making several types of phone apps—like a free
version, a paid version, and a version for kids. These apps share a lot of
code, but each has some unique features. This way, the company can
build new apps faster by reusing what they already made.
15
Term Definition Purpose Characteristics Example
Application foundational development business logic commerce app
application by reusing or UI features- with login,
that contains common Designed for catalog, and
essential application- extension and checkout,
features level customization- customized for
common to a functionality Acts as a different store
family of and enabling template or types (books,
applications, customization. blueprint electronics).
serving as a
starting
template for
product
variants.
Summary:
Component
Description Modification/Customization
Type
Provide foundational
infrastructure support
Core
(e.g., logging, Typically fixed, reused as-is
Infrastructure
communication). Usually across all product instances.
Components
not modified when
creating new products.
Designed to be
Configurable customized or Modified by configuration
Components configured to adapt to rather than code changes.
different applications.
16
Component
Description Modification/Customization
Type
Often configurable
without changing code
(using configuration
languages or tools).
Domain-specific parts
tailored to particular
Specialized product requirements. Can be replaced or
Domain Some or all may be customized extensively for
Components replaced or extended each product.
when creating new
product variants.
17
Software Product Lines
Aspect Application Frameworks
(SPL)
Some frameworks support Explicit management of
Variability extension/customization but variability to create
Support usually within one application different products from a
context. common base.
Automotive software
Django (web framework), product lines, telecom
Examples Angular (frontend), Spring (Java service product lines,
framework) Microsoft Office suites as
product lines.
Product lines may
Application frameworks can be
incorporate multiple
used as core assets within
Relationship application frameworks
software product lines to
as part of their core
support reuse.
assets.
Aspect Description
A common architecture used as a foundation to build
Definition
multiple products in a software product line.
To enable reuse, maintain consistency, and support
Purpose
variability across product versions.
- Core components - Configurable modules - Variation points
Includes
- Interfaces
- Faster development - Lower cost - Easier maintenance -
Benefits
Better quality
Variability Managed through configurable components or plugins to
18
Aspect Description
allow product customization.
A standard architecture used to build different versions of a
Example mobile banking app (e.g., for retail, business, or international
users).
Key Idea:
Simple Explanation:
Imagine a car company that builds many car models using the same base
design — they change the color, engine, or features based on customer
preferences.
In the same way, software product line specialisation takes a general
software "template" and tweaks it to make a new, tailored version.
Type of
Description Example
Specialization
Platform Creating different versions of Developing a mobile app
Specialization an application for different for iOS, Android, and
19
Type of
Description Example
Specialization
hardware or software Windows devices.
platforms.
Adapting the application to A network management
Environment work in different operating tool customized for
Specialization environments or with different routers or
different infrastructure. modems.
Customizing the application
A CRM system with extra
Functional to meet specific feature
modules for sales,
Specialization requirements of different
marketing, or support.
customers.
An ERP system
Modifying the application to
Process customized for
support different business
Specialization manufacturing, retail, or
workflows or processes.
finance sectors.
Simple Explanation:
20
Configuration Who When It
Description Example
Type Performs It Happens
The software
development
organization Creating a
customizes the custom
product by version of a
Design Time Software During
modifying, CRM system
Configuration developers development
selecting, or with added
adapting modules for
components a client.
from the product
line core.
A generic system
An ERP
is made
system
configurable,
configured
and the
Deployment Customers During by a
configuration is
Time or installation business
done later by
Configuration consultants or use using setup
customers or
wizards or
consultants using
XML config
predefined
files.
settings or files.
Key Differences:
21
Application System Reuse
Application System Reuse in software engineering refers to the re-use
of entire software applications or systems, either as-is or with minimal
configuration, in different projects or for different customers.
Simple Explanation:
Real Example:
Patient types
Report formats
User roles
Simple Explanation:
22
Think of it like Microsoft Word or a hospital management system:
But you don’t need to change its code to use it for your purpose
Benefit Description
Reusing existing systems enables quicker delivery
Faster Deployment
of working software.
Clear Functionality Prebuilt systems allow evaluation of features and
Insight fit before adoption.
Existing, proven systems reduce uncertainty and
Reduced
avoid many risks of building software from
Development Risk
scratch.
Business Focus on Organizations can concentrate on their main
Core Activities operations rather than custom IT development.
Simplified Platform and technology maintenance is typically
Technology Updates handled by the COTS vendor, not the customer.
Reused systems are often already tested and in
Proven Reliability
use, making them more stable and reliable.
23
Here's a table summarizing the problems or challenges associated with
application system reuse, especially when using COTS (Commercial Off-
The-Shelf) products:
Problem Description
Requirement Customer requirements often need to be adjusted
Adaptation to fit the fixed functionality of the COTS product.
The COTS product may be built on assumptions (e.g.,
Inflexible Design
workflow, data model) that are hard or impossible
Assumptions
to change.
Choosing a suitable system can be challenging due
Difficult Selection
to lack of documentation or unclear feature
Process
descriptions.
There may be limited availability of skilled personnel
Lack of Local
who can implement, configure, or support the
Expertise
reused system locally.
The vendor controls system updates, bug fixes, and
Vendor
future development, limiting the customer's control
Dependency
over the system.
Simple Explanation:
24
Configurable application systems and Application
system integration
Here’s a comparison table between Configurable Application Systems
and Application System Integration:
Design choices
25
Design choices” in software engineering refer to the decisions made
during the software design phase that affect how a system is structured,
how components interact, and how requirements are fulfilled. These
choices influence the system’s performance, maintainability, scalability,
usability, and overall quality.
Additional points:
Service-Oriented Interfaces
26
What are Service-Oriented Interfaces?
Service-Oriented Interfaces (SOIs) play a crucial role in software reuse,
particularly within Service-Oriented Architecture (SOA). Here's an
explanation of what they are and how they contribute to reuse:
Key characteristics:
Loose coupling: Services interact with minimal dependencies.
Aspect Description
Interfaces that expose the functionality of software
Definition services using standard protocols (e.g., REST, SOAP,
gRPC).
Typically used in Service-Oriented Architecture
Architecture
(SOA), but also relevant in Microservices
Context
Architecture.
- Loose coupling- Platform/language independence-
Key
Discoverability- Reusability- Standardized contracts
Characteristics
(e.g., WSDL, OpenAPI)
- Promotes modular design- Enables use of services
Contribution to
across multiple systems- Reduces redundancy-
Reuse
Encourages abstraction
27
Aspect Description
- Authentication service used in multiple apps-
Examples of
Payment gateway API shared across e-commerce
Reuse
platforms- Weather API used in apps
Technologies - SOAP (WSDL)- REST (OpenAPI/Swagger)- gRPC-
Used GraphQL
- Improved interoperability- Simplified integration-
Benefits Scalable and independently deployable services-
Easier maintenance and updates
- Design coarse-grained, purpose-driven services- Use
Best Practices versioning- Maintain clear documentation- Register
services in a registry/repository
- Services are accessed over a network; libraries are
Comparison with
linked locally- Services are more loosely coupled and
Libraries
independent
- Network latency- Version management- Security
Challenges
concerns- Complexity in orchestration
Aspect Description
Service-Oriented Access application functionality via standardized
Integration service interfaces, each exposing a discrete function.
Standard service interfaces reduce complexity in
Simplification
connecting diverse systems.
Service Interface Some applications provide built-in service interfaces;
Availability others require custom wrappers to expose services.
A wrapper is a program/component that hides the
Wrapper Role internal system details and exposes its features as
services.
Easier integration, better modularity, and improved
Benefits
flexibility in combining different application systems.
28
ERP systems, ERP architecture,ERP
configuration
Here’s a clear overview of ERP systems, ERP architecture, and ERP
configuration in table format:
Topic Explanation
Enterprise Resource Planning (ERP) systems are
integrated software platforms used by organizations to
ERP Systems
manage core business processes like finance, HR, supply
chain, manufacturing, and more—all in one place.
The underlying structure of an ERP system that defines
how its modules and components are organized and
ERP interact. Common architectures include: • Monolithic –
Architecture single unified system • Client-Server – separate client
and server modules • Service-Oriented Architecture
(SOA) – modular services communicating over networks
The process of customizing an ERP system’s settings,
workflows, and modules to match the specific needs and
ERP
processes of a company without changing the source
Configuration
code. This can include setting up business rules, defining
user roles, enabling/disabling features, and more.
29
ERP System Architecture Type Typical Configuration Features
Cloud-based, Multi- Multi-currency, tax rules, custom
NetSuite ERP
tenant SaaS fields, role-based access
30