Application Software

Everyone is familiar with an application or app. We often do one or more of the following – install, run, update, remove. Very simply, an application software is a computer program that is designed to perform a user’s domain specific activity.

But what makes up an application? Here is a simplified look at it under the hood, in the context of a desktop C/C++ application.

Executable

It is necessary for an application to start or launch, and is the entry point for the program. Windows has the .exe extension but is not typical on GNU/Linux.

Run-time libraries

Often referred to as dynamic libraries, these are run-time dependencies required for the executable to run. They are Dynamic Linked Libraries (.dll) on Windows and Shared Object (.so) on GNU/Linux. These can be broadly grouped into 3 categories.

Application libraries

Applications for software design reasons would have partitioned their source code to be built as libraries instead of one monolithic executable.

Third party libraries

Often an application may use third party libraries to leverage their specialization or expertise.

System libraries

Invariably, system libraries are a must for any application as it provides low level functionality. A common dependency is on the C-RunTime (CRT), msvcr*.dll on Windows and libc.so on GNU/Linux.

Configuration files

Typically, these files embed data that is required for the application but kept external to it (as opposed to hard coding in the program) for flexibility. They could be text, xml or other file formats.

Script files

They could be Windows batch (.bat) files or GNU/Linux shell (.sh) files.

Distribution

The collection of all these files (and additional information) are included in a Windows Installer or GNU/Linux Package referred to as a software distribution.