10
Maintenance Project Checklist 2013 June 5 HelsinkiOS / CocoaHeads Helsinki At Flowdock To Be Updated Continuously

Checklist for iOS Maintenance Project

Embed Size (px)

DESCRIPTION

Checklist and tips for an iOS application maintenance project. Presented at CocoaHeads Helsinki meetup June 2013

Citation preview

Page 1: Checklist for iOS Maintenance Project

MaintenanceProject

Checklist

2013 June 5HelsinkiOS / CocoaHeads Helsinki

At Flowdock

To Be UpdatedContinuously

Page 2: Checklist for iOS Maintenance Project

Why? Why? Why?

● Why Maintenance– Major iOS release once a year

● Why Project– Base backlog + new features + bug reports

● Why Checklist– Continuous improvement– DRY (don't repeat yourself)– Public review

Page 3: Checklist for iOS Maintenance Project

Understand the Application

● User Perspective– Install and try to use it– Read ALL documents, including reviews, bug

reports, online user comments, iTunes

● Technical Perspective– Read ALL tech docs (if any, even if old)– Analyze as a whole unit– Hardware changes

Page 4: Checklist for iOS Maintenance Project

Study High-Level Architecture

● “objc_dep.py” by Nicolas Seriot at Github ( link)– Graph non-system import/include dependancies– Refactoring by graphing class dependencies– Graphviz opens generated .dot files (link)

● Demo– iOctocat master branch (big and complex) (link)– Console On Device (small and simple) (link)

Page 5: Checklist for iOS Maintenance Project

Study High-Level Architecture

● Reveal App (link)– Runtime inspection for iOS apps

● Spark Inspector (link)– Monitor & Experiment in Real-time

● Demo– Xcode, iPhone Simulator and Spark Inspector– See UI view hierarchy with runtime changes

Page 6: Checklist for iOS Maintenance Project

Compiler is Your Friend

● Clang Static Analyzer● ARC● Modern Objective-C

– Clang 3.4 Objective-C Literals (link)● Storyboard(s) vs. XIBs● Clang Warnings

– Presentation by @AliRantakari at last meetup– Treat Warnings as Errors– Clang-warnings.h (link)

Page 7: Checklist for iOS Maintenance Project

Use the Source

● Code review and refactor● Search for “magic” strings

– TODO, NOTE, MAGIC– HACK, BUG, FIX

● Read comments (if any)– Version control commits

● Refactor to Self-Documenting Code– File and folder names, methods and parameters,

variables, notifications, protocols, constants– Web API Design by Apigee (link)

Page 8: Checklist for iOS Maintenance Project

Missing Parts

● Missing Testing Plan– A Mind Map for iOS Testing (link)

● Missing Localization– Linguan (link) with iOctocat demo– Easy Xib Localization Entity (link), iLocalize 4 (link)

● Missing Graphics– ResourceHelper (link) with iOctocat demo

● Missing User Info– Crashlytics, HockeyApp, Google Analytics

Page 9: Checklist for iOS Maintenance Project

War Stories

● Dan Milstein: How to Survive a Ground-Up Rewrite Without Losing Your Sanity– aka: Screw you Joel Spolsky, We're Rewriting It

From Scratch!● Kevin Hoctor:

Five Sure-Fire Ways to Sabotage a Release● Futurice Blog:

A story about design decisions and legacy code

Page 10: Checklist for iOS Maintenance Project

Onwards and Upwards!

Thank You

by

Jouni Miettunen

[email protected]

@jomtwi