Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart.

Slides:



Advertisements
Similar presentations
Defining Decision Support System
Advertisements

An Approach to Wrap Legacy Applications into Web Services Wesal Al Belushi, Youcef Baghdadi Department of Computer Science, Sultan Qaboos University, Sultanate.
Systems Development Environment
CS487 Software Engineering Omar Aldawud
Key-word Driven Automation Framework Shiva Kumar Soumya Dalvi May 25, 2007.
Alternate Software Development Methodologies
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Team Skill 6 - Building The Right System Part 1: Applying Use Cases (Chapters of the requirements text) CSSE 371 Software Requirements and Specification.
Using SuperVISE for Software Design Validation III Peter Henderson and Bob Walters.
Software Architecture Patterns (2). what is architecture? (recap) o an overall blueprint/model describing the structures and properties of a "system"
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
Chapter 10: Architectural Design
CSC230 Software Design (Engineering)
Architecture, Implementation, and Testing Architecture and Implementation Prescriptive architecture vs. descriptive architecture Prescriptive architecture:
UNIT-V The MVC architecture and Struts Framework.
Architectural Design.
Data Access Patterns. Motivation Most software systems require persistent data (i.e. data that persists between program executions). In general, distributing.
Architecture of Enterprise Systems: Domain Model and Database layer
Chapter 10 Architectural Design
The Design Discipline.
A Scalable Application Architecture for composing News Portals on the Internet Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta Famagusta.
Chapter 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
What is Architecture  Architecture is a subjective thing, a shared understanding of a system’s design by the expert developers on a project  In the.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Todd Snyder Development Team Lead Infragistics Experience Design Group.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Building an Offline Smart Client using Domain-Driven Design Principles Tim McCarthy.
Using Business Scenarios for Active Loss Prevention Terry Blevins t
SOEN 6011 Software Engineering Processes Section SS Fall 2007 Dr Greg Butler
1 Another group of Patterns Architectural Patterns.
OBJECT ORIENTED SYSTEM ANALYSIS AND DESIGN. COURSE OUTLINE The world of the Information Systems Analyst Approaches to System Development The Analyst as.
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
A language to describe software texture in abstract design models and implementation.
Copyright © 1994 Carnegie Mellon University Disciplined Software Engineering - Lecture 3 1 Software Size Estimation I Material adapted from: Disciplined.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Spring 2009Computer Science Department, TUC-N Object Oriented Methods Architectural Patterns 3.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
Applying Domain-Driven Design Jimmy Nilsson Webcast with UML China
Disciplined Software Engineering Lecture #3 Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department.
Systems Analysis and Design in a Changing World, Fourth Edition
Requirements Engineering Southern Methodist University CSE 7316 – Chapter 3.
Geoffrey Duval (ISAE-SUPAERO) Naples, October 1 st, 2012.
1 CMPT 275 High Level Design Phase Modularization.
Foundations of Technology The Systems Model
SSQSA present and future Gordana Rakić, Zoran Budimac Department of Mathematics and Informatics Faculty of Sciences University of Novi Sad
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
SEA Side – Extreme Programming 1 SEA Side Software Engineering Annotations Architectural Patterns Professor Sara Stoecklin Director of Software Engineering-
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
TECHNICAL ASSISTANCE FOR THE CONVERSION OF RBPAPs INTO RBMPs DATA MANAGEMENT INCEPTION WORKSHOP ESTAMBUL February Eusebio CRUZ GARCÍA.
Chapter 9 Architectural Design. Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a software.
Introduction CSE 1310 – Introduction to Computers and Programming
Applied Software Implementation & Testing
CS & CS Capstone Project & Software Development Project
SOEN 343 Software Design Computer Science and Software Engineering Department Concordia University Fall 2005 Instructor: Patrice Chalin.
Enterprise Architecture Patterns
SOEN 343 Software Design Computer Science and Software Engineering Department Concordia University Fall 2005 Instructor: Patrice Chalin.
SOEN 343 Software Design Computer Science and Software Engineering Department Concordia University Fall 2004 Instructor: Patrice Chalin.
SOEN 343 Software Design Computer Science and Software Engineering Department Concordia University Fall 2004 Instructor: Patrice Chalin.
Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta
Chapter 9 Architectural Design.
Charles Tappert Seidenberg School of CSIS, Pace University
Developing and testing enterprise Java applications
SOEN 343 Software Design Computer Science and Software Engineering Department Concordia University Fall 2004 Instructor: Patrice Chalin.
Presentation transcript:

Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart Thiel February 11, 2010

