SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
Maintenance
Project
Checklist
2013 June 5
HelsinkiOS / CocoaHeads Helsinki
At Flowdock
To Be Updated
Continuously
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 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
Onwards and Upwards!
Thank You
by
Jouni Miettunen
jouni.miettunen@gmail.com
@jomtwi

Mais conteúdo relacionado

Mais de Jouni Miettunen

2023-11-iOSMeet-TipKit.pdf
2023-11-iOSMeet-TipKit.pdf2023-11-iOSMeet-TipKit.pdf
2023-11-iOSMeet-TipKit.pdfJouni Miettunen
 
Static Swift Code Analysis - The Background Story
Static Swift Code Analysis - The Background StoryStatic Swift Code Analysis - The Background Story
Static Swift Code Analysis - The Background StoryJouni Miettunen
 
Automated Xcode 7 UI Testing
Automated Xcode 7 UI TestingAutomated Xcode 7 UI Testing
Automated Xcode 7 UI TestingJouni Miettunen
 
HelsinkiOS Jan 2015: Useful iOS Code Snippets
HelsinkiOS Jan 2015: Useful iOS Code SnippetsHelsinkiOS Jan 2015: Useful iOS Code Snippets
HelsinkiOS Jan 2015: Useful iOS Code SnippetsJouni Miettunen
 
HelsinkiOS Nov 2014: My Favorite Non-Apple Developer Tools
HelsinkiOS Nov 2014: My Favorite Non-Apple Developer ToolsHelsinkiOS Nov 2014: My Favorite Non-Apple Developer Tools
HelsinkiOS Nov 2014: My Favorite Non-Apple Developer ToolsJouni Miettunen
 
iOS Sensors for Beginners
iOS Sensors for BeginnersiOS Sensors for Beginners
iOS Sensors for BeginnersJouni Miettunen
 

Mais de Jouni Miettunen (7)

2023-11-iOSMeet-TipKit.pdf
2023-11-iOSMeet-TipKit.pdf2023-11-iOSMeet-TipKit.pdf
2023-11-iOSMeet-TipKit.pdf
 
Walk The Talk
Walk The TalkWalk The Talk
Walk The Talk
 
Static Swift Code Analysis - The Background Story
Static Swift Code Analysis - The Background StoryStatic Swift Code Analysis - The Background Story
Static Swift Code Analysis - The Background Story
 
Automated Xcode 7 UI Testing
Automated Xcode 7 UI TestingAutomated Xcode 7 UI Testing
Automated Xcode 7 UI Testing
 
HelsinkiOS Jan 2015: Useful iOS Code Snippets
HelsinkiOS Jan 2015: Useful iOS Code SnippetsHelsinkiOS Jan 2015: Useful iOS Code Snippets
HelsinkiOS Jan 2015: Useful iOS Code Snippets
 
HelsinkiOS Nov 2014: My Favorite Non-Apple Developer Tools
HelsinkiOS Nov 2014: My Favorite Non-Apple Developer ToolsHelsinkiOS Nov 2014: My Favorite Non-Apple Developer Tools
HelsinkiOS Nov 2014: My Favorite Non-Apple Developer Tools
 
iOS Sensors for Beginners
iOS Sensors for BeginnersiOS Sensors for Beginners
iOS Sensors for Beginners
 

Último

Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastUXDXConf
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyUXDXConf
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoUXDXConf
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 

Último (20)

Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 

Checklist for iOS Maintenance Project

  • 1. Maintenance Project Checklist 2013 June 5 HelsinkiOS / CocoaHeads Helsinki At Flowdock To Be Updated Continuously
  • 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
  • 10. Onwards and Upwards! Thank You by Jouni Miettunen jouni.miettunen@gmail.com @jomtwi