software solution - lean development and agile methodologies lesson 1

63

Upload: francesco-mapelli

Post on 16-Feb-2017

538 views

Category:

Small Business & Entrepreneurship


2 download

TRANSCRIPT

Software Solution

francesco mapelli (@mapelli)

University of Insubria

April 14, 2016

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

Google

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