You are on page 1of 12

CHAPTER 2

FACTORS IN DEVELOPING MOBILE APPLICATIONS


MOBILE SOFTWARE ENGINEERING
Mobile Software Engineering is a specialized field of software engineering that focuses on the
design, development, and maintenance of software applications for mobile devices, such as
smartphones and tablets. This field has become increasingly important as the use of mobile
devices has grown exponentially in recent years.

Mobile software engineers are skilled in various programming languages, tools, and frameworks
that are specifically tailored for mobile development. They must also be familiar with the unique
constraints and requirements of mobile devices, such as limited processing power, memory, and
battery life.

Key aspects of Mobile Software Engineering include:

1. Platform-specific development: Mobile software engineers often develop applications


for specific platforms, such as iOS, Android, or Windows Phone. Each platform has its
own set of development tools, programming languages, and software development
kits (SDKs). For example, iOS developers typically use Swift or Objective-C and Xcode,
while Android developers use Java or Kotlin and Android Studio.

2. Cross-platform development: To reach a wider audience, mobile software engineers


might choose to develop cross-platform applications, which can run on multiple
platforms with minimal platform-specific code. Popular cross-platform frameworks
include React Native, Flutter, and Xamarin.

3. User interface (UI) and user experience (UX) design: Mobile software engineers must
create applications with an appealing and intuitive interface that can be easily navigated
by users. This involves understanding platform-specific design guidelines, such as
Apple's Human Interface Guidelines or Google's Material Design, and making use of
mobile-specific UI components.

4. Performance optimization: Given the limitations of mobile devices, mobile software


engineers must optimize their applications for performance, ensuring they run smoothly
and efficiently on a range of devices with varying hardware capabilities.

5. Mobile-specific features: Mobile software engineers must be familiar with mobile-


specific features, such as geolocation, gestures, and sensors (e.g., accelerometer,
gyroscope), and know how to integrate these features into their applications.
6. Security and data protection: Ensuring the privacy and security of user data is crucial in
mobile software engineering. Developers must implement secure data storage,
communication, and authentication methods, and comply with relevant data protection
regulations.

7. Testing and debugging: Mobile software engineers must thoroughly test their
applications on various devices and platforms, identifying and addressing any issues that
arise. This can involve using emulators, physical devices, and automated testing tools.

8. App distribution and maintenance: Mobile software engineers need to be familiar


with app store submission processes and requirements, and be prepared to maintain and
update their applications over time to address issues, add new features, and ensure
compatibility with new OS versions and devices.

FRAMEWORKS AND TOOLS


There are many mobile app development frameworks and tools available for developers to use
when building mobile applications. Here are some of the most popular ones:

Below are more information about mobile app development frameworks and tools:

1. React Native: React Native is a popular framework for building mobile apps that allows
developers to use the same codebase for both iOS and Android applications. It uses components
and APIs that are similar to those used in web development, making it easy for web developers
to transition to mobile app development. React Native also offers a hot reloading feature, which
allows developers to see changes to the app in real-time as they make them.

2. Flutter: Flutter is a mobile app development framework that uses the Dart programming
language. It offers a rich set of customizable widgets, making it easy to build visually attractive,
native-looking mobile apps for both iOS and Android. Flutter also offers a hot reloading feature,
which allows developers to see changes to the app in real-time as they make them.

3. Xamarin: Xamarin is a cross-platform app development tool that allows developers to build
native mobile apps for iOS, Android, and Windows using C# and the .NET framework. Xamarin
also offers a single codebase for both iOS and Android applications and allows developers to
leverage existing .NET libraries and frameworks.

4. Ionic: Ionic is an open-source framework that uses web technologies such as HTML, CSS,
and JavaScript to build cross-platform mobile apps for both iOS and Android. It offers a set of
UI components that are optimized for mobile interfaces, making it easy to build visually
attractive mobile apps.

5. PhoneGap: PhoneGap is an open-source framework that allows developers to build cross-


