0% found this document useful (0 votes)
21 views30 pages

Software Reuse in Engineering Explained

Software reuse in engineering involves creating systems from existing components like code, libraries, and designs, which enhances efficiency and reduces bugs. It encompasses various levels of reuse, from entire systems to individual functions, each with its own benefits and challenges. The reuse landscape includes practices, tools, and strategies that facilitate the effective use of reusable software assets.

Uploaded by

Syrupprism
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views30 pages

Software Reuse in Engineering Explained

Software reuse in engineering involves creating systems from existing components like code, libraries, and designs, which enhances efficiency and reduces bugs. It encompasses various levels of reuse, from entire systems to individual functions, each with its own benefits and challenges. The reuse landscape includes practices, tools, and strategies that facilitate the effective use of reusable software assets.

Uploaded by

Syrupprism
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Chapter 14 –Software Reuse

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

Importance in Software Engineering


Software reuse is fundamental to modern software development
practices, particularly in large-scale systems, where reusing standardized,
tested components saves time and reduces bugs.

Here's a concise table format summarizing software reuse in software


engineering:

Software Reuse in Software Engineering


Aspect Description Examples
Using existing software artifacts Reusing code,
Definition
in new applications or systems libraries, or designs
Levels of Reuse Granularity of reuse in Application-level,

1
Aspect Description Examples
development component-level

Application- Whole software systems reused ERP systems, CMS


Level with little or no modification (e.g., WordPress)
Component- Reuse of modules/components React components,
Level with defined interfaces JavaBeans
Module/Class- Reuse of object-oriented Utility classes in Java
Level modules and classes or Python
Reuse of specific functions or Hashing, sorting, math
Function-Level
procedures functions
Reuse Libraries, frameworks,
Methods to facilitate reuse
Approaches patterns
Collection of reusable functions NumPy (Python),
Libraries
or classes Lodash (JavaScript)
Structured platforms that
Frameworks Django, .NET, Angular
provide reusable components
Reusable solutions to common Singleton, Observer,
Design Patterns
software design problems Factory
Families of products with shared
Product Lines Android OS variants
codebases
Open-source Using community-maintained,
Linux, Bootstrap
Reuse free software components
Faster development,
Benefits Advantages of reusing software
lower cost
Compatibility,
Challenges Issues that arise with reuse
licensing, integration
Modularity,
Recommended actions for
Best Practices documentation,
effective reuse
repositories

levels of software reuse

2
Here’s a well-organized overview of the levels of software reuse, often
referred to as the reuse hierarchy in software engineering:

Here’s a well-organized overview of the levels of software reuse, often


referred to as the reuse hierarchy in software engineering:

Levels of Software Reuse

Level Description Granularity Examples


Reusing entire systems,
ERP systems,
which may include
1. System complete e-
multiple applications and Very High
Reuse commerce
infrastructure
platforms
components.
Reusing whole
CMS like
2. Application applications either as-is or
High WordPress, email
Reuse by adapting them into
clients
application families.
Reusing subsystems,
3. Login modules,
libraries, or modules that
Component Medium database
provide specific
Reuse connectors
functionality.
4. Reusing classes or object Utility classes
Object/Class libraries in object-oriented Low (e.g., Logger,
Reuse programming. DateParser)
Reusing individual
String
5. Function functions or procedures
Very Low manipulation
Reuse that perform a specific
functions, sort()
task.

Notes:

· Higher levels of reuse (system, application) yield greater productivity


but often require more effort in integration and configuration.

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

Problems with reuse


Certainly! Here’s the list of problems with software reuse formatted
neatly in a table:

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.

The reuse landscape

The reuse landscape refers to the overall environment and ecosystem in


which software reuse takes place. It encompasses the various elements,
practices, challenges, and benefits involved in the process of reusing
software components, designs, or systems.

Certainly! Here’s a clear table format explaining the concept of the


reuse landscape:

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.

