iOS Application Development

Premise

What does it take to create an iOS Application that can have features added to it over a long period of time while resisting the temptation of wholesale rewrites? Can the foundations accommodate bug fixes made after months of neglect and unfamiliarity? What processes and infrastructure facilitate these goals?

Questions

References

Favour determining root causes and effective implementations through authoritative references over trial and error. Reliably measure successes and failures with useful metrics.

Application Environment

When implementing new features or fixes what authoritative sources need to be reviewed? Apple understands the environment they built so we start with their developer documentation, but there is no guarantee that it will be current, correct or thorough. When the official documentation fails, we can reference the less authoritative WWDC talks and tutorials for hints. Conference talks are frequently covering pre-release technologies so they are prone to inaccuracies post-release. Tutorials and their sample code similarly suffer from discrepancies due to the constant evolution of the operating system. Finally, source code or disassembled instructions offer a much slower but more insightful view of the truth. References published by Apple offer the opportunity to intuit their trends and design goals.

Delivery Pipeline

The book "Accelerate: Building and Scaling High Performing Technology Organizations" by Nicole Forsgren, PhD, Jez Humble, and Gene Kim provides evidence for the effectiveness of DevOps and its component parts. Related capabilities are: version control, deployment automation, continuous integration, trunk-based development, test automation, test data management, shift left on security, loosely coupled architecture, empowered teams, monitoring, proactive notification.

Capabilities Solutions
Version Control git, nix
Deployment Automation Jenkins
Continuous Integration Xcode Server, Xcode Cloud
Test Automation
Test Data Management
Shift Left on Security Source code analysis, dynamic instrumentation
Monitoring

WWDC Talks

Conference talks are organized by year.

WWDC 2022,

WWDC 2021, etc. Working backwards

in time leads to current information and working forwards in time leads to

understanding how technologies have evolved.

Sorting Relevant WWDC Talks by Topic and Year

2021

Architecture

SwiftUI, SwiftUI Previews, Swift Packages.

CoreMotion as a case study. Create a single instance of CMMotionManager. Data model for SwiftUI previews. Design time and run time models.

Testing Pipeline

Instrumentaiton for source code analysis, static analysis, dynamic analysis, and fuzzing.