platform mobile apps for iOS, Android, and other platforms using web technologies such as
HTML, CSS, and JavaScript. It offers a simple and easy-to-use development environment and
supports a wide range of plugins that can be used to extend the functionality of the app.

6. Appcelerator: Appcelerator is a mobile app development platform that allows developers to


build native mobile apps for iOS, Android, and other platforms using JavaScript. It offers a wide
range of APIs and pre-built modules that can be used to add functionality to the app.

7. Swift: Swift is a programming language developed by Apple that is used to build native iOS
apps. It offers a simple and easy-to-use syntax and supports a wide range of iOS frameworks and
APIs.

8. Java: Java is a popular programming language used to build Android apps. It offers a wide
range of libraries and frameworks that can be used to build native Android apps.

Each of these frameworks and tools has its own unique features and benefits, and the choice of
which one to use will depend on the specific needs of the project and the preferences of the
development team.

9. Corona SDK is a software development kit (SDK) that allows developers to create mobile
apps and games for iOS, Android, and other platforms using the Lua programming language. It
was created by Corona Labs Inc., a company based in California, USA, and was first released in
2009.

Corona SDK provides a range of features and tools for mobile app and game development,
including a real-time simulator, graphics and animation tools, audio and video support, and
integration with third-party services and APIs. It also provides access to native APIs, allowing
developers to create apps and games that take full advantage of the underlying hardware and
software capabilities of mobile devices.

One of the key advantages of Corona SDK is its ease of use and quick development time. It
provides a simple and intuitive development environment that allows developers to create and
test apps and games quickly and easily, without the need for complex code or extensive
programming knowledge.

10. jQuery Mobile is an open-source framework for creating mobile web applications that can
be used on a variety of devices and platforms. It is built on top of the jQuery library, a popular
JavaScript library for web development.

jQuery Mobile provides a set of user interface (UI) components and widgets that can be used to
create responsive and interactive mobile web pages. These components include buttons, forms,
lists, navigation bars, and more. The framework also provides support for touch-based inputs,
such as swipes and taps, as well as support for various screen sizes and orientations.
One of the key advantages of jQuery Mobile is its ease of use and quick development time. It
provides a simple and intuitive development environment that allows developers to create and
test mobile web pages quickly and easily, without the need for complex code or extensive
programming knowledge.

jQuery Mobile is also highly customizable, allowing developers to create custom themes and
styles for their mobile web pages. The framework is also compatible with a wide range of
platforms and devices, including iOS, Android, Windows Phone, and Blackberry.

GENERIC UI DEVELOPMENT
Generic UI development in mobile app development refers to the process of creating user
interfaces (UI) that are flexible and can be used across multiple platforms and devices. This
approach allows developers to create a single UI design that can be adapted for use on different
screen sizes and resolutions.

The following are some techniques used in generic UI development for mobile app development:

1. Responsive design: Responsive design is a popular technique used in mobile app


development to create a UI that automatically adjusts to the size of the screen. This
approach involves designing the UI to be flexible, so that it can adapt to different screen
sizes and resolutions. By using responsive design, developers can create a UI that looks
good on any device, without having to create separate designs for each screen size.

2. Modular design: Modular design is a design approach that involves breaking down a UI
design into smaller, reusable components. This approach is useful when designing UI
components that need to be displayed on different screens and devices. By using modular
design, developers can create a set of reusable UI components that can be used across the
app, making it easier to design and maintain a consistent UI.

3. Design patterns: Design patterns are pre-built UI components that can be used to create
a consistent user experience across the app. Examples of design
patterns include navigation bars, buttons, and menus. By using design patterns,
developers can create a consistent UI across the app, which makes it easier for users to
navigate and use the app.

4. Standardization: Standardization involves using a consistent set of UI elements and


design principles across the app. This approach helps to create a more professional and
polished look and feel, which can improve the overall user experience of the app. By
using standardization, developers can ensure that the app looks and feels consistent
across different screens and devices.

