five elements of software engineering for mobile

46
@ManfredBo 5 Elements of Software Engineering for Mobile Manfred Bortenschlager I work at 3scale.net Out-of-the-box API Management Imperial College March 24, 2014

Upload: 3scalenet

Post on 28-Jan-2015

104 views

Category:

Technology


0 download

DESCRIPTION

I presented five elements of software engineering for mobile that IMHO increase the chance of success to Computing students at Imperial College. These five elements are: 1. Make the technical platform choices right for your context 2. Get the UX right 3. Choose the right methodologies in the areas of building a business, customer development and product development 4. Enrich the functionality of your app integrating Web APIs 5. Leverage the power of tools (rather than reinventing the wheel) I started a write-up of this talk. Find it here: http://www.3scale.net/2014/04/five-elements-software-engineering-mobile-part-1/

TRANSCRIPT

Page 1: Five Elements of Software Engineering for Mobile

@ManfredBo

5 Elements of Software Engineering for Mobile

Manfred Bortenschlager

I work at 3scale.netOut-of-the-box API Management

Imperial CollegeMarch 24, 2014

Page 2: Five Elements of Software Engineering for Mobile

@ManfredBo

Overview

0. Why Mobile is Different

1. Technological Platform Choices

2. Users’ Experience

3. Methodologies

4. Web APIs

5. Tools

Page 3: Five Elements of Software Engineering for Mobile

0. Why Mobile is Different

Page 4: Five Elements of Software Engineering for Mobile

@ManfredBo

Difference: User Behaviour

● Inherently mobile

○ Limited cognitive resources, 4sec attention time span

● Limited hardware

○ Screen size, battery, bandwidth, CPU

○ 1sec delay ⇒ 16% customer satisfaction decrease

● Cost

○ Data transfer and data plans

Page 5: Five Elements of Software Engineering for Mobile

Source: MaximumPC, http://www.maximumpc.com/article/news/more_mobile_phones_south_korea_people

Fragmentation

Page 6: Five Elements of Software Engineering for Mobile

Source: http://www.idownloadblog.com/2013/05/16/idc-smartphones-q1-2013-2/

Page 7: Five Elements of Software Engineering for Mobile

Source: Tsahi Levent-Levi, http://www.flickr.com/photos/86979666@N00/7809646882

Page 8: Five Elements of Software Engineering for Mobile

Source: OpenSignal, http://opensignal.com/reports/fragmentation.php?

Page 9: Five Elements of Software Engineering for Mobile

@ManfredBo

Difference: User I/O

○ Multipoint-touch

○ Gestures and motion detection

○ Sensors (acceleration, tilt, GPS, compass)

○ Haptic feedback

○ Speech-to-text / text-to-speech

○ Camera (face recognition)

● No conventional I/O means

Page 10: Five Elements of Software Engineering for Mobile

@ManfredBo

Difference: Market Characteristics

● Ephemerality

● User acquisition / retention

● Distribution

● Business models

○ Revenue models

Page 11: Five Elements of Software Engineering for Mobile

@ManfredBo

Why is it worth thinking about these things

at all?

Page 12: Five Elements of Software Engineering for Mobile

“Mobile app development is a

$68 billion industry (2013)“

GDP of Cuba11m population

Source: Vision Mobile,http://www.visionmobile.com/product/developer-economics-q1-2014-state-developer-nation/

Page 13: Five Elements of Software Engineering for Mobile

Not even touched wearables,Internet-of-Things, or sensors, yet...

Sources: http://www.catwig.com/google-glass-teardown/ http://edition.cnn.com/2013/05/02/travel/london-city-airport-internet-of-things/http://www.libelium.com/wireless_sensor_networks_to_control_radiation_levels_geiger_counters/And respective product sites.

Cisco: $14.4tr market

Page 14: Five Elements of Software Engineering for Mobile

1. Technological Platform Choices

Page 15: Five Elements of Software Engineering for Mobile

@ManfredBo

Choices

● Native

● Web

● Hybrid

● Cross-platform

○ Appcelerator, Marmalade, PhoneGap/Cordova,

Xamarin ...

Page 16: Five Elements of Software Engineering for Mobile

@ManfredBo

App Lifecycle

Source: http://developer.android.com/training/basics/activity-lifecycle/starting.html

Page 17: Five Elements of Software Engineering for Mobile

@ManfredBo

Specific Programming Idioms

E.g.: Intents in Android

Android-specific communication mechanism

Allows asynchronous messaging between platform and app components, primarily to:

1. Start an activity

2. Start a service

3. Broadcast to other apps

Image source, http://www.itcsolutions.eu/

Page 18: Five Elements of Software Engineering for Mobile

2. Users’ Experience

Page 19: Five Elements of Software Engineering for Mobile

@ManfredBo

The Sum of Everything a User Experiences

