L14 Summary and Conclusions
Upcoming SlideShare
Loading in...5
×
 

L14 Summary and Conclusions

on

  • 375 views

 

Statistics

Views

Total Views
375
Views on SlideShare
373
Embed Views
2

Actions

Likes
0
Downloads
8
Comments
0

1 Embed 2

http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

L14 Summary and Conclusions L14 Summary and Conclusions Presentation Transcript

  • Lecture 14 Summary and Conclusions
  • “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
  • 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
  • Building Enterprise Applications  Building computer systems is hard Software Architecture Design Pattern OO Programming Middleware Frameworks
  • Building Enterprise Applications  Building computer systems is hard  But now when we know how to, it’s not that hard anymore
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Three Layers  Presentation Layer for the User Interface  Domain Layer for the domain logic  Persistence Layer for the data access
  • 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
  • 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
  • Practical Considerations  Risk is in feature creep and things out of control
  • Practical Considerations  Solutions are designed and implemented according to time schedule and budget – Hardest part is management of people
  • 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
  • Future of Enterprise Software
  • THE DIGITAL DECADE TV SHOWS MOVIES MUSIC VOICE PICTURE S SMARTPHONES BOOKS 2000 2010
  • 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
  • Wearable Era
  • Digital Online World Work More information Focused Consuming Video Information Browsing Consuming content Checking Mobile Now Real-time
  • VIDEO BEFORE Video stores, late fees, clutter of DVDs NOW Any (almost) movie available anytime anywhere 25
  • COMPUTERS BEFORE NOW Desktops, clunky laptops Mobile, light, easy to carry 26
  • INTERFACE BEFORE NOW Keyboard, mouse Touch, voice, gesture 27
  • BOOKS BEFORE NOW Printed books, libraries, clutter of books Digital, online library, audiobooks
  • MAGAZINES BEFORE Printed, clutter NOW Digital, automatically delivered
  • MAPS BEFORE NOW Printed, maps, static and outdated Real-time, satnav, with directions, info
  • COOKBOOKS BEFORE Books with fixed units NOW Interactive, with variable units, video demos
  • OWNERLESS LIFESTYLE BEFORE NOW Own stuff, cluttered home Online stuff, renting, freedom
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Thank You! - Ólafur Andri
  • NEW TECHNOLOGY 2014, starts in January 2013 Course Description Trailer http://www.youtube.com/watch?v=L0p9xU_XIdY