SlideShare a Scribd company logo
1 of 69
Download to read offline
Software Development,
Mobile Platforms and
Cloud Services
Software Solution
Software solution
● One or more applications (programs) working together to provide a
functionality
Stand alone application
● Examples: Calculator, word processor, photo editing...
● Everything happens locally inside the application: external applications,
computers, or devices are not involved
● Uses only the resources available on the local machine
○ Limited by available computing power
○ Limited by battery
○ Limited by access to information
○ … screen size, camera, hardware...
Multiple applications
● Interaction between different software programs
● Work is distributed, each software program takes care of a task
● Together they provide the solution
● Communication channel needed, often internet or a local network
Client / Server Architecture
Two parts: client and server. Designed to work together
● Client: asks to be served by the server
● Server: performs the task and return a result to the client
Client / Server Architecture
One server can be used by multiple clients at the same time
Examples?
● Messaging apps (Whatsapp,
Telegram…)
● Social application (FB, Twitter,
Instagram…)
● Dating (Tinder, Happn…)
● Browsers
● Email clients
● ...
Client has access to the server capabilities
● Client is not limited by resources available on the device and can access
resources and capabilities provided by the server
○ Computing power
○ Access to information
○ Storage capabilities
○ Special hardware or configuration
○ ...
How do client and server communicate?
● The server exposes a series of commands that the client can use to
interact with the server to make something happen
● This are called APIs (Application Programming Interface)
● By calling the APIs in a proper order the client and server are able to
communicate
● The set of rules that describe the order of API calls needed to obtain a
result or a successful communication is called protocol
Bath Protocol
● Close bath hole
● Rotate cold water tap by 90°
● Rotate hot water tap by 180°
● [Wait 10 minutes]
● Rotate cold water tap by -90°
● Rotate hot water tap by -180°
Bath tub APIs
● Open bath hole
● Close bath hole
● Rotate cold water tap
● Rotate hot water tap
Public APIs
● If a server uses a set of public APIs and protocols anyone can write a client
that interacts with the server.
○ Authentication and security are available
● E.g.: Web browsers (client application) can talk to all the websites
(servers) because the web browsers and all the web servers talk using the
same protocol (HTTP)
Web Services
● There are multiple servers that expose public apis providing any kind of
information
○ Weather conditions and forecasts
○ Marvel superheroes information
○ Star Wars API
○ …
●
A client can contact different servers for
different reasons
● We may think of an application that given a list of ingredients suggests a
recipe for dinner using those ingredients, and the proper wine pairing.
● The client application may need to contact a server to find the proper
recipe, and a different server to find the proper wine
A device can be a server and a client for
different services - 1
1. Arya writes a Whatsapp message to the group "Stark Family"
2. WA application on Arya’s phone asks to the Whatsapp messaging center
to send the message
○ Client: application on Arya's phone
○ Server: messaging center
A device can be a server and a client for
different services - 2
3. Whatsapp messaging center asks the database server for the list of
members in the group "Stark Family"
○ Client: messaging server
○ Server: database server
4. Whatsapp messaging center sends the message to all the members
Different kinds of servers
● Game server
● Web server
● Mail server
● Print server
● Database server
● ....
What is a Database?
● Organized data
● Think about it as a set of tables with rules and relations
● Optimized to be searched, modified, processed
Databases are often a key component of modern software solutions.
Example: GOT Database
NAME GENDER HOUSE_NAME
John Snow m Stark
Cersei Lannister f Lannister
Arya Stark f Stark
Sansa Stark f Stark
NAME SYMBOL
Stark Wolf
Lannister Lion
Character
House
Dear database...
● Tell me all the houses that have both male and female characters
● Tell me all the female characters
● Tell me all the members of house Stark
● Tell me the house symbol of John Snow
Real world examples
● When you search on google the results are taken from a database
● When you open facebook the posts are taken from a database
● Same for Instagram, Twitter, Airbnb, PokemonGo...
Peer-to-Peer (P2P) Architecture
● No central server
● Nodes are both clients and server for
the same service
● Distributed storage, computing power,
search etc.
Peer-to-peer applications
● BitTorrent protocol
● Popcorn time
● Spotify (in early days) - Hybrid
● Dropbox - Hybrid
● Bitcoin
Peer to peer social impact
P2P networks provide disruptive technologies that stimulate important social
debates
● Who's to blame when copyrighted / illegal material is shared on a p2p
network?
● Net Neutrality debate
○ "all bits are created equals"
○ open internet: content should be treated equally
● Decentralized currencies regulation debate
Recap
● Single app
● Multiple applications
● Client / Server relationship
○ Client asks for a service, server delivers the service
■ The client can access resources (data, computation power, information) on the
server
○ Multiple clients for each server
○ Various kinds of servers
○ Database server
■ Organized data
■ Optimized to be searched, modified, processed
● Peer 2 Peer
Software Development
Computers: they speak machine language
● it's awful! :(
● they want to be instructed with this language
● depends on how their processor is designed
● machine language varies between different machines
This is how it looks like
We don’t like
machine language
Alternatives to machine language?
There are other programming languages, closer to human language, that are
easier to write and understand.
● Formal languages to instruct a machine
● Different purposes, different level of abstractions, different philosophies
They are a bit better
public class HelloWorld {
public static void main(String[] args) {
// Prints "Hello, World" to the terminal window.
System.out.println("Hello, World");
}
}
How do we go from here to the machine
language?
● Compiling
○ Human: writes the source code
○ Compiler program: translate source code in numerical machine language (compilation
phase) creating the final program file in machine language. This is the program that will
run.
○ Computer: execute the program file
● Interpreting
○ Human: writes the source code
○ Instead of being compiled, the source code is translated into "something else"
○ Later, an Interpreter program looks into "something else" and execute it translating it in
machine instructions
Source code
● Source code is the “recipe” for the application
● It is valuable for developers, as recipes are for chefs
public class HelloWorld {
public static void main(String[] args) {
// Prints "Hello, World" to the terminal window.
System.out.println("Hello, World");
}
}
Closed Source
= The recipe (source code) is secret.
Open Source
= The recipe (source code) is public.
Open Source or Closed Source?
● There is no right answer
● Depends a lot on the business model and strategy of the company
● There are multiple licenses in between that describe how you can use
source code of an application
● The debate on software licenses is very interesting but out of the scope of
this course :)
Developers and platforms
Developers usually have experience of one or more programming languages
that they have used on one or more platforms.
Each platform supports one or more programming languages, so for example
you should know the Java programming language to develop on Android.
Each platform has different APIs and functionalities, so experience on the
platform is important as well.
What language is used for…
● Dynamic Website - Javascript
○ scripting language, client side, web oriented
● Video Game with lots of graphic - C++
○ Closer to machine, allows more optimization
● iOS app - Objective C / Swift
● Android app - Java
● Server side app - Java
NOTE: this is an inaccurate and oversimplified list. Do not consider it any
differently
So java works for both android and server...
● Android app - Java
● Server side app - Java
Same language, different problems
● Client vs Server
● limited resources vs large resources
● UI vs no UI
● Unstable connection vs stable connection
● Variable context vs fixed context
● human interaction vs no human interaction
So iOS and Android have similar problems
Same problems, different platforms
● Mobile teams are usually able to find a shared design
○ it works quite welI
○ (there are exception depending on the platform)
● Different Platforms have different APIs
○ Can I delete user data?
○ Can I access pictures?
○ Where are contacts stored?
○ How can I do something in the background?
● Different Platforms have different guidelines
○ When in Rome, do what romans do
Platform Guidelines - 1
Platform Guidelines - 2
Software development recap
● Programming Languages
● Source code
○ Closed Source (Coca-cola)
○ Open Source (Apple pie)
● Client developers / Server developers
● Different platforms have different APIs and guidelines.
○ Follow the guidelines!
Mobile Platforms
Mobile Platform
distribution
● Android - approx 80%
● iOS - approx 20%
● Others - dead
Data taken from http://www.gartner.com/newsroom/id/3609817
Big differences
between countries
Mobile platform units sold in 3 months ending Feb 2017, taken from
https://www.kantarworldpanel.com/global/smartphone-os-market-share/
Android
● Open source OS - Google is a key contributor
● Runs on device built by different manufacturers
● wide range of devices
● fragmentation
● Slow upgrades rollout
iOS
● Proprietary OS built by Apple (closed source)
● Runs on devices built by apple
● High end devices
● control on hw, sw
● Less fragmentation
Google
● sells ads
● wider market as possible
● does not build hw directly
● Cloud is strategy
● Android is tactic
Strategy VS Tactic
● Strategy: long term plan and objective
● Tactic: actions taken to achieve what defined in the strategy
Strategy: “Get users to use our services and platforms as much as possible so
we can gather informations on what they like and provide them interesting and
personalized advertisement”
Tactic: “Promote Android adoption as much as possible and position google as
the primary provider of services for Android” (and multiple other tactical steps!)
Apple
● Sells products to end users
● Premium segment
● Device is strategy
● Cloud is tactic
Different Mobile Users
● Apple
○ Higher income
○ Propension to spend money
■ Credit cards often linked
■ “Apple Tax” (urbandictionary)
■ Payed application are the norm
○ Power users
○ Smaller user base
● Android
○ Lower average income
○ Less willing to spend money
■ Less credit cards linked
■ Minor average cost of device
■ Different developers approach
○ Wider user profiles (me & my
mother)
○ Larger user base
Mobile First: which platform?
● What is the best platform to start from when developing an application?
● As always, it depends on
○ What is the target market?
○ What is the target user?
○ What is the business plan?
Cloud Computing
Providing a Client / Server solution
We are launching a new application that allows user to take a picture of any
beer, provide the review and see other user’s reviews. Client will run on the user
device
● What about the server?
We need to provide the servers to our users.
Should we buy a server?
Servers are expensive
● Upfront costs
● How many clients should you be able to support in the next year?
● Reliable, high-speed connection
● Servers should be kept in a safe and secure place
○ Climatization
○ Security
Servers require maintenance
● By someone you have to pay
● Parts that need to be replaced
● Software that needs to be upgraded
● As business grows, upgrade or addition of new server is needed
Servers are a point of failure
● Any issue on the server breaks the entire service
● You need mechanisms to avoid data loss
○ Backup / Replication / Mirror
○ Note: sometimes it's not even your data, but your user's data!
○ Multiple distant physical location to be safe
Cloud computing
● The alternative to in-house servers.
● Cloud computing provides computer processing resources, data, storage
and common services on demand.
● You can rent a cloud server and set it up as you want
● And / or you can access commonly used services as needed
Cloud computing
● Servers and services are provided by third party
○ Amazon
○ Google
○ Microsoft
○ ...
● Remote computing power and services delivered on a pay per use basis
● No need to think about maintenance, security, uptime etc.
Cloud server
● You do not get a real machine but a section of a huge center that behaves
like a real machine
● Can be copied easily
● Can be reconfigured easily
○ change memory, cpu, storage size
● Can be configured to have elastic behavior
○ Can handle spikes
○ Can prevent some kind of malicious attacks
Elastic behavior
● Server is able to change its configuration to satisfy the incoming requests
● You have a server that grows and shrinks as needed
● Can handle unexpected (or expected) traffic peaks
● Can protect the service from DDOS attacks
○ Distributed Denial Of Service
Elastic behavior example
Between T1 and T2 the server
increases automatically his
capabilities to handle the increased
load.
Without an elastic behavior the server
would have not been able to handle
all the requests in the spike
Other cloud services
● Database
● Storage
● Transcoding of pictures / videos
● Serverless code execution
● Load balancing
● ...
Cloud computing - Recap
● Setting up and maintaining a server is difficult and expensive
● Cloud computing can help
○ Offered by large players
○ Provides virtual servers
○ Provides additional services
○ Pay per use

