You are on page 1of 22

Mobile App Development

Design & Documentation for Android Mobile App’s

Hajrah Jahan
Overview
• SDLC – Software Development Life Cycle
• Prototyping the User Interface
• Software Documentation
• Android Mobile App Architectures
• Software engineering issues for mobile apps
Requirements
SDLC Problem statement

Requirement
Gathering &
USP – Unique
Selling Point
Analysis Market research

System process flow

Data flow chart


Maintenance Design
Wireframes

Project tracker

Software Testing
Let’s get coding!
UAT & Feedback Testing Development
Bug Fixing
Prototyping
• Prototyping an app is a vital part of any Software Development process
• Benefits:

Bonus

• Explore some popular prototyping


tools like;
• Process: • Adobe XD
• XCode
• Proto.io
• Figma
Designing an App
• The Design Sprint
Software Documentation

• SRS (Software Requirement Specification) document is prepared to build a concrete base for
advance/enterprise level applications that foresee Close Management, Frequent improvements, and upgrades
(scalability), high security implementations, audits, and maximum user engagement.

• Usually includes user interface style guides, standards, scope, system requirements, use cases and other
diagrams, design screens at large.

Bonus

• Find the IEEE template on below link:

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjH8e6ztMP4AhWEqaQKHYd0CqQQFnoE
CAQQAQ&url=https%3A%2F%2Fweb.cs.dal.ca%2F~hawkey%2F3130%2Fsrs_template-ieee.doc&usg=AOvVaw3m6N2fEEPiLkM
7-nflitlv
Mobile App Architectures

Mobile App Architectures follow a

layered structure to organize and

separate various components and

functionalities.

• Business Layer

• Presentation Layer

• Data Layer
Mobile App Architectures

Presentation Layer:

• The Presentation Layer, also known as the User Interface (UI) Layer, is responsible for the user-facing
aspects of the mobile app.

• It includes everything that the user interacts with, such as screens, buttons, forms, menus, and visual
elements.

• The Presentation Layer receives input from users, displays data, and presents information in a user-friendly
manner.

• Technologies used in this layer may include user interface design frameworks, layout tools, and UI
components.
Mobile App Architectures

Business Layer:

• The Business Layer, also referred to as the Logic Layer or Application Layer, contains the core application
logic and business rules.

• It processes user input and coordinates actions, calculations, and decisions within the app.

• The Business Layer is responsible for implementing features, handling user requests, and managing data
flow between the Presentation Layer and Data Layer.

• It encapsulates the app's functionality, ensuring that it remains independent of specific user interfaces or data
sources.

• Components in this layer may include controllers, services, and application-specific logic.
Mobile App Architectures

Data Layer:

• The Data Layer deals with data management, storage, and access.

• It is responsible for retrieving, storing, and manipulating data from various sources, such as databases, APIs,
or external services.

• The Data Layer ensures data integrity, security, and efficient access.

• This layer often includes database management systems, data models, data access APIs, and network
communication components.
Mobile App Architectures (Self-learning)

The three layers work together to create a well-structured and maintainable mobile app architecture. Here's
how they interact:

• Presentation Layer to Business Layer: The Presentation Layer sends user input and requests to the
Business Layer for processing. It receives responses and data from the Business Layer to display to the user.

• Business Layer to Data Layer: The Business Layer interacts with the Data Layer to fetch or store data
required for its operations. It uses data access methods and services provided by the Data Layer.

• Data Layer to Business Layer: The Data Layer provides data to the Business Layer in response to queries
or requests. It may also receive data updates or changes from the Business Layer for storage or transmission.
Mobile App Architectures

Mobile app architectures achieve several advantages:

• Modularity: Each layer can be developed, tested, and maintained independently, making it easier to update or replace
specific components without affecting the entire app.

• Scalability: The modular structure allows for easy scaling of individual layers to accommodate increased user loads or
data volume.

• Reusability: Components within each layer can be reused in different parts of the app or in other projects, reducing
development effort.

• Maintenance: Separation of concerns simplifies debugging, maintenance, and enhancements since developers can
focus on specific areas without impacting others.

• Security: The layered architecture can enhance security by enforcing access control, data protection, and authentication
at appropriate points in the application.
Android App Architecture
Android Mobile App Architecture (Self-learning)

Linux Kernel:

• At the core of Android is the Linux kernel, which provides essential services like process management, memory
management, device drivers, and hardware abstraction.

• Android is built on top of the Linux kernel, making it a powerful and secure foundation for mobile devices.

Native Libraries:

• Native libraries are system libraries written in languages like C and C++ that provide core functionalities to
Android applications.

• These libraries include components for graphics rendering, multimedia processing, and hardware interaction.

