SlideShare ist ein Scribd-Unternehmen logo
1 von 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
         ...

Weitere ähnliche Inhalte

Was ist angesagt?

Software engineering critical systems
Software engineering   critical systemsSoftware engineering   critical systems
Software engineering critical systemsDr. Loganathan R
 
Architecture business cycle
Architecture business cycleArchitecture business cycle
Architecture business cycleHimanshu
 
Architecture of Mobile Computing
Architecture of Mobile ComputingArchitecture of Mobile Computing
Architecture of Mobile ComputingJAINIK PATEL
 
SRS(software requirement specification)
SRS(software requirement specification)SRS(software requirement specification)
SRS(software requirement specification)Akash Kumar Dhameja
 
Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Drusilla918
 
distributed shared memory
 distributed shared memory distributed shared memory
distributed shared memoryAshish Kumar
 
Communication primitives
Communication primitivesCommunication primitives
Communication primitivesStudent
 
Estimating Software Maintenance Costs
Estimating Software Maintenance CostsEstimating Software Maintenance Costs
Estimating Software Maintenance Costslalithambiga kamaraj
 
Uml in software engineering
Uml in software engineeringUml in software engineering
Uml in software engineeringMubashir Jutt
 
2. Distributed Systems Hardware & Software concepts
2. Distributed Systems Hardware & Software concepts2. Distributed Systems Hardware & Software concepts
2. Distributed Systems Hardware & Software conceptsPrajakta Rane
 
Phased life cycle model
Phased life cycle modelPhased life cycle model
Phased life cycle modelStephennancy
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineeringDarshit Metaliya
 
Improving of software processes
Improving of software processesImproving of software processes
Improving of software processesREHMAT ULLAH
 
Software Process Improvement
Software Process ImprovementSoftware Process Improvement
Software Process ImprovementBilal Shah
 
Dynamic and Static Modeling
Dynamic and Static ModelingDynamic and Static Modeling
Dynamic and Static ModelingSaurabh Kumar
 
Software project management
Software project managementSoftware project management
Software project managementR A Akerkar
 
Packet switching
Packet switchingPacket switching
Packet switchingasimnawaz54
 
software cost factor
software cost factorsoftware cost factor
software cost factorAbinaya B
 

Was ist angesagt? (20)

Software engineering critical systems
Software engineering   critical systemsSoftware engineering   critical systems
Software engineering critical systems
 
Architecture business cycle
Architecture business cycleArchitecture business cycle
Architecture business cycle
 
Architecture of Mobile Computing
Architecture of Mobile ComputingArchitecture of Mobile Computing
Architecture of Mobile Computing
 
SRS(software requirement specification)
SRS(software requirement specification)SRS(software requirement specification)
SRS(software requirement specification)
 
Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...
 
distributed shared memory
 distributed shared memory distributed shared memory
distributed shared memory
 
Communication primitives
Communication primitivesCommunication primitives
Communication primitives
 
Estimating Software Maintenance Costs
Estimating Software Maintenance CostsEstimating Software Maintenance Costs
Estimating Software Maintenance Costs
 
Message passing in Distributed Computing Systems
Message passing in Distributed Computing SystemsMessage passing in Distributed Computing Systems
Message passing in Distributed Computing Systems
 
Uml in software engineering
Uml in software engineeringUml in software engineering
Uml in software engineering
 
2. Distributed Systems Hardware & Software concepts
2. Distributed Systems Hardware & Software concepts2. Distributed Systems Hardware & Software concepts
2. Distributed Systems Hardware & Software concepts
 
Phased life cycle model
Phased life cycle modelPhased life cycle model
Phased life cycle model
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineering
 
Waterfall model
Waterfall modelWaterfall model
Waterfall model
 
Improving of software processes
Improving of software processesImproving of software processes
Improving of software processes
 
Software Process Improvement
Software Process ImprovementSoftware Process Improvement
Software Process Improvement
 
Dynamic and Static Modeling
Dynamic and Static ModelingDynamic and Static Modeling
Dynamic and Static Modeling
 
Software project management
Software project managementSoftware project management
Software project management
 
Packet switching
Packet switchingPacket switching
Packet switching
 
software cost factor
software cost factorsoftware cost factor
software cost factor
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 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  ...