SlideShare a Scribd company logo
SOFTWARE RE-ENGINEERING
SE-409
Contents
• Object Oriented Re-Engineering Patterns
• Design Patterns
Object Oriented Re-Engineering Patterns
• Object-Oriented Re-Engineering Patterns, also known as OORP, are a set
of design patterns that are used to modify and improve existing object-oriented
software systems.
• These patterns provide a way to analyze, refactor, and improve the design of
existing software systems to make them more flexible, maintainable, and
extensible.
• Design patterns play a significant role in Object-Oriented Re-Engineering
Patterns (OORP).
Design Patterns
• A design pattern is a reusable solution to a common software design
problem that has been proven to be effective over time.
• Design patterns provide a structured approach to solving problems in software
development and can improve the quality, maintainability, and scalability of
software systems.
• Design patterns are typically documented in a standardized format and can be
applied to a wide range of programming languages and software systems.
Design Patterns
• They are often used to solve recurring problems in software development, such
as how to create objects efficiently, how to maintain code modularity, or how to
manage the communication and behavior between objects.
Benefits of using patterns
• Patterns give a design common vocabulary for software design:
• Allows engineers to abstract a problem and talk about that abstraction in
isolation from its implementation.
• A culture; domain-specific patterns increase design speed.
• Capture expertise and allow it to be communicated.
• Promotes design reuse and avoid mistakes.
• Makes it easier for other developers to understand a system.
Benefits of using patterns
• Efficiency
• Design patterns can improve the efficiency of software development by
providing a set of standard solutions to common problems.
• This can help developers avoid time-consuming trial-and-error approaches
and focus on building robust and high-quality software systems.
• Overall, using design patterns can help developers create more
maintainable, and efficient software systems. By leveraging proven
solutions to common software design problems, developers can save time
and effort, improve collaboration and communication, and build higher-
quality software systems.
Describing a pattern
• Problem: In what situation should this pattern be used?
• Solution: What should you do? What is the pattern?
• describe details of the objects/classes/structure needed
• should be somewhat language-neutral
• Advantages: Why is this pattern useful?
• Disadvantages: Why might someone not want this pattern?
Categories of design patterns in software RE-
engineering:
• There are three main categories of design patterns in software engineering or
reengineering:
1. Creational Patterns: These patterns are concerned with object creation mechanisms,
trying to create objects in a manner that is suitable to the situation.
2. Structural Patterns: These patterns are concerned with object
composition and relationships between objects, helping to form large-scale
structures from individual objects.
3. Behavioral Patterns: These patterns are concerned with communication and
coordination between objects and classes, focusing on how objects distribute
work and responsibilities.
Categories of design patterns in software RE-
engineering:
Creational Patterns
• Creational Patterns: These patterns focus on object creation
mechanisms, abstracting the instantiation process. Examples include:
• Singleton: Ensures a class has only one instance and provides a global point of access to it.
• Factory Method: Defines an interface for creating an object, allowing subclasses to alter the type
of objects that will be created.
• Prototype: Creates new objects by copying an existing object, avoiding the need to create new
instances from scratch.
Structural Patterns
• Structural Patterns: These patterns deal with the composition of
classes or objects. They help in forming large structures from
individual parts. Examples include:
• Adapter: Allows incompatible interfaces to work together by providing a wrapper with a
compatible interface.
• Decorator: Adds new functionality to an object dynamically without altering its structure.
• Facade: Provides a simplified interface to a complex system, hiding its complexities from clients.
Behavioral Patterns
• Behavioral Patterns: These patterns are concerned with algorithms
and the assignment of responsibilities between objects. They
describe communication between objects and how they collaborate
to perform a task. Examples include:
• Observer: Defines a one-to-many dependency between objects, ensuring that when one object
changes state, all its dependents are notified and updated automatically.
• Strategy: Defines a family of algorithms, encapsulates each algorithm, and makes them
interchangeable at runtime.
• Command: Encapsulates a request as an object, allowing parameterization of clients with
queues, requests, and operations.

More Related Content

PPT
Chapter 4_Introduction to Patterns.ppt
PPT
Chapter 4_Introduction to Patterns.ppt
PPTX
Designpattern
PPTX
System design process.pptx
PDF
Cse 6007 fall2012
PPTX
Patterns
PPTX
Design pattern of software words computer .pptx
PPT
User Interface architectureand architecturalpatterns.ppt
Chapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.ppt
Designpattern
System design process.pptx
Cse 6007 fall2012
Patterns
Design pattern of software words computer .pptx
User Interface architectureand architecturalpatterns.ppt

Similar to Design patterns software re engineering lect 10 (20)

PPTX
Design patterns Structural
PDF
Module 2 design patterns-2
PPTX
Design Patterns - General Introduction
PPTX
PPTX
Module_5_Class-Responsibility-Collaborator (CRC) Modeling.pptx
PPTX
Design Concepts in Software Engineering-1.pptx
PPT
Good Slides on Architecture.ppt
PPTX
ppt2.pptx
PPTX
Software Design Patterns and Quality Assurance
PPTX
The principles of simulation system design.pptx
PPTX
Behavioral Patterns s o f t w a r e e n g
PPT
oomd-unit-i-cgpa.ppt
PPTX
SOFTWARE QUALITY ASSURANCE AND DESIGN PATTERNS
PPTX
DESIGN PATTERN.pptx
PPTX
DESIGN PATTERN.pptx
PPT
UNIT-4design-concepts-se-pressman-ppt.PPT
PPTX
Introduction to Software Engineering_Need_SDLC_types of SDLC
PPTX
OOSD_UNIT1 (1).pptx
PPTX
Software Design Concepts
Design patterns Structural
Module 2 design patterns-2
Design Patterns - General Introduction
Module_5_Class-Responsibility-Collaborator (CRC) Modeling.pptx
Design Concepts in Software Engineering-1.pptx
Good Slides on Architecture.ppt
ppt2.pptx
Software Design Patterns and Quality Assurance
The principles of simulation system design.pptx
Behavioral Patterns s o f t w a r e e n g
oomd-unit-i-cgpa.ppt
SOFTWARE QUALITY ASSURANCE AND DESIGN PATTERNS
DESIGN PATTERN.pptx
DESIGN PATTERN.pptx
UNIT-4design-concepts-se-pressman-ppt.PPT
Introduction to Software Engineering_Need_SDLC_types of SDLC
OOSD_UNIT1 (1).pptx
Software Design Concepts
Ad

