Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

L23 Summary and Conclusions


Published on


Published in: Technology
  • Be the first to comment

  • Be the first to like this

L23 Summary and Conclusions

  1. 1. Lecture 23 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 Design Pattern Software Architecture Middleware Frameworks OO Programming
  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. “A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: a complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a simple system.” — John Gall, systems theorist
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. Three Layers  Presentation Layer for the User Interface  Domain Layer for the domain logic  Persistence Layer for the data access Remember the “role” – concern, in each layer
  15. 15. 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
  16. 16. 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
  17. 17. Considerations  Embrace new tools and techniques – These exist to help you – But be careful, don’t jump at everything – there is a cost  Use Tech Rader to evaluate – Example: ThoughtWorks Radar
  18. 18. Practical Considerations  Risk is in feature creep and things out of control
  19. 19. Practical Considerations  Solutions are designed and implemented according to time schedule and budget – Hardest part is management of people
  20. 20. Practical Considerations  Agile is an attempt to answer this Backlog Backlog ordered by Product Owner Sprint stories Daily Standup 1-2 week sprints Working Product Working Product Released
  21. 21. Tech Radar
  22. 22. Tech Radar ADOPT Start using when appropriate TRIAL Learn and try out to understand ASSESS Evaluate how this will impact the company HOLD Proceed with causion
  23. 23. Trends 2014  Churn in the JavaScript World – Rise of JavaScript libraries  Microservices and the Rise of the API – Importance of the APIs both within an organization and as a bridge to the outside world  Conway's Law – Ignoring this law is dangerous  Re-decentralization – Data and infrastructure
  24. 24. Future of Enterprise Software
  26. 26. Mainframes Mini computers DIVERGE Personal Computers Servers Laptops 2G Cell phones Clusters Smartphones Tablets Smart TV Wearable Cloud – utility computing Music player CONVERGE 1960 1970 1980 1990 2000 2010 Internet of things SaaS - APIs
  27. 27. Wearable Era
  28. 28. Internet of Things
  29. 29. Digital Online World Work More information Focused Browsing Consuming content Checking Mobile Now Consuming Video Information Real-time
  30. 30. 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
  31. 31. Challenges in Computing Hardware Connecting hardware Network Software 1980 1990 2000 Connecting software  Software and integration of components and devices are the challenges ahead  Cloud computing and ubiquity  Move to Service Oriented Architecture and APIs
  32. 32. Challenges in Computing Software Connecting software Mobility Wearables APIs, SaaS, real-time 2000 2010 2020  Multiple devices – anything can connect  Ability to predict – know the users  Data Analytics aka Big Data  Real-time streams
  33. 33. Hönnun og smíði hugbúnaðar 2014
  34. 34. 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
  35. 35. 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
  36. 36. Næst  Síðasti tími fyrir próf