5. Accessibility: Accessibility is an important consideration when designing a UI for


a mobile app. This involves creating UI components that are easy to use and understand
for users with disabilities, such as color blindness or hearing impairments. By designing
for accessibility, developers can ensure that the app is usable by a wider range of users,
which can improve the overall user experience.

Overall, generic UI development in mobile app development involves designing a flexible,


modular, and standardized UI that can be used across multiple platforms and devices. By using
design patterns, responsive design, modular design, standardization, and accessibility, developers
can create a UI that is consistent, easy to use, and accessible to all users.

An example of an app that uses the Navigation Drawer design pattern is the Gmail app for
Android. In the Gmail app, the Navigation Drawer can be accessed by swiping from the left edge
of the screen or by tapping the "hamburger" icon in the top-left corner of the screen.

Once the Navigation Drawer is open, it displays a list of links to different sections of the app,
such as Inbox, Sent, and Drafts. The Navigation Drawer also includes a search bar at the top,
allowing users to search for specific emails.

The Navigation Drawer design pattern is a common way to provide easy access to different
sections of an app, and it is particularly useful for apps with a large number of screens or
sections. By using the Navigation Drawer, developers can create a UI that is easy to navigate and
understand, which can improve the overall user experience of the app.

In addition to the Navigation Drawer design pattern, there are several other design patterns that
are commonly used in mobile apps. Here are a few examples:

1. Bottom Navigation: The Bottom Navigation design pattern is a way to provide easy access to
different sections of an app by placing navigation tabs at the bottom of the screen. This design
pattern is particularly useful for apps that have a few primary sections or screens that users need
to access frequently.

2. Wizard: The Wizard design pattern is a way to guide users through a multi-step process, such
as signing up for an account or completing a survey. This design pattern typically includes a
series of screens with clear instructions and a progress indicator to help users understand where
they are in the process.

3. Floating Action Button: The Floating Action Button (FAB) design pattern is a way to
provide easy access to a primary action, such as creating a new item or composing a message.
The FAB typically appears as a circular button that floats above the content of the screen,
making it easy to access regardless of where the user is in the app.

4. Grid View: The Grid View design pattern is a way to display a collection of items, such as
products or images, in a grid layout. This design pattern is particularly useful for apps that have a
large number of items that need to be displayed in a visually appealing way.
5. Pull-to-Refresh: The Pull-to-Refresh design pattern is a way to allow users to refresh the
content of the app by pulling down on the screen. This design pattern is commonly used in apps
that display dynamic content, such as social media apps or news apps.

These design patterns can be used together to create a UI that is easy to use and understand,
which can improve the overall user experience of the app.

ANDROID USER
In mobile app development, the Android user is a potential user of an Android mobile app.
Android users are those who use mobile devices that run on the Android operating system, such
as smartphones, tablets, or wearable devices.

When developing Android mobile apps, it is important to consider the needs and preferences of
Android users. This includes understanding the Android platform and its features, as well as the
design principles and guidelines for Android apps.

Here are some key considerations when developing Android mobile apps:

1. Android Platform: Understanding the Android platform, its architecture, and its APIs is
crucial when developing Android mobile apps. Developers need to be familiar with the Android
SDK, Android Studio, and other tools used to build Android apps.

2. User Experience (UX) Design: Designing an Android app with a user-centric approach is
important. Developers need to understand the Android Material Design guidelines, which
provide a set of design principles and best practices for creating visually appealing and intuitive
Android apps.

3. Performance Optimization: Optimizing the performance of an Android app is important to


ensure that it runs smoothly and efficiently on different Android devices. This includes
optimizing the app's memory usage, reducing the app's startup time, and optimizing the app's
network usage.

4. Testing and Debugging: Testing and debugging are important aspects of Android app
development. Developers need to test their apps on different Android devices and versions, and
use tools such as the Android Debug Bridge (ADB) to diagnose and fix issues.

