architecting apps - can we write better code by planning ahead?

Post on 06-Aug-2015

156 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Architecting apps Can we write better code by planning ahead?

Paul Ardeleanu @pardel

Thank you

Architecting apps Can we write better code by planning ahead?

Paul Ardeleanu @pardel

Architecting apps

http://media.ofcom.org.uk/news/2015/five-years-of-tablets/

iOS apps available

100 000 000 000 app downloads

https://www.flickr.com/photos/officenow/2631533044/

http://www.tiobe.com/index.php/content/paperinfo/tpci/Swift.html

http://www.tiobe.com/index.php/content/paperinfo/tpci/Swift.html

http://www.apple.com/live/2015-june-event/

http://agilemanifesto.org

Solutions

A. Respect the process

B. Prototype

C. Divide & Conquer

D. Testing

E. Documentation

Respect the process

Ask the right questions

• usually starts with an idea / project requirement

• sell the vision to the team

• shoot the idea down and scale according to the platform constraints

• communication, communication, communication

• proposal

Application Definition Statement

Application Definition Statement

“A concise, concrete declaration of the app’s main purpose and its intended

audience.”

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/

Solve real problems

"An app must solve a user's problem clearly and elegantly."

Eric Hope, User Experience Evangelist, Apple

List of features

too manyfeatures?

Filter

Yes

ApplicationDefinitionStatement

Appfeatures

User journeys

Wirefames

Prototype

Prototype

Wireframes and/or Prototype

Wireframing

• identify main areas of the app

• identify screens

• identify relations between screens

• start from the simplest things and build up

• start from the main task of the app

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

Sketching

More sketching

start

Splash screen

List of sequences

Add sequence

Sequenceedit

05:12start Timer

start

Add timer

Sketching

• start from the most important task

• identify main areas of the app

• identify screens

• identify relations between screens

• Don’t worry! You won’t get it right the first time

Prototyping

• Web based

• Visual

• Presentation based

Divide & Conquer

C4 Model

C4 Model

C4 Model

Black Box

• Avoid side effects

• Control inter-dependencies

• Improve testability

Don’t follow blindly

Playgrounds

Testing

Faster is always better

Faster is always better

TDD vs BDD

• Test-Driven Development

• Behaviour-Driven Development

TBD

To Be Determined

Documentation

UML

The Unified Modelling Language (UML) is a general-purpose modelling language in the field of software engineering, which is designed to provide a standard way to visualize the design of a system.

UML

Documentation

• Sanity

• Communication across multiple teams

• Inter-operability of features

• Good practices

• Sanity

Solutions

A. Respect the process

B. Prototype

C. Divide & Conquer

D. Testing

E. Documentation

Off by 1

Motivation

Your Why

Change one’s life

Charity

Help people

Solutions

A. Respect the process

B. Prototype

C. Divide & Conquer

D. Testing

E. Documentation

F. Motivation

Thank you!

}

twitter

pardel@pardel.net}blog

top related