Í þ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.
3. Reading
Brown: 1-7
Hönnun og smíði hugbúnaðar 2015 - lýsing á námskeiðinu
Digital Lifestyle
Eric Schmidt talks the Future of Enterprise Software
Mobile is Eating the World
Enterprise Software
Software as a Service
5. Eric Schmidt
Future of Enterprise Software
Conversation with Salesforce CEO, Marc Benioff
6.
7. 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
10. “[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
23. The Post-PC Era
The Personal Computer era is over
Rise of the network
Smart phones rule the world
APIs
Enterprise systems are accessible by consumers, not operators
Everything gets connected, IoT
24. Challenges in Computing
New Requirements
Way more users (millions), more complicated software
Uptime, security and reliability
Scalability
Competition drives need for productivity - time to market
Leveraging investments – integration with existing systems
25. 1980 1990 2000
Hardware
Connecting hardware
Network Software
Connecting
software
Challenges in Computing
Software and integration of components and devices are
the challenges ahead
Cloud computing and ubiquity
Move to Service Oriented Architecture or micro services
and APIs
27. 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
45. 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
46. 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 such as: Stock quotes, sports results, email, blogs
47. 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
48. Software as a Service Examples
E-mail services
Project management
Blog services
49. 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
51. 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
52. 60s 70s 80s 90s 00s
IBM
nframes
mited
ering
or
traction
IBM,
DEC
Mini-‐
computers
Unix,
VAX
“Dumb”
terminals
Screens/Files
PC,
Intel,
DOS,
Mac,
Unix,
Windows
Client/Server
RMDB
Windows
Internet
HTTP
Web
Browsers
Web
Applications
RMDB
Windows,
Linux
MacOS
Browsers,
Services
Domain
Applications
RMDB
iOS
Android
HTML5
Browsers
Apps
API
Cloud
NoSQL
10s
Evolution
55. Network protocolPresentation
Layer
Presentation
Layer
Classical three layers
Presentation Layer for the user interface, view and input
Domain Layer for the business logic
Data Source Layer for the data access
Move to Three Layers
Network protocol
Domain
Layer
Data
Source
Layer
Database
56. HTML/HTTPWeb
Browser
Web
Browser
The Web added new challenges
The browser accesses strings of tags (HTML)
Move the logic from client to a web layer
Enter the Web Layer
HTML/HTTP
Domain
Layer
Data
Source
Layer
Database
Web
Layer
Presentation Layer
57. HTML/HTTPWeb
Browser
Web
Browser
Domain components are deployed on Application Servers
- Distributed multi-tiered applications
- Examples: Spring, EJB containers
Application Servers
HTML/HTTP
Domain
Layer
Data
Source
Layer
Database
Web
Layer
Web Server Application Server
59. Web Browser
Native App
CMS
Web
Server
Web
Server
HTML REST
REST
Microservices
Built software into (smaller) independent services
Use RESTful APIs with Json
Content Management System for all operator editable content
60. Client Types
Native Applications
Apps
Usually use some OS
GUI and APIs
Windows, Linux,
MacOS, iOS, Andriod
Communication can
be anything
Use the power of the
device
Embedded
Run inside Web
Browsers
Flash, Java Applets
Communication with
XML using HTTP
Standardised, provide
rich functionality in
limited browsers
Rich Internet
Application (RIA)
JavaScript calls REST/
SOAP services for
data
HTML5 with XML/Json
using Ajax/jQuery
Standardised, provide
rich functionality using
HTML5
HTML Presentation
in Browsers
HTML Presentation in
Browsers
All functionality is
server side
Simple HTML
61. 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
62. Classic N-tier Web Architecture
HTTP Service
HTTP Service
HTTP Service
HTTP Service
Services
Services
Database
Legacy
Server
Scalability comes by adding more servers
63. 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
65. 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
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 Developer, Betware
68. Software Architecture
Shared understanding of system’s design by the expert
developers on a project - vision and structure
• 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 multiple of options
69. Object Oriented Programming
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)
70. 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
71. Frameworks
Frameworks define the support structure for how to organise
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
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. THINK ABOUT THIS
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”
– Martin Fowler