Web & Mobile Application Development - bounswe/bounswe2024group10 GitHub Wiki
Web Application Development
Abstract
- Web application development is defined as creating software and web-based applications that run on a web server and can be accessed over the internet using web browsers. This process involves designing, developing, testing, and deploying web-based systems that allow users to interact with data and perform tasks online.
Details
-
A web application is an interactive program that runs on a web server and is accessed through a web browser. A web app is built so that the user interface provides data back to the development team that designed it. This data offers insights into customer interests, usage, and preferences that can prove invaluable to product and marketing strategies. The data can also inform optimization and other client-centered aspects of the mobile app or desktop applications.
-
A big difference between web applications and webpages is that user experience dictates web application design. Traditional web design is based on server-side programmers making decisions about what might enhance usability. In contrast, a web application has an application program interface (API) that takes in large-scale data from the user side and then funnels that information into automation.
-
For example, if a company has implemented an e-commerce web application that can track and report on which products a potential customer lingered over the longest, similar items can be suggested by the web application the next time the customer logs in. If that same company only had a website, the user’s experience would be based on what was available to every customer: a static and standardized set of options.
-
Most mobile applications that appear on smartphones are web apps. Here’s a brief list of common web applications:
- Facebook, Instagram, Twitter, and other social media platforms
- Gmail, Yahoo, AOL, and any web-based email programs
- Any self-service customer portal
- Query sites, such as Quora and Google
-
It’s important to note the distinctions that exist between native web apps and mobile apps. Mobile apps live on the device and are designed to run on a specified platform (such as iOS or Android). Examples would include Facebook Messenger and Google Maps. A Google search that takes you directly to the internet browser would be an example of a web app, while Google Maps is a mobile app.
-
Remember that web applications are all about input, and traditional sites are all about output. If you want customers to enter their information, you’re likely looking at a web application. If you just want customers to read static information that they don’t contribute to as a user, a webpage might better suit your business needs.
-
Developing a web app is all about setting goals for the app’s purpose. What need does the app fulfill? The user interface should be designed with that answer in mind. Information about the consumer will come from the user interface, so developers should design the app to receive and respond to that information. Web development entails tasks like:
- Making sure the web app offers compatibility with both Android and iOS
- Identifying life cycle and optimization metrics
- Building an intelligent, iterative user interface
Progressive web applications
- Progressive web applications are a newer type of web application which behaves like and often outperforms native applications. They are web applications which follow a slightly different methodology, and involve an additional set of technologies such as service workers, manifests, push notifications. Progressive web applications can be downloaded to your device, and stored on your homescreen which makes them accessible, and ’native-like’, and unlike web applications they can be accessed and used offline.
Links:
- You can look this youtube link for further information about python web applicatin development
- For general knowledge you can look this youtube tutorial
Mobile Application Development
Definition:
Mobile app(lication) development is the process used to create software for smartphones, tablets, and mobile devices. The overall process includes writing code to create the software and designing the app.
Main goal:
The major points of mobile application is to design the software compatible with mobile phones' infrastructure such as battery, hardware, operating system (which is usually Android or iOS), etc.
Native vs. Cross-Platform Development:
-
Native mobile apps: They are applications developed to target either Android or iOS. Depending on which operating system you are developing for, your applications are usually coded in a specific programming language.
-
Cross-Platform mobile apps: With this approach, one create cross-platform mobile applications from a single codebase. The goal of cross-platform app development is to target different operating systems with one project.
-
Pros of Native Development
-
- Better performance: You create and optimize native apps for a specific platform. You also compile them using the platform’s core programming language and APIs. This makes them very fast, more efficient, and responsive to users’ actions.
-
- Tight security: Native apps can enhance the security of your user’s data. They have access to platform-specific built-in security features.
-
- Quality UX: Native apps have a smoother user input and output experience. The look and feel are consistent because they inherit the device’s OS interfaces. They follow design guides for the specific OS, making the flow of the app feel more natural. Full feature set access: Native mobile apps can access all features and functionalities of the device, providing a richer, more integrated user experience. They also gain access to services like push notifications, which are key to driving user engagement.
-
- Minimal bugs: Native app developers get access to updated SDKs as soon as they are released. These updates always ship with improvements and new features.
-
Cons of Native Development
-
- Cost: Native mobile applications are usually costly to deploy. You need to have separate teams of developers for the specific platforms. For example, you need developers proficient in Java or Kotlin to create a native Android app. You will also need extra Swift/Objective-C developers for native iOS.
-
- Development time: Separate teams working on similar apps for separate platforms take time. Maintenance and enhancements also require a lot of effort.
-
- Lack of code reusability: You have to create and keep code in separate projects to target different mobile operating systems.
-
Pros of Cross-Platform Development
-
- Low costs: Cross-platform mobile development needs only a single team of developers. They need to be knowledgeable in the chosen framework. The app reaches a wider audience to start gaining traction and testing the market.
-
- Code reusability: Cross-platform frameworks allow you to use a single codebase. This ensures consistency in the business logic used.
-
- Rapid development: By reusing code and improving productivity, you get to market faster. Cross-platform frameworks have also optimized the process of app testing during development.
-
- Easier maintenance: Updating a cross-platform app is easier. This is because you are dealing with a single codebase. All builds targeting the different platforms use the same code, ensuring consistency.
-
Cons of Cross-Platform Development
-
- Larger digital footprint: Cross-platform apps are usually larger. You need to pay attention to the mobile optimization options available.
-
- Difficult integrations: Cross-platform frameworks do not integrate all platform-specific features. Some hardware-specific integrations like using GPUs might need skills in native app development.
-
- Lower performance: Cross-platform frameworks usually bundle a custom runtime to run your app. It is responsible for communicating with platform-specific services. This adds another layer of computation, which can lead to lower performance.
-
- Delayed platform features: New SDK releases typically include new features and updates. With cross-platform frameworks, you have to wait for a separate update to access these newer features.
User Interface (UI) Design:
- User interface (UI) design is the process designers use to build interfaces in software or computerized devices, focusing on looks or style. Designers aim to create interfaces which users find easy to use and pleasurable. UI design refers to graphical user interfaces and other forms—e.g., voice-controlled interfaces.
They usually come in three formats:
- Graphical user interfaces (GUIs)—Users interact with visual representations on digital control panels. A computer’s desktop is a GUI.
- Voice-controlled interfaces (VUIs)—Users interact with these through their voices. Most smart assistants—e.g., Siri on iPhone and Alexa on Amazon devices—are VUIs.
- Gesture-based interfaces—Users engage with 3D design spaces through bodily motions: e.g., in virtual reality (VR) games.
There are some basic conventions for a better UI design:
- Users judge designs quickly and care about usability and likeability.
- UIs should also be enjoyable (or at least satisfying and frustration-free).
- UIs should communicate brand values and reinforce users’ trust.
User Experience (UX) Design Principles
- User experience (UX) design is the process design teams use to create products that provide meaningful and relevant experiences to users.
- It involves the design of the entire process of acquiring and integrating the product, including aspects of branding, design, usability and function.
Here are some UX design conventions:
- UX designers consider the "Who", "Why", "What", and "How" of product use
- It is user-centered
Differences between UI and UX
- UI design is more concerned with the surface and overall feel of a design. UI design is a craft where you the designer build an essential part of the user experience. UX design covers the entire spectrum of the user experience.
- One analogy is to picture UX design as a car with UI design as the driving console.
Backend Services and APIs:
- A mobile app backend is the brain of a mobile app. Among other things, the backend takes care of data processing, storage, and security.
- The backend operates on the server, and it’s that part of the app that you don’t see, but your mobile app depends on it for functionality.
A mobile backend takes care of:
-
Data processing and storage independent of a smartphone’s capabilities
-
Data sync and sharing across multiple devices and platforms
-
Content updates within the mobile app
-
Management of the app’s business logic
-
Authorization and authentication that control access to data
-
An API — application program interface — is used in mobile apps just like it is in web apps. It allows developers to access another application or platform.
Here's how APIs fit into mobile application development:
Here are some benefits of mobile APIs:
- Consumer Apps: For some apps — especially consumer ones — mobile APIs provide the tool that enables user interaction with data from multiple applications.
- Manufacturing Apps: In a traditional context (desktop, on-premises), an API will help you bring together functionality from a lot of different apps.
- Enterprise Apps: Many enterprise apps are more singularly focused. But they still require that authentication and security be locked down to protect corporate intellectual property. In all instances, the API (or multiple APIs) strengthen the application fundamentals: by allowing it to be flexible (whereby developers can use, and add to, its functionality), secure, yet all the while, totally usable.
Data Management and Storage:
- One of the primary responsibilities of a mobile app developer is handling data within his/her applications. Efficient data management is crucial for ensuring a seamless user experience, maintaining app performance, and safeguarding user privacy.
Some local data storage solutions are explained below:
- SQLite: SQLite is a lightweight and widely used relational database management system that can be integrated into mobile apps. It offers excellent performance, supports complex queries, and is available for both iOS and Android platforms.
- SharedPreferences/UserDefaults: For storing small amounts of key-value data, SharedPreferences (Android) or UserDefaults (iOS) can be used. These are lightweight and ideal for simple settings and preferences.
- File Storage: If your app deals with large files or unstructured data, such as images, audio, or video, consider using file storage mechanisms. Utilize appropriate directory structures and optimize file access for efficient data retrieval.
Here are some possible security measurements for safe data storage:
- Use HTTPS and SSL/TLS: Always transmit data over secure connections using HTTPS with SSL/TLS encryption. This ensures data integrity and prevents eavesdropping.
- Employ Authentication and Authorization: Implement robust authentication mechanisms to prevent unauthorized access. Utilize token-based authentication, OAuth, or other industry-standard protocols to authenticate users and control access to sensitive data.
- Encrypt Stored Data: If your app stores sensitive user information locally, employ encryption techniques to safeguard the data. Utilize algorithms like AES or RSA for encryption and securely manage encryption keys.
Here are some good practices for efficient data synchronization:
- Use Incremental Updates: Instead of transferring complete datasets, implement incremental updates where only modified or new data is synchronized. This reduces bandwidth usage and improves synchronization speed.
- Handle Conflict Resolution: Handle conflicts that may arise during data synchronization, such as concurrent edits or deletions. Implement conflict resolution strategies to ensure data consistency across devices.
- Implement Background Sync: To provide a seamless user experience, perform data synchronization in the background. Use background services or push notifications to trigger synchronization when new data is available.
- Regularly Backup and Test Data Restoration: Data loss can be catastrophic for users. Implement regular data backups on both the client and server sides. Additionally, periodically test data restoration processes to ensure data integrity and recovery in case of any unforeseen events or disasters.
Security Considerations:
- All popular mobile platforms provide security controls designed to help software developers build secure applications. However, it is often left to the developer to choose from myriad of security options. A lack of vetting can lead to security feature implementation that can be easily circumvented by attackers.
Common issues that affect mobile apps include:
- Storing or unintentionally leaking sensitive data in ways that it could be read by other applications on the user’s phone.
- Implementing poor authentication and authorization checks that could be bypassed by malicious applications or users.
- Using data encryption methods that are known to be vulnerable or can be easily broken.
- Transmitting sensitive data without encryption over the Internet.
Here are some possible security measures:
- Encrypting the source code
- Using a code-signing certificate
- Leveraging penetration testing
- Securing data in transit
- Only using authorized APIs
- Securing the backend
- Being careful with third-party libraries
- Deploying tamper detection
- Practising continual testing and updating
Links:
- A brief explanation about mobile app development can be found here.
- Native vs Cross-Platform Development
- UI/UX design
- Backend
- Data Storage and Management
- Security