Mobile App Development Ontology & Knowledge Base

This ontology provides a structured taxonomy of mobile application development terminology, organizing concepts hierarchically to facilitate understanding and reference. By categorizing the extensive vocabulary of mobile development into logical groupings—from development approaches and frameworks to UI components and architectural patterns—this knowledge base serves as a comprehensive reference for developers, technical writers, and technology professionals seeking to navigate the complex landscape of mobile development terminology.

Development Approaches Taxonomy

1.1 Native Development

Definition: Platform-specific development using vendor-provided languages, tools, and frameworks optimized for target operating systems.

iOS Native:

  • Swift: Modern compiled programming language developed by Apple for iOS, macOS, watchOS, and tvOS development
  • Objective-C: Object-oriented programming language historically used for Apple platform development
  • UIKit: Framework providing core components for constructing and managing iOS app interfaces
  • SwiftUI: Declarative framework for building user interfaces across Apple platforms
  • Foundation: Base layer of functionality including data storage, text processing, and collection types
  • Core Data: Object graph and persistence framework for managing model layer objects
  • Xcode: Integrated Development Environment (IDE) for macOS containing development tools
  • Cocoa Touch: UI framework for building software programs to run on iOS

Android Native:

  • Kotlin: Statically typed programming language running on JVM, preferred for Android development
  • Java: Object-oriented programming language historically primary for Android development
  • Android SDK: Software Development Kit providing tools and APIs for Android development
  • Android Studio: Official IDE for Android development based on IntelliJ IDEA
  • Jetpack Compose: Modern declarative UI toolkit for building native Android interfaces
  • Android Views: Traditional UI system using XML layouts and View subclasses
  • Gradle: Build automation system used for Android project compilation and packaging

1.2 Cross-Platform Development

Definition: Development approaches enabling code sharing across multiple platforms while targeting native performance and appearance.

  • React Native: Framework using JavaScript and React for building natively rendered mobile applications
  • Flutter: Google's UI toolkit using Dart language and custom rendering engine
  • Xamarin: Platform using C# and .NET for cross-platform mobile development (now .NET MAUI)
  • Kotlin Multiplatform: Kotlin feature enabling sharing code between different platforms
  • Ionic: Framework using web technologies wrapped in native containers via Capacitor or Cordova
  • NativeScript: Framework enabling direct access to native APIs from JavaScript/TypeScript
  • Unity: Cross-platform game engine supporting mobile deployment

1.3 Hybrid Development

Definition: Approach wrapping web applications in native containers to access device features while using web technologies.

  • Apache Cordova: Platform for building native mobile applications using HTML, CSS, and JavaScript
  • Capacitor: Cross-platform native runtime for web apps, modern successor to Cordova
  • PhoneGap: Adobe distribution of Apache Cordova (discontinued)
  • WebView: System component displaying web content within native applications

UI Component Taxonomy

2.1 Layout Containers

iOS (UIKit): UIView, UIScrollView, UITableView, UICollectionView, UIStackView, UIPageViewController

iOS (SwiftUI): VStack, HStack, ZStack, List, Form, ScrollView, LazyVStack, LazyHStack

Android (Views): LinearLayout, RelativeLayout, ConstraintLayout, FrameLayout, RecyclerView, ScrollView

Android (Compose): Column, Row, Box, LazyColumn, LazyRow, Scaffold, Surface

React Native: View, ScrollView, FlatList, SectionList, SafeAreaView

Flutter: Column, Row, Stack, ListView, GridView, Scaffold, Container

2.2 Input Controls

Text Input: UITextField/iOS, TextField/SwiftUI, EditText/Android, TextInput/React Native, TextField/Flutter

Buttons: UIButton/iOS, Button/SwiftUI, Button/Android, Pressable/React Native, ElevatedButton/Flutter

Selection: UISwitch/UISegmentedControl/iOS, Switch/Chip/Android, Switch/Radio/React Native, Switch/Checkbox/Flutter

Pickers: UIPickerView/UIDatePicker/iOS, Spinner/DatePicker/Android, Picker/Flutter

2.3 Display Components

Text Display: UILabel/iOS, Text/SwiftUI, TextView/Android, Text/React Native, Text/Flutter

Images: UIImageView/iOS, Image/SwiftUI, ImageView/Android, Image/React Native, Image/Flutter

Progress: UIProgressView/UIActivityIndicatorView/iOS, ProgressBar/ProgressIndicator/Android, ActivityIndicator/React Native, CircularProgressIndicator/Flutter

Web Content: WKWebView/iOS, WebView/Android, WebView/React Native, WebView/Flutter

Architectural Pattern Taxonomy