Source: Smashing Magazine,http://mobile.smashingmagazine.com/2012/07/12/elements-mobile-user-experience/

Page 20: Five Elements of Software Engineering for Mobile

3. Methodologies

Page 21: Five Elements of Software Engineering for Mobile

Building a business

Product development

Customer development

Methodology

Page 22: Five Elements of Software Engineering for Mobile

@ManfredBo

Building a Business

Page 23: Five Elements of Software Engineering for Mobile

@ManfredBo

Customer Development

See: “How to build a Startup”Udacity free online lecture by Berkeley Prof. Steve Blank

https://www.udacity.com/course/ep245

Page 24: Five Elements of Software Engineering for Mobile

Source: Alex Osterwalder, http://www.businessmodelgeneration.com/

Page 25: Five Elements of Software Engineering for Mobile

@ManfredBo

Revenue Models

Which apps make more money?

http://www.visionmobile.com/blog/2013/04/which-apps-make-more-money/

Page 26: Five Elements of Software Engineering for Mobile

@ManfredBo

Product Development

Page 27: Five Elements of Software Engineering for Mobile

4. Benefit of Web APIs

Page 28: Five Elements of Software Engineering for Mobile

@ManfredBo

What are Web APIs?

APsdfAPI

Page 29: Five Elements of Software Engineering for Mobile

@ManfredBo

Evolution of APIs

Current nb of APIs: 11,188

Page 30: Five Elements of Software Engineering for Mobile

@ManfredBo

Evolution of APIs

Source: tuts+ http://code.tutsplus.com/articles/the-increasing-importance-of-apis-in-web-development--net-22368(2011 data)

Page 31: Five Elements of Software Engineering for Mobile

@ManfredBo

Evolution of APIs

Source: tuts+ http://code.tutsplus.com/articles/the-increasing-importance-of-apis-in-web-development--net-22368(2011 data)

Page 32: Five Elements of Software Engineering for Mobile

@ManfredBo

Web APIs, REST

● REST = Representational State Transfer

● Stateless client/server communication protocol

● Architecture style entirely based on Web

standards

○ HTTP, URL, XML/JSON

● Supports all CRUD operations

● OS/platform independent

Page 33: Five Elements of Software Engineering for Mobile

@ManfredBo

Practical REST Example

Send HTTP verbs GET, POST, PUT, DELETE as

URLs to a server.

Example: Email verification API

http://my.api-providers.webaddress.com/version/VerifyEmail

?UserID=<myUserID>&Password=<myPassword>&TheEmailToVerify=

<email Address To Verify>&VerifyEmail.Timeout=<Time Out>

App ID and App Key are often required too

Page 34: Five Elements of Software Engineering for Mobile

@ManfredBo

Practical Example: Android (1/3)

Based on http://blog.strikeiron.com/bid/73189/Integrate-a-REST-API-into-Android-Application-in-less-than-15-minutes

Page 35: Five Elements of Software Engineering for Mobile

@ManfredBo

Practical Example: Android (2/3)

Page 36: Five Elements of Software Engineering for Mobile

@ManfredBo

Practical Example: Android (3/3)

Page 37: Five Elements of Software Engineering for Mobile

@ManfredBo

SDKs

Image Source: http://www.wikitude.com/

Page 38: Five Elements of Software Engineering for Mobile

5. Tools

Page 39: Five Elements of Software Engineering for Mobile

@ManfredBo

Developers who use tools make more money

Page 40: Five Elements of Software Engineering for Mobile

@ManfredBo

The Power of Tools

Backend services, storage: Amazon, Dropbox, Kinvey, Parse

Monetization: AdMob, InMobi

Feature testing: Splitforce, Testflight

Prototyping: AppGyver Prototyper, FluidUI

Usability testing: UXCam

Performance & crash reporting: Crittercism or BugSense

User support: Helpshift

Page 41: Five Elements of Software Engineering for Mobile

appdeveloperatlas.com/

Page 42: Five Elements of Software Engineering for Mobile

Take-aways

Page 43: Five Elements of Software Engineering for Mobile

➔ Understand and embrace the difference of mobile

➔ UX for mobile is much more than just (G)UI

➔ Include users soon and often

➔ Iterate often, focus on essentials

➔ Don’t reinvent the wheel -- use tools

➔ Enrich your app with Web APIs

➔ Massive potential -- go, grab it!Image Source http://www.entrepreneur.com/

Page 44: Five Elements of Software Engineering for Mobile

Helpful Resources

Page 45: Five Elements of Software Engineering for Mobile

@ManfredBo

Helpful Resources

http://www.visionmobile.com/

http://wip.org/

http://ben-evans.com/

http://www.3scale.net/blog/

Page 46: Five Elements of Software Engineering for Mobile

@ManfredBo

Helpful Resources

http://www.scoop.it/t/api-mag