This document outlines an introductory course on software solutions and development. It discusses various software architectures like single apps, client-server, and peer-to-peer networks. It also covers developing for different platforms, issues with managing servers, and how cloud computing can help address those issues. The course will cover topics like agile development, user stories, and simulating scrum processes. It provides an overview of major mobile platforms like Android and iOS and compares strategies of companies like Google, Apple, and Microsoft.
2. 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
3. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Overview
Management of development
Lean approach
Agile and Scrum
Minimal technical information
Sorry!
francesco mapelli (@mapelli) University of Insubria
Software Solution
4. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Lessons
April, 15th - Software Solutions
April, 22nd - Development process
April, 29th - Agile software development
May, 6th - User stories and estimating
May, 13th - Lab: Scrum simulation
francesco mapelli (@mapelli) University of Insubria
Software Solution
5. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Lessons - how
francesco mapelli (@mapelli) University of Insubria
Software Solution
6. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Exam
Frequentcy desired
Small test each lesson - counts for the nal result
Scrum simulation ... with Lego bricks!
Available for specic needs
francesco mapelli (@mapelli) University of Insubria
Software Solution
7. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Introduction
Who?
Francesco Mapelli
Android developer at Funambol
francesco mapelli (@mapelli) University of Insubria
Software Solution
8. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Single App
Stand alone app
Examples: Calculator, word processor, photo editing...
Everything happens locally, other devices are not involved
Access only the resources available on the local machine
Limited computing power
Limited battery
Limited access to information
francesco mapelli (@mapelli) University of Insubria
Software Solution
9. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Multiple applications
Interaction between dierent programs
Each one has a role
Together they provide the solution
Communication channel needed, usually internet or a local
network
francesco mapelli (@mapelli) University of Insubria
Software Solution
10. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Client / Server solutions
Two applications designed to work together
Client: asks to be served by the server
Server: performs the task and return a result
Client has access to resources provided by the server
Client and server have to understand each other
francesco mapelli (@mapelli) University of Insubria
Software Solution
11. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Servers APIs / protocol
Set of commands exposed by the server
Clients can use this commands to interact with the server
If APIs or protocol are public, everyone can write his own
client to interact with the server
(authentication and security are available)
francesco mapelli (@mapelli) University of Insubria
Software Solution
12. 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
13. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Something like...
francesco mapelli (@mapelli) University of Insubria
Software Solution
14. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
various kind of servers
Game server
Web server
Mail server
Print server
Database server
francesco mapelli (@mapelli) University of Insubria
Software Solution
15. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
What is a Database
Organized data
Think about it as a set of tables with rules and relations
Optimized to be searched, modied, processed
francesco mapelli (@mapelli) University of Insubria
Software Solution
16. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
Example
Character
NAME GENDER HOUSENAME
John Snow m Stark
Cersei Lannister f Lannister
Arya Stark f Stark
Sansa Stark f Stark
House
NAME SYMBOL
Stark Wolf
Lannister Lion
francesco mapelli (@mapelli) University of Insubria
Software Solution
17. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
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
francesco mapelli (@mapelli) University of Insubria
Software Solution
18. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
A device can be a server and a client for dierent services - 1
Arya writes a whatsapp message to the group Stark Family
Whatsapp application asks to the messaging server to send the
message
Client: application on Arya's phone
Server: message server
francesco mapelli (@mapelli) University of Insubria
Software Solution
19. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Client / Server
A device can be a server and a client for dierent services -2
Whastsapp messaging server asks the database server for the
list of members in the group Stark Family
Client: message server
Server: database server
Whatsapp message server sends the message to all the
members
francesco mapelli (@mapelli) University of Insubria
Software Solution
20. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Peer 2 Peer
Peer-to-Peer (P2P) Architecture
No central server
Nodes are both clients and server for
the same service
Distribuited storage, computing power,
search etc.
francesco mapelli (@mapelli) University of Insubria
Software Solution
21. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Peer 2 Peer
Used by...
BitTorrent protocol
Popcorn time
Spotify (in early days) - Hybrid
Dropbox - Hybrid
Bitcoin
francesco mapelli (@mapelli) University of Insubria
Software Solution
22. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Peer 2 Peer
P2P Impacts
Who's to blame when copyrighted / illegal material is shared
on a p2p network?
Net Neutrality
all bits are created equals
open internet: content shold be trated equally
francesco mapelli (@mapelli) University of Insubria
Software Solution
23. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Recap
Recap - Architectures
Single app
Client / Server
Client asks for a service, server delivers the service
Multiple clients for each server
Various kinds of servers
Database server
Peer 2 Peer
francesco mapelli (@mapelli) University of Insubria
Software Solution
24. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Server Issues
Providing a client / server solution
Client development
Server development
Server...
francesco mapelli (@mapelli) University of Insubria
Software Solution
25. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Server Issues
Servers are expensive
Upfront costs
How many clients should you be able to support in the next
year?
Reliable, high-speed connection
They should be kept in a safe and secure place
Climatization
Security
francesco mapelli (@mapelli) University of Insubria
Software Solution
26. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Server Issues
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
francesco mapelli (@mapelli) University of Insubria
Software Solution
27. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Server Issues
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 phisical location to be safe
francesco mapelli (@mapelli) University of Insubria
Software Solution
28. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
Cloud computing
Servers 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.
francesco mapelli (@mapelli) University of Insubria
Software Solution
29. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
francesco mapelli (@mapelli) University of Insubria
Software Solution
30. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
Virtual Server
You do not get a single machine but a section of a huge center
Can be copied easily
Can be recongured easily
change memory
change cpu
change storage size
Can be congured to have elastic behavior
Can handle spikes
Can prevent DOS attacks
francesco mapelli (@mapelli) University of Insubria
Software Solution
31. 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
32. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Cloud Solutions
Other Cloud Services
Database service
Load balancing services
Serverless code execution
francesco mapelli (@mapelli) University of Insubria
Software Solution
33. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Recap
Recap - About cloud
Providing a server in house is dicult
Cloud computing can help
francesco mapelli (@mapelli) University of Insubria
Software Solution
34. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
Computers: they speak machine language
it's awful! :(
they want to be instructed on what to do with this language
depends on how their processor is designed
machine language varies between dierent machines
francesco mapelli (@mapelli) University of Insubria
Software Solution
35. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
Something like...
francesco mapelli (@mapelli) University of Insubria
Software Solution
36. 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
37. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
There are other programming languages, closer to human
language, that are easier to write and understand.
Formal languages to instruct a machine
Dierent purposes, dierent level of abstractions, dierent
philosophies
francesco mapelli (@mapelli) University of Insubria
Software Solution
38. 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
39. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developing Software
How do we go from here to the machine language?
compiling
human: write the source code
program: translate source code in numerical machine language
(compilation phase)
computer: execute the machine code
interpreting
Insted of being compiled they are translated into something
else
later, an Interpreter looks into something else and execute it
francesco mapelli (@mapelli) University of Insubria
Software Solution
40. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Licenses
Source Code
Recipe for an application
francesco mapelli (@mapelli) University of Insubria
Software Solution
41. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Licenses
Closed Source
francesco mapelli (@mapelli) University of Insubria
Software Solution
42. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Licenses
Open Source
francesco mapelli (@mapelli) University of Insubria
Software Solution
43. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
What Developer do I need to develop...
Dynamic Website - Javascript
scripting language
client side
web oriented
Videogame with lots of graphic - C++
Closer to machine, allows more optimization
Windows Phone app, Windows deskotp app - C#
iOS app - Objective C / Swift
Android app - Java
Server side app - Java
...
francesco mapelli (@mapelli) University of Insubria
Software Solution
44. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
So...
Android app - Java
Server side app - Java
...
francesco mapelli (@mapelli) University of Insubria
Software Solution
45. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Same language, dierent problems
Client vs Server
limited resources vs large resources
UI vs no UI
Unstable connection vs stable connection
Variable context vs xed context
human interaction vs no human interaction
...
francesco mapelli (@mapelli) University of Insubria
Software Solution
46. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Ok then...
Android app - mobile problems
iOS app - mobile problems
...
francesco mapelli (@mapelli) University of Insubria
Software Solution
47. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Same problems, dierent platforms
Mobile teams are usually able to nd a shared design
it works quite well
(there are exception depending on the platform)
Dierent Platforms have dierent APIs
Can I delete user data?
Can I access pictures?
Where are contacts stored?
How can I do something in the backgroud?
Dierent Platforms have dierent guidelines
When in Rome, do what romans do
francesco mapelli (@mapelli) University of Insubria
Software Solution
48. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Platform guidelines - 1
francesco mapelli (@mapelli) University of Insubria
Software Solution
49. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Developers and platforms
Platform guidelines - 2
francesco mapelli (@mapelli) University of Insubria
Software Solution
50. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Recap
Recap
Programming Languages
Source code
Closed Source (Coca-cola)
Open Source (Apple pie)
Client developers / Server developers
Dierent platforms have dierent APIs and guidelines
francesco mapelli (@mapelli) University of Insubria
Software Solution
51. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Mobile platforms overview
iOS - approx 15%
Android - approx 80%
Windows Phone - approx 3%
(Blackberry and others)
francesco mapelli (@mapelli) University of Insubria
Software Solution
52. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
But it depends..
francesco mapelli (@mapelli) University of Insubria
Software Solution
53. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Google
sells ads
wider market as possible
does not build hw
Cloud is strategy
Android is tactic
francesco mapelli (@mapelli) University of Insubria
Software Solution
54. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Android
Open source OS - google is a key contributor
Runs on device built by dierent manufacturers
wide range of devices
more fragmentation
Slow upgrades rollout
francesco mapelli (@mapelli) University of Insubria
Software Solution
55. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Apple
sells products to end users
premium segment
Device is strategy
Cloud is tactic
francesco mapelli (@mapelli) University of Insubria
Software Solution
56. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
iOS
Proprietary OS built by Apple
Runs on devices built by apple
High end devices
control on hw, sw
francesco mapelli (@mapelli) University of Insubria
Software Solution
57. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Windows Phone / Windows 10 Mobile
Proprietary os / a version of windows
Runs on device from (not a lot of) dierent manufacturers
Tries to be compatible with other platforms
Not very successfull at the moment
francesco mapelli (@mapelli) University of Insubria
Software Solution
58. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Platforms
Microsoft
francesco mapelli (@mapelli) University of Insubria
Software Solution
59. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Mobile rst - Which platform?
Dierent mobile users
Apple
Higher income
Power users
Propension to spend money
Smaller user base
Android
Less willing to spend money
Low income countries
Less credit cards linked
Minor averege cost of device
Dierent developers approach (circular behavior!)
dierent user proles
Larger user base
francesco mapelli (@mapelli) University of Insubria
Software Solution
60. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
App Peak
App Peak?
Are users willing to have your app on
their home screen?
Delivery issue
Discoverability issue
Solutions?
App Streaming (G)
On demand resouces (A)
francesco mapelli (@mapelli) University of Insubria
Software Solution
61. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
OS Inuence
OS inuence
Mobile OSs able to shape the ecosystem where apps are run
Google Now
Deep Linking
Browser war - is good enough still true?
Google Maps vs Apple Maps
Unbundling content
3d touch
Google now on tap
francesco mapelli (@mapelli) University of Insubria
Software Solution
62. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Bots
Smart messaging / bots
There's a bot for that
Not AI... but related
Google Deepmind beating GO world champion
Chat interface for automating simple tasks
Order food
Book restaurant
schedule meetings
No need to install them
francesco mapelli (@mapelli) University of Insubria
Software Solution
63. Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts
Bots
Bots economic
Where's the money?
subscription
advertising
pushing content
increase sales
replace humans for simple tasks
Who joined?
Microsoft
Facebook
Slack
Telegram
...
francesco mapelli (@mapelli) University of Insubria
Software Solution