3.1 Presentation Patterns

  • MVC (Model-View-Controller): Pattern separating data, presentation, and control logic
  • MVP (Model-View-Presenter): Variation with passive View and Presenter mediating interactions
  • MVVM (Model-View-ViewModel): Pattern using ViewModel to expose data bindings to View
  • MVI (Model-View-Intent): Unidirectional pattern treating user actions as intents
  • VIPER: iOS-specific pattern dividing responsibilities into View, Interactor, Presenter, Entity, Router

3.2 Architectural Concepts

  • Dependency Injection: Technique supplying dependencies from external sources rather than creating internally
  • Inversion of Control: Principle delegating control flow to framework or container
  • Repository Pattern: Abstraction layer between data sources and business logic
  • Clean Architecture: Layered architecture with dependency rules directing inward
  • Hexagonal Architecture: Ports and adapters pattern isolating core logic

State Management Taxonomy

4.1 State Categories

  • UI State: Interface-specific state including loading states, error displays, input values
  • Session State: User authentication status, preferences, cached credentials
  • Domain State: Business logic data including entities, relationships, calculations
  • Navigation State: Current screen, back stack, navigation parameters
  • App State: Global application status including connectivity, permissions, lifecycle

4.2 State Management Solutions

  • Redux: Predictable state container using actions, reducers, and single store
  • MobX: Reactive state management using observable properties and reactions
  • Provider: Flutter widget making data available to descendants
  • BLoC: Business Logic Component pattern separating presentation from business logic
  • Riverpod: Flutter state management framework improving on Provider
  • ViewModel: Architecture component managing UI-related data lifecycle-consciously
  • ObservableObject: SwiftUI protocol for external reference types participating in state management

Data Storage Taxonomy

5.1 Local Storage

  • Key-Value: UserDefaults/iOS, SharedPreferences/DataStore/Android, AsyncStorage/React Native, SharedPreferences/Flutter
  • SQLite: Embedded relational database available on both platforms
  • Core Data: iOS object graph and persistence framework
  • Room: Android abstraction layer over SQLite providing compile-time SQL verification
  • Realm: Cross-platform mobile database with object-oriented API
  • Hive: Lightweight key-value database for Flutter and Dart

5.2 Cloud Storage

  • Firebase: Google's mobile platform providing Firestore, Realtime Database, and Cloud Storage
  • iCloud: Apple's cloud storage and synchronization service
  • AWS Amplify: Amazon's development platform for cloud-enabled applications
  • Supabase: Open-source Firebase alternative using PostgreSQL

Development Lifecycle Terminology

6.1 Development Phase

  • IDE: Integrated Development Environment providing comprehensive facilities for software development
  • SDK: Software Development Kit containing tools, libraries, and documentation
  • API: Application Programming Interface defining interactions between software components
  • Emulator: Software mimicking hardware behavior for testing without physical device
  • Simulator: iOS-specific software replicating device behavior
  • Hot Reload: Feature injecting updated code without losing application state
  • Hot Restart: Feature restarting application with updated code

6.2 Testing Terminology

  • Unit Test: Testing individual components in isolation
  • Integration Test: Testing component interactions
  • UI Test: Testing user interface through automated interaction simulation
  • E2E Test: End-to-end testing verifying complete user flows
  • Mock: Simulated object mimicking real object behavior for testing
  • Stub: Simplified implementation returning predefined responses
  • Fixture: Test data establishing consistent baseline for tests

6.3 Distribution Terminology

  • IPA: iOS App Store Package format for iOS applications
  • APK: Android Package Kit format for Android applications
  • App Bundle: Android publishing format enabling optimized APK generation
  • Provisioning Profile: iOS file linking app ID, certificates, and devices
  • Code Signing: Cryptographic process verifying app authenticity
  • TestFlight: Apple's platform for beta testing iOS applications
  • Play Console: Google's platform for publishing Android applications

Performance Terminology

7.1 Rendering Performance

  • Frame Rate: Frequency of consecutive images displayed, measured in FPS (frames per second)
  • Jank: Visual stuttering caused by missed frame deadlines
  • Layout Pass: Phase calculating view positions and dimensions
  • Draw Pass: Phase rendering content to display buffer
  • Recomposition: Jetpack Compose process updating UI in response to state changes
  • RenderObject: Flutter class handling layout and painting

7.2 Memory Management

  • ARC: Automatic Reference Counting, iOS memory management approach
  • Garbage Collection: Automatic memory reclamation identifying unreachable objects
  • Memory Leak: Unreleased memory no longer needed but still allocated
  • Retain Cycle: Mutual strong references preventing object deallocation
  • Heap: Memory region for dynamic allocation
  • Stack: Memory region for static allocation and call stack

Conclusion

This ontology provides a structured framework for understanding mobile development terminology across platforms and approaches. As the ecosystem evolves, new terms emerge while existing concepts refine—this knowledge base serves as a living reference for navigating the ever-expanding vocabulary of mobile application development. For practical applications of these concepts, see our Tools & Resources section.