SlideShare una empresa de Scribd logo
1 de 34
http://www.slideshare.net/mbrambil
                        http://home.dei.polimi.it/mbrambil
                           http://twitter.com/MarcoBrambi




SOFTWARE REUSE
AND
DESIGN FOR REUSE
    Marco Brambilla
Context of the Lesson

   Prerequisites
     Objectoriented programming
     Software engineering basics (UML, patterns, ...)
Agenda

   Introduction to reuse
   Benefits and issues for reuse
   Levels of reuse
       System
       Architecture
       Design
       Implementation
   Some details on design
Introduction
   Definition of reuse
   Design for reuse and reuse of design
   Purpose and state of the practice
     in other disciplines
     in software engineering
Benefits of software reuse

Benefit            Explanation
Increased          Reused software has been tried and tested
dependability      in working systems
Reduced process    The cost and risk of existing software is
risk               already known
Effective use of   reusable software encapsulates their
specialists        knowledge
Accelerated        both development and validation time may
development        be reduced
Problems with reuse
Problem             Explanation
Increased           reused elements of the system may become
maintenance costs   increasingly incompatible with system changes
Not-invented-here   Companies rewrite components because they
syndrome            believe they can improve on them or because they
                    feel they must own them.
Creating,           Generality of components doesn’t come for free.
maintaining, and    Development processes have to be adapted
using a component
library
Finding and         Software components have to be discovered in a
understanding       library, understood and, sometimes, adapted
components
Understanding       Reused elements always come with prerequisites the
applicability       application field must comply with
The 4 layers of reuse

4. Whole system                     Configuration
                                    and BlackBox
                                         reuse of        Config.
                                     applications
3. (Macro-, System-,
   Enterprise-, Global-)             Reuse of application
   Architecture                                   Frameworks
                                        frameworks,
                                     middleware, services


2. Design (micro architecture)               Reuse of
                                           designs and   Patterns
        object and function reuse          components

 1. Implementation             Reuse of
                             classes and
                               methods          Programming
4. Approaches supporting reuse at
system level
  Software product lines
  COTS (Commercial, off-the-shelf) product reuse

  Configurable vertical applications

  ERP (Enterprise Resource Planning) systems
3. Approaches supporting reuse at
architecture level
  Architectural patterns standard sw architectures
  Application frameworks classes at system level

  Legacy system wrapping interfaces to old code

  Service-oriented systems shared (third-party) services
2. Reuse at design level
 Objectorientation object design and development
 Design patterns   reusable software solutions
 Model-driven engineering      models and transformations
 Aspect-oriented software development           perspectives
 Component-based development            cbse, component-model
1. Approaches supporting reuse at
implementation level
  Program libraries, APIs set of reusable artefacts
  Program generators     code generators
[D]   Reuse at design level
     Mix of design best practices
     Not granted by the (design or coding) language
     ... but: some paradigms may help in the job

       Objectorientation object design and development
       Design patterns   reusable software solutions
       Model-driven engineering      models and transformations
       Aspect-oriented software development           perspectives
       Component-based development            cbse, component-model
[D1]   OO Principles orient to reuse
      Open/close principle
         Software entities should be open for extension but closed for modifications.

      Dependency inversion
         High-level modules should not depend on low-level modules. Both should
          depend on abstractions.
         Abstractions should not depend on details. Details should depend on
          abstractions.
      Interface segregation principle
         Clients should not be forced to depend on/ implement interfaces that they
          don't use.
      Single responsibility – separation of concerns
         A class should have only one reason to change

      Substitution (Liskov)
         If a program is using a Base class, then the reference to the Base class can
          be replaced with a Derived class without affecting the overall functionality
[D1]   Object orientation for reuse
       Encapsulation, modularization, and inheritance :
       the main reuse features of OO that support reuse


             Component




             Package
[D1]   Encapsulation
       Encapsulation: to expose only enough of a module to
         allow other modules to make use of it.
       You can syntactically seal off implementation details,
         leading to more flexibility and maintainability in your
         system.
       Every time an item is designed as private (restricted), it
         encompasses potential for reuse and redefinition.
       Every item of the system can change independently,
         no impact to the other modules.
[D1]   Modularization
       Components, Interfaces, packages: basic mechanisms
         that ONLY aim at modularization (and thus reuse)
          Components allow system to be assembled from binary
           replaceable elements
              A component is physical – bits, not concepts (Iike classes)
              A component provides the realization of a set of interfaces.
              A component can be replaced by any other component(s)
               that conforms to the interfaces.
              A component is part of a system.
Example
[D1]   Modularization example


       simulation.exe                     Render.java


                        IRender




                                  LightModel
                                    IModels     ILighting

                                               Environment
Example
[D1]   Packaging example
[D1]     Overriding and Overloading
       Overriding, overloading, and polimorphism are the
        concrete mechanisms for reuse based on inheritance


       Overriding, or hiding, is when you have a method with
        the same name and parameters as in a superclass
         the rest of the superclass is reused
       Overloading is when you have multiple methods of the
        same name, but with different parameter lists.
         the object is more likely to be reused
[D1]   Polymorphism (Many Forms!)
       Polymorphism is when objects of various types define a
         common interface of operations for users.
          users can share usage, although at runtime instances
         of different types can be bound

          Literally means many forms
          Can submit/use an instance of a subclass when a super
           type is expected
          Reference and object can be different
          Arguments and return types can be polymorphic
[D1]   What does OO bring you?
          Avoid duplicate code
          Define a common API (protocol or contract) for a group
           of classes
          Change in one place
          Can override methods if more specific behavior is
           needed
          Code doesn’t need changing when new sub
          You can extend and change behavior, even if you don't
           have source code