5. Security: Ensuring the security of an Android app is important to protect user data and
prevent malicious attacks. This includes implementing secure data storage, using secure
communication protocols, and following Android security best practices.

By considering the needs and preferences of Android users and following these best practices,
developers can create high-quality Android mobile apps that offer a great user experience and
meet the needs of their target audience.
MORE ON UI

VUI (VOICE USER INTERFACE) AND MOBILE APPS


VUI (Voice User Interface) and mobile apps are two different types of user interfaces that have
different strengths and weaknesses.

VUI is a type of interface that allows users to interact with a device or application using voice
commands. VUIs are commonly used in devices like smart speakers or in-car navigation
systems. VUIs are designed to be hands-free and can be useful in situations where a user's hands
are occupied, such as cooking or driving.

Mobile apps, on the other hand, are applications that are designed to run on mobile devices such
as smartphones or tablets. Mobile apps are typically designed to be interactive and can offer a
wide range of features, including the ability to access data, play games, or communicate with
other users.

Here are some key differences between VUI and mobile apps:

1. Interaction: VUIs are typically hands-free and require users to speak commands, while mobile
apps are typically designed to be interactive and require users to interact with the app using
touch, gestures, or other inputs.

2. Use Cases: VUIs are typically used in situations where a user's hands are occupied or when
multitasking is required, while mobile apps are designed for a wide range of use cases, from
entertainment to productivity.

3. Complexity: VUIs are typically designed to be simple and easy to use, with limited options
and a focus on voice commands. Mobile apps, on the other hand, can be more complex and offer
a wider range of features and options.

4. Integration: VUIs are often integrated with other devices or services, such as home automation
systems or music streaming services. Mobile apps can also integrate with other devices and
services, but typically rely on touch-based inputs.

Both VUI and mobile apps have their own strengths and weaknesses, and the choice between the
two depends on the specific use case and user requirements. Some applications may benefit from
a combination of both VUI and mobile app interfaces, allowing users to choose the most
appropriate interface for their needs.

An example of an application that uses both VUI and mobile app interfaces is the Amazon Alexa
app. The Amazon Alexa app is a mobile app that allows users to control and customize their
Amazon Alexa-enabled devices, such as the Amazon Echo or Echo Dot.
The Amazon Alexa app includes a range of features, including the ability to set up new devices,
customize device settings, and control smart home devices. The app also includes a VUI
interface that allows users to interact with their Alexa-enabled devices using voice commands.

For example, users can use the Alexa app to set up new devices and customize device settings
using touch-based inputs. They can also use the VUI interface to perform tasks such as setting
alarms, playing music, or controlling smart home devices using voice commands.

By combining both VUI and mobile app interfaces, the Amazon Alexa app provides users with a
flexible and intuitive way to interact with their Alexa-enabled devices. This approach allows
users to choose the most appropriate interface for their needs, whether they prefer touch-based
inputs or hands-free voice commands.

TEXT-TO-SPEECH TECHNIQUES
Text-to-Speech (TTS) is a technology that allows mobile apps to convert written text into spoken
words. TTS can be used to create a VUI (Voice User Interface) for mobile apps, allowing users
to interact with an app using voice commands. Here are some techniques for implementing TTS
in mobile app development for VUI:

1. Platform-specific APIs: Both Android and iOS platforms provide APIs for implementing
TTS in mobile apps. For example, the Android platform provides the TextToSpeech API, which
allows developers to convert text to speech using the device's built-in TTS engine. Similarly, the
iOS platform provides the AVSpeechSynthesizer API, which allows developers to convert text to
speech using the device's built-in TTS engine.

2. Cloud-based TTS: Cloud-based TTS services, such as Google Cloud Text-to-Speech or


Amazon Polly, can be used to implement TTS in mobile apps. These services provide APIs that
allow developers to convert text to speech using cloud-based TTS engines. Cloud-based TTS can
be useful for apps that require high-quality or multilingual voice output.