More Related Content

What's hot

How to hire top software engineers
How to hire top software engineersHow to hire top software engineers
How to hire top software engineersRick Mac Gillis
 
Release planning using feature points
Release planning using feature pointsRelease planning using feature points
Release planning using feature pointsMadhur Kathuria
 
Introduction agile scrum methodology
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodologyAmit Verma
 
Agile 101
Agile 101Agile 101
Agile 101beLithe
 
Agile methodology v 4.5 s
Agile methodology   v 4.5 sAgile methodology   v 4.5 s
Agile methodology v 4.5 sJames Sutter
 
Agile Manifesto Values
Agile Manifesto ValuesAgile Manifesto Values
Agile Manifesto ValuesNikolai F.
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineeringRupesh Vaishnav
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practicesjackcrews
 
Lean Translation -
Lean Translation - Lean Translation -
Lean Translation - PhraseApp
 
Extreme programming - Kent Beck
Extreme programming - Kent BeckExtreme programming - Kent Beck
Extreme programming - Kent BeckAngelLuisBlasco
 
Apt agile methodology
Apt agile methodologyApt agile methodology
Apt agile methodologyIndra
 
Agile Fundamentals
Agile FundamentalsAgile Fundamentals
Agile FundamentalsGraham Dick
 
Agility via Software Engineering Practices - Agile Tour Montreal 2015
Agility via Software Engineering Practices - Agile Tour Montreal 2015Agility via Software Engineering Practices - Agile Tour Montreal 2015
Agility via Software Engineering Practices - Agile Tour Montreal 2015Steve Mercier
 
