How is Software made

A computer program () belongs to the software (collective term for programs and the associated data) of a computer. It is usually available on a data carrier as an executable program file, often in so-called machine code, which is loaded into the computer's main memory for execution.

Theoretically, a simple text editor and a compiler/interpreter for the respective programming language are sufficient for programming (). In practice, however, a number of additional tools are used to simplify typical programming tasks. These include, for example, text editors with special features such as syntax highlighting, auto-completion and refactoring - whereby the transition to the Integrated Development Environment (IDE) is fluid. In addition, there are various tools for debugging, so-called debuggers, as well as programs for performing static and dynamic tests. A profiler can also be used for performance analysis. If several developers are working on the same software, versioning systems are usually used that store the code, including previous versions, on a central server to which all participating programmers have access.

In programming, a program library () (lib for short) refers to a collection of subroutines that offer solutions to problems that are thematically related. Libraries are in contrast to programs no independently executable units, but they contain auxiliary modules, which are requested by programs.
In computer programming, a software framework () is a universal, reusable software environment that provides standard methods for creating and deploying applications. Software frameworks may include support programs, compilers, code libraries, toolsets, and application programming interfaces (APIs).
Application analysis


Relationships and analysis between various application and the Microsoft Windows operating systems

Flowchart - Application analysis In companies where installations are centrally managed, it is even more important to think about the specifics of software installation as the number of installation transactions increases. Only with a clear strategy and ergonomic processes can you track the software distribution process while minimizing the potential for error.

Software applications do not conform to any standard. Some have a wider range of functions that support automated installation than others. However, the installation can usually hardly be fully configured using parameters. In addition to the option for unattended installation and the installation path, other configurations can only rarely be set using the switches.

Flowchart - installation of Nexus Personal One of the most important requirements for increasingly complex systems is the simplification of processes. Optimizations in these areas generally lead to improved quality of the software deployment process. Transparent implementation can maintain an overview as long as the issues of traceability and standardization are not neglected. This ultimately keeps the complexity in check.

In the example "Nexus Personal" (identity management): This installation is only successful if several conditions are met. The interaction must fit between this application, the operating system (services, etc.) and the other applications for which this application was created.

System Center Configuration Manager (SCCM)

Flowchart - software distribution with MS SCCM

is to be seen in terms of software distribution as a pure transport and deployment system for the packages. This means that all configuration definitions and installation intelligence must be provided with the package and/or corresponding GPOs/GPPs.
Sophisticated software packages require an installation wrapper in conjunction with SCCM. The disadvantage of installation wrappers is that the more complex the application requirements and installation phases become, the more skilled the software packager has to be. And this can become a problem if the latter does not have the necessary skills.

Windows Installer technology (MSI)

was developed by Microsoft and is a very powerful tool for creating robust and stable installations.
Anyone who is seriously concerned with this topic should definitely download the "Windows Installer SDK" from Microsoft. With the help of the Windows Installer SDK it is even possible to create new MSI databases from scratch via script.


Want to learn more about how to install an application completely automated and without user interaction?