2. 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
3. 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
4. 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)
5. 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
6. 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)
7. 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)
8. 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
9. War Stories
●
Dan Milstein:
How to Survive a Ground-Up Rewrite Without Lo
sing 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