Example
[D1]    What’s going to get printed?
  public class Animal {
    public static void hide() {
       System.out.format(“Hide animal."); }       public static void main(…) {
    public void override() {                           Cat myCat = new Cat();
       System.out.format(“Override Animal."); }        Animal myAnimal = myCat;
  }                                                    //myAnimal.hide(); //Bad style!
                                                       Animal.hide();      //Better!
                                                       myAnimal.override();
                                                    }
  public class Cat extends Animal {               }
    public static void hide() {
       System.out.format(“Hide Cat."); }
    public void override() {
       System.out.format(“Override Cat."); }
  }
Example
[D1]   The answer
          The Cat class overrides the instance method in Animal called
           override and hides the class method in Animal called hide
          For class methods, the runtime system invokes the method
           defined in the compile-time type of the reference
          For instance methods, the runtime system invokes the method
           defined in the runtime type of the reference


              The hide method in Animal.
              The override method in Cat.
[D2]   Design patterns
          A design pattern is a reusable solution to a recurrent
           problem
          Software design patterns are based (somehow) on work
           by the architect Christopher Alexander
          A design pattern captures design expertise – not
           created but abstracted from existing design examples
          Using design patterns is reuse of design expertise
          Design patterns provide a vocabulary for talking about
           design
[D2]   How patterns arise

                       Problem




                                   Forces


                        Solution

          Benefits                      Consequences
                     Related Patterns
[D2]   Patterns vs. “design”

          Patterns are design
            But: patterns transcend the “identify classes
             and associations” approach to design
            Instead: learn to recognize patterns in the
             problem space and translate to the solution
Example
[D2]   Composite pattern
          Construct part-whole hierarchy
          Simplify client interface to leaves/composites
          Easier to add new kinds of components
                                                0..*
        Client              Component
                            Operation()
                            Add(Component)
                            Remove(Component)
                                                       children


                       Leaf            Composite
                     Operation()      Operation()
                                      Add(Component)
                                      Remove(Component)
                                                            For all c in children
                                                              c.Operation();
Example
[D2]   Composite pattern
            Example: figures in a structured graphics toolkit

       Controller
                          0..*                         0..*
             View                     Figure
                                                       children
                                 paint()
                                 translate()
                                 getBounds()




   LabelFigure BasicFigure                 CompositeFigure            parent
   paint()            paint()              paint()
                                           addFigure(Figure)
                                           removeFigure(Figure)
                                                                  For all c in children
                                                                    c.paint();
For your reference
    Creational Design Patterns
   Manage the way objects are created
      Singleton - Ensures that only one instance of a class is created and
       Provides a global access point to the object.
      Factory(Simplified version of Factory Method) - Creates objects without
       exposing the instantiation logic to the client and Refers to the newly
       created object through a common interface.
      Factory Method - Defines an interface for creating objects, but let
       subclasses to decide which class to instantiate and Refers to the newly
       created object through a common interface.
      Abstract Factory - Offers the interface for creating a family of related
       objects, without explicitly specifying their classes.
      Builder - Defines an instance for creating an object but letting
       subclasses decide which class to instantiate and Allows a finer control
       over the construction process.
      Prototype - Specify the kinds of objects to create using a prototypical
       instance, and create new objects by copying this prototype.
      Object Pool - reuses and shares objects that are expensive to create..
For your reference
    Structural Design Patterns
   Define structures of objects and classes that can work together and
     define how the relations can be defined between entities.
       Adapter - Convert the interface of a class into another interface clients
         expect. Adapter lets classes work together, that could not otherwise
         because of incompatible interfaces.
       Bridge - Compose objects into tree structures to represent part-whole
         hierarchies.
       Composite - Compose objects into tree structures to represent part-
         whole hierarchies. / Composite lets clients treat individual objects and
         compositions of objects uniformly.
       Decorator - add additional responsibilities dynamically to an object.
       Flyweight - use sharing to support a large number of objects that have
         part of their internal state in common where the other part of state can
         vary.
       Memento - capture the internal state of an object without violating
         encapsulation and thus providing a mean for restoring the object into
         initial state when needed.
       Proxy - provide a “Placeholder” for an object to control references to it.
       Facade - unified interface to a complex system.
For your reference
    Behavioural Design Patterns
    Define the interactions and behaviours of classes
        Chain of Responsibiliy - It avoids attaching the sender of a request to
          its receiver, giving this way other objects the possibility of handling the
          request too. The objects become parts of a chain and the request is sent
          from one object to another across the chain until one of the objects will
          handle it.
        Command - Encapsulate a request in an object, Allows the
          parameterization of clients with different requests and Allows saving the
          requests in a queue.
        Interpreter - Given a language, define a representation for its grammar
          along with an interpreter that uses the representation to interpret
          sentences in the language / Map a domain to a language, the language
          to a grammar, and the grammar to a hierarchical object-oriented design
        Iterator - Provide a way to access the elements of an aggregate object
          sequentially without exposing its underlying representation.
        Mediator - Define an object that encapsulates how a set of objects
          interact. Mediator promotes loose coupling by keeping objects from
          referring to each other explicitly, and it lets you vary their interaction
          independently.
For your reference
    Behavioural Design Patterns
    Define the interactions and behaviours of classes
          Observer - Define a one-to-many dependency between objects so that
           when one object changes state, all its dependents are notified and
           updated automatically.
          Strategy - Define a family of algorithms, encapsulate each one, and
           make them interchangeable. Strategy lets the algorithm vary
           independently from clients that use it.
          Template Method - Define the skeleton of an algorithm in an operation,
           deferring some steps to subclasses / Template Method lets subclasses
           redefine certain steps of an algorithm without letting them to change the
           algorithm's structure.
          Visitor - Represents an operation to be performed on the elements of an
           object structure / Visitor lets you define a new operation without changing
           the classes of the elements on which it operates.
          Null Object - Provide an object as a surrogate for the lack of an object of
           a given type. / The Null Object Pattern provides intelligent do nothing
           behavior, hiding the details from its collaborators.
References

         Ian Sommerville. Software Engineering,
          Addison Wesley
         Martin Fowler et al. Refactoring:
          Improving the Design of Existing Code,
          Addison Wesley
         Ivar Jacobson et al. Software Reuse:
          Architecture, Process and Organization
          for Business Success, Addison Wesley
         E. Gamma, R. Helm, R. Johnson, H.
          Vlissides (“the gang of four”), Design
          Patterns, Addison-Wesley
Further readings

         Diomidis Spinellis, Cracking Software
          Reuse, IEEE Software, 2007
         David A. Wheeler, Free-Libre / Open
          Source Software (FLOSS) is Commercial
          Software, web, 2009
          Frakes, W.B. and Kyo Kang. Software
          Reuse Research: Status and Future, IEEE
          TSE, 2005
         ...

Más contenido relacionado

La actualidad más candente

Analysis modeling & scenario based modeling
Analysis modeling &  scenario based modeling Analysis modeling &  scenario based modeling
Analysis modeling & scenario based modeling Benazir Fathima
 
REQUIREMENT ENGINEERING
REQUIREMENT ENGINEERINGREQUIREMENT ENGINEERING
REQUIREMENT ENGINEERINGSaqib Raza
 
Advanced Operating System- Introduction
Advanced Operating System- IntroductionAdvanced Operating System- Introduction
Advanced Operating System- IntroductionDebasis Das
 
Communications is distributed systems
Communications is distributed systemsCommunications is distributed systems
Communications is distributed systemsSHATHAN
 
Design Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringDesign Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringMeghaj Mallick
 
Substitution techniques
Substitution techniquesSubstitution techniques
Substitution techniquesvinitha96
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxKarthigaiSelviS3
 
Unified process model
Unified process modelUnified process model
Unified process modelRyndaMaala
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case DiagramKumar
 
Importance & Principles of Modeling from UML Designing
Importance & Principles of Modeling from UML DesigningImportance & Principles of Modeling from UML Designing
Importance & Principles of Modeling from UML DesigningABHISHEK KUMAR
 
Software architecture design ppt
Software architecture design pptSoftware architecture design ppt
Software architecture design pptfarazimlak
 
Collaboration diagram- UML diagram
Collaboration diagram- UML diagram Collaboration diagram- UML diagram
Collaboration diagram- UML diagram Ramakant Soni
 
Organization and team structures
Organization and team structuresOrganization and team structures
Organization and team structuresNur Islam
 
program flow mechanisms, advanced computer architecture
program flow mechanisms, advanced computer architectureprogram flow mechanisms, advanced computer architecture
program flow mechanisms, advanced computer architecturePankaj Kumar Jain
 
User Interface Analysis and Design
User Interface Analysis and DesignUser Interface Analysis and Design
User Interface Analysis and Design Saqib Raza
 
Software Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & SpecificationSoftware Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & SpecificationAjit Nayak
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process ModelsHassan A-j
 

La actualidad más candente (20)

Analysis modeling & scenario based modeling
Analysis modeling &  scenario based modeling Analysis modeling &  scenario based modeling
Analysis modeling & scenario based modeling
 
REQUIREMENT ENGINEERING
REQUIREMENT ENGINEERINGREQUIREMENT ENGINEERING
REQUIREMENT ENGINEERING
 
Advanced Operating System- Introduction
Advanced Operating System- IntroductionAdvanced Operating System- Introduction
Advanced Operating System- Introduction
 
Communications is distributed systems
Communications is distributed systemsCommunications is distributed systems
Communications is distributed systems
 
Design Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringDesign Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software Engineering
 
Substitution techniques
Substitution techniquesSubstitution techniques
Substitution techniques
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
 
Unified process model
Unified process modelUnified process model
Unified process model
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case Diagram
 
Importance & Principles of Modeling from UML Designing
Importance & Principles of Modeling from UML DesigningImportance & Principles of Modeling from UML Designing
Importance & Principles of Modeling from UML Designing
 
Software architecture design ppt
Software architecture design pptSoftware architecture design ppt
Software architecture design ppt
 
Collaboration diagram- UML diagram
Collaboration diagram- UML diagram Collaboration diagram- UML diagram
Collaboration diagram- UML diagram
 
Deployment Diagram
Deployment DiagramDeployment Diagram
Deployment Diagram
 
Organization and team structures
Organization and team structuresOrganization and team structures
Organization and team structures
 
Distributed Operating System_1
Distributed Operating System_1Distributed Operating System_1
Distributed Operating System_1
 
program flow mechanisms, advanced computer architecture
program flow mechanisms, advanced computer architectureprogram flow mechanisms, advanced computer architecture
program flow mechanisms, advanced computer architecture
 
Cohesion and coupling
Cohesion and couplingCohesion and coupling
Cohesion and coupling
 
User Interface Analysis and Design
User Interface Analysis and DesignUser Interface Analysis and Design
User Interface Analysis and Design
 
Software Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & SpecificationSoftware Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & Specification
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
 

Destacado

Software reuse ppt.
Software reuse ppt.Software reuse ppt.
Software reuse ppt.Sumit Biswas
 
Software Reuse: Challenges and Business Success
Software Reuse: Challenges and Business SuccessSoftware Reuse: Challenges and Business Success
Software Reuse: Challenges and Business SuccessUniversity of Zurich
 
Presentation on component based software engineering(cbse)
Presentation on component based software engineering(cbse)Presentation on component based software engineering(cbse)
Presentation on component based software engineering(cbse)Chandan Thakur
 
Software re engineering
Software re engineeringSoftware re engineering
Software re engineeringdeshpandeamrut
 
Reuse Presentation
Reuse PresentationReuse Presentation
Reuse Presentationsarahlyon12
 
Actionable Software Engineering Research
Actionable Software Engineering ResearchActionable Software Engineering Research
Actionable Software Engineering ResearchUniversity of Zurich
 
Designing Configurable and Customizable Applications
Designing Configurable and Customizable ApplicationsDesigning Configurable and Customizable Applications
Designing Configurable and Customizable ApplicationsDesign for Context
 
Some Myths in Software Development
Some Myths in Software DevelopmentSome Myths in Software Development
Some Myths in Software Developmentbryanbibat
 
Software component reuse repository
Software component reuse repositorySoftware component reuse repository
Software component reuse repositorySandeep Singh
 
Ch20-Software Engineering 9
Ch20-Software Engineering 9Ch20-Software Engineering 9
Ch20-Software Engineering 9Ian Sommerville
 
Ch10-Software Engineering 9
Ch10-Software Engineering 9Ch10-Software Engineering 9
Ch10-Software Engineering 9Ian Sommerville
 
Ch18-Software Engineering 9
Ch18-Software Engineering 9Ch18-Software Engineering 9
Ch18-Software Engineering 9Ian Sommerville
 

Destacado (20)

Ch15 software reuse
Ch15 software reuseCh15 software reuse
Ch15 software reuse
 
Software reuse ppt.
Software reuse ppt.Software reuse ppt.
Software reuse ppt.
 
Software resuse
Software  resuseSoftware  resuse
Software resuse
 
Software reuse
Software reuseSoftware reuse
Software reuse
 
Software Reuse: Challenges and Business Success
Software Reuse: Challenges and Business SuccessSoftware Reuse: Challenges and Business Success
Software Reuse: Challenges and Business Success
 
Ch16 component based software engineering
Ch16 component based software engineeringCh16 component based software engineering
Ch16 component based software engineering
 
Presentation on component based software engineering(cbse)
Presentation on component based software engineering(cbse)Presentation on component based software engineering(cbse)
Presentation on component based software engineering(cbse)
 
Reuse landscape
Reuse landscapeReuse landscape
Reuse landscape
 
Software re engineering
Software re engineeringSoftware re engineering
Software re engineering
 
Ch18
Ch18Ch18
Ch18
 
Reuse Presentation
Reuse PresentationReuse Presentation
Reuse Presentation
 
Actionable Software Engineering Research
Actionable Software Engineering ResearchActionable Software Engineering Research
Actionable Software Engineering Research
 
Designing Configurable and Customizable Applications
Designing Configurable and Customizable ApplicationsDesigning Configurable and Customizable Applications
Designing Configurable and Customizable Applications
 
Oop 1
Oop 1Oop 1
Oop 1
 
Some Myths in Software Development
Some Myths in Software DevelopmentSome Myths in Software Development
Some Myths in Software Development
 
Software component reuse repository
Software component reuse repositorySoftware component reuse repository
Software component reuse repository
 
Ch20-Software Engineering 9
Ch20-Software Engineering 9Ch20-Software Engineering 9
Ch20-Software Engineering 9
 
Ch10-Software Engineering 9
Ch10-Software Engineering 9Ch10-Software Engineering 9
Ch10-Software Engineering 9
 
Ch18-Software Engineering 9
Ch18-Software Engineering 9Ch18-Software Engineering 9
Ch18-Software Engineering 9
 
Software re engineering
Software re engineeringSoftware re engineering
Software re engineering
 

Similar a Software engineering: design for reuse

Introduction To Design Patterns
Introduction To Design PatternsIntroduction To Design Patterns
Introduction To Design Patternssukumarraju6
 
chapter 5 Objectdesign.ppt
chapter 5 Objectdesign.pptchapter 5 Objectdesign.ppt
chapter 5 Objectdesign.pptTemesgenAzezew
 
Software Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented ProgrammingSoftware Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented Programmingkim.mens
 
Software Patterns
Software PatternsSoftware Patterns
Software Patternsbonej010
 
Design Pattern in Software Engineering
Design Pattern in Software Engineering Design Pattern in Software Engineering
Design Pattern in Software Engineering Bilal Hassan
 
Patterns in Python
Patterns in PythonPatterns in Python
Patterns in Pythondn
 
Ujjwalreverseengineeringppptfinal
UjjwalreverseengineeringppptfinalUjjwalreverseengineeringppptfinal
Ujjwalreverseengineeringppptfinalujjwalchauhan87
 
DOC-20210303-WA0017..pptx,coding stuff in c
DOC-20210303-WA0017..pptx,coding stuff in cDOC-20210303-WA0017..pptx,coding stuff in c
DOC-20210303-WA0017..pptx,coding stuff in cfloraaluoch3
 
SADP PPTs of all modules - Shanthi D.L.pdf
SADP PPTs of all modules - Shanthi D.L.pdfSADP PPTs of all modules - Shanthi D.L.pdf
SADP PPTs of all modules - Shanthi D.L.pdfB.T.L.I.T
 
A FRAMEWORK STUDIO FOR COMPONENT REUSABILITY
A FRAMEWORK STUDIO FOR COMPONENT REUSABILITYA FRAMEWORK STUDIO FOR COMPONENT REUSABILITY
A FRAMEWORK STUDIO FOR COMPONENT REUSABILITYcscpconf
 
P Training Presentation
P Training PresentationP Training Presentation
P Training PresentationGaurav Tyagi
 
Software development effort reduction with Co-op
Software development effort reduction with Co-opSoftware development effort reduction with Co-op
Software development effort reduction with Co-oplbergmans
 
Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and DesignDr. C.V. Suresh Babu
 
Software_Engineering_Presentation (1).pptx
Software_Engineering_Presentation (1).pptxSoftware_Engineering_Presentation (1).pptx
Software_Engineering_Presentation (1).pptxArifaMehreen1
 
SAP ABAP Latest Interview Questions with Answers by Garuda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda TrainingsSAP ABAP Latest Interview Questions with Answers by Garuda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda TrainingsGaruda Trainings
 
Evolution of Patterns
Evolution of PatternsEvolution of Patterns
Evolution of PatternsChris Eargle
 
4 pillars of OOPS CONCEPT
4 pillars of OOPS CONCEPT4 pillars of OOPS CONCEPT
4 pillars of OOPS CONCEPTAjay Chimmani
 
Advanced Software Engineering.ppt
Advanced Software Engineering.pptAdvanced Software Engineering.ppt
Advanced Software Engineering.pptRvishnupriya2
 

Similar a Software engineering: design for reuse (20)

Introduction To Design Patterns
Introduction To Design PatternsIntroduction To Design Patterns
Introduction To Design Patterns
 
chapter 5 Objectdesign.ppt
chapter 5 Objectdesign.pptchapter 5 Objectdesign.ppt
chapter 5 Objectdesign.ppt
 
Software Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented ProgrammingSoftware Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented Programming
 
Software Patterns
Software PatternsSoftware Patterns
Software Patterns
 
Design Pattern in Software Engineering
Design Pattern in Software Engineering Design Pattern in Software Engineering
Design Pattern in Software Engineering
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Patterns in Python
Patterns in PythonPatterns in Python
Patterns in Python
 
Ujjwalreverseengineeringppptfinal
UjjwalreverseengineeringppptfinalUjjwalreverseengineeringppptfinal
Ujjwalreverseengineeringppptfinal
 
DOC-20210303-WA0017..pptx,coding stuff in c
DOC-20210303-WA0017..pptx,coding stuff in cDOC-20210303-WA0017..pptx,coding stuff in c
DOC-20210303-WA0017..pptx,coding stuff in c
 
SADP PPTs of all modules - Shanthi D.L.pdf
SADP PPTs of all modules - Shanthi D.L.pdfSADP PPTs of all modules - Shanthi D.L.pdf
SADP PPTs of all modules - Shanthi D.L.pdf
 
A FRAMEWORK STUDIO FOR COMPONENT REUSABILITY
A FRAMEWORK STUDIO FOR COMPONENT REUSABILITYA FRAMEWORK STUDIO FOR COMPONENT REUSABILITY
A FRAMEWORK STUDIO FOR COMPONENT REUSABILITY
 
P Training Presentation
P Training PresentationP Training Presentation
P Training Presentation
 
Software development effort reduction with Co-op
Software development effort reduction with Co-opSoftware development effort reduction with Co-op
Software development effort reduction with Co-op
 
Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and Design
 
Software_Engineering_Presentation (1).pptx
Software_Engineering_Presentation (1).pptxSoftware_Engineering_Presentation (1).pptx
Software_Engineering_Presentation (1).pptx
 
SAP ABAP Latest Interview Questions with Answers by Garuda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda TrainingsSAP ABAP Latest Interview Questions with Answers by Garuda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda Trainings
 
Evolution of Patterns
Evolution of PatternsEvolution of Patterns
Evolution of Patterns
 
4 pillars of OOPS CONCEPT
4 pillars of OOPS CONCEPT4 pillars of OOPS CONCEPT
4 pillars of OOPS CONCEPT
 
Advanced Software Engineering.ppt
Advanced Software Engineering.pptAdvanced Software Engineering.ppt
Advanced Software Engineering.ppt
 

Más de Marco Brambilla

M.Sc. Thesis Topics and Proposals @ Polimi Data Science Lab - 2024 - prof. Br...
M.Sc. Thesis Topics and Proposals @ Polimi Data Science Lab - 2024 - prof. Br...M.Sc. Thesis Topics and Proposals @ Polimi Data Science Lab - 2024 - prof. Br...
M.Sc. Thesis Topics and Proposals @ Polimi Data Science Lab - 2024 - prof. Br...Marco Brambilla
 
Thesis Topics and Proposals @ Polimi Data Science Lab - 2023 - prof. Brambill...
Thesis Topics and Proposals @ Polimi Data Science Lab - 2023 - prof. Brambill...Thesis Topics and Proposals @ Polimi Data Science Lab - 2023 - prof. Brambill...
Thesis Topics and Proposals @ Polimi Data Science Lab - 2023 - prof. Brambill...Marco Brambilla
 
Hierarchical Transformers for User Semantic Similarity - ICWE 2023
Hierarchical Transformers for User Semantic Similarity - ICWE 2023Hierarchical Transformers for User Semantic Similarity - ICWE 2023
Hierarchical Transformers for User Semantic Similarity - ICWE 2023Marco Brambilla
 
Exploring the Bi-verse. A trip across the digital and physical ecospheres
Exploring the Bi-verse.A trip across the digital and physical ecospheresExploring the Bi-verse.A trip across the digital and physical ecospheres
Exploring the Bi-verse. A trip across the digital and physical ecospheresMarco Brambilla
 
Conversation graphs in Online Social Media
Conversation graphs in Online Social MediaConversation graphs in Online Social Media
Conversation graphs in Online Social MediaMarco Brambilla
 
Trigger.eu: Cocteau game for policy making - introduction and demo
Trigger.eu: Cocteau game for policy making - introduction and demoTrigger.eu: Cocteau game for policy making - introduction and demo
Trigger.eu: Cocteau game for policy making - introduction and demoMarco Brambilla
 
Generation of Realistic Navigation Paths for Web Site Testing using RNNs and ...
Generation of Realistic Navigation Paths for Web Site Testing using RNNs and ...Generation of Realistic Navigation Paths for Web Site Testing using RNNs and ...
Generation of Realistic Navigation Paths for Web Site Testing using RNNs and ...Marco Brambilla
 
Analyzing rich club behavior in open source projects
Analyzing rich club behavior in open source projectsAnalyzing rich club behavior in open source projects
Analyzing rich club behavior in open source projectsMarco Brambilla
 
Analysis of On-line Debate on Long-Running Political Phenomena. The Brexit C...
Analysis of On-line Debate on Long-Running Political Phenomena.The Brexit C...Analysis of On-line Debate on Long-Running Political Phenomena.The Brexit C...
Analysis of On-line Debate on Long-Running Political Phenomena. The Brexit C...Marco Brambilla
 
Community analysis using graph representation learning on social networks
Community analysis using graph representation learning on social networksCommunity analysis using graph representation learning on social networks
Community analysis using graph representation learning on social networksMarco Brambilla
 
Available Data Science M.Sc. Thesis Proposals
Available Data Science M.Sc. Thesis Proposals Available Data Science M.Sc. Thesis Proposals
Available Data Science M.Sc. Thesis Proposals Marco Brambilla
 
Data Cleaning for social media knowledge extraction
Data Cleaning for social media knowledge extractionData Cleaning for social media knowledge extraction
Data Cleaning for social media knowledge extractionMarco Brambilla
 
Iterative knowledge extraction from social networks. The Web Conference 2018
Iterative knowledge extraction from social networks. The Web Conference 2018Iterative knowledge extraction from social networks. The Web Conference 2018
Iterative knowledge extraction from social networks. The Web Conference 2018Marco Brambilla
 
Driving Style and Behavior Analysis based on Trip Segmentation over GPS Info...
Driving Style and Behavior Analysis based on Trip Segmentation over GPS  Info...Driving Style and Behavior Analysis based on Trip Segmentation over GPS  Info...
Driving Style and Behavior Analysis based on Trip Segmentation over GPS Info...Marco Brambilla
 
Myths and challenges in knowledge extraction and analysis from human-generate...
Myths and challenges in knowledge extraction and analysis from human-generate...Myths and challenges in knowledge extraction and analysis from human-generate...
Myths and challenges in knowledge extraction and analysis from human-generate...Marco Brambilla
 
Harvesting Knowledge from Social Networks: Extracting Typed Relationships amo...
Harvesting Knowledge from Social Networks: Extracting Typed Relationships amo...Harvesting Knowledge from Social Networks: Extracting Typed Relationships amo...
Harvesting Knowledge from Social Networks: Extracting Typed Relationships amo...Marco Brambilla
 
Model-driven Development of User Interfaces for IoT via Domain-specific Comp...
Model-driven Development of  User Interfaces for IoT via Domain-specific Comp...Model-driven Development of  User Interfaces for IoT via Domain-specific Comp...
Model-driven Development of User Interfaces for IoT via Domain-specific Comp...Marco Brambilla
 
A Model-Based Method for Seamless Web and Mobile Experience. Splash 2016 conf.
A Model-Based Method for  Seamless Web and Mobile Experience. Splash 2016 conf.A Model-Based Method for  Seamless Web and Mobile Experience. Splash 2016 conf.
A Model-Based Method for Seamless Web and Mobile Experience. Splash 2016 conf.Marco Brambilla
 
Big Data and Stream Data Analysis at Politecnico di Milano
Big Data and Stream Data Analysis at Politecnico di MilanoBig Data and Stream Data Analysis at Politecnico di Milano
Big Data and Stream Data Analysis at Politecnico di MilanoMarco Brambilla
 
Web Science. An introduction
Web Science. An introductionWeb Science. An introduction
Web Science. An introductionMarco Brambilla
 

Más de Marco Brambilla (20)

M.Sc. Thesis Topics and Proposals @ Polimi Data Science Lab - 2024 - prof. Br...
M.Sc. Thesis Topics and Proposals @ Polimi Data Science Lab - 2024 - prof. Br...M.Sc. Thesis Topics and Proposals @ Polimi Data Science Lab - 2024 - prof. Br...
M.Sc. Thesis Topics and Proposals @ Polimi Data Science Lab - 2024 - prof. Br...
 
Thesis Topics and Proposals @ Polimi Data Science Lab - 2023 - prof. Brambill...
Thesis Topics and Proposals @ Polimi Data Science Lab - 2023 - prof. Brambill...Thesis Topics and Proposals @ Polimi Data Science Lab - 2023 - prof. Brambill...
Thesis Topics and Proposals @ Polimi Data Science Lab - 2023 - prof. Brambill...
 
Hierarchical Transformers for User Semantic Similarity - ICWE 2023
Hierarchical Transformers for User Semantic Similarity - ICWE 2023Hierarchical Transformers for User Semantic Similarity - ICWE 2023
Hierarchical Transformers for User Semantic Similarity - ICWE 2023
 
Exploring the Bi-verse. A trip across the digital and physical ecospheres
Exploring the Bi-verse.A trip across the digital and physical ecospheresExploring the Bi-verse.A trip across the digital and physical ecospheres
Exploring the Bi-verse. A trip across the digital and physical ecospheres
 
Conversation graphs in Online Social Media
Conversation graphs in Online Social MediaConversation graphs in Online Social Media
Conversation graphs in Online Social Media
 
Trigger.eu: Cocteau game for policy making - introduction and demo
Trigger.eu: Cocteau game for policy making - introduction and demoTrigger.eu: Cocteau game for policy making - introduction and demo
Trigger.eu: Cocteau game for policy making - introduction and demo
 
Generation of Realistic Navigation Paths for Web Site Testing using RNNs and ...
Generation of Realistic Navigation Paths for Web Site Testing using RNNs and ...Generation of Realistic Navigation Paths for Web Site Testing using RNNs and ...
Generation of Realistic Navigation Paths for Web Site Testing using RNNs and ...
 
Analyzing rich club behavior in open source projects
Analyzing rich club behavior in open source projectsAnalyzing rich club behavior in open source projects
Analyzing rich club behavior in open source projects
 
Analysis of On-line Debate on Long-Running Political Phenomena. The Brexit C...
Analysis of On-line Debate on Long-Running Political Phenomena.The Brexit C...Analysis of On-line Debate on Long-Running Political Phenomena.The Brexit C...
Analysis of On-line Debate on Long-Running Political Phenomena. The Brexit C...
 
Community analysis using graph representation learning on social networks
Community analysis using graph representation learning on social networksCommunity analysis using graph representation learning on social networks
Community analysis using graph representation learning on social networks
 
Available Data Science M.Sc. Thesis Proposals
Available Data Science M.Sc. Thesis Proposals Available Data Science M.Sc. Thesis Proposals
Available Data Science M.Sc. Thesis Proposals
 
Data Cleaning for social media knowledge extraction
Data Cleaning for social media knowledge extractionData Cleaning for social media knowledge extraction
Data Cleaning for social media knowledge extraction
 
Iterative knowledge extraction from social networks. The Web Conference 2018
Iterative knowledge extraction from social networks. The Web Conference 2018Iterative knowledge extraction from social networks. The Web Conference 2018
Iterative knowledge extraction from social networks. The Web Conference 2018
 
Driving Style and Behavior Analysis based on Trip Segmentation over GPS Info...
Driving Style and Behavior Analysis based on Trip Segmentation over GPS  Info...Driving Style and Behavior Analysis based on Trip Segmentation over GPS  Info...
Driving Style and Behavior Analysis based on Trip Segmentation over GPS Info...
 
Myths and challenges in knowledge extraction and analysis from human-generate...
Myths and challenges in knowledge extraction and analysis from human-generate...Myths and challenges in knowledge extraction and analysis from human-generate...
Myths and challenges in knowledge extraction and analysis from human-generate...
 
Harvesting Knowledge from Social Networks: Extracting Typed Relationships amo...
Harvesting Knowledge from Social Networks: Extracting Typed Relationships amo...Harvesting Knowledge from Social Networks: Extracting Typed Relationships amo...
Harvesting Knowledge from Social Networks: Extracting Typed Relationships amo...
 
Model-driven Development of User Interfaces for IoT via Domain-specific Comp...
Model-driven Development of  User Interfaces for IoT via Domain-specific Comp...Model-driven Development of  User Interfaces for IoT via Domain-specific Comp...
Model-driven Development of User Interfaces for IoT via Domain-specific Comp...
 
A Model-Based Method for Seamless Web and Mobile Experience. Splash 2016 conf.
A Model-Based Method for  Seamless Web and Mobile Experience. Splash 2016 conf.A Model-Based Method for  Seamless Web and Mobile Experience. Splash 2016 conf.
A Model-Based Method for Seamless Web and Mobile Experience. Splash 2016 conf.
 
Big Data and Stream Data Analysis at Politecnico di Milano
Big Data and Stream Data Analysis at Politecnico di MilanoBig Data and Stream Data Analysis at Politecnico di Milano
Big Data and Stream Data Analysis at Politecnico di Milano
 
Web Science. An introduction
Web Science. An introductionWeb Science. An introduction
Web Science. An introduction
 

Último

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Software engineering: design for reuse

  • 1. http://www.slideshare.net/mbrambil http://home.dei.polimi.it/mbrambil http://twitter.com/MarcoBrambi SOFTWARE REUSE AND DESIGN FOR REUSE Marco Brambilla
  • 2. Context of the Lesson  Prerequisites  Objectoriented programming  Software engineering basics (UML, patterns, ...)
  • 3. Agenda  Introduction to reuse  Benefits and issues for reuse  Levels of reuse  System  Architecture  Design  Implementation  Some details on design
  • 4. Introduction  Definition of reuse  Design for reuse and reuse of design  Purpose and state of the practice  in other disciplines  in software engineering
  • 5. Benefits of software reuse Benefit Explanation Increased Reused software has been tried and tested dependability in working systems Reduced process The cost and risk of existing software is risk already known Effective use of reusable software encapsulates their specialists knowledge Accelerated both development and validation time may development be reduced
  • 6. Problems with reuse Problem Explanation Increased reused elements of the system may become maintenance costs increasingly incompatible with system changes Not-invented-here Companies rewrite components because they syndrome believe they can improve on them or because they feel they must own them. Creating, Generality of components doesn’t come for free. maintaining, and Development processes have to be adapted using a component library Finding and Software components have to be discovered in a understanding library, understood and, sometimes, adapted components Understanding Reused elements always come with prerequisites the applicability application field must comply with
  • 7. The 4 layers of reuse 4. Whole system Configuration and BlackBox reuse of Config. applications 3. (Macro-, System-, Enterprise-, Global-) Reuse of application Architecture Frameworks frameworks, middleware, services 2. Design (micro architecture) Reuse of designs and Patterns object and function reuse components 1. Implementation Reuse of classes and methods Programming
  • 8. 4. Approaches supporting reuse at system level  Software product lines  COTS (Commercial, off-the-shelf) product reuse  Configurable vertical applications  ERP (Enterprise Resource Planning) systems
  • 9. 3. Approaches supporting reuse at architecture level  Architectural patterns standard sw architectures  Application frameworks classes at system level  Legacy system wrapping interfaces to old code  Service-oriented systems shared (third-party) services
  • 10. 2. Reuse at design level  Objectorientation object design and development  Design patterns reusable software solutions  Model-driven engineering models and transformations  Aspect-oriented software development perspectives  Component-based development cbse, component-model
  • 11. 1. Approaches supporting reuse at implementation level  Program libraries, APIs set of reusable artefacts  Program generators code generators
  • 12. [D] Reuse at design level  Mix of design best practices  Not granted by the (design or coding) language  ... but: some paradigms may help in the job  Objectorientation object design and development  Design patterns reusable software solutions  Model-driven engineering models and transformations  Aspect-oriented software development perspectives  Component-based development cbse, component-model
  • 13. [D1] OO Principles orient to reuse  Open/close principle  Software entities should be open for extension but closed for modifications.  Dependency inversion  High-level modules should not depend on low-level modules. Both should depend on abstractions.  Abstractions should not depend on details. Details should depend on abstractions.  Interface segregation principle  Clients should not be forced to depend on/ implement interfaces that they don't use.  Single responsibility – separation of concerns  A class should have only one reason to change  Substitution (Liskov)  If a program is using a Base class, then the reference to the Base class can be replaced with a Derived class without affecting the overall functionality
  • 14. [D1] Object orientation for reuse Encapsulation, modularization, and inheritance : the main reuse features of OO that support reuse Component Package
  • 15. [D1] Encapsulation Encapsulation: to expose only enough of a module to allow other modules to make use of it. You can syntactically seal off implementation details, leading to more flexibility and maintainability in your system. Every time an item is designed as private (restricted), it encompasses potential for reuse and redefinition. Every item of the system can change independently, no impact to the other modules.
  • 16. [D1] Modularization Components, Interfaces, packages: basic mechanisms that ONLY aim at modularization (and thus reuse)  Components allow system to be assembled from binary replaceable elements  A component is physical – bits, not concepts (Iike classes)  A component provides the realization of a set of interfaces.  A component can be replaced by any other component(s) that conforms to the interfaces.  A component is part of a system.
  • 17. Example [D1] Modularization example simulation.exe Render.java IRender LightModel IModels ILighting Environment
  • 18. Example [D1] Packaging example
  • 19. [D1] Overriding and Overloading Overriding, overloading, and polimorphism are the concrete mechanisms for reuse based on inheritance Overriding, or hiding, is when you have a method with the same name and parameters as in a superclass  the rest of the superclass is reused Overloading is when you have multiple methods of the same name, but with different parameter lists.  the object is more likely to be reused
  • 20. [D1] Polymorphism (Many Forms!) Polymorphism is when objects of various types define a common interface of operations for users.  users can share usage, although at runtime instances of different types can be bound  Literally means many forms  Can submit/use an instance of a subclass when a super type is expected  Reference and object can be different  Arguments and return types can be polymorphic
  • 21. [D1] What does OO bring you?  Avoid duplicate code  Define a common API (protocol or contract) for a group of classes  Change in one place  Can override methods if more specific behavior is needed  Code doesn’t need changing when new sub  You can extend and change behavior, even if you don't have source code
  • 22. Example [D1] What’s going to get printed? public class Animal { public static void hide() { System.out.format(“Hide animal."); } public static void main(…) { public void override() { Cat myCat = new Cat(); System.out.format(“Override Animal."); } Animal myAnimal = myCat; } //myAnimal.hide(); //Bad style! Animal.hide(); //Better! myAnimal.override(); } public class Cat extends Animal { } public static void hide() { System.out.format(“Hide Cat."); } public void override() { System.out.format(“Override Cat."); } }
  • 23. Example [D1] The answer  The Cat class overrides the instance method in Animal called override and hides the class method in Animal called hide  For class methods, the runtime system invokes the method defined in the compile-time type of the reference  For instance methods, the runtime system invokes the method defined in the runtime type of the reference  The hide method in Animal.  The override method in Cat.
  • 24. [D2] Design patterns  A design pattern is a reusable solution to a recurrent problem  Software design patterns are based (somehow) on work by the architect Christopher Alexander  A design pattern captures design expertise – not created but abstracted from existing design examples  Using design patterns is reuse of design expertise  Design patterns provide a vocabulary for talking about design
  • 25. [D2] How patterns arise Problem Forces Solution Benefits Consequences Related Patterns
  • 26. [D2] Patterns vs. “design”  Patterns are design  But: patterns transcend the “identify classes and associations” approach to design  Instead: learn to recognize patterns in the problem space and translate to the solution
  • 27. Example [D2] Composite pattern  Construct part-whole hierarchy  Simplify client interface to leaves/composites  Easier to add new kinds of components 0..* Client Component Operation() Add(Component) Remove(Component) children Leaf Composite Operation() Operation() Add(Component) Remove(Component) For all c in children c.Operation();
  • 28. Example [D2] Composite pattern  Example: figures in a structured graphics toolkit Controller 0..* 0..* View Figure children paint() translate() getBounds() LabelFigure BasicFigure CompositeFigure parent paint() paint() paint() addFigure(Figure) removeFigure(Figure) For all c in children c.paint();
  • 29. For your reference Creational Design Patterns Manage the way objects are created  Singleton - Ensures that only one instance of a class is created and Provides a global access point to the object.  Factory(Simplified version of Factory Method) - Creates objects without exposing the instantiation logic to the client and Refers to the newly created object through a common interface.  Factory Method - Defines an interface for creating objects, but let subclasses to decide which class to instantiate and Refers to the newly created object through a common interface.  Abstract Factory - Offers the interface for creating a family of related objects, without explicitly specifying their classes.  Builder - Defines an instance for creating an object but letting subclasses decide which class to instantiate and Allows a finer control over the construction process.  Prototype - Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.  Object Pool - reuses and shares objects that are expensive to create..
  • 30. For your reference Structural Design Patterns Define structures of objects and classes that can work together and define how the relations can be defined between entities.  Adapter - Convert the interface of a class into another interface clients expect. Adapter lets classes work together, that could not otherwise because of incompatible interfaces.  Bridge - Compose objects into tree structures to represent part-whole hierarchies.  Composite - Compose objects into tree structures to represent part- whole hierarchies. / Composite lets clients treat individual objects and compositions of objects uniformly.  Decorator - add additional responsibilities dynamically to an object.  Flyweight - use sharing to support a large number of objects that have part of their internal state in common where the other part of state can vary.  Memento - capture the internal state of an object without violating encapsulation and thus providing a mean for restoring the object into initial state when needed.  Proxy - provide a “Placeholder” for an object to control references to it.  Facade - unified interface to a complex system.
  • 31. For your reference Behavioural Design Patterns Define the interactions and behaviours of classes  Chain of Responsibiliy - It avoids attaching the sender of a request to its receiver, giving this way other objects the possibility of handling the request too. The objects become parts of a chain and the request is sent from one object to another across the chain until one of the objects will handle it.  Command - Encapsulate a request in an object, Allows the parameterization of clients with different requests and Allows saving the requests in a queue.  Interpreter - Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language / Map a domain to a language, the language to a grammar, and the grammar to a hierarchical object-oriented design  Iterator - Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.  Mediator - Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.
  • 32. For your reference Behavioural Design Patterns Define the interactions and behaviours of classes  Observer - Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.  Strategy - Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.  Template Method - Define the skeleton of an algorithm in an operation, deferring some steps to subclasses / Template Method lets subclasses redefine certain steps of an algorithm without letting them to change the algorithm's structure.  Visitor - Represents an operation to be performed on the elements of an object structure / Visitor lets you define a new operation without changing the classes of the elements on which it operates.  Null Object - Provide an object as a surrogate for the lack of an object of a given type. / The Null Object Pattern provides intelligent do nothing behavior, hiding the details from its collaborators.
  • 33. References  Ian Sommerville. Software Engineering, Addison Wesley  Martin Fowler et al. Refactoring: Improving the Design of Existing Code, Addison Wesley  Ivar Jacobson et al. Software Reuse: Architecture, Process and Organization for Business Success, Addison Wesley  E. Gamma, R. Helm, R. Johnson, H. Vlissides (“the gang of four”), Design Patterns, Addison-Wesley
  • 34. Further readings  Diomidis Spinellis, Cracking Software Reuse, IEEE Software, 2007  David A. Wheeler, Free-Libre / Open Source Software (FLOSS) is Commercial Software, web, 2009  Frakes, W.B. and Kyo Kang. Software Reuse Research: Status and Future, IEEE TSE, 2005  ...