Recently uploaded (20)

PDF
AI in Product Development-omnex systems
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
System and Network Administration Chapter 2
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
ai tools demonstartion for schools and inter college
PPTX
history of c programming in notes for students .pptx
PDF
System and Network Administraation Chapter 3
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
Essential Infomation Tech presentation.pptx
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Transform Your Business with a Software ERP System
PPTX
Introduction to Artificial Intelligence
AI in Product Development-omnex systems
Which alternative to Crystal Reports is best for small or large businesses.pdf
PTS Company Brochure 2025 (1).pdf.......
System and Network Administration Chapter 2
2025 Textile ERP Trends: SAP, Odoo & Oracle
CHAPTER 2 - PM Management and IT Context
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
ai tools demonstartion for schools and inter college
history of c programming in notes for students .pptx
System and Network Administraation Chapter 3
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
How Creative Agencies Leverage Project Management Software.pdf
Operating system designcfffgfgggggggvggggggggg
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Essential Infomation Tech presentation.pptx
Upgrade and Innovation Strategies for SAP ERP Customers
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Transform Your Business with a Software ERP System
Introduction to Artificial Intelligence
Ad

Design patterns software re engineering lect 10

  • 2. Contents • Object Oriented Re-Engineering Patterns • Design Patterns
  • 3. Object Oriented Re-Engineering Patterns • Object-Oriented Re-Engineering Patterns, also known as OORP, are a set of design patterns that are used to modify and improve existing object-oriented software systems. • These patterns provide a way to analyze, refactor, and improve the design of existing software systems to make them more flexible, maintainable, and extensible. • Design patterns play a significant role in Object-Oriented Re-Engineering Patterns (OORP).
  • 4. Design Patterns • A design pattern is a reusable solution to a common software design problem that has been proven to be effective over time. • Design patterns provide a structured approach to solving problems in software development and can improve the quality, maintainability, and scalability of software systems. • Design patterns are typically documented in a standardized format and can be applied to a wide range of programming languages and software systems.
  • 5. Design Patterns • They are often used to solve recurring problems in software development, such as how to create objects efficiently, how to maintain code modularity, or how to manage the communication and behavior between objects.
  • 6. Benefits of using patterns • Patterns give a design common vocabulary for software design: • Allows engineers to abstract a problem and talk about that abstraction in isolation from its implementation. • A culture; domain-specific patterns increase design speed. • Capture expertise and allow it to be communicated. • Promotes design reuse and avoid mistakes. • Makes it easier for other developers to understand a system.
  • 7. Benefits of using patterns • Efficiency • Design patterns can improve the efficiency of software development by providing a set of standard solutions to common problems. • This can help developers avoid time-consuming trial-and-error approaches and focus on building robust and high-quality software systems. • Overall, using design patterns can help developers create more maintainable, and efficient software systems. By leveraging proven solutions to common software design problems, developers can save time and effort, improve collaboration and communication, and build higher- quality software systems.
  • 8. Describing a pattern • Problem: In what situation should this pattern be used? • Solution: What should you do? What is the pattern? • describe details of the objects/classes/structure needed • should be somewhat language-neutral • Advantages: Why is this pattern useful? • Disadvantages: Why might someone not want this pattern?
  • 9. Categories of design patterns in software RE- engineering: • There are three main categories of design patterns in software engineering or reengineering: 1. Creational Patterns: These patterns are concerned with object creation mechanisms, trying to create objects in a manner that is suitable to the situation. 2. Structural Patterns: These patterns are concerned with object composition and relationships between objects, helping to form large-scale structures from individual objects. 3. Behavioral Patterns: These patterns are concerned with communication and coordination between objects and classes, focusing on how objects distribute work and responsibilities.
  • 10. Categories of design patterns in software RE- engineering:
  • 11. Creational Patterns • Creational Patterns: These patterns focus on object creation mechanisms, abstracting the instantiation process. Examples include: • Singleton: Ensures a class has only one instance and provides a global point of access to it. • Factory Method: Defines an interface for creating an object, allowing subclasses to alter the type of objects that will be created. • Prototype: Creates new objects by copying an existing object, avoiding the need to create new instances from scratch.
  • 12. Structural Patterns • Structural Patterns: These patterns deal with the composition of classes or objects. They help in forming large structures from individual parts. Examples include: • Adapter: Allows incompatible interfaces to work together by providing a wrapper with a compatible interface. • Decorator: Adds new functionality to an object dynamically without altering its structure. • Facade: Provides a simplified interface to a complex system, hiding its complexities from clients.
  • 13. Behavioral Patterns • Behavioral Patterns: These patterns are concerned with algorithms and the assignment of responsibilities between objects. They describe communication between objects and how they collaborate to perform a task. Examples include: • Observer: Defines a one-to-many dependency between objects, ensuring that when one object changes state, all its dependents are notified and updated automatically. • Strategy: Defines a family of algorithms, encapsulates each algorithm, and makes them interchangeable at runtime. • Command: Encapsulates a request as an object, allowing parameterization of clients with queues, requests, and operations.