extreme Programming
extreme Programmingextreme Programming
extreme ProgrammingBilal Shah
 

What's hot (20)

How to hire top software engineers
How to hire top software engineersHow to hire top software engineers
How to hire top software engineers
 
Agile
AgileAgile
Agile
 
Release planning using feature points
Release planning using feature pointsRelease planning using feature points
Release planning using feature points
 
Introduction agile scrum methodology
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodology
 
Agile
Agile Agile
Agile
 
Agile overview
Agile overviewAgile overview
Agile overview
 
Agile 101
Agile 101Agile 101
Agile 101
 
Agile methodology v 4.5 s
Agile methodology   v 4.5 sAgile methodology   v 4.5 s
Agile methodology v 4.5 s
 
Test i agile projekter af Gitte Ottosen, Sogeti
Test i agile projekter af Gitte Ottosen, SogetiTest i agile projekter af Gitte Ottosen, Sogeti
Test i agile projekter af Gitte Ottosen, Sogeti
 
Overview of agile
Overview of agileOverview of agile
Overview of agile
 
Agile Manifesto Values
Agile Manifesto ValuesAgile Manifesto Values
Agile Manifesto Values
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineering
 
Agile Manifesto
Agile ManifestoAgile Manifesto
Agile Manifesto
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Lean Translation -
Lean Translation - Lean Translation -
Lean Translation -
 
Extreme programming - Kent Beck
Extreme programming - Kent BeckExtreme programming - Kent Beck
Extreme programming - Kent Beck
 
Apt agile methodology
Apt agile methodologyApt agile methodology
Apt agile methodology
 
Agile Fundamentals
Agile FundamentalsAgile Fundamentals
Agile Fundamentals
 
Agility via Software Engineering Practices - Agile Tour Montreal 2015
Agility via Software Engineering Practices - Agile Tour Montreal 2015Agility via Software Engineering Practices - Agile Tour Montreal 2015
Agility via Software Engineering Practices - Agile Tour Montreal 2015
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 

Similar to Software development, mobile platforms, cloud services - Lean Development and Agile Methodologies - 2017 - Lesson 1

