_Byte Breakdown:Part 3-Building the App

Are you ready to build an app? 

We are too! Let’s get started.

In the software development process, there are requirements that need to be followed. These are broken down into distinct phases:

-gathering

-project and product management

-implementation and testing

Along with these requirements, there are two most commonly used methodologies in the software development cycle: agile and waterfall.

What is Agile?

Agile development lifecycle

The Agile development process generally looks something like this:



  • Establish a few initial requirements
  • Design
  • Develop
  • Test
  • Deploy
  • Evaluate the outcome (i.e. a product feature)
  • Collect feedback on what’s been presented thus far

It is important to establish new requirements for the next sprint based on feedback & repeat outcome evaluation cycles until you achieve the final desired product.

What is Waterfall?

Waterfall development lifecycle

The Waterfall development process generally looks something like this:

  • Gather and document all requirements up front
  • Design
  • Development
  • Testing
  • Deployment/Delivery

How do we apply these?

Well, in the modern software development world, most projects are known to utilize an agile methodology. Sometimes, depending on the project’s framework, a waterfall methodology can be used as well. These methodologies are applied to any software development project, whether it’s mobile app or web application development project, or even a basic website development project.

Mobile App Development Process

Depending on the project, the first step of the build process is to determine what kind of mobile app is required. Each project’s requirements primarily depend on project budget, timeline, and number of features.

There are mainly three kinds of mobile apps:

  1. Native mobile app

  2. Hybrid mobile app

  3. Cross platform native mobile app

Native Mobile App

A native app is built to run on a specific platform, such as Apple iOS or Android. It is typically developed using native development tools such as Objective-C or Swift (for iOS) and Java or Kotlin (for Android).

  • Advantages of native mobile applications include:
    • broad functionalities: due to using the capabilities of the underlying device
    • Efficiency: fast and responsive performance
    • Reminders: push notifications
    • UI Expectations: a UI that better matches with user experiences of the OS
    • QA: quality assurance though ratings in application stores
  • Disadvantages of native mobile applications include:
    • Complexity: multiple code bases- because each device has its own version of the app
    • Cost-Effectiveness: the cost for additional developers to build and manage a code base for each platform
    • Efficiency: time spent on multiple builds for separate platforms in each feature update.

Hybrid Mobile App

Hybrid apps, like native apps, run on a device and are written with web technologies (HTML5, CSS and JavaScript). Hybrid apps run inside a native container, and leverage the device’s browser engine (but not the browser) to render the HTML and process the JavaScript locally. 

  • Advantages of hybrid mobile applications include:
    • Multi-faceted Capabilities: works across multiple platforms, write one code and it works on both platforms
    • Efficiency: faster to build
    • Maintenance: easier to maintain
    • Cost-Effective: less costly to build
  • Disadvantages of hybrid mobile applications include:
    • Internet connection: hybrid apps are web-based and they need constant access to wi-fi or LTE
    • Limited capabilities
    • Poor UX: user experience

Cross Platform Native Mobile App

A cross platform native mobile app development is the latest most trending way of development mobile apps. Most commonly it is done via frameworks such as React Native or Flutter. Cross platform app development is a combination of hybrid and native mobile app development where app is built with almost all broad functionalities that a native app would offer without sacrificing performance and user experience. 

  • Advantages of cross platform app development using React JS or Flutter include:
    • Efficiency: fast development
    • Native user experience
    • Simple: one codebase, deploy to both iOS and Android
    • Reliable and stable apps
    • Cost Effective
  • Disadvantages of cross platform app development using React JS or Flutter include:
    • Performance Limitations: slightly degraded performance in compare to actual native apps
    • Complex system: it becomes harder to find an expert development team for this type of build

Web App Development

Like in any software development project, the first step is to collect requirements. Off of that we can assert what kind of framework the web application needs. (i.e. real-time applications may need a different framework than a typical web app.) Once the requirements are established, we follow the typical protocol , which would be to spin up a cloud-based environment for development and staging. This could be hosted on AWS or Google Cloud. These environments contain the server and database.

Depending on the complexity of the project, it may be necessary to employ CI/CD pipelines.

What is  CI/CD?

  • CI/CD stands for Continuous integration/Continuous deployment.
    • CI/CD is the backbone of the modern DevOps environment. It bridges the gap between development and operations teams by automating the building, testing, and deployment of applications.

What is a web application and how is it built?

  • A Web application (Web app) is an application program that is stored on a remote server and delivered over the internet through a browser interface.
    • An example would be a custom built login protected dashboard screen that has for example CRUD(Create, Read, Update, Delete) capabilities.
    • Another example of a web app would be a CRM system (Customer Relationship Management) where business owners could keep track of their clients.
    • Modern web applications are typically built using one of these MVC frameworks:
      • Laravel
      • Ruby on Rails
      • Django
      • Node JS
      • .NET Core
      • Spring
  • All of these frameworks provide all the necessary tools and modules out of the box in order to speed up the development process. For example authentication modules, session management, XSS protection and many more.
  • Modern web application consists of two parts:
    1. Front-end part

    2. Back-end part

Front-End

Front-end is what users see when they access web applications via url in their browsers. It consists of a user interface that is meticulously designed by UX/UI designers (Check out Design part 2- of the process here) and implemented by developers using modern front-end frameworks. These frameworks include, but are not limited to:

      • React JS
      • Angular JS
      • Vue JS

A huge majority of the front-end development process is developed using some kind of JavaScript framework, along with html and css for styling. 

Back-End

The back-end portion of the development process is what users don’t see. However, it is a fundamental part of the web application; as this is where all the business logic is implemented and run. The back-end part is connected to the Cloud server database and application logic instructs on how and when to feed data from the database over to front-end upon user request.

  • For example, if a user clicks on -generate financial summary report -from the first quarter of the year- this will instruct the application to do a lookup for that specific year in the database. It will pull all of the necessary information needed to generate the report, and then it will process it and display on the front-end part of the application. For case-sensitive information- such as healthcare data or financial data- it is important to follow industry protocols such as HIPAA, GDPR (europe).

What’s Next?

Once the app is build, the journey continues.Tune in next week for our Post -App Launch Initiatives!

Arrow-up