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
repla...
Building Enterprise Applications
 Building computer systems is hard
– As the complexity of the
system gets greater, the
t...
Building Enterprise Applications
 Building computer systems is hard
Software
Architecture
Design
Pattern

OO
Programming
...
Building Enterprise Applications
 Building computer systems is hard
 But now when we know how to, it’s not that hard
any...
Goals of an Enterprise Architecture







Be robust
Be performing and scalable
Take advantage of OO design principl...
Enterprise Systems
 Building large multi-tier systems is done one line
at a time
–
–
–
–
–
–
–
–

Layering
Clear interfac...
Create Abstractions
 Minimize dependence on subsystems
– Must be easy to change
• Gateway, Mapper, Service Stub

 Abstra...
Separation of Concerns
One of the main challenge of frameworks is to
provide separation of concerns
Frameworks deal with g...
Minimize dependencies
 Be careful with dependencies
– It is easy to create code where modules depend on
other modules
• P...
Layering
 Software systems can get complicated
– Abstractions are needed

 Provides abstraction by separating computer
s...
The Three Layers
 Presentation
– User’s interface to the system
– User can be another system
– Accepts input, displays vi...
Three Layers
 Presentation Layer for the User Interface
 Domain Layer for the domain logic
 Persistence Layer for the d...
Considerations
 Don’t overdesign!
– User Interfaces are really difficult to make generic and
reusable
– If there is no ne...
Considerations
 Don’t overdo Configurations
– Sometimes coding is better than config
– Testing and debugging config is ha...
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 ...
Practical Considerations
 Agile is an answer to this
Daily
Standup

Sprint
stories

Backlog
Backlog
ordered by
Product Ow...
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

Mu...
Wearable Era
Digital Online World
Work
More
information
Focused

Consuming
Video
Information

Browsing
Consuming
content

Checking
Mobi...
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 co...
Challenges in Computing
Hardware

1980

Connecting hardware
Network
1990

Software

Connecting
software

2000

 Software ...
Challenges in Computing
Software
2000






Connecting
software
2010

Mobility
Wearables
APIs, SaaS, real-time
2020

M...
Objectives
 Know the basics of software design and
beautiful code
 Understand and know how to use design
patterns
 Impl...
Objectives continued
 Understand different software architectures and
the different design choices
 Understand Software ...
Lectures
L01 Enterprise Application Architecture
Introduction, 1
L02 Software Design
L03 Design Patterns Introduction
L04 ...
Lectures
L08 Mapping to Relational Databases 3, 10
L09 Behavioral Design 3, 11
L10 Web Presentation 4, 14
L11 Application ...
Thank You!
- Ólafur Andri
NEW TECHNOLOGY 2014, starts in January
2013 Course Description Trailer
http://www.youtube.com/watch?v=L0p9xU_XIdY
L14 Summary and Conclusions
L14 Summary and Conclusions
Upcoming SlideShare
Loading in...5
×

L14 Summary and Conclusions

264

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
264
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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
  20. 20. THE DIGITAL DECADE TV SHOWS MOVIES MUSIC VOICE PICTURE S SMARTPHONES BOOKS 2000 2010
  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 http://www.youtube.com/watch?v=L0p9xU_XIdY
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×