411 - Mobile Applications Development - Architecture
411 - Mobile Applications Development - Architecture
Development
Isaac S. Mwakabira(Mr.)
Introduction
In Modern Mobile Software Development
❖ Design vs Architecture
❖ Paradigms
➢ Introduction to Functional Programming
➢ Object Oriented Programming
■ Objects(Class), Abstraction, Inheritance - interfaces & abstract classes, Polymorphism,
Encapsulation
❖ Design Principles
❖ Design Patterns
➢ Structural, Creation, Behavioral
❖ Software Architecture Patterns - MVP, MVC, MVVM
Design vs Architecture
Design:
❖ Structures and decision at lower level of detail
❖ May involve writing code or building the artefact
❖ Quality of software is measured by how much effort is needed to change the
artefact.
❖ Low effort entails good design & high effort bad design. Well designed code matters.
❖ “We can clean it up later; we just have to get to market first!” ~ (Might Be You)
Architecture:
❖ High level divorced from lower level details
❖ Minimizes human resources required to build and maintain the required system
❖ Reduces costs overtime - organization saves on capital
Behavior vs Architecture
Every software must have behavior & architecture values.
Behavior - software must satisfy user requirements. Your job is to test that
functional requirements are met. Testing & debugging.
❖ Paradigm - A category of entities sharing common characteristics. Ways of programming that inform
developers on what programming structure to use and when to use them.
❖ They streamline development process by describing tasks required for building high-quality software
products.
❖ Structured, functional, & object oriented.
Objective:
● Characteristics
❖ Maintainable & Extendable
❖ Testable
❖ Understandable for new developers or stakeholders
Software Architecture - Characteristics
● Maintainable Software
❖ Ability to fix bugs without introducing new ones or ability to fix a bug without affecting other
existing components
❖ Ability to fix a bug without it recurring in the future
❖ Ability to fix a bug with low editing of existing components
● Extendable
❖ The ability to add a new feature - with minimal changes to current components
❖ The ability to add a new feature - without changing the shape of the original architecture
Software Architecture - Characteristics
● Testable Software
❖ The ability to test each component separately
❖ Low maintenance effort for test code
❖ Efficiency in terms of testing effort and code coverage
Software Architecture - Characteristics
❖ No hidden dependencies
“Long lived software ALWAYS has legacy code and without well structured