Approaches that support software reuse

Approaches that support software reuse are methods, strategies, or


design practices that enable or enhance the reuse of existing software
assets—such as code, components, services, or entire systems—across
multiple projects or products.

These approaches are aimed at improving productivity, quality, and


cost-efficiency by avoiding duplication of effort.

Approaches That Support Software Reuse


(with Examples)
Approach Description Examples
Reusable skeletons that
Application provide structure and Django, .NET
Frameworks reusable components for a Framework, Spring
specific domain.
Application System Integrating existing systems Salesforce + SAP
Integration into new applications. integration

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?

An application framework is a reusable software platform that provides


a foundation and structure for developing applications within a
particular domain. It includes predefined classes, functions, and tools
that simplify common development tasks—such as database access,
user interface design, or security.

Application Frameworks Overview


Aspect Details
A reusable software platform providing structure and
Definition
tools for application development.
To simplify and accelerate application development by
Purpose
offering ready-made components.
- Reusable architecture- Inversion of control-
Key Features
Extensibility- Domain-specific capabilities
- Faster development- Improved code quality-
Benefits
Consistent architecture- Easier maintenance
Common Use Web apps, desktop software, mobile apps, enterprise
Cases systems

Examples of Application Frameworks

Programming Use Case /


Framework Domain
Language Description
Rapid development
Web
Django Python of secure and
development
scalable web apps

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:

An application framework helps developers save time, ensure


consistency, and focus on unique application logic by providing reusable
infrastructure and tools.

Here’s a structured overview table covering


all the topics you've mentioned: Web
Application Frameworks, Model-View-
Controller (MVC), WAF Features, Extending
Frameworks, and Framework Classes:

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

Web frameworks speed up and standardize development.

MVC improves code maintainability by separating concerns.

Features like ORM, authentication, and routing are common


across WAFs.

Frameworks are extensible and use reusable classes to promote


reuse and scalability.

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.

Common Web Application Frameworks


Framework Language Type Use Case
Rapid development, secure
Django Python Full-stack
web applications
Micro- Lightweight web services
Flask Python
framework and APIs
Laravel PHP Full-stack Clean and elegant PHP apps
Convention-over-
Ruby on Rails Ruby Full-stack configuration web
development
Scalable and secure
Spring Boot Java Full-stack
enterprise apps
Enterprise-grade web
[Link] Core C# (.NET) Full-stack applications on
Windows/Linux
JavaScript Micro- REST APIs and real-time
[Link]
([Link]) framework applications
Building single-page
Angular TypeScript Front-end
applications (SPAs)
React (with Front-end / Dynamic web and hybrid
JavaScript
[Link]) Full-stack apps

What is Model-View-Controller (MVC)?


Model-View-Controller (MVC) is a software architectural design
pattern commonly used in web application frameworks. It separates an
application into three main interconnected components:

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

User interacts with the View (e.g., clicks a button).

Controller handles the input, processes it, and updates the Model

Model changes and notifies the View.

View re-renders to show the updated data.

Key Features of Web Application Frameworks


(WAF)
Feature Description
Maps URLs to specific code handlers or
Routing / URL Mapping
controllers to respond to user requests.
Enables dynamic generation of HTML pages by
Templating Engine
combining templates with data.
Form Handling & Processes user input securely and validates
Validation form data to prevent errors and attacks.
Database Integration Provides Object-Relational Mapping (ORM) or

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

Aspect Description Examples


To customize or add new functionality to an
Purpose existing software framework without
modifying its core.
- Plugins/Add-ons: Independent packages Django apps,
Methods of
that add features.- Middleware: Insert Flask
Extension
custom processing in request/response extensions,

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.

Here’s a table format summary of the three types of frameworks you


mentioned:

Framework Type Description Examples