2 Enterprise Application Design Patterns: Improved and Applied Outline A Brief Overview of Development Problems for Software Engineers A Progression Through Fowler’s Patterns Domain Objects and Improved Patterns Applying Patterns with the SoenEA Framework February 2010Stuart Thiel Outline

3 Enterprise Application Design Patterns: Improved and Applied Developers Work With Software Design Implement Test Maintain February 2010Stuart Thiel Developers Work With Software

4 Enterprise Application Design Patterns: Improved and Applied Developer Aids/Tools Programming Languages Integrated Development Environments Processes / Artifacts Patterns / Styles February 2010Stuart Thiel Developer Tools

5 Enterprise Application Design Patterns: Improved and Applied Problems Fowler describes architectural patterns, but no overall usage guidelines –High level patterns lack broad examples –Guidance on interrelation of patterns is sparse –Pattern theory / implementation separation ambiguous Cooking Analogy February 2010Stuart Thiel Problems

6 Enterprise Application Design Patterns: Improved and Applied Problems:: Few Simple Examples Trivial examples for Fowler’s patterns, usually covering only a piece of functionality February 2010Stuart Thiel P. Few Simple Examples

7 Enterprise Application Design Patterns: Improved and Applied Problems:: Interrelation Not Described Not usually covering more than one or two patterns at a time Discussion of interrelation limited February 2010Stuart Thiel P. Interrelation Not Described

8 Enterprise Application Design Patterns: Improved and Applied Problems:: Theory Mixes with Implementation, or is Kept Apart Lazy Load Unit of Work February 2010Stuart Thiel P. Theory Implementation

9 Enterprise Application Design Patterns: Improved and Applied Problems Summary The components of a solution are available We can readily identify patterns in existing software There is no description of what to do February 2010Stuart Thiel Problem Summary

10 Enterprise Application Design Patterns: Improved and Applied Solutions Review of Existing Patterns An Additional Patterns Refined Patterns SoenEA February 2010Stuart Thiel

11 Enterprise Application Design Patterns: Improved and Applied Existing Patterns Review of Existing Patterns Fowler identifies important patterns They need context wrt each other Transaction Script to complex Domain Model February 2010Stuart Thiel

12 Enterprise Application Design Patterns: Improved and Applied Additional Patterns Additional Pattern Domain Object Front Command Dispatcher List Proxy February 2010Stuart Thiel

13 Enterprise Application Design Patterns: Improved and Applied Refined Patterns:: Mappers Refined Patterns Data Mapper / Table Data Gateway –Input Mapper –Output Mapper –Table Data Gateway –Finder February 2010Stuart Thiel

14 Enterprise Application Design Patterns: Improved and Applied Refined Patterns:: Others Refined Patterns Front Controller Lazy Load Identity Map Unit of Work February 2010Stuart Thiel

15 Enterprise Application Design Patterns: Improved and Applied SoenEA:: advantages SoenEA help eliminate tedious tasks, help programmers to make fewer mistakes, and give guidance on proper practices. February 2010Stuart Thiel

16 Enterprise Application Design Patterns: Improved and Applied SoenEA:: provides SoenEA Patterns Utility components Default Implementations of Typical Components (DITCs) Test components February 2010Stuart Thiel

17 Enterprise Application Design Patterns: Improved and Applied SoenEA Summary Developers can use our contribution to build on their understanding of existing patterns They can use SoenEA to quickly develop software SoenEA is like a jigsaw puzzleSoenEA is like a jigsaw puzzle February 2010Stuart Thiel Summary February 2010Stuart Thiel

