Transcript
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