l01 introduction to enterprise software

73
HÖNNUN OG SMÍÐI HUGBÚNAÐAR 2015 L01 INTRODUCTION TO ENTERPRISE SOFTWARE

Upload: olafur-andri-ragnarsson

Post on 16-Apr-2017

1.121 views

Category:

Software


1 download

TRANSCRIPT

HÖNNUN OG SMÍÐI HUGBÚNAÐAR 2015L01 INTRODUCTION TO ENTERPRISE SOFTWARE

AgendaThe Post-PC eraEnterprise ApplicationBuilding BlocksEvolution of Enterprise SoftwareBuilding Blocks

Reading

Brown: 1-7Hönnun og smíði hugbúnaðar 2015 - lýsing á námskeiðinuDigital LifestyleEric Schmidt talks the Future of Enterprise SoftwareMobile is Eating the WorldEnterprise SoftwareSoftware as a Service

The Post-PC era

Eric Schmidt Future of Enterprise Software

Conversation with Salesforce CEO, Marc Benioff

1960 1970 1980 1990 2000 2010

Mainframes

Mini  computersPersonal  Computers

ServersClusters

Cloud  –  utility  computing

Laptops

Music  player2G  Cell  phones

CONVERGE

DIVERGESmartphones

Tablets

Smart  TV

Internet  of  things

Smartwatch

2000 2010

THE DIGITALDECADE

“[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 DIGITALDECADE

MUSIC PICTURESVOICE  CALLS SMART  PHONES

SHOWS

MOVIES

BOOKS/MAGAZINES

THE DIGITALDECADE

2000 2010

2000 2010

iMac iPhoneiMac G3  Mac OS 9.0.4 500 MHz PowerPC G3 CPU, 128MB MemoryScreen - 786K pixels Storage - 30GB Hard Drive

iPhone 4  iOS 4.0 1 Ghz ARM A4 CPU, 512MB MemoryScreen - 614K pixels Storage - 32GB Flash Drive

WHAT HAPPENEDAT THE END OF THEDIGITAL DECADE?

1981-2011 The era of the PC

3 BILLION PEOPLE ARE ALREADY CONNECTED TO THE INTERNET

SOFTWARE AND DATA ARE STORED IN THE CLOUDUNIVERSAL ACCESS

OUR DEVICES ARE GATEWAYS TO THE CLOUD

Source: Slides from Benedict Evans, A16Z, ITU

Growth into the Bubble

Source: Slides from Benedict Evans, A16Z, ITU

Growth since the Bubble

Source: Slides from Benedict Evans, A16Z, ITU

Growth into the Future

The Post-PC EraThe Personal Computer era is overRise of the networkSmart phones rule the world APIsEnterprise systems are accessible by consumers, not operators Everything gets connected, IoT

Challenges in ComputingNew RequirementsWay more users (millions), more complicated softwareUptime, security and reliabilityScalabilityCompetition drives need for productivity - time to marketLeveraging investments – integration with existing systems

1980 1990 2000

Hardware

Connecting hardware Network Software

Connectingsoftware

Challenges in Computing

Software and integration of components and devices are the challenges aheadCloud computing and ubiquityMove to Service Oriented Architecture or micro services and APIs

New Approach to SoftwareArchitecture

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

Enterprise Applications

40

Enterprise Applications

Software running in corporate data centersCharacteristics:✦ 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

ExamplesB2C - 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

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

Software as a Service ExamplesE-mail servicesProject managementBlog services

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

Evolution of Enterprise Software

Evolution60 70 80 90 00IBM  

Mainframes  

Limited  layering  orabstraction

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

60s 70s 80s 90s 00sIBM  

Mainframes  

Limited  layering  orabstraction

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

Server Database

Network protocolWindowsClient

WindowsClient

Two layer systemThick native client running on a PC, contains all the presentation and domain logicConnects to the server for data

Client-Server

Network protocol

Server Database

Network protocolWindowsClient

WindowsClient

Limited reusabilityRequiers installation and configurationVersioning is hardDependant on specific OSNot accessible from outside

Client-Server

Network protocol

Network protocolPresentationLayer

PresentationLayer

Classical three layersPresentation Layer for the user interface, view and inputDomain Layer for the business logicData Source Layer for the data access

Move to Three Layers

Network protocolDomainLayer

DataSourceLayer

Database

HTML/HTTPWebBrowser

Web Browser

The Web added new challengesThe browser accesses strings of tags (HTML)Move the logic from client to a web layer

Enter the Web Layer

HTML/HTTPDomainLayer

DataSourceLayer

DatabaseWebLayer

Presentation Layer

HTML/HTTPWebBrowser

Web Browser

Domain components are deployed on Application Servers- Distributed multi-tiered applications- Examples: Spring, EJB containers

Application Servers

HTML/HTTPDomainLayer

DataSourceLayer

DatabaseWebLayer

Web Server Application Server

WebServer

DomainLayer

SOAP

HTTP SOAP

Web Browser

Native App

SOAP

Web Browser HTTPServer

SOAPClient

Built software into independent servicesUse APIs such as SOAP to expose functionality

Service Oriented Architecture (SOA)

Web Browser

Native App

CMS

WebServer

WebServer

HTML REST

REST

MicroservicesBuilt software into (smaller) independent servicesUse RESTful APIs with JsonContent Management System for all operator editable content

Client TypesNative ApplicationsApps

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

Tiers vs. LayersTier 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 machinesLayers 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

Classic N-tier Web Architecture

HTTP Service

HTTP Service

HTTP Service

HTTP Service

Services

Services

Database

LegacyServer

Scalability comes by adding more servers

Which of the following statements is not true?

A) Versioning is only a challenge with client-service modelB) Layers need not be on a separate machinesC) Web servers can be used as application serversD) Scalability is achieved by duplicating the system

QUIZ

Building Blocks

Building Enterprise ApplicationsBuilding computer systems is hard

As the complexity of the system gets greater, the task of building the software gets exponentially harder

Building Enterprise ApplicationsBuilding computer systems is hard

Software Architecture

Object Oriented Programming Frameworks

Middleware

Design Patterns

Object Oriented Programming

OO is key to development of systems• Design for reusability, flexibility and performanceOne 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

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

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

HistoryLandmark book from 1995: Design Patterns: Elements of Reusable Object-Oriented Software Gang of Four (GoF)

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 infrastructureHorizontal market• Solves common problems – not specific business

requirements• Low-level system

Frameworks

Frameworks define the support structure for how to organise and build systems• Can improve productivity• We can use existing frameworks or build our ownFrameworks implement common problems• Developers extend and add their business requirementsFramework design• Use inheritance, inversion of control, interfaces and helper

classes• Implement design patterns

Which of the following statement is not true?

A) Design patterns are solutions to common problemsB) Object oriented programing is good for general problemsC) Frameworks are used to increase productivityD) Middleware can solve business related problems

QUIZ

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