3. Custom TTS Engines: Developers can also create custom TTS engines using open-source
libraries such as MaryTTS or eSpeak. Custom TTS engines can be trained to recognize specific
accents or languages, and can be used to generate high-quality voice output that is tailored to the
needs of the app.

4. Pre-recorded Audio: Another technique for implementing TTS in mobile apps is to use pre-
recorded audio files for specific voice commands or responses. This approach can be useful for
apps that require a specific tone or style of voice output, but may require a larger amount of
storage space for the audio files.

By implementing TTS in mobile app development for VUI, developers can create a more natural
and intuitive user experience for their apps. TTS can also be useful for users with visual
impairments or for situations where a user's hands are occupied, such as driving or cooking.
There are several TTS engines that work well with Android. Here are some popular TTS engines
for Android:

1. Google Text-to-Speech: Google Text-to-Speech is a built-in TTS engine that is available on


all Android devices. It provides high-quality voice output in multiple languages and allows
developers to customize the pitch, speed, and volume of the voice output.

2. Pico TTS: Pico TTS is an open-source TTS engine that provides high-quality voice output in
multiple languages. It is lightweight and can be easily integrated into Android apps.

3. IVONA Text-to-Speech HQ: IVONA Text-to-Speech HQ is a commercial TTS engine that


provides high-quality voice output in multiple languages. It offers natural-sounding voices and
allows developers to customize the speed, pitch, and volume of the voice output.

4. Acapela TTS Voices: Acapela TTS Voices is a commercial TTS engine that provides high-
quality voice output in multiple languages. It offers a range of natural-sounding voices and
allows developers to customize the voice output to suit the needs of their app.

5. Amazon Polly: Amazon Polly is a cloud-based TTS service that provides high-quality voice
output in multiple languages. It offers a range of natural-sounding voices and allows developers
to customize the speed, pitch, and volume of the voice output. Amazon Polly can be easily
integrated into Android apps using the AWS Mobile SDK.

These TTS engines can be used to implement natural-sounding voice output in Android apps,
enhancing the user experience and making the app more accessible for users with visual
impairments or for situations where a user's hands are occupied.

DESIGNING THE RIGHT UI


Designing the right user interface (UI) for mobile apps is crucial for creating a successful app.
Here are some tips for designing the right UI for mobile apps:

1. Know your target audience: Understanding your target audience is key to designing the
right UI for your mobile app. Consider factors such as age, gender, education level,
and technological proficiency when designing your app's UI.

2. Keep it simple: A simple and intuitive UI is essential for a mobile app's success. Avoid
cluttering the UI with too many features or options. Use clear and concise language and
make sure that the UI elements are easy to understand and use.

3. Use visual hierarchy: Visual hierarchy is the arrangement of UI elements in order of


importance. Use visual hierarchy to guide the user's attention to the most important
elements on the screen, such as calls-to-action or important information.
4. Use appropriate color schemes: Color can help to establish a brand identity and create a
visual hierarchy. Use appropriate colors that match your brand and convey the right mood
or emotion. Be mindful of color contrast for users with visual impairments.

5. Use appropriate typography: Typography can also help to establish a brand identity and
create a visual hierarchy. Use appropriate fonts that are easy to read on mobile devices
and match your brand identity. Be mindful of font size for users with visual impairments.

6. Use responsive design: Responsive design allows the UI to adjust to different screen sizes
and orientations. Use responsive design to ensure that the UI looks and works well on all
devices, including smartphones and tablets.

7. Test and iterate: Testing and iterating the UI is crucial for ensuring that it meets the needs
and preferences of your target audience. Conduct user testing and gather feedback to
make improvements to the UI.

By following these tips, you can design the right UI for your mobile app, creating a more
engaging and intuitive user experience that meets the needs and preferences of your target
audience.

MULTICHANNEL UI AND MULTIMODAL UIS


