Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. Architecture Natty Gur
  2. 2. Introductions <ul><li>Enterprise architecture </li></ul><ul><ul><li>Actually 5 different but tightly couple architectures </li></ul></ul><ul><ul><ul><li>Business. </li></ul></ul></ul><ul><ul><ul><li>Application (our main focus) . </li></ul></ul></ul><ul><ul><ul><li>Software. </li></ul></ul></ul><ul><ul><ul><li>framework </li></ul></ul></ul><ul><ul><ul><li>Technological </li></ul></ul></ul><ul><ul><li>Analyze against several view points (matrix) : </li></ul></ul><ul><ul><ul><li>Enterprise </li></ul></ul></ul><ul><ul><ul><li>Information. </li></ul></ul></ul><ul><ul><ul><li>Componential. </li></ul></ul></ul><ul><ul><ul><li>Engineering </li></ul></ul></ul><ul><ul><ul><li>Technical. </li></ul></ul></ul>
  3. 3. Introductions <ul><li>Enterprise architecture framework </li></ul><ul><ul><li>Set of methodologies, frameworks in frameworks and practical guide to create architecture. </li></ul></ul><ul><ul><li>Frameworks: </li></ul></ul><ul><ul><ul><li>TOGAF </li></ul></ul></ul><ul><ul><ul><ul><li>URL : http:// www.opengroup.org/architecture/togaf / . </li></ul></ul></ul></ul><ul><ul><ul><li>RM-ODP </li></ul></ul></ul><ul><ul><ul><ul><li>URL : http://www.enterprise-architecture.info/EA_Standards.htm & Books </li></ul></ul></ul></ul><ul><ul><ul><li>Zachman </li></ul></ul></ul><ul><ul><ul><ul><li>URL : http://www.zifa.com/ </li></ul></ul></ul></ul>
  4. 4. Introductions <ul><li>Software/Application Architecture are: </li></ul><ul><ul><li>Set of rules to define software/s building blocks, relations between those blocks, there position over the enterprise and which kind of blocks to use: </li></ul></ul><ul><ul><ul><li>Of the shelf. </li></ul></ul></ul><ul><ul><ul><li>Reusing. </li></ul></ul></ul><ul><ul><ul><li>Developing. </li></ul></ul></ul><ul><li>Architecture main guiding points are: </li></ul><ul><ul><li>Coherent with enterprise goals (driven and NOT leading). </li></ul></ul><ul><ul><li>Abstraction. </li></ul></ul><ul><ul><li>Loosely coupled. </li></ul></ul>
  5. 5. Enterprise continuum <ul><li>Database of available architectures and patterns whether used or unused in your enterprise. </li></ul><ul><ul><li>Add metadata such as : </li></ul></ul><ul><ul><ul><li>Add by (who can I ask questions). </li></ul></ul></ul><ul><ul><ul><li>Implement by systems. </li></ul></ul></ul><ul><ul><ul><li>Link to any sources. </li></ul></ul></ul><ul><ul><li>Add draw (one picture worth …) </li></ul></ul><ul><li>Should be use when creating Architecture to reuse existing resources. </li></ul><ul><li>I’ll open wiki/site for that purpose, details - blog. </li></ul>
  6. 6. Enterprise continuum – partly list <ul><li>System structure </li></ul><ul><ul><li>Layers. </li></ul></ul><ul><ul><li>Hexagonal. </li></ul></ul><ul><ul><li>Naked objects. </li></ul></ul><ul><ul><li>Entity oriented. </li></ul></ul><ul><ul><li>Pluggable. </li></ul></ul><ul><ul><li>SOA. </li></ul></ul><ul><li>Domain Logic </li></ul><ul><ul><li>Transaction script. </li></ul></ul><ul><ul><li>Table module. </li></ul></ul><ul><ul><li>Domain model. </li></ul></ul><ul><ul><li>Service layer. </li></ul></ul><ul><li>DB mapping </li></ul><ul><ul><li>Row gateway. </li></ul></ul><ul><ul><li>Table gateway. </li></ul></ul><ul><ul><li>Active Record. </li></ul></ul><ul><ul><li>Mapping. </li></ul></ul><ul><ul><li>Lazy load. </li></ul></ul><ul><li>Presentation </li></ul><ul><ul><li>MVC – MVC II. </li></ul></ul><ul><ul><li>Front controller. </li></ul></ul><ul><ul><li>Page controller. </li></ul></ul><ul><ul><li>Application controller. </li></ul></ul><ul><li>State management </li></ul><ul><ul><li>Server. </li></ul></ul><ul><ul><li>Client. </li></ul></ul><ul><ul><li>Database. </li></ul></ul><ul><ul><li>Hosted network node. </li></ul></ul><ul><li>Business transactions </li></ul><ul><ul><li>Optimistic. </li></ul></ul><ul><ul><li>Pessimistic. </li></ul></ul><ul><ul><li>Crouse-grained. </li></ul></ul><ul><ul><li>Implicit. </li></ul></ul><ul><li>Storing objects in DB </li></ul><ul><ul><li>Single table. </li></ul></ul><ul><ul><li>Concrete </li></ul></ul><ul><ul><li>Table. </li></ul></ul><ul><ul><li>Double. </li></ul></ul>
  7. 7. Glorious days of layers <ul><li>Concept – Systems building from components. </li></ul><ul><li>Motivation – separation of components by functionality for maintains and reuse. </li></ul><ul><li>Description – </li></ul><ul><ul><li>Ordering components in layer. </li></ul></ul><ul><ul><li>Each inner layer should be called by outer layer. </li></ul></ul><ul><ul><li>No direct call to inner layer. </li></ul></ul><ul><li>(Layer vis Tier). </li></ul><ul><li>Advantage – </li></ul><ul><ul><li>easy to follow. </li></ul></ul><ul><ul><li>Split system into well define behavioral components. </li></ul></ul><ul><li>Problems – </li></ul><ul><ul><li>how to access inner layer (for debugging purpose). </li></ul></ul><ul><ul><li>How to enable unknown consumers to call system (System of systems). </li></ul></ul>
  8. 8. Hexagon Architecture <ul><li>Concept – UI/DAL aren’t always the “external” layers. </li></ul><ul><li>Motivation – No more layers. Every system “service” might use or call domain logic </li></ul><ul><li>Description – domain exist in the center and can be access by or access any “external services” via transformers. </li></ul><ul><li>Advantage – </li></ul><ul><ul><li>More flexible. </li></ul></ul><ul><ul><li>Suite system of systems. </li></ul></ul><ul><li>Problems – </li></ul><ul><ul><li>not imposing strict system flow. </li></ul></ul><ul><ul><li>Takes time to get. </li></ul></ul>
  9. 9. Entity oriented Architecture <ul><li>Concept – Enterprise domain build from Information entity. </li></ul><ul><li>Motivation – Enable SOS that integrate UI,BL and DA. </li></ul><ul><li>Description – Entity expose services. Once certain services call the flow is strict as in layers. </li></ul><ul><li>Advantage – </li></ul><ul><ul><li>Combination of Layers and Hexagonal advantage. </li></ul></ul><ul><ul><li>Helps system 80% maintains. </li></ul></ul><ul><li>Problems – Hard to implement. </li></ul>UI BL X DA gateway
  10. 10. Naked objects <ul><li>Concept – Defining system flow and logic in advance is wrong! </li></ul><ul><li>Motivation – enable sequence less systems for maximum user flexibility. </li></ul><ul><li>Description – creating just classes. Framework enable the user to create objects from classes and act upon them. </li></ul><ul><li>Advantage – Flexible!!! </li></ul><ul><li>Problems – demand Infrastructure. </li></ul>
  11. 11. Naked objects - Demo
  12. 12. Pluggable architecture <ul><li>Concept – systems create from components therefore can be assemble dynamically. </li></ul><ul><li>Motivation – Creating easy to change and maintain systems. </li></ul><ul><li>Description – Every connection between components depend on Interface. Component call others by global name. External definitions (XML) set which actual class will be call for given global name. Or external file set which components will be load at system load. </li></ul><ul><li>Advantage – </li></ul><ul><ul><li>enable easily component replacing. </li></ul></ul><ul><ul><li>Enable assembling dynamic systems (versions). </li></ul></ul><ul><li>Problems – demand work. </li></ul>
  13. 13. Pluggable architecture - Demo
  14. 14. Domain Logic <ul><li>Transaction script. </li></ul><ul><ul><li>Every transaction with all of activities in one function. </li></ul></ul><ul><ul><li>Advantage : Easy to create. </li></ul></ul><ul><ul><li>Disadvantage : duplicate code, problematic with complex logic. </li></ul></ul>
  15. 15. Domain Logic <ul><li>Domain model.. </li></ul><ul><ul><li>OO reflection of logic and data. </li></ul></ul><ul><ul><li>Advantage : most flexible and feet complex logic. </li></ul></ul><ul><ul><li>Disadvantage : Lots of work (design and mapping) </li></ul></ul><ul><ul><li>Simple & complex </li></ul></ul><ul><ul><li>Store in OODB or session. </li></ul></ul>
  16. 16. Domain Logic <ul><li>Table module. </li></ul><ul><ul><li>Reflection of DB. Every table has class that handle table activities. </li></ul></ul><ul><ul><li>Advantage : well adopted in .NET. </li></ul></ul><ul><ul><li>Disadvantage : Can’t deal properly with complex logic. Less easy to maintain code (Flexible). </li></ul></ul>
  17. 17. Domain Logic <ul><li>Service layer. </li></ul><ul><ul><li>Handle application flow. </li></ul></ul><ul><ul><li>Exposing one interface of services to the outside world. </li></ul></ul><ul><ul><li>Advantage : callers not need to know inner system implementation. Easier to control outer request that required several actions in domain logic </li></ul></ul>
  18. 18. Mapping to DB <ul><li>Table gateway. </li></ul><ul><ul><li>Mapping DB table to domain logic class. </li></ul></ul><ul><ul><li>Hides SQL in one place. </li></ul></ul><ul><ul><li>Stateless, just push data back and forth. </li></ul></ul><ul><ul><li>Returning map, value object, record set (.Net). </li></ul></ul>
  19. 19. Mapping to DB <ul><li>Row gateway. </li></ul><ul><ul><li>Mapping each table row to dedicate object. </li></ul></ul><ul><ul><li>Row gateway class handle just DB actions. </li></ul></ul><ul><ul><li>Mixing DB access with logic more complex to test and maintain. </li></ul></ul><ul><ul><li>Usually finder class added. </li></ul></ul><ul><ul><li>Convert data source types to in memory types. </li></ul></ul>
  20. 20. Mapping to DB <ul><li>Active record. </li></ul><ul><ul><li>Record mapping and logic exist in one class. </li></ul></ul><ul><ul><li>Fit for simple domain model. </li></ul></ul>
  21. 21. Mapping to DB <ul><li>Mapping. </li></ul><ul><ul><li>Special class to translate DB data to domain logic OO structure. </li></ul></ul><ul><ul><li>Collection and inheritance for example. </li></ul></ul><ul><ul><li>Data classes are ignorance of data source, complete de-coupling. </li></ul></ul><ul><ul><li>COMPLICATED! Use ORM tools. </li></ul></ul>
  22. 22. Domain Logic & DB mapping sample <ul><li>word processors, databases, and spreadsheets revenue calculation. </li></ul>
  23. 23. OO structure to DB <ul><li>Single table inheritance. </li></ul><ul><li>Concrete table inheritance. </li></ul><ul><li>Class table inheritance. </li></ul><ul><li>Double mapping. </li></ul>
  24. 24. Presentation <ul><li>Page controller </li></ul><ul><li>Front controller </li></ul><ul><li>Application controller </li></ul><ul><li>MVC </li></ul>
  25. 25. Object-Relational Behavioural Patterns <ul><li>Unit of work: keep track of changes. </li></ul><ul><ul><li>caller registration. </li></ul></ul><ul><ul><li>object registration. </li></ul></ul><ul><ul><li>unit of work controller. </li></ul></ul><ul><li>Lazy load. </li></ul><ul><ul><li>Initialization. </li></ul></ul><ul><ul><li>virtual proxy. </li></ul></ul><ul><ul><li>value holder. </li></ul></ul><ul><ul><li>ghost. </li></ul></ul><ul><li>Identity map. </li></ul>
  26. 26. Offline concurrency <ul><li>Optimistic lock. </li></ul><ul><li>Pessimistic lock. </li></ul><ul><li>Coarse-Grained Lock. </li></ul><ul><li>implicit </li></ul>
  27. 27. Books <ul><li>Pattern Oriented Software Architects POSA I – II (ISBN 0471958697 ,ISBN: 0471606952). </li></ul><ul><li>Patterns of Enterprise Application Architecture (ISBN-0-321-12742-0). </li></ul>