software solution - lean development and agile methodologies lesson 1
TRANSCRIPT
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Architectures
About Cloud
Development
Mobile Platforms
Food for thoughts
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Overview
I Management of development
I Lean approach
I Agile and Scrum
I Minimal technical informationI Sorry!
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Lessons
I April, 15th - Software Solutions
I April, 22nd - Development process
I April, 29th - Agile software development
I May, 6th - User stories and estimating
I May, 13th - Lab: Scrum simulation
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Lessons - how
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Exam
I Frequentcy desired
I Small test each lesson - counts for the �nal result
I Scrum simulation ... with Lego bricks!
I Available for speci�c needs
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Who?
I Francesco Mapelli
I Android developer at Funambol
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Single App
Stand alone app
I Examples: Calculator, word processor, photo editing...
I Everything happens locally, other devices are not involved
I Access only the resources available on the local machineI Limited computing powerI Limited batteryI Limited access to information
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Multiple applications
I Interaction between di�erent programs
I Each one has a role
I Together they provide the solution
I Communication channel needed, usually internet or a localnetwork
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Client / Server solutions
I Two applications designed to work togetherI Client: asks to be served by the serverI Server: performs the task and return a resultI Client has access to resources provided by the server
I Client and server have to understand each other
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Servers APIs / protocol
I Set of commands exposed by the server
I Clients can use this commands to interact with the server
I If APIs or protocol are public, everyone can write his ownclient to interact with the server
(authentication and security are available)
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
One server can be used by multiple clients at the same time
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Something like...
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
various kind of servers
I Game server
I Web server
I Mail server
I Print server
I Database server
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
What is a Database
I Organized data
I Think about it as a set of tables with rules and relations
I Optimized to be searched, modi�ed, processed
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Example
Character
I
NAME GENDER HOUSENAMEJohn Snow m StarkCersei Lannister f LannisterArya Stark f StarkSansa Stark f Stark
House
I
NAME SYMBOLStark WolfLannister Lion
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Dear Database..
I Tell me all the houses that have both male and femalecharacters
I Tell me all the female characters
I Tell me all the members of house Stark
I Tell me the house symbol of John Snow
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
A device can be a server and a client for di�erent services - 1
Arya writes a whatsapp message to the group "Stark Family"
I Whatsapp application asks to the messaging server to send themessage
Client: application on Arya's phoneServer: message server
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
A device can be a server and a client for di�erent services -2
I Whastsapp messaging server asks the database server for thelist of members in the group "Stark Family"
Client: message serverServer: database server
I Whatsapp message server sends the message to all themembers
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Peer 2 Peer
Peer-to-Peer (P2P) Architecture
I No central server
I Nodes are both clients and server forthe same service
I Distribuited storage, computing power,search etc.
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Peer 2 Peer
Used by...
I BitTorrent protocol
I Popcorn time
I Spotify (in early days) - Hybrid
I Dropbox - Hybrid
I Bitcoin
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Peer 2 Peer
P2P Impacts
I Who's to blame when copyrighted / illegal material is sharedon a p2p network?
I Net NeutralityI "all bits are created equals"I open internet: content shold be trated equally
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Recap
Recap - Architectures
I Single app
I Client / ServerI Client asks for a service, server delivers the serviceI Multiple clients for each serverI Various kinds of serversI Database server
I Peer 2 Peer
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Server Issues
Providing a client / server solution
I Client development
I Server development
I Server...
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Server Issues
Servers are expensive
I Upfront costs
I How many clients should you be able to support in the nextyear?
I Reliable, high-speed connection
I They should be kept in a safe and secure placeI ClimatizationI Security
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Server Issues
Servers require maintenance
I By someone you have to pay
I Parts that need to be replaced
I Software that needs to be upgraded
I As business grows, upgrade or addition of new server is needed
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Server Issues
Servers are a point of failure
I Any issue on the server breaks the entire service
I You need mechanisms to avoid data lossI Backup / Replication / MirrorI Note: sometimes it's not even your data, but your user's data!
I Multiple distant phisical location to be safe
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
Cloud computing
I Servers are provided by third partyI AmazonI GoogleI MicrosoftI ...
I Remote computing power and services delivered on a pay peruse basis
I no need to think about maintenance, security, uptime etc.
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
Virtual Server
I You do not get a single machine but a section of a huge center
I Can be copied easily
I Can be recon�gured easilyI change memoryI change cpuI change storage size
I Can be con�gured to have elastic behaviorI Can handle spikesI Can prevent DOS attacks
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
Elastic Behavior - Server changes size to satisfy the requests
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
Other Cloud Services
I Database service
I Load balancing services
I Serverless code execution
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Recap
Recap - About cloud
I Providing a server in house is di�cult
I Cloud computing can help
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
Computers: they speak machine language
I it's awful! :(
I they want to be instructed on what to do with this language
I depends on how their processor is designed
I machine language varies between di�erent machines
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
Something like...
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
We don't like machine language
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
There are other programming languages, closer to humanlanguage, that are easier to write and understand.
I Formal languages to instruct a machine
I Di�erent purposes, di�erent level of abstractions, di�erentphilosophies
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
They are a bit better...
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
How do we go from here to the machine language?
I compilingI human: write the source codeI program: translate source code in numerical machine language
(compilation phase)I computer: execute the machine code
I interpretingI Insted of being compiled they are translated into "something
else"I later, an Interpreter looks into "something else" and execute it
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Licenses
Source Code
I "Recipe" for an application
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Licenses
Closed Source
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Licenses
Open Source
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
What Developer do I need to develop...
I Dynamic Website - JavascriptI scripting languageI client sideI web oriented
I Videogame with lots of graphic - C++I Closer to machine, allows more optimization
I Windows Phone app, Windows deskotp app - C#
I iOS app - Objective C / Swift
I Android app - Java
I Server side app - Java
I ...
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
So...
I Android app - Java
I Server side app - Java
...
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Same language, di�erent problems
I Client vs Server
I limited resources vs large resources
I UI vs no UI
I Unstable connection vs stable connection
I Variable context vs �xed context
I human interaction vs no human interaction
I ...
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Ok then...
I Android app - mobile problems
I iOS app - mobile problems
...
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Same problems, di�erent platforms
I Mobile teams are usually able to �nd a shared designI it works quite wellI (there are exception depending on the platform)
I Di�erent Platforms have di�erent APIsI Can I delete user data?I Can I access pictures?I Where are contacts stored?I How can I do something in the backgroud?
I Di�erent Platforms have di�erent guidelinesI When in Rome, do what romans do
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Platform guidelines - 1
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Platform guidelines - 2
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Recap
Recap
I Programming Languages
I Source codeI Closed Source (Coca-cola)I Open Source (Apple pie)
I Client developers / Server developers
I Di�erent platforms have di�erent APIs and guidelines
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Mobile platforms overview
I iOS - approx 15%
I Android - approx 80%
I Windows Phone - approx 3%
I (Blackberry and others)
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
But it depends..
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
I sells ads
I wider market as possible
I does not build hw
I Cloud is strategy
I Android is tactic
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Android
I Open source OS - google is a key contributor
I Runs on device built by di�erent manufacturers
I wide range of devices
I more fragmentation
I Slow upgrades rollout
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Apple
I sells products to end users
I premium segment
I Device is strategy
I Cloud is tactic
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
iOS
I Proprietary OS built by Apple
I Runs on devices built by apple
I High end devices
I control on hw, sw
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Windows Phone / Windows 10 Mobile
I Proprietary os / a version of windows
I Runs on device from (not a lot of) di�erent manufacturers
I Tries to be compatible with other platforms
I Not very successfull at the moment
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Microsoft
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Mobile �rst - Which platform?
Di�erent mobile users
I AppleI Higher incomeI Power usersI Propension to spend moneyI Smaller user base
I AndroidI Less willing to spend money
I Low income countriesI Less credit cards linkedI Minor averege cost of deviceI Di�erent developers approach (circular behavior!)
I di�erent user pro�lesI Larger user base
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
App Peak
App Peak?
I Are users willing to have your app ontheir home screen?
I Delivery issue
I Discoverability issue
I Solutions?I App Streaming (G)I On demand resouces (A)
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
OS In�uence
OS in�uence
I Mobile OSs able to shape the ecosystem where apps are runI Google Now
I Deep Linking
I Browser war - is good enough still true?I Google Maps vs Apple Maps
I Unbundling contentI 3d touchI Google now on tap
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Bots
Smart messaging / bots
I "There's a bot for that"
I Not AI... but relatedI Google Deepmind beating GO world champion
I Chat interface for automating simple tasksI Order foodI Book restaurantI schedule meetings
I No need to install them
francesco mapelli (@mapelli) University of Insubria
Software Solution
Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Bots
Bots economic
I Where's the money?I subscriptionI advertisingI pushing contentI increase salesI replace humans for simple tasks
I Who joined?I MicrosoftI FacebookI SlackI TelegramI ...
francesco mapelli (@mapelli) University of Insubria
Software Solution