18 Enterprise Application Design Patterns: Improved and Applied Conclusion We have brought together a lot of other people’s good ideas Our approach has been used in commercial applications Our approach has allowed consistent and reliable development Our approach is readily communicable February 2010Stuart Thiel Conclusion

19 Enterprise Application Design Patterns: Improved and Applied Future Work Code Generation Testing Application Level Patterns Validator Pattern Refining Data Gateway Implementations Integration with other artefacts0 February 2010Stuart Thiel Future Work

20 Enterprise Application Design Patterns: Improved and Applied Thank You! Thank You

21 Enterprise Application Design Patterns: Improved and Applied

22 Enterprise Application Design Patterns: Improved and Applied

23 Enterprise Application Design Patterns: Improved and Applied

24 Enterprise Application Design Patterns: Improved and Applied An Analogy Software Development -> Cooking WEA Development -> Baking February 2010Stuart Thiel An Analogy

25 Enterprise Application Design Patterns: Improved and Applied An Analogy:: Styles Layered Style, Event-based Style, Process Control, Blackboard Cakes/Pizza, Cookies/Muffins, Souflé, Omlette/Pancake February 2010Stuart Thiel An Analogy:: Styles

26 Enterprise Application Design Patterns: Improved and Applied An Analogy:: Design Patterns Command, Factory, Adapter, Proxy Mixing, Chopping, Heating, Greasing, Measuring February 2010Stuart Thiel An Analogy:: Design Patterns

27 Enterprise Application Design Patterns: Improved and Applied An Analogy:: Architectural Patterns Lazy Load, Pessimistic Offline Lock, Unit Of Work Mixing Dry Ingredients vs. Wet, Checking That All Ingredients Are Available Before Starting, Preparing All Ingredients February 2010Stuart Thiel An Analogy:: Architectural Patterns

28 Enterprise Application Design Patterns: Improved and Applied An Analogy:: Frameworks Struts > Waffle Iron Hibernate -> Bread Maker February 2010Stuart Thiel Analogy:: Frameworks

29 Enterprise Application Design Patterns: Improved and Applied

30 Enterprise Application Design Patterns: Improved and Applied

31 Enterprise Application Design Patterns: Improved and Applied

32 Enterprise Application Design Patterns: Improved and Applied Cyclic Reference Where to solve it? –Input Mapper Common Alternatives –Loading other Domain Objects after February 2010Stuart Thiel Cyclic Reference Solution

33 Enterprise Application Design Patterns: Improved and Applied Cyclic Reference alternative Easy: February 2010Stuart Thiel

34 Enterprise Application Design Patterns: Improved and Applied public Person find(long id) { //Check Identity Map and return if found if(IdentityMap.has(id,Person.class)) return IdentityMap.get(id,Person.class); //Not in Identity Map ResultSet rs = PersonFinder.find(id); if(!rs.next) ;// Person p = new Person(id); UoW.getCurrent.registerClean(p); Person buddy = find(rs.getLong("buddy")); p.setBuddy(buddy); } February 2010Stuart Thiel

35 Enterprise Application Design Patterns: Improved and Applied Cyclic Reference alternative Harder February 2010Stuart Thiel

36 Enterprise Application Design Patterns: Improved and Applied public Person find(long id) { //Check Identity Map and return if found if(IdentityMap.has(id,Person.class)) return IdentityMap.get(id,Person.class); //Not in Identity Map ResultSet rs = PersonFinder.find(id); if(!rs.next) ;// Person p = new Person(id); UoW.getCurrent.registerClean(p); Pet pet = find(rs.getLong("pet")); p.setPet(pet); } February 2010Stuart Thiel

37 Enterprise Application Design Patterns: Improved and Applied Proxy public Person find(long id) { //Check Identity Map and return if found if(IdentityMap.has(id,Person.class)) return IdentityMap.get(id,Person.class); //Not in Identity Map ResultSet rs = PersonFinder.find(id); if(!rs.next) ;// Person p = new Person(id, new PersonProxy(rs.getLong("buddy"))); UoW.getCurrent.registerClean(p); } February 2010Stuart Thiel