• Examples of native libraries include OpenGL for 2D and 3D graphics rendering, SQLite for database management,
and libc for standard C library functions.
Android Mobile App Architecture (Self-learning)
Android Runtime (ART/Dalvik):

• The Android Runtime (ART) is the environment responsible for executing Android applications. Prior to Android 5.0 (Lollipop), the
Dalvik Virtual Machine (Dalvik) was used.

• ART/Dalvik compiles the application's Java bytecode into native machine code at runtime, improving execution speed and efficiency.

• It manages memory allocation and garbage collection to ensure efficient memory usage.

Application Framework:

• The Android Application Framework provides a set of high-level abstractions and APIs that simplify application development.

• It includes a wide range of components and services, such as activity management, resource handling, notifications, content providers,
and inter-process communication.

• The framework allows developers to access device capabilities, hardware sensors, and system services easily.

• Key components of the application framework include the Activity Manager, Content Provider, View System, and Notification
Manager.
Android Mobile App Architecture (Self-learning)

Applications:

• Applications are the top layer of the Android architecture and are the actual software that users interact with.

• Android applications are typically written in Java or Kotlin and are packaged as .apk (Android Package)
files.

• Each application runs in its own process, isolated from other apps for security and stability.

• Android apps can include activities, services, broadcast receivers, and content providers, which define
various aspects of their behavior.
Software engineering issues for mobile apps

• Fragmentation: The Android ecosystem, in particular, is known for its fragmentation due to the wide
variety of device types, screen sizes, resolutions, and Android versions. Developers must thoroughly test
their apps on various devices to ensure compatibility.

• Platform-Specific Development: Mobile apps are often developed using platform-specific languages and
frameworks. For Android, developers use Java or Kotlin, while for iOS, they use Swift or Objective-C. This
can require separate development efforts for each platform.

• User Interface Design: Designing mobile app user interfaces can be challenging due to the limited screen
real estate and the need for responsive designs that adapt to different screen sizes and orientations.
Software engineering issues for mobile apps

• Performance Optimization: Mobile apps must be optimized for performance and efficiency to ensure
smooth operation and conserve battery life. This includes optimizing memory usage, minimizing network
requests, and reducing CPU usage.

• Battery Life: Mobile devices operate on limited battery power, so developers must carefully manage
resource usage to avoid draining the battery quickly. Inefficient code or background processes can
negatively impact battery life.

• Network Connectivity: Mobile apps often rely on network connectivity, which can be unreliable or slow in
some areas. Handling network errors, offline usage, and data synchronization are critical challenges.
Software engineering issues for mobile apps

• Security: Mobile apps can handle sensitive user data, making security a top concern. Developers must
implement encryption, secure authentication, and protect against common security threats like data breaches
and malicious code injection.

• Cross-Platform Development: To reach a broader audience, developers may consider cross-platform


development frameworks like React Native, Flutter, or Xamarin. These frameworks offer the advantage of
writing code once and deploying it on multiple platforms but can introduce their own set of challenges.

• App Store Approval: Submitting an app to app stores like Google Play and the Apple App Store involves a
review process. Apps must meet certain quality, content, and security standards to be accepted, which can
lead to approval delays or rejections.
Software engineering issues for mobile apps

• Backward Compatibility: Developers often need to ensure backward compatibility with older device
models and operating system versions to maintain a broad user base. This may require using backward-
compatible APIs and providing graceful degradation for older devices.

• Localization and Internationalization: Expanding an app's reach to global audiences requires localization
for different languages, cultures, and regions. Handling multilingual content and date/time formats can be
complex.

• App Size: App size can affect user downloads and storage space on the device. Minimizing the size of
assets, libraries, and resources is essential.
Software engineering issues for mobile apps

• App Updates: Regular app updates are necessary to address bugs, introduce new features, and maintain
compatibility with the latest platform changes. Managing the update process and handling version control can be
challenging.

• User Feedback and Support: Mobile app users expect timely responses to their feedback and issues.
Developers and support teams must be prepared to address user concerns and provide updates and fixes
promptly.

• Data Privacy and Compliance: Mobile apps must comply with data privacy regulations like GDPR and
HIPAA, depending on the type of data they handle. Ensuring compliance and user data protection is a critical
responsibility.

• Testing: Comprehensive testing is essential in mobile app development. Testing on various devices, emulators,
and real-world conditions is necessary to identify and address issues effectively.
Handouts

• https://www.tutorialspoint.com/object_oriented_analysis_design/ooad_object_oriented_design.html

• https://proceedings.informingscience.org/IS2003Proceedings/docs/091Ourus.pdf

• https://www.dotnek.com/Blog/Apps/how-to-create-a-storyboard-for-an-app

• https://mindsea.com/mobile-prototyping-for-designers-with-xcode-storyboards/

• https://codewithchris.com/xcode-tutorial/

• https://buildfire.com/xcode-tutorial/

You might also like