Upload
jouni-miettunen
View
807
Download
0
Embed Size (px)
DESCRIPTION
Checklist and tips for an iOS application maintenance project. Presented at CocoaHeads Helsinki meetup June 2013
Citation preview
MaintenanceProject
Checklist
2013 June 5HelsinkiOS / CocoaHeads Helsinki
At Flowdock
To Be UpdatedContinuously
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
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
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)
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
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)
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)
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
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
Onwards and Upwards!
Thank You
by
Jouni Miettunen
@jomtwi