Í þessum fyrsta fyrirlestri fjöllum við um Enterprise forrit, hvað einkennir þau og hvaða áskoranir við stöndum frammi fyrir. Byrjum á því að skoða forritunarlausnir í samhengi við þróun undanfarinna ára. Menn tala um að nú séu "post PC" tímabil þar sem einkatölvan eins og við þekkjum hana er bara eitt af mörgum tækjum sem við notum. Forritun okkar geta verið snjallsíma öpp eða PC forrit og gögnin okkar eru í tölvuskýjunum.
Við skilgreinum hvað er átt við með Enterprise forritun og tökum fjölmörg dæmi. Skilgreinum B2B, B2C og tegundir af lausnum. Þá lítum við á þróun enterprise lausna frá Client-Server til gagnavera sem hýsa microservice lausnir. Slæmu fréttirnar eru að það er mjög erfitt að smíða svona lausnir, en góðu fréttirnar eru að við höfum fjölmörg tæki og tól til að hjálpa okkur.
5. 1960 1970 1980 1990 2000 2010
Mainframes
Mini computers
Personal Computers
Servers
Clusters
Cloud – utility computing
Laptops
Music player
2G Cell phones
CONVERGE
DIVERGE
Smartphones
Tablets
Smart TV
Internet of things
Smartwatch
8. “[The Personal Computer] can
become the 'Digital Hub'
of our emerging digital lifestyle,
adding tremendous value
to our other devices.”
- Steve Jobs, 2001 Keynote
introducing the iPod
THE DIGITAL
DECADE
19. 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
20. The Post-PC Era
New Requirements
– More users, more complicated software
– Uptime, security and reliability
– Scalability
– Competition drives need for productivity
– Leveraging investments – integration with existing
systems
21. Challenges in Computing
Software and integration of components and
devices are the challenges ahead
Cloud computing and ubiquity
Move to Service Oriented Architecture and APIs
1980 1990 2000
Hardware
Connecting hardware
Network
Software
Connecting
software
23. Which of the following statements is not true?
A) The challenge ahead is to connect software
B) The PC is no longer a device for development
C) Computing has moved to the cloud
D) During the digital decade, the PC was the digital hub for all you devices
QUIZ
24. Which of the following statements is not true?
A) The challenge ahead is to connect software
B) The PC is no longer a device for development
C) Computing has moved to the cloud
D) During the digital decade, the PC was the digital hub for all you devices
QUIZ
✔
41. Enterprise Applications
Software running in corporate data centers
Characteristics
– Involve data, some times huge amounts
– Concurrent data access, multiple users
– Lot of user interface screens
– Integration with other enterprise application
– Use of middleware software, such as databases,
application servers, web servers
– Operated by specialists – system operators
42. Examples
B2C - Business to Consumer
– E-commerce web sites such as Amazon, eBay
– Commercial services like banking
B2B – Business to Consumer
– Payroll, patient records, shipping tracking, cost
analysis, credit scoring, insurance, supply chain,
accounting, customer service, and foreign exchange
trading
Content
– Stock quotes, sports results, email, blogs
43. Software as a Service (SaaS)
“On-demand” software
– Cloud computing
IT infrastructure demands
– Communication: interacting with the software
– Scalability: dealing with fluctuation
– Dependability: available 24/7
44. Software as a Service Examples
E-mail services
Project management
Blog services
45. What is not necessarily characteristic of enterprise software?
A) Has many concurrent users working on the same data
B) Integrates with other IT systems
C) Deploys some form of distribution strategy
D) Is operated by specialists not by the users
QUIZ
46. What is not necessarily characteristic of enterprise software?
A) Has many concurrent users working on the same data
B) Integrates with other IT systems
C) Deploys some form of distribution strategy
D) Is operated by specialists not by the users
QUIZ
✔
48. Evolution
60 70 80 90 00
IBM
Mainframes
Limited
layering or
abstraction
IBM, DEC
Mini-
computers
Unix, VAX
“Dumb”
terminals
Screens/DB
PC, Intel,
DOS, Mac,
Unix,
Windows
Client/Server
DB
Windows
Internet
HTTP
Web
Browsers
Web
Applications
DB
Windows,
Linux
MacOS
Browsers,
Services
Domain
Applications
DB
49. Evolution
60 70 80 90 00
IBM
nframes
mited
ering or
traction
IBM, DEC
Mini-
computers
Unix, VAX
“Dumb”
terminals
Screens/DB
PC, Intel,
DOS, Mac,
Unix,
Windows
Client/Server
DB
Windows
Internet
HTTP
Web
Browsers
Web
Applications
DB
Windows,
Linux
MacOS
Browsers,
Services
Domain
Applications
DB
iOS
Android
HTML5
Browsers
Apps
API
Cloud
NoSQL
10
51. Client-Server
The client handles all computation – domain
logic (business logic)
– Limited reusability
– Versioning is a challenge
52. Move to Three Tiers
Three Layers
– Presentation Layer for the User Interface
– Domain Layer for the domain logic
– Data Source Layer for the data access
53. Enter the Web Layer
The Web added new challenges
– The browser accesses strings of tags (HTML)
– Move the logic from client to a web layer
– Web layer adds connectivity by HTTP protocols
54. Application Servers
Domain Components are deployed on
Application Servers
– Distributed Multi-tiered Applications
– Example:
• Web Servers, Spring, EJB containers
55. Service Oriented Architecture
Built software into independent services
Use APIs such as SOAP to expose functionality
Web
Browser
Native
App
Web
Server
SOAP
Domain
Layer
HTTP
SERVER
Web
Browser
SOAP
HTML SOAP
Client
SOAP
56. Microservices
Built software into (smaller) independent
services
Use RESTful APIs with Json
Web
Browser
Native
App
Web
Server
Domain
LayerREST
CMS
RESTHTML
57. Client Types
Native Applications – Apps
– Usually use some OS GUI and APIs
– Windows, Linux, MacOS, iOS, Andriod
– Communication can be anything
Embedded
– Run inside Web Browsers
– Flash, Java Applets
– Communication with XML using HTTP
58. Client Types
Rich Internet Application (RIA)
– JavaScript calls REST/SOAP services for data
– HTML with XML/Json using Ajax/jQuery
HTML Presentation in Browsers
– All functionality is server side
– Simple HTML
59. Tiers vs. Layers
Tier implies physical layer
– Example:
• Client-server is two-tier system: client on one machine,
server on another
Layers do not need to run on separate machines
– Layers can be on the same machine
– Example:
• Web system with Web Layer, Domain Layer and Data Source
Layer on the same machine, then the database on a
separate machine
61. Which of the following statements is not true?
A) Versioning is only a challenge with client-service model
B) Layers need not be on a separate machines
C) Web servers can be used as application servers
D) Scalability is achieved by duplicating the system
QUIZ
62. Which of the following statements is not true?
A) Versioning is only a challenge with client-service model
B) Layers need not be on a separate machines
C) Web servers can be used as application servers
D) Scalability is achieved by duplicating the system
QUIZ
✔
64. 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
65. Building Enterprise Applications
Building computer systems is hard
Design
Pattern
Middleware
Frameworks
OO
Programming
Software
Architecture
66. Software Architecture
Shared understanding of system’s design by the
expert developers on a project
– Highest-level breakdown of a system into its parts
– Decisions that are hard to change
Architecture influences design
of components, technology,
performance and middleware
There are always options
67. Object Oriented Programming
OO is key to development of systems
– Design for reusability, flexibility and performance
One of the biggest hurdles for developers
– Each component should be simple with simple task
– Involves understanding of interaction of parts
“OO design is more important than specific technologies, such as J2EE. We
should try to avoid letting our technology choices, such as J2EE, constrain
our ability to use true OO design”
– Rod Johnson
“If the design is good, there is no code”
– Jónas Þór, Senior Betware developer
68. Design Patterns
Design using known ideas
– Design patterns are standard solutions to common
problems in software design
– Systematic approach for problems that reoccur in
software development
– Patterns have name and definitions - not language
dependant
History
– Landmark book from 1995: Design Patterns:
Elements of Reusable Object-Oriented Software
Gang of Four (GoF)
69. Middleware
Enterprise system are built on middleware
– Can cover a broad spectrum of software and generally sits
between an application and an operating system
– For example, databases, application servers, web servers,
messaging systems, transaction monitors
– “The plumbing” – the infrastructure
Horizontal market
– Solves common problems – not specific business
requirements
– Low-level system
70. Frameworks
Frameworks define the support structure for how to
organize and build systems
– Can improve productivity
– We can use existing frameworks or build our own
Frameworks implement common problems
– Developers extend and add their business requirements
Framework design
– Use inheritance, inversion of control, interfaces and helper
classes
– Implement design patterns
71. Which of the following statement is not true?
A) Design patterns are solutions to common problems
B) Object oriented programing is good for general problems
C) Frameworks are used to increase productivity
D) Middleware can solve business related problems
QUIZ
72. Which of the following statement is not true?
A) Design patterns are solutions to common problems
B) Object oriented programing is good for general problems
C) Frameworks are used to increase productivity
D) Middleware can solve business related problems
QUIZ
✔
73. Next
Dæmatími: Hlutbundin forritun með Java
– Uppsetning á Java umhverfinu
– IntelliJ
– Java æfingar
Fyrirlestur föstudag: L02 Architecture