- exécutables : ils      peuvent être exécutés directement par l'ordinateur ; 
- généralement, ils ne       peuvent être exécutés que sur un type de machine et de système       d'exploitation particulier (exemple : Microsoft Windows sur un compatible       PC) ;
- cependant, il existe       des exécutables (en byte code) exécutables sur une variété de       plates-formes (comme ceux du langage Java) ; ils visent en fait l'exécution       pour une machine virtuelle, qui est elle-même un logiciel disponible sur       les diverses plates-formes.
- fichiers sources : il      s'agit généralement d'un texte respectant les règles d'écriture d'un langage      de programmation particulier ; à titre indicatif, l'ordre de grandeur      de la taille d'un logiciel comme Microsoft Word est d'un million de lignes      de code ; 
- pour un langage       compilé : ils doivent être traduits en un exécutable par un compilateur ;
- pour un interpréteur :       ils sont exécutés directement à la lecture (par exemple des scripts Perl       ou PHP).
- bibliothèques : il      s'agit d'un ensemble de fonctions qui, en elles-mêmes, ne sont pas      exécutables directement et n'offrent pas de fonctionnalités à      l'utilisateur, mais fournissent des services à d'autres programmes (par      exemple, on trouvera des bibliothèques permettant à un programme de      charger des animations ou de jouer des sons) ; on trouve en      particulier des bibliothèques dynamiques (dll Windows ou so GNU/Linux).
Les données associées au logiciel peuvent également être de différents formats : fichiers classiques, bases de données (relationnelles, hiérarchiques, etc.). Les données du logiciel peuvent être éclatées en un grand nombre de fichiers, ou tout le logiciel peut être rassemblé en un seul fichier ; par exemple, sous Windows, la définition de l'interface utilisateur, le dessin des icônes etc., sont souvent intégrés dans le même fichier que l'application principale.
