Topics
App Development

App Development

Software Applications, or just applications (further shortened to apps), provide a computing device instructions for specific tasks that the user wants the computer to perform. Applications can be written for a wide range of tasks, from fun activities such as games to complex business applications such as banking. Applications can be for users, like games and banking applications, or to enhance or protect computing devices, such as anti-malware software.

Every single task you do on a computer is done using a software application. Internet browsers like Google Chrome or Internet Explorer, Edge, Microsoft Word, Excel, Powerpoint, and Outlook, are some of the common software applications that most of us use. In addition, there are specialised applications for technical users, such as tools used to write programs. There are also functional applications for finance, design, and many other fields.

App Development Process

Application development is a multi-step process, referred to as the Software Development LifeCyle (SDLC):

  • Specifying functional requirements (what should the app do)
  • Designing the user interface (how can a user interact with it)
  • Designing the data stuctures (what will be the data the app will process)
  • Designing the program logic (how will the app perform the expected tasks)
  • Develop the app (write the code for the UI, the DB, and the logic)
  • Test the app (make sure it works as expected)

The objective of application development is to find a sequence of instructions that will automate the performance of a task on a computer, often for solving a given problem. Writing good applications requires expertise in different subjects, including knowledge of the application domain, specialized algorithms, user behaviour, and formal logic and programming languages.

Software development generally follows what is known as a software development lifecycle (SDLC). You must first define the requirements, then design the solution for developing the software, write the code, and lastly, test it to make sure it works as expected.

Image By Golftheman - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=4558519 (opens in a new tab)

Application Tasks

Applications generally perform a combination of the following type of tasks:

  • Input: Get data to the computer from the keyboard, some other device, or by reading a file from a storage device or over the network. The data can be text, numbers, images, or even audio and video data.

  • Processing: Do something with the data, such as computations on numbers, modifications to an image, or edits to a video and save the data to a database or the file system. Processing can be further categorized into:

    • Arithmetic, which includes operations, such as addition, multiplication, and many other complex mathematical operations.
    • Logical, which uses data and logic to decide what instructions should be executed under what conditions.
  • Output: Present the processed data to the user, either displaying it on a screen, printing it on paper, or sending it to some other computer or device, locally or over a network.

Applications are written in a high-level programming language. There are multiple high-level programming languages, some of which can be used across the three architectural tiers, while some are better suited or only suited for a particular tier. Most high-level languages can be used to write both presentation and application logic tier programs but database tier programs usually have a language of their own that cannot be used in any other tier.

Given the complexity of developing an application with multiple programs spread across a network of computers, application developers now have the option of using what is known as a programming environment. These environments generally use one high-level language as a base and enable developers to write multiple programs that make up an application. They let programs communicate with each other in terms of exchanging data, managing requests & responses, and building connections to data stores for writing, reading, and manipulating data.

Such programming environments, referred to as Integrated Development Environments (IDEs), make it easy to write complex applications, which would have been quite cumbersome if programs for each tier were to be written individually, where each has its own requirements for exchanging data with each other.