Multichannel UI and multimodal UIs are two different types of user interfaces in mobile apps
that offer different ways for users to interact with the app.

Multichannel UI refers to an interface that allows users to interact with an app using multiple
channels or modes, such as touch, voice, or gestures. For example, a mobile app might allow
users to interact with the app using touch-based inputs, voice commands, or camera-based
gestures. Multichannel UI can be useful for users with different preferences or for situations
where a user's hands are occupied.

Multimodal UI, on the other hand, refers to an interface that allows users to interact with an app
using multiple modes simultaneously. For example, a mobile app might allow users to interact
with the app using both touch-based inputs and voice commands at the same time. Multimodal
UI can be useful for creating a more natural and intuitive user experience.

Here are some examples of how multichannel and multimodal UIs can be used in mobile apps:

1. Multichannel UI: A mobile app for cooking might allow users to interact with the app using
both touch-based inputs and voice commands. Users could use touch-based inputs to browse
recipes and select ingredients, while using voice commands to navigate between screens or start
and stop cooking timers.
2. Multimodal UI: A mobile app for exercise might allow users to interact with the app using
both touch-based inputs and camera-based gestures. Users could use touch-based inputs to select
exercises and set workout goals, while using camera-based gestures to track their movements and
provide real-time feedback on their form.

By using multichannel and multimodal UIs in mobile apps, developers can create more flexible
and intuitive user experiences that meet the needs and preferences of a wider range of users.
However, it is important to carefully design and test these interfaces to ensure that they are easy
to use and accessible for all users.

Yes, an example of a mobile app that uses multimodal UIs effectively is the Google Maps app.
The Google Maps app allows users to navigate and explore locations using both touch-based
inputs and voice commands.

Users can use touch-based inputs to zoom in and out of maps, drag the map to navigate, and
select locations or points of interest. They can also use voice commands to search for locations,
get directions, and navigate to their destination hands-free.

The multimodal UI of Google Maps allows users to interact with the app using the most
appropriate mode of interaction for their situation. For example, users can use touch-based inputs
when they have free hands and are looking at the map, or use voice commands when they are
driving and need to keep their hands on the wheel.

The Google Maps app also uses a multimodal UI to provide users with visual and audio cues
during navigation. The app provides turn-by-turn directions on the map, and also uses voice
commands to provide users with directions and guidance. This multimodal approach provides
users with multiple channels of information, making it easier to navigate and reach their
destination.

By using a multimodal UI, the Google Maps app provides users with a flexible and intuitive way
to navigate and explore locations. This approach allows users to choose the most appropriate
mode of interaction for their needs and provides a more natural and engaging user experience.

Certainly, a good example of a mobile app that uses multichannel UIs effectively is the Amazon
Alexa app. The Amazon Alexa app allows users to interact with their Alexa-enabled devices
using both touch-based inputs and voice commands.

Users can use touch-based inputs to set up their device, manage their settings, and browse Alexa
skills. They can also use voice commands to access Alexa's features and services, such as
playing music, controlling smart home devices, and setting reminders.
The multichannel UI of the Amazon Alexa app allows users to interact with their Alexa-enabled
devices using the most appropriate channel for their situation. For example, users can use touch-
based inputs when they are in a quiet environment or need to look at visual information, such as
browsing skills or managing their settings. They can also use voice commands when they are in a
noisy environment or need to keep their hands free, such as controlling smart home devices or
playing music.

The Amazon Alexa app also uses a multichannel UI to provide users with visual and audio
feedback during their interactions. For example, when a user issues a voice command to Alexa,
the app displays a visual confirmation of the command on the screen. This approach provides
users with multiple channels of information, making it easier to use and understand the app's
features and services.

By using a multichannel UI, the Amazon Alexa app provides users with a flexible and intuitive
way to interact with their Alexa-enabled devices. This approach allows users to choose the most
appropriate mode of interaction for their needs and provides a more natural and engaging user
experience.

You might also like