Successfully reported this slideshow.

L14 Summary and Conclusions


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

L14 Summary and Conclusions

  1. 1. Lecture 14 Summary and Conclusions
  2. 2. “Advice is a dangerous gift” There are no right answers Use the advice to prod your thinking, but don’t use it as a replacement for your thinking And remember, architecture is not cast in stone
  3. 3. Building Enterprise Applications  Building computer systems is hard – As the complexity of the system gets greater, the task of building the software gets exponentially harder
  4. 4. Building Enterprise Applications  Building computer systems is hard Software Architecture Design Pattern OO Programming Middleware Frameworks
  5. 5. Building Enterprise Applications  Building computer systems is hard  But now when we know how to, it’s not that hard anymore
  6. 6. Goals of an Enterprise Architecture       Be robust Be performing and scalable Take advantage of OO design principles Avoid unnecessary complexity Be maintainable and extensible Be easy to test
  7. 7. Enterprise Systems  Building large multi-tier systems is done one line at a time – – – – – – – – Layering Clear interfaces Minimize dependencies Separation of concerns Object Oriented programming Design patterns Frameworks Testable code
  8. 8. Create Abstractions  Minimize dependence on subsystems – Must be easy to change • Gateway, Mapper, Service Stub  Abstract things that varies from what stays the same – Design principles • Factory, Plugin, Dependency Injections
  9. 9. Separation of Concerns One of the main challenge of frameworks is to provide separation of concerns Frameworks deal with generic functionality Frameworks need patterns to combine generic and domain specific functionality
  10. 10. Minimize dependencies  Be careful with dependencies – It is easy to create code where modules depend on other modules • Plugin, Factory, Service Layer, Separated Interface, Dependency Injection and Observer Pattern
  11. 11. Layering  Software systems can get complicated – Abstractions are needed  Provides abstraction by separating computer systems in layers – Higher layers use services from lower layers – Each layer has dedicated task and hides complexity from upper layers
  12. 12. The Three Layers  Presentation – User’s interface to the system – User can be another system – Accepts input, displays views  Domain – The Application of the system – The “Business logic” – Has the tendency to creep into other layers  Data Source – Connection to the database
  13. 13. Three Layers  Presentation Layer for the User Interface  Domain Layer for the domain logic  Persistence Layer for the data access
  14. 14. Considerations  Don’t overdesign! – User Interfaces are really difficult to make generic and reusable – If there is no need for extra layer, don’t have it – If you don’t need an interface, don’t have it  Don’t let frameworks rule you! – If you have to write code just to satisfy a framework, maybe there is another way – or fix the framework – Frameworks can overdo it
  15. 15. Considerations  Don’t overdo Configurations – Sometimes coding is better than config – Testing and debugging config is hard  Don’t be afraid to Refactor – You can always add another indirection – You can always add a new layer  Design Principles are good guidelines – Don’t be afraid to reevaluate them
  16. 16. Practical Considerations  Risk is in feature creep and things out of control
  17. 17. Practical Considerations  Solutions are designed and implemented according to time schedule and budget – Hardest part is management of people
  18. 18. Practical Considerations  Agile is an answer to this Daily Standup Sprint stories Backlog Backlog ordered by Product Owner Working Product 1-2 week sprints Working Product Released
  19. 19. Future of Enterprise Software
  21. 21. DIVERGE Smartphones Personal Computers Wearable Laptops Tablets Mini computers Internet of things 2G Cell phones Music player Smart TV Mainframes Servers Clusters SaaS - APIs Cloud – utility computing CONVERGE 1960 1970 1980 1990 2000 2010
  22. 22. Wearable Era
  23. 23. Digital Online World Work More information Focused Consuming Video Information Browsing Consuming content Checking Mobile Now Real-time
  24. 24. VIDEO BEFORE Video stores, late fees, clutter of DVDs NOW Any (almost) movie available anytime anywhere 25
  25. 25. COMPUTERS BEFORE NOW Desktops, clunky laptops Mobile, light, easy to carry 26
  26. 26. INTERFACE BEFORE NOW Keyboard, mouse Touch, voice, gesture 27
  27. 27. BOOKS BEFORE NOW Printed books, libraries, clutter of books Digital, online library, audiobooks
  28. 28. MAGAZINES BEFORE Printed, clutter NOW Digital, automatically delivered
  29. 29. MAPS BEFORE NOW Printed, maps, static and outdated Real-time, satnav, with directions, info
  30. 30. COOKBOOKS BEFORE Books with fixed units NOW Interactive, with variable units, video demos
  31. 31. OWNERLESS LIFESTYLE BEFORE NOW Own stuff, cluttered home Online stuff, renting, freedom
  32. 32. The Post-PC Era  The Personal Computer era is over – Rise of the network – APIs – Enterprise systems are accessible by consumers – New devices, mobile phone, ITV, game machines, MP3 players,... Source: (cc) 1998-2008 Digibarn Computer Museum, Source: Picture from Convergence Transforms Digital Home: Techno-Economic Impact
  33. 33. Challenges in Computing Hardware 1980 Connecting hardware Network 1990 Software Connecting software 2000  Software and integration of components and devices are the challenges ahead  Cloud computing and ubiquity  Move to Service Oriented Architecture and APIs
  34. 34. Challenges in Computing Software 2000     Connecting software 2010 Mobility Wearables APIs, SaaS, real-time 2020 Multiple devices – anything can connect Ability to predict – know the users Data Analytics aka Big Data Real-time streams
  35. 35. Objectives  Know the basics of software design and beautiful code  Understand and know how to use design patterns  Implement software framework with component reuse in mind
  36. 36. Objectives continued  Understand different software architectures and the different design choices  Understand Software Oriented Architecture (SOA) and Software as a Service (SaaS)  Understand the practices of how professional software is developed in the software industry
  37. 37. Lectures L01 Enterprise Application Architecture Introduction, 1 L02 Software Design L03 Design Patterns Introduction L04 Base Patterns 18 L05 Frameworks L06 Process Design L07 Organizing the Domain Layer 2, 9
  38. 38. Lectures L08 Mapping to Relational Databases 3, 10 L09 Behavioral Design 3, 11 L10 Web Presentation 4, 14 L11 Application Architecture 8 L12 Concurrent Programming 5, 16 L13 Session State and Distribution Strategies 6, 7, 15, 16 L14 Summary and Conclusions
  39. 39. Thank You! - Ólafur Andri
  40. 40. NEW TECHNOLOGY 2014, starts in January 2013 Course Description Trailer