Support the development of
System Qt (UI), ACE
foundational system services
Infrastructure (communication),
like communications, user
Frameworks LLVM (compiler)
interfaces, and compilers.
Provide standards and reusable
Middleware
classes for component CORBA, Apache Kafka,
Integration
communication and data RabbitMQ
Frameworks
exchange between systems.
Facilitate development of
Enterprise Spring Framework,
complex domain-specific
Application Oracle ADF, SAP
applications such as telecom,
Frameworks NetWeaver
banking, or ERP systems.

Framework classes are reusable building blocks that provide


standardized ways to organize and implement application logic within a
framework.

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.

Here’s a clear comparison of Base Systems and Base Applications in


software engineering, especially related to software product lines, in
table format:

Term Definition Purpose Characteristics Example


The core set
of software
To provide a - Typically low- A middleware
assets
stable, level platform that
including
reusable infrastructure- manages
architecture,
Base foundation for Reusable and communication
components,
System building well-tested- and data for
libraries, and
multiple Supports different
tools shared
related variability and telecom
by all
products. extension applications.
products in a
product line.
Base A To speed up - Contains core A generic e-

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:

Base Systems provide the low-level reusable infrastructure shared


by all products.

Base Applications provide reusable application-level features that


can be extended or customized for different products.

Here’s a table format summary of the types of core components in a


software product line based on your description:

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.

Here’s a clear table format comparing and relating Application


Frameworks and Software Product Lines:

Software Product Lines


Aspect Application Frameworks
(SPL)
A set of related software
Reusable set of libraries and products sharing common
tools providing generic core assets, developed
Definition
functionality and structure for systematically for a
building applications. specific domain or
market.
To efficiently produce
To speed up development by multiple related products
Purpose providing a reusable foundation through planned reuse
and standard design patterns. and variability
management.
Focuses mainly on the Encompasses multiple
architecture and design of a complete products within
Scope
single application or type of a domain, sharing assets
application. and planned variability.
Reuse of core assets
Reuse of code, design, and
(code, components,
Reuse Focus components for building
documentation) across
individual applications.
many related products.

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.

What is Product Line Architecture?


Product Line Architecture (PLA) is the shared, high-level design that
supports the development of multiple related products in a software
product line.

It defines the common structure, components, and variation points


used to build all products in that family.

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:

Just like a blueprint is reused to construct many houses with slight


changes, a Product Line Architecture is reused to build many software
products with shared structure but different features.

What is Product Line Specialisation


Product Line Specialisation is the process of creating a specific product
from a software product line by customizing or adapting shared assets
to meet particular customer or market needs.

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.

Here’s a clear table summarizing the types of specialization in software


product lines:

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.

What is Product Line Configuration?


Product Line Configuration is the process of selecting, customizing, and
assembling predefined components and features from a software
product line to create a specific product variant that meets particular
requirements.

Simple Explanation:

Think of it like configuring a custom laptop online — you pick the


processor, RAM, storage, and color.
In the same way, software product line configuration lets you choose
and adapt software features to build a product tailored to a customer or
use case.

Here’s a table comparing the two main types of Product Line


Configuration: Design Time Configuration and Deployment Time
Configuration.

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:

Design Time: Configuration is done before delivery, by the


developers.

Deployment Time: Configuration is done after delivery, by the


customer or consultant, without changing code.

Application System Reuse

What is Application System Reuse in Software Engineering?

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:

Instead of building a new application from scratch, you take a complete,


already-developed application and:

Use it again for a different customer, or

Configure it for another purpose, without changing its code.

Real Example:

A hospital management system used by multiple hospitals, each


configuring it for their own:

Patient types

Report formats

User roles

What is an Application System Product?


An Application System Product is a pre-built, generic software system
designed to be adapted and reused by different customers without
changing its source code. It offers core functionality that can be
configured to meet specific user needs through settings, plugins, or
customization options.

Simple Explanation:

22
Think of it like Microsoft Word or a hospital management system:

It’s already developed

You can configure it (like changing templates or adding forms)

