Logiciel
Les deux principales catégories de logiciels sont les logiciels "applicatifs" et les logiciels de "système". Le logiciel applicatif est destiné à aider les usagers à effectuer une certaine tâche, et le logiciel de système est destiné à effectuer des opérations en rapport avec l'appareil informatique.
Architecture logicielle
L'architecture logicielle, tout comme l'architecture traditionnelle, peut se catégoriser en styles. En effet, malgré les millions de systèmes informatiques construits de par le monde au cours des cinquante dernières années, tous se classent parmi un nombre extrêmement restreint de styles architecturaux. De plus, un système informatique peut utiliser plusieurs styles selon le niveau de granularité ou l'aspect du système décrit. Nous ferons remarquer que, comme en architecture traditionnelle, c'est souvent par le mélange d'anciens styles que les nouveaux apparaissent.  L'architecture en appels et retours est basée sur le raffinement graduel proposé par Niklaus Wirth. Cette approche, également appelée décomposition fonctionnelle, consiste à découper une fonctionnalité en sous-fonctionnalités qui sont également divisées en sous-sous-fonctionnalités et ainsi de suite ; la devise diviser pour régner est souvent utilisée pour décrire cette démarche.