Génie Logiciel et Gestion de Projets. Patterns
|
|
|
- Elfreda Fleming
- 10 years ago
- Views:
Transcription
1 Génie Logiciel et Gestion de Projets Patterns 1
2 Alexander s patterns Christoffer Alexander The Timeless Way of Building, Christoffer Alexander, Oxford University Press, 1979, ISBN Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without doing it the same way twice Alexander uses this as part of the solution to capture the quality without a name 2
3 Illustrating Recurring Patterns... 3
4 Essential Elements in a Pattern Pattern name Increase of design vocabulary Problem description When to apply it, in what context to use it Solution description (generic!) The elements that make up the design, their relationships, responsibilities, and collaborations Consequences Results and trade-offs of applying the pattern 4
5 Roadmap Patterns in different contexts: design patterns analysis patterns architectural patterns reengineering patterns 5
6 Alert! Do not overreact seeing all these patterns! Do not apply too many patterns! Look at the trade-offs! Most patterns makes systems more complex! but address a certain need. As always: do good modeling. then see whether patterns can help, and where. 6
7 Design Patterns
8 Design Patterns A Design Pattern is a pattern that captures a solution to a recurring design problem It is not a pattern for implementation problems It is not a ready-made solution that has to be applied cfr Rational Modeler, where patterns are available as preconstructed class diagrams, even though in literature the class diagrams are to illustrate the pattern! 8
9 Design Patterns Example: We are implementing a drawing application. The application allows the user to draw several kinds of figures (circles, squares, lines, polymorphs, bezier splines). It also allows to group these figures (and ungroup them later). Groups can then be moved around and are treated like any other figure. Look at Composite Design Pattern 9
10 Patterns in Software Design A design pattern is a description of communicating objects and classes that are customized to solve a general design problem in a particular context. 10
11 Pattern structure A design pattern is a kind of blueprint Consists of different parts All of these parts make up the pattern! When we talk about the pattern we therefore mean all of these parts together not only the class diagram... 11
12 Why Patterns? Smart Elegant solutions that a novice would not think of Generic Independent on specific system type, language Allthough slightly biased towards C++ Well-proven Successfully tested in several systems Simple Combine them for more complex solutions 12
13 Design Patterns in Smalltalk MVC Model/View/Control is a triad of classes used to build interactive user interfaces in Smalltalk-80 Model: the application objects View: a screen presentation of application objects Controller: how the system reacts to user input 3 well known design patterns appear: Observer: MVC decouples views and models by establishing a subscribe/ notify protocol between them. Composite: MVC supports nested views. Strategy: MVC encapsulates the response mechanism to user input in a controller object and allows to associate a controller with a view 13
14 MVC example 14
15 Relationships in MVC View model Model controller dependents model view Controller 15
16 Categories of Design Patterns Creational Patterns Instantiation and configuration of classes and objects Structural Patterns usage of classes and objects in larger structures, separation of interfaces and implementation. Behavioural Patterns Algorithms and division of responsibility 16
17 Design Pattern Relationships 17
18 Design Patterns: Behavioural Patterns
19 Behavioural Patterns 11 patterns Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor 19
20 Observer Pattern Intent: Assume a one to many relationship between objects, when one changes the dependents must be updated 20
21 Observer Pattern: Structure 21
22 Applying the Observer When reading the intent and need minimal and abstract coupling between Subject and Observer... So all our problems are solved, no? Well... mapping subjects to their observers who triggers the updates encapsulating complex update semantics the pull and push model 22
23 Observer Discussions Mapping subjects to their observer: the Subject keeps explicit references to the Observers it should notify or some associative lookup (e.g. a hash table) is installed; memory/time trade off must be made Who triggers the updates : have all state changing operations on Subject call notify after the subject s state is changed; make clients responsible for calling notify at the right time; 23
24 Observer Discussions Avoiding observer-specific update protocols, the pull and the push model: In the push model the Subject sends its Observers detailed information on what is changed; In the pull model the Subject sends nothing but the most minimal notification and the Observers ask for details explicitly; Encapsulate complex update semantics: install an explicit change manager that manages the Subject-Observer relationships and defines a particular update strategy. 24
25 25
26 Strategy Pattern Intent: Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it. 26
27 Strategy Pattern: Structure 27
28 Applying the Strategy Many different classes differ only in their behavior; using Strategy provides a way to configure a class with one of many behaviors Many different variants of an algorithm are needed; using Strategy the variants can be implemented as a class hierarchy of algorithms The algorithms use data that clients should not know about; using Strategy avoids exposing complex, algorithm specific data 28
29 Advanced Strategy Pattern Discussions + Hierarchies of Strategy classes define a family of algorithms or behaviors to reuse: Inheritance can factor out common functionality of the algorithms + It is an alternative to subclassing: using a hierarchy of Context classes to implement the variations in behavior. The behavior is not hard-wired in the context so the algorithm can vary independently of the Context. + It is an alternative to using conditional statements for selecting desired behavior + Can offers a choice of implementations for the same behavior (e.g. space and time tradeoffs) 29
30 Advanced Strategy Pattern Discussions - Clients must be aware of different Strategies. The clients must understand the difference amongst what is offered to be able to select the appropriate one. Therefore the pattern should only be used when the variation in algorithm (implementation) is relevant for the client. - There is some communication overhead between Strategy and Context. Strategy defines a (general) interface. Many of the simpler algorithms will not need all the information that is passed. - The number of objects in the application increases. Sometimes this overhead can be reduced when ConcreteStrategies can be implemented by stateless objects that can be shared. 30
31 Visitor Pattern Intent: Represent an operation to be performed on the elements of an object structure in a class separate from the elements themselves. Visitor lets you define a new operation without changing the classes of the elements on which it operates. 31
32 The Visitor Pattern: Structure Client AbstractVisitor visitelementa: visitelementb: Visitor1 visitelementa: visitelementb: Visitor1 visitelementa: visitelementb: AbstractElement acceptvisitor: ElementA acceptvisitor: operationa ElementB acceptvisitor: operationb avisitor visitelementa: self avisitor visitelementb: self 32
33 Applying the Visitor When reading the intent and seeing the structure we can use the visitor in our design... So all our problems are solved, no? Well... when to use a visitor control over item traversal choosing the granularity of visitor methods implementation tricks 33
34 When to use a Visitor Use a Visitor: when the operations on items change a lot. Do not use a visitor: when the items you want to visit change a lot. Question: But how do we know what to choose up-front? 34
35 Advanced Visitor Discussions When looking more closely at the visitor and its implementation, we can discuss a number of things in more detail: Who controls the traversal? Implementation tricks 35
36 Controlling the traversal Somewhere in the visitor, items are traversed. Different places where the traversal can be implemented: in the visitor on the items hierarchy 36
37 Traversal on the Visitor Number acceptvisitor:... Expression acceptvisitor: Plus acceptvisitor:... Operation left right acceptvisitor:... Times acceptvisitor:... Printer visitnumber: visitoperation: visitplus: visittimes: Visitor visitnumber: visitoperation: visitplus: visittimes: Evaluator visitnumber: visitoperation: visitplus: visittimes: avisitor visitplus: self aplus left acceptvisitor: self. self printplus. aplus right acceptvisitor: self. l r l := aplus left acceptvisitor: self. r := aplus right acceptvisitor: self. ^l + r 37
38 Traversel on the items Number acceptvisitor:... Expression acceptvisitor: Plus acceptvisitor:... Operation left right acceptvisitor:... Times acceptvisitor:... Printer visitnumber: visitoperation: visitplus: visittimes: Visitor visitnumber: visitoperation: visitplus: visittimes: Evaluator numberstack visitnumber: visitoperation: visitplus: visittimes: ^self sumstack self left visit: avisitor. self right visit: avisitor. avisitor visitplus: self. self push: anumber 38
39 Implementation tricks You can implement it as we have shown before. But notice the general structure of the methods! This can be taken as advantage: code can be generated for a visitor. the method can be performed/invoked But take care: only works when there is a full correspondence. can make the code hard to understand. 39
40 Using #perform: ^avisitor perform: ('visit', self class name, ':') assymbol with: self... Number Expression acceptvisitor:... Plus Operation left right Times Printer visitnumber: visitoperation: visitplus: visittimes: Visitor visitnumber: visitoperation: visitplus: visittimes: Evaluator visitnumber: visitoperation: visitplus: visittimes: 40
41 Design Patterns: Structural Patterns
42 Structural Patterns 7 patterns Adapter Bridge Composite Decorator Facade Flyweight Proxy 42
43 Composite Pattern Intent: Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. 43
44 The Composite Pattern Structure 44
45 When to use a Composite? you want to represent part-whole hierarchies of objects you want clients to be able to ignore the difference between compositions of objects and individual objects. Clients will treat all objects in the composite structure uniformly. 45
46 Composite Pattern: Participants Component: declares the interface for objects in the composition implements default behavior for the interface common to all objects declares an interface for accessing and managing child components (optional) defines/implements an interface for accessing a component s parent Leaf: defines behavior for primitive objects in the composition 46
47 Composite Pattern: Participants Composite: defines behavior for components having children stores child components implements child access and management operations in the component interface Client: manipulates objects in the composition through the component interface 47
48 48
49 Composite Pattern: Collaboration Clients use the Component class interface to interact with objects in the composition If the recipient is a Leaf, the request is handled directly If the recipient is a Composite the request is usually forwarded to child components, some additional operations before and/or after the forwarding can happen 49
50 Composite Pattern: Consequences + Makes the Client simple: clients can treat composite structures and individual objects uniformly, clients normally don t know and should not care whether they are dealing with a leaf or a composite + Makes it easier to add new types of components: client code works automatically with newly defined Composite or Leaf subclasses - Can make a design overly general: the disadvantage of making it easy to add new components is that it is difficult to restrict the components of a composite, sometimes you want a composite to have only certain types of children, with the Composite Patterns you cannot rely on the type system to enforce this for you, you have to implement and use run-time checks 50
51 Advanced Composite Discussions When looking more closely at the composite and its implementation, we can discuss a number of things in more detail: Who is in charge of child management? Do we need explicit parent references? 51
52 Child Management Where to define the child management operations? Defining these operations at the root of the class hierarchy gives transparency because you can treat all components uniformly. It costs safety because any attempt to remove or add object from leaves give compilation errors. But loss of transparency because leaves and composites have different interfaces. this must be captured in a default implementation: do nothing or throw error??? 52
53 Child Management The datastructure for storing children a variety of datastructures is available: lists, trees, arrays, hash tables, the choice depends on efficiency; alternatively each child can be kept in a separate instance variable, all access and management operations must then be implemented on each Composite subclass Child ordering: when child order is an issue the child access and management interface must be designed carefully to manage this sequence 53
54 Parent References Maintaining references from child components to their parents: simplify traversal and management of composite structures; are best defined in the Component class; it is essential to maintain the invariant that all children of a composite have as their parent the composite that in turn has them as children. 54
55 Decorator Pattern Intent: Attach additional responsibilities tot an object dynamically instead of relying on subclassing to extend functionality. (cf. Wrapper) 55
56 Decorator Pattern: Structure 56
57 57
58 Implementation Tricks Interface conformance. A decorator object's interface must conform to the interface of the component it decorates Omit the abstract Decorator class when only one extra responsibility is needed. Keep Component class lightweight. Focus on interface not storing data. Definition of data representation should be deferred to subclasses. Changing the skin of an object versus changing its guts (Decorator pattern versus Strategy pattern) 58
59 59
60 Design Patterns Creational Patterns
61 Creational Patterns 5 patterns Abstract Factory Builder Factory Method Prototype Singleton 61
62 Abstract Factory Intent: Provide an Interface for creating families of related or dependent objects without specifying their concrete classes 62
63 Abstract Factory: Structure 63
64 Abstract Factory: Participants AbstractFactory declares an interface for operations that create abstract product objects ConcreteFactory implements the operations to create concrete product objects AbstractProduct declares an interface for a type of product object 64
65 Abstract Factory: Participants ConcreteProduct defines a product object to be created by the corresponding concrete factory; implements the AbstractProduct interface Client uses only interfaces declared by AbstractProduct and AbstractFactory 65
66 Abstract Factory Pattern 66
67 Abstract Factory: Consequences + Isolates concrete classes: the AbstractFactory encapsulates the responsibility and the process to create product objects, it isolates clients from implementation classes; clients manipulate instances through their abstract interfaces, the product class names do not appear in the client code + Makes exchanging product families easy: the ConcreteFactory class appears only once in an application -that is, where it is instantiated- so it is easy to replace; because the abstract factory creates an entire family of products the whole product family changes at once 67
68 Abstract Factory: Consequences + Promotes consistency between products: when products in a family are designed to work together it is important for an application to use objects from one family only; the abstract factory pattern makes this easy to enforce +- Supporting new types of products is difficult: extending abstract factories to produce new kinds of products is not easy because the set of Products that can be created is fixed in the AbstractFactory interface; supporting new kinds of products requires extending the factory interface which involves changing the AbstractFactory class and all its subclasses 68
69 Defining Extensible Factories a more flexible but less safe design is to provide AbstractFactory with a single make function that takes as a parameter (a class identifier, a string) the kind of object to create is easier to realise in a dynamically typed language than in a statically typed language because of the return type of this make operation 69
70 Analysis Patterns
71 Analysis Patterns Reusable Object Models Groups of concepts that represent common construction in business modelling relevant to one domain or spanning many domains conceptual models -> about the business!! Domains considered: health care, accountability, trading, planning, etc. Pattern format: context/problem/solutions, make it work, when to use it. 71
72 Account Pattern Collect together related accounting entries and provide summarizing behaviour. Accounts: personal bank accounts, project cost accounts, What is an account? container of entries plus behaviour the history of some value tying together all the elements of an entry that describe the kind of entry it is. 72
73 Account balance balance(daterange) withdrawals(daterange) deposits(daterange) 1 * Entry * Entry * 1 * 1 Customer Location 1 Entry Type 73
74 Account balance balance(daterange) withdrawals(daterange) deposits(daterange) 1 * Entry 1 Customer Entry * 1 * Account * 1 Location * 1 Entry Type 73
75 Account Pattern Making it work: Two essential qualities keeping a collection of entries, providing summarizing information over those entries. large amount of entries optimize calculation, cache value, no details required: replace by a single entry When to use it? need of current value, historical values and keep a history of changes to that value, pull together all the entries for a common set of descriptors. 74
76 Architectural Patterns
77 Architectural Patterns Architectural patterns often dictate a particular high-level, modular system decomposition. context/problem/solution triplet consequences!! Differ from Design Patterns they act more like blueprints Some are widely accepted layered architecture pipes and filters architecture Improve -ility s! 76
78 Layered Architecture A layered system divides a system in layers each layer: provides services to layers above requires services from layer below The connectors are defined by the protocols that determine how layers will interact Examples: layered communication protocols, operating systems 77
79 Layered system graphically Usually invocations Usefull Systems Base Utility Core Level Composites of various Users elements 78
80 Layered Systems Discussion Pros increasing level of abstraction support enhancement & support reuse Cons not always applicable performance penalties 79
81 Pipes and Filters Architecture Filter reads from input & writes to output stream incrementally transforms input to output So output begins for input is complete! are independent (no sharing of state) Examples: Unix shell, compilers, DSP, functional programming 80
82 Pipes and Filters graphically 81
83 Pipes And Filters Discussion Pros understand overall behavior a composition of individual filter behaviors support enhancement & reuse specialized analysis possible Cons lead to batch processing (interactivity problems) synchronization problems 82
84 Plugin plugin is a program that interacts with a host application provides certain, usually very specific, function on demand. reasons: enable third-party developers to create capabilities to extend an application to support features yet unforeseen separate source code from an application because of incompatible software licenses. 83
85 Plugin Examples clients use plugins to decrypt and encrypt . Graphics software use plugins to support file formats and process images (Adobe Photoshop). Media players use plugins to support file formats and apply filters (e.g. Winamp) to support programming languages. (e.g. Eclipse) Web Browsers use plugins to play video and Software development environments use plugins presentation formats (e.g., Flash, QuickTime) 84
86 Plugin Discussion Pros host application is independent of the plugins. plugins can be added and updated dynamically without changing the host application Cons plugins depend on the services of the host application 85
87 How not to use patterns Do not apply patterns indiscriminately Flexibility and variability is achieved at a cost typically extra indirections can complicate design or cost performance Only apply when flexibility is needed do not overdesign your application Study the trade-off issue for each pattern for more information!! 86
88 Wrap-up Architectures "can't be made, but only generated, indirectly, by the ordinary actions of the people, just as a flower cannot be made, but only generated from the seed." (Alexander) patterns describe such building blocks applying them implicitly changes the overall structure (architecture) whether it is on classes, business concepts, components,... 87
89 Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Design Patterns, Addison Wesley, Reading, MA, Frank Buschmann, et al., Pattern-Oriented Software Architecture A System of Patterns, Wiley, 1996 Serge Demeyer, Stéphane Ducasse and Oscar Nierstrasz, Object-Oriented Reengineering Patterns, Morgan-Kaufmann, 2002 Martin Fowler. Analysis Patterns, Reusable Object Models. Addison Wesley, References 88
90 References Special issue on Software Patterns, IEEE Software, volume 24, number 4, July/August P. Avgeriou and U. Zdun, Architectural Patterns Revisited - A Pattern Language. Proceedings of 10th European Conference on Pattern Languages of Programs (EuroPLoP), 2005, pp
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying
Patterns in Software Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 7 GoV Patterns Architectural Part 1 1 GoV Patterns for Software Architecture According to Buschmann et al.: A pattern for software architecture
Structural Design Patterns Used in Data Structures Implementation
Structural Design Patterns Used in Data Structures Implementation Niculescu Virginia Department of Computer Science Babeş-Bolyai University, Cluj-Napoca email address: [email protected] November,
Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note
Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note Text book of CPET 545 Service-Oriented Architecture and Enterprise Application: SOA Principles of Service Design, by Thomas Erl, ISBN
ABSTRACT FACTORY AND SINGLETON DESIGN PATTERNS TO CREATE DECORATOR PATTERN OBJECTS IN WEB APPLICATION
ABSTRACT FACTORY AND SINGLETON DESIGN PATTERNS TO CREATE DECORATOR PATTERN OBJECTS IN WEB APPLICATION Vijay K Kerji Department of Computer Science and Engineering, PDA College of Engineering,Gulbarga,
Architectural Patterns. Layers: Pattern. Architectural Pattern Examples. Layer 3. Component 3.1. Layer 2. Component 2.1 Component 2.2.
Architectural Patterns Architectural Patterns Dr. James A. Bednar [email protected] http://homepages.inf.ed.ac.uk/jbednar Dr. David Robertson [email protected] http://www.inf.ed.ac.uk/ssp/members/dave.htm
Design Patterns. Advanced Software Paradigms (A. Bellaachia) 1
Design Patterns 1. Objectives... 2 2. Definitions... 3 2.1. What is a Pattern?... 3 2.2. Categories of Patterns... 4 3. Pattern Characteristics [Buschmann]:... 5 4. Essential Elements of a Design Pattern
Génie Logiciel et Gestion de Projets. Evolution
Génie Logiciel et Gestion de Projets Evolution 1 Roadmap Evolution: definitions Re-engineering Legacy systems Reverse engineering Software Visualisation Re-engineering Patterns 2 Evolution: Definitions
Designing and Writing a Program DESIGNING, CODING, AND DOCUMENTING. The Design-Code-Debug Cycle. Divide and Conquer! Documentation is Code
Designing and Writing a Program DESIGNING, CODING, AND DOCUMENTING Lecture 16 CS2110 Spring 2013 2 Don't sit down at the terminal immediately and start hacking Design stage THINK first about the data you
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Chapter 1 Fundamentals of Java Programming
Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The
Software Life-Cycle Management
Ingo Arnold Department Computer Science University of Basel Theory Software Life-Cycle Management Architecture Styles Overview An Architecture Style expresses a fundamental structural organization schema
An Automatic Reversible Transformation from Composite to Visitor in Java
An Automatic Reversible Transformation from Composite to Visitor in Java Akram To cite this version: Akram. An Automatic Reversible Transformation from Composite to Visitor in Java. CIEL 2012, P. Collet,
ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS
ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS Lech MADEYSKI *, Michał STOCHMIAŁEK Abstract. Architectural design is about decisions which influence characteristics of arising system e.g. maintainability
Design Patterns. Design patterns are known solutions for common problems. Design patterns give us a system of names and ideas for common problems.
Design Patterns Design patterns are known solutions for common problems. Design patterns give us a system of names and ideas for common problems. What are the major description parts? Design Patterns Descriptions
Managing Variability in Software Architectures 1 Felix Bachmann*
Managing Variability in Software Architectures Felix Bachmann* Carnegie Bosch Institute Carnegie Mellon University Pittsburgh, Pa 523, USA [email protected] Len Bass Software Engineering Institute Carnegie
CMSC 132: Object-Oriented Programming II. Design Patterns I. Department of Computer Science University of Maryland, College Park
CMSC 132: Object-Oriented Programming II Design Patterns I Department of Computer Science University of Maryland, College Park Design Patterns Descriptions of reusable solutions to common software design
Architecture Design & Sequence Diagram. Week 7
Architecture Design & Sequence Diagram Week 7 Announcement Reminder Midterm I: 1:00 1:50 pm Wednesday 23 rd March Ch. 1, 2, 3 and 26.5 Hour 1, 6, 7 and 19 (pp.331 335) Multiple choice Agenda (Lecture)
GenericServ, a Generic Server for Web Application Development
EurAsia-ICT 2002, Shiraz-Iran, 29-31 Oct. GenericServ, a Generic Server for Web Application Development Samar TAWBI PHD student [email protected] Bilal CHEBARO Assistant professor [email protected] Abstract
The Phases of an Object-Oriented Application
The Phases of an Object-Oriented Application Reprinted from the Feb 1992 issue of The Smalltalk Report Vol. 1, No. 5 By: Rebecca J. Wirfs-Brock There is never enough time to get it absolutely, perfectly
A Brief Analysis of Web Design Patterns
A Brief Analysis of Web Design Patterns Ginny Sharma M.Tech Student, Dept. of CSE, MRIU Faridabad, Haryana, India Abstract Design patterns document good design solutions to a recurring problem in a particular
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6
The Researches on Unified Pattern of Information System Deng Zhonghua,Guo Liang,Xia Yanping School of Information Management, Wuhan University Wuhan, Hubei, China 430072 Abstract: This paper discusses
MiniDraw Introducing a framework... and a few patterns
MiniDraw Introducing a framework... and a few patterns What is it? [Demo] 2 1 What do I get? MiniDraw helps you building apps that have 2D image based graphics GIF files Optimized repainting Direct manipulation
Design Patterns. V22.0474-001 Software Engineering Lecture 8. Adapted from Prof. Necula CS 169, Berkeley 1
Design Patterns V22.0474-001 Software Engineering Lecture 8 1 How Do We Design Software? We all understand Algorithms Data structures Classes When describing a design, algorithms/data structures/classes
How To Design Your Code In Php 5.5.2.2 (Php)
By Janne Ohtonen, August 2006 Contents PHP5 Design Patterns in a Nutshell... 1 Introduction... 3 Acknowledgments... 3 The Active Record Pattern... 4 The Adapter Pattern... 4 The Data Mapper Pattern...
Web Application Architectures
Web Engineering Web Application Architectures Copyright 2013 Ioan Toma & Srdjan Komazec 1 Where we are? # Date Title 1 5 th March Web Engineering Introduction and Overview 2 12 th March Requirements Engineering
Architectural Patterns (3)
Scatter/Gather Architectural Patterns (3) Prof. Cesare Pautasso http://www.pautasso.info [email protected] @pautasso Goal: send the same message to multiple recipients which will (or may) reply to
Encapsulating Crosscutting Concerns in System Software
Encapsulating Crosscutting Concerns in System Software Christa Schwanninger, Egon Wuchner, Michael Kircher Siemens AG Otto-Hahn-Ring 6 81739 Munich Germany {christa.schwanninger,egon.wuchner,michael.kircher}@siemens.com
PATTERN-ORIENTED ARCHITECTURE FOR WEB APPLICATIONS
PATTERN-ORIENTED ARCHITECTURE FOR WEB APPLICATIONS M. Taleb, A. Seffah Human-Centred Software Engineering Group Concordia University, Montreal, Quebec, Canada Phone: +1 (514) 848 2424 ext 7165 and/or ext
Software Refactoring using New Architecture of Java Design Patterns
Software Refactoring using New Architecture of Java Design Patterns Norddin Habti, Prashant 1, 1 Departement d informatique et de recherche operationnelle, Universite de Montreal, Quebec, Canada (Dated:
Service-Oriented Architecture and Software Engineering
-Oriented Architecture and Software Engineering T-86.5165 Seminar on Enterprise Information Systems (2008) 1.4.2008 Characteristics of SOA The software resources in a SOA are represented as services based
Guiding Principles for Modeling and Designing Reusable Services
Guiding Principles for Modeling and Designing Reusable Services Max Dolgicer Managing Director International Systems Group, Inc. [email protected] http://www.isg-inc.com Agenda The changing notion
Pattern. seconda parte. Types of patterns. ...other good guidance... some GRASP. design patterns (software design) Types of software patterns
rel. 1.7 Università di Padova Facoltà di Scienze MM.FF.NN Informatica - anno 2008-09 Corso di Ingegneria del Software Pattern seconda parte Renato Conte - Pattern II- 1/48 - Types of software patterns
Software Engineering
Software Engineering Lecture 06: Design an Overview Peter Thiemann University of Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Software Engineering SWT 1 / 35 The Design Phase Programming in
Information Systems Analysis and Design CSC340. 2004 John Mylopoulos. Software Architectures -- 1. Information Systems Analysis and Design CSC340
XIX. Software Architectures Software Architectures UML Packages Client- vs Peer-to-Peer Horizontal Layers and Vertical Partitions 3-Tier and 4-Tier Architectures The Model-View-Controller Architecture
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
The Command Dispatcher Pattern
The Command Dispatcher Pattern Can also be called: Command Evaluator Pattern. Benoit Dupire and Eduardo B Fernandez {[email protected], [email protected]} Department of Computer Science and Engineering.
Introduction. Observation Patterns. Accounting Patterns. How to use Patterns
Analysis Martin Fowler fowler@acm acm.org http://ourworld ourworld.compuserve.com/homepages/martin_fowler Page Martin Fowler 9//99 What we will cover Introduction Observation Accounting How to use Page
Business Modeling with UML
Business Modeling with UML Hans-Erik Eriksson and Magnus Penker, Open Training Hans-Erik In order to keep up and be competitive, all companies Ericsson is and enterprises must assess the quality of their
Client-Server Architecture & J2EE Platform Technologies Overview Ahmed K. Ezzat
Client-Server Architecture & J2EE Platform Technologies Overview Ahmed K. Ezzat Page 1 of 14 Roadmap Client-Server Architecture Introduction Two-tier Architecture Three-tier Architecture The MVC Architecture
A Meeting Room Scheduling Problem
A Scheduling Problem Objective Engineering, Inc. 699 Windsong Trail Austin, Texas 78746 512-328-9658 FAX: 512-328-9661 [email protected] http://www.oeng.com Objective Engineering, Inc., 1999-2007. Photocopying,
Design Patterns for Managing Product Lifecycle Information
Design Patterns for Managing Product Lifecycle Information Introduction Kary Främling, Timo Ala-Risku, Mikko Kärkkäinen, Jan Holmström The increasing demands on product lifecycle management means that
Aspect-Oriented Programming
Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering
Systems Integration: Co C mp m onent- t bas a e s d s o s ftw ft a w r a e r e ngin i eeri r n i g
Systems Integration: Component-based software engineering Objectives To explain that CBSE is concerned with developing standardised components and composing these into applications To describe components
Business-Driven Software Engineering Lecture 3 Foundations of Processes
Business-Driven Software Engineering Lecture 3 Foundations of Processes Jochen Küster [email protected] Agenda Introduction and Background Process Modeling Foundations Activities and Process Models Summary
Architecture. Reda Bendraou reda.bendraou{{@}}lip6.fr http://pagesperso-systeme.lip6.fr/reda.bendraou/
Architecture Reda Bendraou reda.bendraou{{@}}lip6.fr http://pagesperso-systeme.lip6.fr/reda.bendraou/ Some slides were adapted from L. Osterweil, B. Meyer, and P. Müller material Reda Bendraou LI386-S1
Aerospace Software Engineering
16.35 Aerospace Software Engineering Software Architecture The 4+1 view Patterns Prof. Kristina Lundqvist Dept. of Aero/Astro, MIT Why Care About Software Architecture? An architecture provides a vehicle
Application of MVC Platform in Bank E-CRM
Application of MVC Platform in Bank E-CRM Liancai Hao (School of Management, Harbin Institute of Technology, Harbin P. R. China 150001) [email protected] Abstract Customer relationship management (CRM)
Applying Design Patterns in Distributing a Genetic Algorithm Application
Applying Design Patterns in Distributing a Genetic Algorithm Application Nick Burns Mike Bradley Mei-Ling L. Liu California Polytechnic State University Computer Science Department San Luis Obispo, CA
ORACLE MOBILE APPLICATION FRAMEWORK DATA SHEET
ORACLE MOBILE APPLICATION FRAMEWORK DATA SHEET PRODUCTIVE ENTERPRISE MOBILE APPLICATIONS DEVELOPMENT KEY FEATURES Visual and declarative development Mobile optimized user experience Simplified access to
CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
Service Oriented Architecture 1 COMPILED BY BJ
Service Oriented Architecture 1 COMPILED BY BJ CHAPTER 9 Service Oriented architecture(soa) Defining SOA. Business value of SOA SOA characteristics. Concept of a service, Enterprise Service Bus (ESB) SOA
A First Set of Design Patterns for Algorithm Animation
Fifth Program Visualization Workshop 119 A First Set of Design Patterns for Algorithm Animation Guido Rößling CS Department, TU Darmstadt Hochschulstr. 10 64289 Darmstadt, Germany [email protected] Abstract
Patterns in a Nutshell
Patterns in a Nutshell http://www.enteract.com/~bradapp/ January 27, 1998 Patterns in a Nutshell Page 2 of 12 Trendy: Literary: 1.0 What are Patterns? Recent hot topic, OOD buzzword, lots of hype! Form
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS David L. Spooner Computer Science Department Rensselaer Polytechnic Institute Troy, New York 12180 The object-oriented programming
The Service Revolution software engineering without programming languages
The Service Revolution software engineering without programming languages Gustavo Alonso Institute for Pervasive Computing Department of Computer Science Swiss Federal Institute of Technology (ETH Zurich)
Engineering Design. Software. Theory and Practice. Carlos E. Otero. CRC Press. Taylor & Francis Croup. Taylor St Francis Croup, an Informa business
Software Engineering Design Theory and Practice Carlos E. Otero CRC Press Taylor & Francis Croup Boca Raton London New York CRC Press is an imprint of the Taylor St Francis Croup, an Informa business AN
Stock Trader System. Architecture Description
Stock Trader System Architecture Description Michael Stevens [email protected] http://www.mestevens.com Table of Contents 1. Purpose of Document 2 2. System Synopsis 2 3. Current Situation and Environment
I219 Software Design Methodology
I219 Software Design Methodology JAIST Master s Program Fall 2014 Nguyen Van Vu [email protected] Topics Course Introduction Objectives and Scope Evaluation Policies Content and Schedule Basic Concepts
Architecture for a Massively Multiplayer Online Role Playing Game Engine
Architecture for a Massively Multiplayer Online Role Playing Game Engine Sergio Caltagirone [email protected] Bryan Schlief [email protected] Matthew Keys [email protected] Mary Jane Willshire, PhD [email protected]
Client-server 3-tier N-tier
Web Application Design Notes Jeff Offutt http://www.cs.gmu.edu/~offutt/ SWE 642 Software Engineering for the World Wide Web N-Tier Architecture network middleware middleware Client Web Server Application
A Review of an MVC Framework based Software Development
, pp. 213-220 http://dx.doi.org/10.14257/ijseia.2014.8.10.19 A Review of an MVC Framework based Software Development Ronnie D. Caytiles and Sunguk Lee * Department of Multimedia Engineering, Hannam University
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
SAPM Overview. Semester Summary. Project management. Tools (1) Dr. James A. Bednar
SAPM Overview Semester Summary Dr. James A. Bednar [email protected] http://homepages.inf.ed.ac.uk/jbednar In this lecture we review the topics we have covered this semester, focusing on what I consider
SOFT 437. Software Performance Analysis. Ch 5:Web Applications and Other Distributed Systems
SOFT 437 Software Performance Analysis Ch 5:Web Applications and Other Distributed Systems Outline Overview of Web applications, distributed object technologies, and the important considerations for SPE
Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1
Design with Reuse Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1 Objectives To explain the benefits of software reuse and some reuse
A MODEL OF HETEROGENEOUS DISTRIBUTED SYSTEM FOR FOREIGN EXCHANGE PORTFOLIO ANALYSIS
UDC: 004.42 Original scientific paper A MODEL OF HETEROGENEOUS DISTRIBUTED SYSTEM FOR FOREIGN EXCHANGE PORTFOLIO ANALYSIS Dragutin Kermek 1, Tomislav Jakupi 2, Neven Vr ek 1 1 University of Zagreb,Faculty
WebObjects Web Applications Programming Guide. (Legacy)
WebObjects Web Applications Programming Guide (Legacy) Contents Introduction to WebObjects Web Applications Programming Guide 6 Who Should Read This Document? 6 Organization of This Document 6 See Also
Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces
Software Engineering, Lecture 4 Decomposition into suitable parts Cross cutting concerns Design patterns I will also give an example scenario that you are supposed to analyse and make synthesis from The
Composing Concerns with a Framework Approach
Composing Concerns with a Framework Approach Constantinos A. Constantinides 1,2 and Tzilla Elrad 2 1 Mathematical and Computer Sciences Department Loyola University Chicago [email protected] 2 Concurrent
JOURNAL OF OBJECT TECHNOLOGY
JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2009 Vol. 8, No. 5, July-August 2009 The Application of Design Patterns to Develop
View Controller Programming Guide for ios
View Controller Programming Guide for ios Contents About View Controllers 10 At a Glance 11 A View Controller Manages a Set of Views 11 You Manage Your Content Using Content View Controllers 11 Container
Web Presentation Layer Architecture
Chapter 4 Web Presentation Layer Architecture In this chapter we provide a discussion of important current approaches to web interface programming based on the Model 2 architecture [59]. From the results
Computing Concepts with Java Essentials
2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
How To Use The Command Pattern In Java.Com (Programming) To Create A Program That Is Atomic And Is Not A Command Pattern (Programmer)
CS 342: Object-Oriented Software Development Lab Command Pattern and Combinations David L. Levine Christopher D. Gill Department of Computer Science Washington University, St. Louis levine,[email protected]
Design Patterns for Games
Design Patterns for Games Dung ( Zung ) Nguyen and Stephen B. Wong Dept. of Computer Science Rice University Houston, TX 77005 [email protected], [email protected] Abstract Designing a two-person game involves
Core J2EE Patterns, Frameworks and Micro Architectures
Core J2EE Patterns, Frameworks and Micro Architectures [email protected] Patterns & Design Expertise Center Sun Software Services January 2004 Agenda Patterns Core J2EE Pattern Catalog Background J2EE
Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53
Preface xvi Part I Introduction and System Engineering 1 Chapter 1 Introduction 2 1.1 What Is Software Engineering? 2 1.2 Why Software Engineering? 3 1.3 Software Life-Cycle Activities 4 1.3.1 Software
Introduction to Patterns and Frameworks
Patterns and Frameworks Introduction to Patterns and Frameworks Professor Department of EECS [email protected] Vanderbilt University www.cs.wustl.edu/schmidt/ (615) 343-8197 Motivation for Patterns
In: Proceedings of RECPAD 2002-12th Portuguese Conference on Pattern Recognition June 27th- 28th, 2002 Aveiro, Portugal
Paper Title: Generic Framework for Video Analysis Authors: Luís Filipe Tavares INESC Porto [email protected] Luís Teixeira INESC Porto, Universidade Católica Portuguesa [email protected] Luís Corte-Real
Xcode Project Management Guide. (Legacy)
Xcode Project Management Guide (Legacy) Contents Introduction 10 Organization of This Document 10 See Also 11 Part I: Project Organization 12 Overview of an Xcode Project 13 Components of an Xcode Project
Static Analysis and Validation of Composite Behaviors in Composable Behavior Technology
Static Analysis and Validation of Composite Behaviors in Composable Behavior Technology Jackie Zheqing Zhang Bill Hopkinson, Ph.D. 12479 Research Parkway Orlando, FL 32826-3248 407-207-0976 [email protected],
PERFORMANCE MONITORING OF JAVA COMPONENT-ORIENTED DISTRIBUTED APPLICATIONS
PERFORMANCE MONITORING OF JAVA COMPONENT-ORIENTED DISTRIBUTED APPLICATIONS Adrian Mos, John Murphy Performance Engineering Lab, Dublin City University Glasnevin, Dublin 9, Ireland Tel: +353 1 700-8762,
Button, Button, Whose got the Button?
,, Whose got the?,, Whose got the? (Patterns for breaking client/server relationships) By Robert C. Martin Introduction How many design patterns does it take to turn on a table lamp? This question was