But you don’t need to change its code to use it for your purpose

benefits of application system reuse


Here’s a table summarizing the benefits of application system reuse
based on your input:

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.

Problems of application system reuse

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.

Configurable application systems


What is a Configurable Application System?

A Configurable Application System is a generic, pre-built software


system that can be easily adapted to meet the needs of different users,
businesses, or domains without changing its source code. Instead of
building a new system from scratch, users configure settings, forms,
rules, or workflows to fit their specific requirements.

Simple Explanation:

It’s like a ready-made software template that businesses can customize


through built-in options—not by coding.

Example: A software system for dental clinics that includes


modules for appointments, patient records, and billing,
which different clinics can configure to their preferences.

24
Configurable application systems and Application
system integration
Here’s a comparison table between Configurable Application Systems
and Application System Integration:

Configurable Application Application System


Aspect
Systems Integration
Generic application systems Combining multiple
designed to be configured for independent applications or
Definition
specific business needs systems to work together as
without code changes. one.
Enable data and
Provide reusable, domain-
functionality sharing
specific functionality with
Purpose between different systems
built-in customization
to support business
options.
processes.
Integration through
Adaptation Configuration via settings,
middleware, APIs, adapters,
Method forms, rules, or parameters.
or data exchange protocols.
Usually supports a single
Supports cross-domain
business domain or function
Scope workflows and coordination
(e.g., dental practice
across multiple systems.
management).
Higher complexity; requires
Lower complexity; focus on managing communication
Complexity
flexible use within a domain. and consistency between
systems.
Integrating payroll software
A configurable ERP system
Example with HR and accounting
for small businesses.
systems.
Enables leveraging existing
Fast deployment, less
systems, supports complex
Benefits development effort, easier
workflows, improves data
customization.
consistency.

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.

Why are design choices important?

They directly impact the system’s ability to meet requirements.

Early decisions can reduce future costs by preventing major


redesigns.

Good choices improve flexibility, scalability, and maintainability.

Here's a table summarizing the key design considerations when


integrating multiple application systems:

Design Question Explanation / Challenge


Which application systems Multiple products exist; choosing the best
offer the most appropriate fit requires evaluating features and
functionality? compatibility.
Different systems often use unique data
How will data be exchanged
formats; you need adapters or middleware
between systems?
to translate and integrate data.
What features of each Products may include more features than
product will actually be necessary; overlapping functionalities can
used? cause redundancy and complexity.

Additional points:

Selecting the right combination requires careful analysis of


business needs and system capabilities.

Data exchange is a major integration challenge and often requires


custom solutions.

Avoiding feature duplication helps reduce maintenance overhead


and potential conflicts.

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:

What Are Service-Oriented Interfaces?

A Service-Oriented Interface defines how software components


(services) communicate with each other over a network using standard
protocols (e.g., HTTP, SOAP, REST, gRPC). These interfaces expose
functionality in a standardized, discoverable, and loosely coupled way.

Key characteristics:
Loose coupling: Services interact with minimal dependencies.

Standardized contracts: Interfaces are described using WSDL (for


SOAP), OpenAPI/Swagger (for REST), etc.

Platform independence: Services can be implemented in different


languages and environments.

Discoverability: Services can be registered in directories and


discovered at runtime.

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

Here’s a summary table explaining Application System


Integration using a Service-Oriented Approach:

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.

Here’s a table with examples of ERP systems, their architecture types,


and typical configuration features:

ERP System Architecture Type Typical Configuration Features


Financial accounting setup, user
SAP ERP Client-Server, SOA
roles, workflows, reporting formats
Oracle ERP Cloud-based, Business process automation,
Cloud Service-Oriented security settings, module activation
Customizable dashboards,
Microsoft Cloud-based,
integration with Office tools,
Dynamics 365 Modular
permissions
Cloud/On-premises, Industry-specific workflows, data
Infor ERP
Modular entry forms, user access levels

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

You might also like