Top Banner
63

Software solution - Lean development and Agile methodologies lesson 1

Feb 16, 2017

Download

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Software solution - Lean development and Agile methodologies lesson 1

Software Solution

francesco mapelli (@mapelli)

University of Insubria

April 14, 2016

Page 2: Software solution - Lean development and Agile methodologies lesson 1

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

Page 3: Software solution - Lean development and Agile methodologies lesson 1

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

Page 4: Software solution - Lean development and Agile methodologies lesson 1

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

Page 5: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Introduction

Lessons - how

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 6: Software solution - Lean development and Agile methodologies lesson 1

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

Page 7: Software solution - Lean development and Agile methodologies lesson 1

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

Page 8: Software solution - Lean development and Agile methodologies lesson 1

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

Page 9: Software solution - Lean development and Agile methodologies lesson 1

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

Page 10: Software solution - Lean development and Agile methodologies lesson 1

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

Page 11: Software solution - Lean development and Agile methodologies lesson 1

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

Page 12: Software solution - Lean development and Agile methodologies lesson 1

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

Page 13: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Client / Server

Something like...

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 14: Software solution - Lean development and Agile methodologies lesson 1

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

Page 15: Software solution - Lean development and Agile methodologies lesson 1

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

Page 16: Software solution - Lean development and Agile methodologies lesson 1

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

Page 17: Software solution - Lean development and Agile methodologies lesson 1

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

Page 18: Software solution - Lean development and Agile methodologies lesson 1

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

Page 19: Software solution - Lean development and Agile methodologies lesson 1

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

Page 20: Software solution - Lean development and Agile methodologies lesson 1

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

Page 21: Software solution - Lean development and Agile methodologies lesson 1

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

Page 22: Software solution - Lean development and Agile methodologies lesson 1

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

Page 23: Software solution - Lean development and Agile methodologies lesson 1

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

Page 24: Software solution - Lean development and Agile methodologies lesson 1

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

Page 25: Software solution - Lean development and Agile methodologies lesson 1

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

Page 26: Software solution - Lean development and Agile methodologies lesson 1

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

Page 27: Software solution - Lean development and Agile methodologies lesson 1

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

Page 28: Software solution - Lean development and Agile methodologies lesson 1

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

Page 29: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Cloud Solutions

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 30: Software solution - Lean development and Agile methodologies lesson 1

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

Page 31: Software solution - Lean development and Agile methodologies lesson 1

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

Page 32: Software solution - Lean development and Agile methodologies lesson 1

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

Page 33: Software solution - Lean development and Agile methodologies lesson 1

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

Page 34: Software solution - Lean development and Agile methodologies lesson 1

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

Page 35: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Developing Software

Something like...

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 36: Software solution - Lean development and Agile methodologies lesson 1

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

Page 37: Software solution - Lean development and Agile methodologies lesson 1

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

Page 38: Software solution - Lean development and Agile methodologies lesson 1

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

Page 39: Software solution - Lean development and Agile methodologies lesson 1

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

Page 40: Software solution - Lean development and Agile methodologies lesson 1

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

Page 41: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Licenses

Closed Source

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 42: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Licenses

Open Source

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 43: Software solution - Lean development and Agile methodologies lesson 1

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

Page 44: Software solution - Lean development and Agile methodologies lesson 1

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

Page 45: Software solution - Lean development and Agile methodologies lesson 1

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

Page 46: Software solution - Lean development and Agile methodologies lesson 1

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

Page 47: Software solution - Lean development and Agile methodologies lesson 1

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

Page 48: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Developers and platforms

Platform guidelines - 1

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 49: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Developers and platforms

Platform guidelines - 2

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 50: Software solution - Lean development and Agile methodologies lesson 1

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

Page 51: Software solution - Lean development and Agile methodologies lesson 1

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

Page 52: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Platforms

But it depends..

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 53: Software solution - Lean development and Agile methodologies lesson 1

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

Page 54: Software solution - Lean development and Agile methodologies lesson 1

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

Page 55: Software solution - Lean development and Agile methodologies lesson 1

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

Page 56: Software solution - Lean development and Agile methodologies lesson 1

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

Page 57: Software solution - Lean development and Agile methodologies lesson 1

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

Page 58: Software solution - Lean development and Agile methodologies lesson 1

Introduction Architectures About Cloud Development Mobile Platforms Food for thoughts

Platforms

Microsoft

francesco mapelli (@mapelli) University of Insubria

Software Solution

Page 59: Software solution - Lean development and Agile methodologies lesson 1

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

Page 60: Software solution - Lean development and Agile methodologies lesson 1

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

Page 61: Software solution - Lean development and Agile methodologies lesson 1

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

Page 62: Software solution - Lean development and Agile methodologies lesson 1

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

Page 63: Software solution - Lean development and Agile methodologies lesson 1

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