[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...WSO2
 
Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...
Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...
Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...Yenlo
 
Secure Developer Access at Decisiv
Secure Developer Access at DecisivSecure Developer Access at Decisiv
Secure Developer Access at DecisivTeleport
 
CN 6131(15) Module IV.pdf
CN 6131(15) Module IV.pdfCN 6131(15) Module IV.pdf
CN 6131(15) Module IV.pdfAsifSalim12
 
CN 6131(15) Module IV.docx
CN 6131(15) Module IV.docxCN 6131(15) Module IV.docx
CN 6131(15) Module IV.docxAkhilMS30
 
Start your open source project
Start your open source projectStart your open source project
Start your open source projectAhmed Othman
 
Android Jump Start
Android Jump StartAndroid Jump Start
Android Jump StartConFoo
 
Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overviewagorolabs
 
solution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptxsolution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptxGoogleDeveloperStude22
 
[Open Source Summit 2019] Microservices with Ballerina
[Open Source Summit 2019] Microservices with Ballerina[Open Source Summit 2019] Microservices with Ballerina
[Open Source Summit 2019] Microservices with BallerinaWSO2
 
Fast App development with SwellRT
Fast App development  with SwellRTFast App development  with SwellRT
Fast App development with SwellRTSamer Hassan
 
Introduction to the Software Development world
Introduction to the Software Development worldIntroduction to the Software Development world
Introduction to the Software Development worldTutti Quintella
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservicesRon Barabash
 
How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer Ramy Hakam
 
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE Pavan Kalyan
 
Dynatech presentation for TSI Career Day
Dynatech presentation for TSI Career DayDynatech presentation for TSI Career Day
Dynatech presentation for TSI Career DayArtur Babyuk
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesJerome Louvel
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesRestlet
 

Similar to Software development, mobile platforms, cloud services - Lean Development and Agile Methodologies - 2017 - Lesson 1 (20)

[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
 
Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...
Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...
Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...
 
Secure Developer Access at Decisiv
Secure Developer Access at DecisivSecure Developer Access at Decisiv
Secure Developer Access at Decisiv
 
CN 6131(15) Module IV.pdf
CN 6131(15) Module IV.pdfCN 6131(15) Module IV.pdf
CN 6131(15) Module IV.pdf
 
CN 6131(15) Module IV.docx
CN 6131(15) Module IV.docxCN 6131(15) Module IV.docx
CN 6131(15) Module IV.docx
 
Start your open source project
Start your open source projectStart your open source project
Start your open source project
 
Android development
Android developmentAndroid development
Android development
 
Android Jump Start
Android Jump StartAndroid Jump Start
Android Jump Start
 
Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overview
 
solution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptxsolution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptx
 
[Open Source Summit 2019] Microservices with Ballerina
[Open Source Summit 2019] Microservices with Ballerina[Open Source Summit 2019] Microservices with Ballerina
[Open Source Summit 2019] Microservices with Ballerina
 
Fast App development with SwellRT
Fast App development  with SwellRTFast App development  with SwellRT
Fast App development with SwellRT
 
Introduction to the Software Development world
Introduction to the Software Development worldIntroduction to the Software Development world
Introduction to the Software Development world
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservices
 
How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer
 
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE
 
Open Source Software
Open Source SoftwareOpen Source Software
Open Source Software
 
Dynatech presentation for TSI Career Day
Dynatech presentation for TSI Career DayDynatech presentation for TSI Career Day
Dynatech presentation for TSI Career Day
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
 

More from Francesco Mapelli

Lean manufacturing, lean development and kanban - Lean Development and Agile ...
Lean manufacturing, lean development and kanban - Lean Development and Agile ...Lean manufacturing, lean development and kanban - Lean Development and Agile ...
Lean manufacturing, lean development and kanban - Lean Development and Agile ...Francesco Mapelli
 
Agile and Lean: dalla pratica alla teoria
Agile and Lean: dalla pratica alla teoriaAgile and Lean: dalla pratica alla teoria
Agile and Lean: dalla pratica alla teoriaFrancesco Mapelli
 
User stories, estimates, planning, design - Lean development and Agile method...
User stories, estimates, planning, design - Lean development and Agile method...User stories, estimates, planning, design - Lean development and Agile method...
User stories, estimates, planning, design - Lean development and Agile method...Francesco Mapelli
 
Agile methoologies and scrum - Lean development and Agile methodologies lesson 3
Agile methoologies and scrum - Lean development and Agile methodologies lesson 3Agile methoologies and scrum - Lean development and Agile methodologies lesson 3
Agile methoologies and scrum - Lean development and Agile methodologies lesson 3Francesco Mapelli
 
Lean Thinking - Lean development and Agile methodologies lesson 2
Lean Thinking - Lean development and Agile methodologies lesson 2Lean Thinking - Lean development and Agile methodologies lesson 2
Lean Thinking - Lean development and Agile methodologies lesson 2Francesco Mapelli
 
Software solution - Lean development and Agile methodologies lesson 1
Software solution - Lean development and Agile methodologies lesson 1Software solution - Lean development and Agile methodologies lesson 1
Software solution - Lean development and Agile methodologies lesson 1Francesco Mapelli
 

More from Francesco Mapelli (7)

Rilasciamo rilasciamo
Rilasciamo rilasciamoRilasciamo rilasciamo
Rilasciamo rilasciamo
 
Lean manufacturing, lean development and kanban - Lean Development and Agile ...
Lean manufacturing, lean development and kanban - Lean Development and Agile ...Lean manufacturing, lean development and kanban - Lean Development and Agile ...
Lean manufacturing, lean development and kanban - Lean Development and Agile ...
 
Agile and Lean: dalla pratica alla teoria
Agile and Lean: dalla pratica alla teoriaAgile and Lean: dalla pratica alla teoria
Agile and Lean: dalla pratica alla teoria
 
User stories, estimates, planning, design - Lean development and Agile method...
User stories, estimates, planning, design - Lean development and Agile method...User stories, estimates, planning, design - Lean development and Agile method...
User stories, estimates, planning, design - Lean development and Agile method...
 
Agile methoologies and scrum - Lean development and Agile methodologies lesson 3
Agile methoologies and scrum - Lean development and Agile methodologies lesson 3Agile methoologies and scrum - Lean development and Agile methodologies lesson 3
Agile methoologies and scrum - Lean development and Agile methodologies lesson 3
 
Lean Thinking - Lean development and Agile methodologies lesson 2
Lean Thinking - Lean development and Agile methodologies lesson 2Lean Thinking - Lean development and Agile methodologies lesson 2
Lean Thinking - Lean development and Agile methodologies lesson 2
 
Software solution - Lean development and Agile methodologies lesson 1
Software solution - Lean development and Agile methodologies lesson 1Software solution - Lean development and Agile methodologies lesson 1
Software solution - Lean development and Agile methodologies lesson 1
 

Recently uploaded

Model Call Girl in Bawana Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Bawana Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Bawana Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Bawana Delhi reach out to us at 🔝8264348440🔝soniya singh
 
EMPLOYEES JOB SATISFACTION ( With special reference to selected Sundaram Ind...
EMPLOYEES JOB SATISFACTION  ( With special reference to selected Sundaram Ind...EMPLOYEES JOB SATISFACTION  ( With special reference to selected Sundaram Ind...
EMPLOYEES JOB SATISFACTION ( With special reference to selected Sundaram Ind...ksanjai333
 
Lucknow 💋 Escort Service in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 89...
Lucknow 💋 Escort Service in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 89...Lucknow 💋 Escort Service in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 89...
Lucknow 💋 Escort Service in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 89...anilsa9823
 
VIP Chandigarh Call Girls 7001035870 Enjoy Call Girls With Our Escorts
VIP Chandigarh Call Girls 7001035870 Enjoy Call Girls With Our EscortsVIP Chandigarh Call Girls 7001035870 Enjoy Call Girls With Our Escorts
VIP Chandigarh Call Girls 7001035870 Enjoy Call Girls With Our Escortssonatiwari757
 
CALL ON ➥8923113531 🔝Call Girls Sushant Golf City Lucknow best sexual service...
CALL ON ➥8923113531 🔝Call Girls Sushant Golf City Lucknow best sexual service...CALL ON ➥8923113531 🔝Call Girls Sushant Golf City Lucknow best sexual service...
CALL ON ➥8923113531 🔝Call Girls Sushant Golf City Lucknow best sexual service...anilsa9823
 
High Profile Call Girls in Lucknow | Whatsapp No 🧑🏼‍❤️‍💋‍🧑🏽 8923113531 𓀇 VIP ...
High Profile Call Girls in Lucknow | Whatsapp No 🧑🏼‍❤️‍💋‍🧑🏽 8923113531 𓀇 VIP ...High Profile Call Girls in Lucknow | Whatsapp No 🧑🏼‍❤️‍💋‍🧑🏽 8923113531 𓀇 VIP ...
High Profile Call Girls in Lucknow | Whatsapp No 🧑🏼‍❤️‍💋‍🧑🏽 8923113531 𓀇 VIP ...gurkirankumar98700
 
Mumbai Call Girls Colaba Pooja WhatsApp 7738631006 💞 Full Night Enjoy
Mumbai Call Girls Colaba Pooja WhatsApp  7738631006  💞 Full Night EnjoyMumbai Call Girls Colaba Pooja WhatsApp  7738631006  💞 Full Night Enjoy
Mumbai Call Girls Colaba Pooja WhatsApp 7738631006 💞 Full Night EnjoyPooja Nehwal
 
A STUDY ON EMPLOYEE MORALE AT ELGI EQUIPMENT ELIMITED
A STUDY ON EMPLOYEE MORALE AT ELGI  EQUIPMENT ELIMITEDA STUDY ON EMPLOYEE MORALE AT ELGI  EQUIPMENT ELIMITED
A STUDY ON EMPLOYEE MORALE AT ELGI EQUIPMENT ELIMITEDksanjai333
 
Top Call Girls In Indira Nagar Lucknow ( Lucknow ) 🔝 8923113531 🔝 Cash Payment
Top Call Girls In Indira Nagar Lucknow ( Lucknow  ) 🔝 8923113531 🔝  Cash PaymentTop Call Girls In Indira Nagar Lucknow ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment
Top Call Girls In Indira Nagar Lucknow ( Lucknow ) 🔝 8923113531 🔝 Cash Paymentanilsa9823
 
Cheap Rate ➥8448380779 ▻Call Girls In Sector 54 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 54 GurgaonCheap Rate ➥8448380779 ▻Call Girls In Sector 54 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 54 GurgaonDelhi Call girls
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Gachibowli high-profile Call ...
VIP 7001035870 Find & Meet Hyderabad Call Girls Gachibowli high-profile Call ...VIP 7001035870 Find & Meet Hyderabad Call Girls Gachibowli high-profile Call ...
VIP 7001035870 Find & Meet Hyderabad Call Girls Gachibowli high-profile Call ...aditipandeya
 
Top Call Girls In Arjunganj ( Lucknow ) ✨ 8923113531 ✨ Cash Payment
Top Call Girls In Arjunganj ( Lucknow  ) ✨ 8923113531 ✨  Cash PaymentTop Call Girls In Arjunganj ( Lucknow  ) ✨ 8923113531 ✨  Cash Payment
Top Call Girls In Arjunganj ( Lucknow ) ✨ 8923113531 ✨ Cash Paymentanilsa9823
 
Cheap Rate ➥8448380779 ▻Call Girls In Sector 56 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 56 GurgaonCheap Rate ➥8448380779 ▻Call Girls In Sector 56 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 56 GurgaonDelhi Call girls
 
Cheap Rate ➥8448380779 ▻Call Girls In Sector 55 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 55 GurgaonCheap Rate ➥8448380779 ▻Call Girls In Sector 55 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 55 GurgaonDelhi Call girls
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Jubilee Hills high-profile Ca...
VIP 7001035870 Find & Meet Hyderabad Call Girls Jubilee Hills high-profile Ca...VIP 7001035870 Find & Meet Hyderabad Call Girls Jubilee Hills high-profile Ca...
VIP 7001035870 Find & Meet Hyderabad Call Girls Jubilee Hills high-profile Ca...aditipandeya
 
(COD) ̄Young Call Girls In Defence Colony , New Delhi꧁❤ 7042364481❤꧂ Escorts S...
(COD) ̄Young Call Girls In Defence Colony , New Delhi꧁❤ 7042364481❤꧂ Escorts S...(COD) ̄Young Call Girls In Defence Colony , New Delhi꧁❤ 7042364481❤꧂ Escorts S...
(COD) ̄Young Call Girls In Defence Colony , New Delhi꧁❤ 7042364481❤꧂ Escorts S...Hot Call Girls In Sector 58 (Noida)
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Secunderabad high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Secunderabad high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Secunderabad high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Secunderabad high-profile Cal...aditipandeya
 
Call girls in Andheri with phone number 9892124323
Call girls in Andheri with phone number 9892124323Call girls in Andheri with phone number 9892124323
Call girls in Andheri with phone number 9892124323Pooja Nehwal
 
Product Catalog Bandung Home Decor Design Furniture
Product Catalog Bandung Home Decor Design FurnitureProduct Catalog Bandung Home Decor Design Furniture
Product Catalog Bandung Home Decor Design Furniturem3resolve
 

Recently uploaded (20)

Model Call Girl in Bawana Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Bawana Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Bawana Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Bawana Delhi reach out to us at 🔝8264348440🔝
 
EMPLOYEES JOB SATISFACTION ( With special reference to selected Sundaram Ind...
EMPLOYEES JOB SATISFACTION  ( With special reference to selected Sundaram Ind...EMPLOYEES JOB SATISFACTION  ( With special reference to selected Sundaram Ind...
EMPLOYEES JOB SATISFACTION ( With special reference to selected Sundaram Ind...
 
Lucknow 💋 Escort Service in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 89...
Lucknow 💋 Escort Service in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 89...Lucknow 💋 Escort Service in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 89...
Lucknow 💋 Escort Service in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 89...
 
VIP Chandigarh Call Girls 7001035870 Enjoy Call Girls With Our Escorts
VIP Chandigarh Call Girls 7001035870 Enjoy Call Girls With Our EscortsVIP Chandigarh Call Girls 7001035870 Enjoy Call Girls With Our Escorts
VIP Chandigarh Call Girls 7001035870 Enjoy Call Girls With Our Escorts
 
CALL ON ➥8923113531 🔝Call Girls Sushant Golf City Lucknow best sexual service...
CALL ON ➥8923113531 🔝Call Girls Sushant Golf City Lucknow best sexual service...CALL ON ➥8923113531 🔝Call Girls Sushant Golf City Lucknow best sexual service...
CALL ON ➥8923113531 🔝Call Girls Sushant Golf City Lucknow best sexual service...
 
High Profile Call Girls in Lucknow | Whatsapp No 🧑🏼‍❤️‍💋‍🧑🏽 8923113531 𓀇 VIP ...
High Profile Call Girls in Lucknow | Whatsapp No 🧑🏼‍❤️‍💋‍🧑🏽 8923113531 𓀇 VIP ...High Profile Call Girls in Lucknow | Whatsapp No 🧑🏼‍❤️‍💋‍🧑🏽 8923113531 𓀇 VIP ...
High Profile Call Girls in Lucknow | Whatsapp No 🧑🏼‍❤️‍💋‍🧑🏽 8923113531 𓀇 VIP ...
 
Pakistani Jumeirah Call Girls # +971559085003 # Pakistani Call Girls In Jumei...
Pakistani Jumeirah Call Girls # +971559085003 # Pakistani Call Girls In Jumei...Pakistani Jumeirah Call Girls # +971559085003 # Pakistani Call Girls In Jumei...
Pakistani Jumeirah Call Girls # +971559085003 # Pakistani Call Girls In Jumei...
 
Mumbai Call Girls Colaba Pooja WhatsApp 7738631006 💞 Full Night Enjoy
Mumbai Call Girls Colaba Pooja WhatsApp  7738631006  💞 Full Night EnjoyMumbai Call Girls Colaba Pooja WhatsApp  7738631006  💞 Full Night Enjoy
Mumbai Call Girls Colaba Pooja WhatsApp 7738631006 💞 Full Night Enjoy
 
A STUDY ON EMPLOYEE MORALE AT ELGI EQUIPMENT ELIMITED
A STUDY ON EMPLOYEE MORALE AT ELGI  EQUIPMENT ELIMITEDA STUDY ON EMPLOYEE MORALE AT ELGI  EQUIPMENT ELIMITED
A STUDY ON EMPLOYEE MORALE AT ELGI EQUIPMENT ELIMITED
 
Top Call Girls In Indira Nagar Lucknow ( Lucknow ) 🔝 8923113531 🔝 Cash Payment
Top Call Girls In Indira Nagar Lucknow ( Lucknow  ) 🔝 8923113531 🔝  Cash PaymentTop Call Girls In Indira Nagar Lucknow ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment
Top Call Girls In Indira Nagar Lucknow ( Lucknow ) 🔝 8923113531 🔝 Cash Payment
 
Cheap Rate ➥8448380779 ▻Call Girls In Sector 54 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 54 GurgaonCheap Rate ➥8448380779 ▻Call Girls In Sector 54 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 54 Gurgaon
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Gachibowli high-profile Call ...
VIP 7001035870 Find & Meet Hyderabad Call Girls Gachibowli high-profile Call ...VIP 7001035870 Find & Meet Hyderabad Call Girls Gachibowli high-profile Call ...
VIP 7001035870 Find & Meet Hyderabad Call Girls Gachibowli high-profile Call ...
 
Top Call Girls In Arjunganj ( Lucknow ) ✨ 8923113531 ✨ Cash Payment
Top Call Girls In Arjunganj ( Lucknow  ) ✨ 8923113531 ✨  Cash PaymentTop Call Girls In Arjunganj ( Lucknow  ) ✨ 8923113531 ✨  Cash Payment
Top Call Girls In Arjunganj ( Lucknow ) ✨ 8923113531 ✨ Cash Payment
 
Cheap Rate ➥8448380779 ▻Call Girls In Sector 56 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 56 GurgaonCheap Rate ➥8448380779 ▻Call Girls In Sector 56 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 56 Gurgaon
 
Cheap Rate ➥8448380779 ▻Call Girls In Sector 55 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 55 GurgaonCheap Rate ➥8448380779 ▻Call Girls In Sector 55 Gurgaon
Cheap Rate ➥8448380779 ▻Call Girls In Sector 55 Gurgaon
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Jubilee Hills high-profile Ca...
VIP 7001035870 Find & Meet Hyderabad Call Girls Jubilee Hills high-profile Ca...VIP 7001035870 Find & Meet Hyderabad Call Girls Jubilee Hills high-profile Ca...
VIP 7001035870 Find & Meet Hyderabad Call Girls Jubilee Hills high-profile Ca...
 
(COD) ̄Young Call Girls In Defence Colony , New Delhi꧁❤ 7042364481❤꧂ Escorts S...
(COD) ̄Young Call Girls In Defence Colony , New Delhi꧁❤ 7042364481❤꧂ Escorts S...(COD) ̄Young Call Girls In Defence Colony , New Delhi꧁❤ 7042364481❤꧂ Escorts S...
(COD) ̄Young Call Girls In Defence Colony , New Delhi꧁❤ 7042364481❤꧂ Escorts S...
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Secunderabad high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Secunderabad high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Secunderabad high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Secunderabad high-profile Cal...
 
Call girls in Andheri with phone number 9892124323
Call girls in Andheri with phone number 9892124323Call girls in Andheri with phone number 9892124323
Call girls in Andheri with phone number 9892124323
 
Product Catalog Bandung Home Decor Design Furniture
Product Catalog Bandung Home Decor Design FurnitureProduct Catalog Bandung Home Decor Design Furniture
Product Catalog Bandung Home Decor Design Furniture
 

Software development, mobile platforms, cloud services - Lean Development and Agile Methodologies - 2017 - Lesson 1

  • 3. Software solution ● One or more applications (programs) working together to provide a functionality
  • 4. Stand alone application ● Examples: Calculator, word processor, photo editing... ● Everything happens locally inside the application: external applications, computers, or devices are not involved ● Uses only the resources available on the local machine ○ Limited by available computing power ○ Limited by battery ○ Limited by access to information ○ … screen size, camera, hardware...
  • 5. Multiple applications ● Interaction between different software programs ● Work is distributed, each software program takes care of a task ● Together they provide the solution ● Communication channel needed, often internet or a local network
  • 6. Client / Server Architecture Two parts: client and server. Designed to work together ● Client: asks to be served by the server ● Server: performs the task and return a result to the client
  • 7. Client / Server Architecture
  • 8. One server can be used by multiple clients at the same time
  • 10. ● Messaging apps (Whatsapp, Telegram…) ● Social application (FB, Twitter, Instagram…) ● Dating (Tinder, Happn…) ● Browsers ● Email clients ● ...
  • 11. Client has access to the server capabilities ● Client is not limited by resources available on the device and can access resources and capabilities provided by the server ○ Computing power ○ Access to information ○ Storage capabilities ○ Special hardware or configuration ○ ...
  • 12. How do client and server communicate? ● The server exposes a series of commands that the client can use to interact with the server to make something happen ● This are called APIs (Application Programming Interface) ● By calling the APIs in a proper order the client and server are able to communicate ● The set of rules that describe the order of API calls needed to obtain a result or a successful communication is called protocol
  • 13. Bath Protocol ● Close bath hole ● Rotate cold water tap by 90° ● Rotate hot water tap by 180° ● [Wait 10 minutes] ● Rotate cold water tap by -90° ● Rotate hot water tap by -180° Bath tub APIs ● Open bath hole ● Close bath hole ● Rotate cold water tap ● Rotate hot water tap
  • 14. Public APIs ● If a server uses a set of public APIs and protocols anyone can write a client that interacts with the server. ○ Authentication and security are available ● E.g.: Web browsers (client application) can talk to all the websites (servers) because the web browsers and all the web servers talk using the same protocol (HTTP)
  • 15. Web Services ● There are multiple servers that expose public apis providing any kind of information ○ Weather conditions and forecasts ○ Marvel superheroes information ○ Star Wars API ○ … ●
  • 16. A client can contact different servers for different reasons ● We may think of an application that given a list of ingredients suggests a recipe for dinner using those ingredients, and the proper wine pairing. ● The client application may need to contact a server to find the proper recipe, and a different server to find the proper wine
  • 17. A device can be a server and a client for different services - 1 1. Arya writes a Whatsapp message to the group "Stark Family" 2. WA application on Arya’s phone asks to the Whatsapp messaging center to send the message ○ Client: application on Arya's phone ○ Server: messaging center
  • 18. A device can be a server and a client for different services - 2 3. Whatsapp messaging center asks the database server for the list of members in the group "Stark Family" ○ Client: messaging server ○ Server: database server 4. Whatsapp messaging center sends the message to all the members
  • 19. Different kinds of servers ● Game server ● Web server ● Mail server ● Print server ● Database server ● ....
  • 20. What is a Database? ● Organized data ● Think about it as a set of tables with rules and relations ● Optimized to be searched, modified, processed Databases are often a key component of modern software solutions.
  • 21. Example: GOT Database NAME GENDER HOUSE_NAME John Snow m Stark Cersei Lannister f Lannister Arya Stark f Stark Sansa Stark f Stark NAME SYMBOL Stark Wolf Lannister Lion Character House
  • 22. Dear database... ● Tell me all the houses that have both male and female characters ● Tell me all the female characters ● Tell me all the members of house Stark ● Tell me the house symbol of John Snow
  • 23. Real world examples ● When you search on google the results are taken from a database ● When you open facebook the posts are taken from a database ● Same for Instagram, Twitter, Airbnb, PokemonGo...
  • 24. Peer-to-Peer (P2P) Architecture ● No central server ● Nodes are both clients and server for the same service ● Distributed storage, computing power, search etc.
  • 25. Peer-to-peer applications ● BitTorrent protocol ● Popcorn time ● Spotify (in early days) - Hybrid ● Dropbox - Hybrid ● Bitcoin
  • 26. Peer to peer social impact P2P networks provide disruptive technologies that stimulate important social debates ● Who's to blame when copyrighted / illegal material is shared on a p2p network? ● Net Neutrality debate ○ "all bits are created equals" ○ open internet: content should be treated equally ● Decentralized currencies regulation debate
  • 27. Recap ● Single app ● Multiple applications ● Client / Server relationship ○ Client asks for a service, server delivers the service ■ The client can access resources (data, computation power, information) on the server ○ Multiple clients for each server ○ Various kinds of servers ○ Database server ■ Organized data ■ Optimized to be searched, modified, processed ● Peer 2 Peer
  • 29. Computers: they speak machine language ● it's awful! :( ● they want to be instructed with this language ● depends on how their processor is designed ● machine language varies between different machines
  • 30. This is how it looks like
  • 32. Alternatives to machine language? There are other programming languages, closer to human language, that are easier to write and understand. ● Formal languages to instruct a machine ● Different purposes, different level of abstractions, different philosophies
  • 33. They are a bit better public class HelloWorld { public static void main(String[] args) { // Prints "Hello, World" to the terminal window. System.out.println("Hello, World"); } }
  • 34. How do we go from here to the machine language? ● Compiling ○ Human: writes the source code ○ Compiler program: translate source code in numerical machine language (compilation phase) creating the final program file in machine language. This is the program that will run. ○ Computer: execute the program file ● Interpreting ○ Human: writes the source code ○ Instead of being compiled, the source code is translated into "something else" ○ Later, an Interpreter program looks into "something else" and execute it translating it in machine instructions
  • 35. Source code ● Source code is the “recipe” for the application ● It is valuable for developers, as recipes are for chefs public class HelloWorld { public static void main(String[] args) { // Prints "Hello, World" to the terminal window. System.out.println("Hello, World"); } }
  • 36. Closed Source = The recipe (source code) is secret.
  • 37. Open Source = The recipe (source code) is public.
  • 38. Open Source or Closed Source? ● There is no right answer ● Depends a lot on the business model and strategy of the company ● There are multiple licenses in between that describe how you can use source code of an application ● The debate on software licenses is very interesting but out of the scope of this course :)
  • 39. Developers and platforms Developers usually have experience of one or more programming languages that they have used on one or more platforms. Each platform supports one or more programming languages, so for example you should know the Java programming language to develop on Android. Each platform has different APIs and functionalities, so experience on the platform is important as well.
  • 40. What language is used for… ● Dynamic Website - Javascript ○ scripting language, client side, web oriented ● Video Game with lots of graphic - C++ ○ Closer to machine, allows more optimization ● iOS app - Objective C / Swift ● Android app - Java ● Server side app - Java NOTE: this is an inaccurate and oversimplified list. Do not consider it any differently
  • 41. So java works for both android and server... ● Android app - Java ● Server side app - Java
  • 42. Same language, different problems ● Client vs Server ● limited resources vs large resources ● UI vs no UI ● Unstable connection vs stable connection ● Variable context vs fixed context ● human interaction vs no human interaction
  • 43. So iOS and Android have similar problems Same problems, different platforms ● Mobile teams are usually able to find a shared design ○ it works quite welI ○ (there are exception depending on the platform) ● Different Platforms have different APIs ○ Can I delete user data? ○ Can I access pictures? ○ Where are contacts stored? ○ How can I do something in the background? ● Different Platforms have different guidelines ○ When in Rome, do what romans do
  • 46. Software development recap ● Programming Languages ● Source code ○ Closed Source (Coca-cola) ○ Open Source (Apple pie) ● Client developers / Server developers ● Different platforms have different APIs and guidelines. ○ Follow the guidelines!
  • 48. Mobile Platform distribution ● Android - approx 80% ● iOS - approx 20% ● Others - dead Data taken from http://www.gartner.com/newsroom/id/3609817
  • 49. Big differences between countries Mobile platform units sold in 3 months ending Feb 2017, taken from https://www.kantarworldpanel.com/global/smartphone-os-market-share/
  • 50. Android ● Open source OS - Google is a key contributor ● Runs on device built by different manufacturers ● wide range of devices ● fragmentation ● Slow upgrades rollout
  • 51. iOS ● Proprietary OS built by Apple (closed source) ● Runs on devices built by apple ● High end devices ● control on hw, sw ● Less fragmentation
  • 52. Google ● sells ads ● wider market as possible ● does not build hw directly ● Cloud is strategy ● Android is tactic
  • 53. Strategy VS Tactic ● Strategy: long term plan and objective ● Tactic: actions taken to achieve what defined in the strategy Strategy: “Get users to use our services and platforms as much as possible so we can gather informations on what they like and provide them interesting and personalized advertisement” Tactic: “Promote Android adoption as much as possible and position google as the primary provider of services for Android” (and multiple other tactical steps!)
  • 54. Apple ● Sells products to end users ● Premium segment ● Device is strategy ● Cloud is tactic
  • 55. Different Mobile Users ● Apple ○ Higher income ○ Propension to spend money ■ Credit cards often linked ■ “Apple Tax” (urbandictionary) ■ Payed application are the norm ○ Power users ○ Smaller user base ● Android ○ Lower average income ○ Less willing to spend money ■ Less credit cards linked ■ Minor average cost of device ■ Different developers approach ○ Wider user profiles (me & my mother) ○ Larger user base
  • 56. Mobile First: which platform? ● What is the best platform to start from when developing an application? ● As always, it depends on ○ What is the target market? ○ What is the target user? ○ What is the business plan?
  • 58. Providing a Client / Server solution We are launching a new application that allows user to take a picture of any beer, provide the review and see other user’s reviews. Client will run on the user device ● What about the server? We need to provide the servers to our users. Should we buy a server?
  • 59. Servers are expensive ● Upfront costs ● How many clients should you be able to support in the next year? ● Reliable, high-speed connection ● Servers should be kept in a safe and secure place ○ Climatization ○ Security
  • 60. Servers require maintenance ● By someone you have to pay ● Parts that need to be replaced ● Software that needs to be upgraded ● As business grows, upgrade or addition of new server is needed
  • 61. Servers are a point of failure ● Any issue on the server breaks the entire service ● You need mechanisms to avoid data loss ○ Backup / Replication / Mirror ○ Note: sometimes it's not even your data, but your user's data! ○ Multiple distant physical location to be safe
  • 62. Cloud computing ● The alternative to in-house servers. ● Cloud computing provides computer processing resources, data, storage and common services on demand. ● You can rent a cloud server and set it up as you want ● And / or you can access commonly used services as needed
  • 63. Cloud computing ● Servers and services are provided by third party ○ Amazon ○ Google ○ Microsoft ○ ... ● Remote computing power and services delivered on a pay per use basis ● No need to think about maintenance, security, uptime etc.
  • 64.
  • 65. Cloud server ● You do not get a real machine but a section of a huge center that behaves like a real machine ● Can be copied easily ● Can be reconfigured easily ○ change memory, cpu, storage size ● Can be configured to have elastic behavior ○ Can handle spikes ○ Can prevent some kind of malicious attacks
  • 66. Elastic behavior ● Server is able to change its configuration to satisfy the incoming requests ● You have a server that grows and shrinks as needed ● Can handle unexpected (or expected) traffic peaks ● Can protect the service from DDOS attacks ○ Distributed Denial Of Service
  • 67. Elastic behavior example Between T1 and T2 the server increases automatically his capabilities to handle the increased load. Without an elastic behavior the server would have not been able to handle all the requests in the spike
  • 68. Other cloud services ● Database ● Storage ● Transcoding of pictures / videos ● Serverless code execution ● Load balancing ● ...
  • 69. Cloud computing - Recap ● Setting up and maintaining a server is difficult and expensive ● Cloud computing can help ○ Offered by large players ○ Provides virtual servers ○ Provides additional services ○ Pay per use