Se connecterS'abonner

Chapitre 8

Categories of software

Lecture : 27 minQuiz de 12 questions

# Categories of software ## Objectifs et prérequis **Objectifs** : À la fin de ce chapitre, l'élève sera capable de : - Définir précisément les catégories principales de logiciels selon leur fonction et leur rôle dans un système informatique. - Classer un logiciel donné dans l'une des catégories étudiées (système, application, programmation, utilitaire). - Expliquer les propriétés distinctives de chaque catégorie, notamment en termes d'interaction avec le matériel, de dépendance au système d'exploitation, et de finalité utilisateur. - Résoudre des exercices d'application en justifiant le choix de la catégorie à l'aide de critères techniques et fonctionnels. - Utiliser correctement le vocabulaire technique associé (système d'exploitation, middleware, logiciel propriétaire, logiciel libre, etc.). **Prérequis** : - Connaissance des composants matériels d'un ordinateur (CPU, mémoire, stockage, périphériques d'entrée/sortie). - Compréhension du rôle du système d'exploitation comme interface entre matériel et logiciel. - Familiarité avec les notions de fichier, d'exécution de programme, et de langage de programmation de base (ex. : algorithmes simples en pseudocode ou Python). - Capacité à lire et interpréter des schémas fonctionnels simples (entrée → traitement → sortie). --- ## Introduction Dans un système informatique, le matériel (hardware) seul ne peut accomplir aucune tâche utile sans l'intervention du logiciel (software). Le logiciel constitue l'ensemble des instructions, des procédures et de la documentation qui permettent à l'ordinateur d'effectuer des opérations spécifiques. Selon leur rôle, leur niveau d'abstraction par rapport au matériel, et leur finalité vis-à-vis de l'utilisateur ou du système, les logiciels sont classés en plusieurs catégories principales. Cette classification est fondamentale pour comprendre l'architecture logicielle d'un ordinateur, choisir les outils appropriés pour un développement ou une utilisation donnée, et évaluer les dépendances techniques entre les différents composants logiciels. Le programme officiel du niveau Upper Sixth en Computer Science (système éducatif camerounais anglophone) exige une maîtrise explicite de la **classification of software**. Cette classification se fonde sur deux axes principaux : 1. **Le niveau d'interaction avec le matériel** (du plus bas au plus haut) : logiciel système → logiciel de programmation → logiciel applicatif. 2. **La finalité fonctionnelle** : soutien du système, développement d'applications, réalisation de tâches utilisateur spécifiques. Nous traiterons donc les quatre catégories canoniques : - **Logiciel système** (System Software) - **Logiciel de programmation** (Programming Software) - **Logiciel applicatif** (Application Software) - **Logiciel utilitaire** (Utility Software) — souvent considéré comme une sous-catégorie du logiciel système, mais traité séparément pour sa pertinence pédagogique. Chaque catégorie sera définie avec précision, illustrée par des exemples concrets résolus étape par étape, suivie d'exercices d'application corrigés. Des encadrés « à retenir » (>), des tableaux comparatifs, et un glossaire technique compléteront cette fiche. --- ## I. Logiciel système (System Software) ### Définition et propriétés > **Le logiciel système est l'ensemble des programmes qui gèrent directement les ressources matérielles de l'ordinateur et fournissent une plateforme abstraite pour l'exécution d'autres logiciels.** Il agit comme intermédiaire entre le matériel et les logiciels applicatifs ou de programmation. **Propriétés essentielles** : - S'exécute en privilèges élevés (mode noyau ou kernel mode) pour accéder directement au matériel. - Est généralement chargé en mémoire dès le démarrage de l'ordinateur (boot process). - Fournit des services essentiels : gestion de la mémoire, planification des processus, accès aux périphériques, système de fichiers, sécurité de base. - Est souvent propriétaire ou fortement lié à une architecture matérielle spécifique (ex. : Windows pour x86, iOS pour ARM). - Ne sert pas directement à accomplir une tâche utilisateur finale, mais permet que d'autres logiciels le fassent. ### Exemples résolus étape par étape **Exemple 1 : Identifier le rôle du noyau (kernel) dans un système d'exploitation** *Consigne* : Expliquer pourquoi le noyau Linux est considéré comme un logiciel système, et non comme un logiciel applicatif. *Résolution* : 1. Le noyau Linux (`vmlinuz`) est chargé en mémoire lors du boot, avant tout autre logiciel. 2. Il s'exécute en mode noyau (ring 0 sur x86), lui permettant d'accéder directement aux registres du CPU, à la mémoire physique, et aux interruptions matérielles. 3. Il fournit des appels système (`syscalls`) comme `open()`, `read()`, `fork()` que les logiciels applicatifs utilisent pour accéder au matériel sans connaître ses détails. 4. Sans le noyau, aucun autre logiciel ne pourrait s'exécuter : il est donc une condition nécessaire à l'existence de toute couche logicielle supérieure. 5. Il ne réalise pas une tâche utilisateur directe (comme écrire un document ou naviguer sur le web), mais rend ces tâches possibles. → Donc, le noyau Linux est un **logiciel système**. **Exemple 2 : Comparer un pilote de périphérique (driver) et un lecteur multimédia** *Consigne* : Justifier que le pilote d'imprimante est un logiciel système, tandis que VLC Media Player est un logiciel applicatif. *Résolution* : - Pilote d'imprimante : - Charge en mémoire au démarrage ou à la connexion de l'imprimante. - S'exécute en mode noyau pour traduire les commandes d'impression en signaux électriques compréhensibles par l'imprimante. - Ne fournit aucune interface utilisateur directe pour accomplir une tâche finale (comme imprimer un rapport). → Logiciel système. - VLC Media Player : - Lance à la demande de l'utilisateur. - S'exécute en mode utilisateur (user mode). - Utilise les appels système du système d'exploitation pour accéder au disque, à la carte graphique, et au son. - Réalise directement une tâche utilisateur : lecture de fichiers audio/vidéo. → Logiciel applicatif. ### Exercices d'application corrigés **Exercice 1** : Un ordinateur démarre. Le BIOS/UEFI effectue les tests de démarrage (POST), puis charge le chargeur d'amorçage (GRUB), qui à son tour charge le noyau Linux. Le noyau initialise la mémoire, puis lance le processus `init` (ou `systemd`), qui démarre les services réseau et l'interface graphique. Enfin, l'utilisateur ouvre un navigateur web. *Question* : Parmi les éléments suivants, lesquels sont des logiciels système ? Justifiez chaque réponse. a) BIOS/UEFI b) GRUB c) Noyau Linux d) Processus `systemd` e) Navigateur web (Firefox) *Corrigé* : > a) **BIOS/UEFI** : Logiciel système. Il est stocké en ROM/Firmware, s'exécute avant tout logiciel chargé depuis le disque, initialise le matériel de base (CPU, RAM, périphériques), et lance le chargeur d'amorçage. Il agit directement sur le matériel sans dépendre d'un système d'exploitation. > b) **GRUB** : Logiciel système. C'est un chargeur d'amorçage (bootloader). Il s'exécute en mode réel ou protégé tôt dans le boot, charge le noyau en mémoire depuis le disque, et permet le choix entre plusieurs systèmes d'exploitation. Il ne fournit pas de fonctionnalité utilisateur finale, mais prépare l'environnement pour le système d'exploitation. > c) **Noyau Linux** : Logiciel système. Comme expliqué dans l'exemple 1, il gère les ressources matérielles en mode noyau et fournit l'abstraction nécessaire aux autres logiciels. > d) **Processus `systemd`** : Logiciel système. Bien qu'il s'exécute en mode utilisateur, il est le premier processus lancé par le noyau (PID 1) et a la responsabilité de gérer tous les autres processus, services, et unités du système. Il possède des privilèges élevés et est essentiel à la stabilité et à la configuration du système d'exploitation. > e) **Navigateur web (Firefox)** : Logiciel applicatif. Il s'exécute à la demande de l'utilisateur, en mode utilisateur, utilise les services du système d'exploitation pour accéder au réseau et à l'affichage, et réalise directement une tâche utilisateur finale : navigation sur Internet. **Exercice 2** : Une entreprise développe un logiciel qui surveille en temps réel la température du CPU et ajuste la vitesse du ventilateur en conséquence. Ce logiciel s'exécute en arrière-plan, démarre avec le système, et nécessite des privilèges d'administration pour accéder aux registres matériels du CPU. *Question* : Ce logiciel appartient-il à la catégorie du logiciel système, du logiciel de programmation, ou du logiciel applicatif ? Justifiez. *Corrigé* : > Ce logiciel est un **logiciel système**. Bien qu'il réalise une fonction spécifique (gestion thermique), il : > - S'exécute en arrière-plan au démarrage (comme un service système), > - Nécessite des privilèges élevés pour accéder aux registres matériels du CPU (via des interfaces comme `/dev/cpu/*` ou des appels système spécifiques), > - Ne sert pas directement à accomplir une tâche utilisateur finale (comme éditer un texte ou jouer à un jeu), mais maintient les conditions optimales pour le fonctionnement du matériel et du système d'exploitation, > - Est étroitement couplé à l'architecture matérielle (dépend du modèle de CPU et de la carte mère). > Il relève donc de la catégorie des **logiciels système**, plus précisément d'un **pilote ou démon de gestion matérielle** (souvent classé sous les utilitaires système, mais appartenant fondamentalement au logiciel système). --- ## II. Logiciel de programmation (Programming Software) ### Définition et propriétés > **Le logiciel de programmation est l'ensemble des outils qui permettent aux développeurs d'écrire, de tester, de déboguer, et de maintenir le code source d'autres logiciels.** Il fournit un environnement abstraite pour transformer des algorithmes en instructions exécutables par l'ordinateur. **Propriétés essentielles** : - Ne s'exécute pas directement pour accomplir une tâche utilisateur finale, mais sert à créer d'autres logiciels. - Inclut les langages de programmation (compilateurs, interpréteurs), les environnements de développement intégrés (IDE), les débogueurs, les profileurs, et les outils de gestion de version. - Peut produire du code exécutable destiné à devenir un logiciel système, applicatif, ou utilitaire. - S'exécute généralement en mode utilisateur, sauf lorsqu'il intègre des composants bas niveau (ex. : un assembleur qui génère du code machine directement chargé en mémoire). - Son efficacité influence directement la productivité du développeur et la qualité du logiciel produit. ### Exemples résolus étape par étape **Exemple 1 : Classer GCC (GNU Compiler Collection)** *Consigne* : Expliquer pourquoi GCC est un logiciel de programmation, et non un logiciel système ou applicatif. *Résolution* : 1. GCC est un ensemble de compilateurs qui transforment du code source écrit en langages de haut niveau (C, C++, Fortran, etc.) en code machine exécutable pour une architecture donnée (ex. : x86_64, ARM). 2. Il ne gère pas directement le matériel : il ne planifie pas les processus, ne gère pas la mémoire, ne pilote pas les périphériques. 3. Il s'exécute en mode utilisateur : l'utilisateur lance la commande `gcc fichier.c -o sortie` depuis un terminal. 4. Son output est un fichier exécutable qui, une fois lancé, deviendra soit un logiciel système (si c'est un noyau ou un pilote), soit un logiciel applicatif (si c'est un éditeur de texte), soit un utilitaire (si c'est un outil de compression). 5. Il ne réalise aucune tâche utilisateur finale : il ne permet pas d'écrire un document, de naviguer sur le web, ou de jouer à un jeu. Son seul but est de produire du code pour d'autres logiciels. → Donc, GCC est un **logiciel de programmation**. **Exemple 2 : Comparer un IDE (comme Visual Studio Code) et un éditeur de texte simple (comme Notepad)** *Consigne* : Justifier que VS Code est un logiciel de programmation, tandis que Notepad est un logiciel applicatif. *Résolution* : - Visual Studio Code : - Fournit des fonctionnalités spécifiques au développement : coloration syntaxique, intégration avec des débogueurs (ex. : GDB), gestion de projets, refactorisation de code, extensions pour langages spécifiques. - Bien qu'il puisse être utilisé pour éditer n'importe quel texte, sa conception et ses fonctionnalités principales sont orientées vers la création et la maintenance de logiciels. - Il s'exécute en mode utilisateur, mais son but est de produire du code destiné à devenir un autre logiciel. → Logiciel de programmation. - Notepad : - Permet de créer et d'éditer des fichiers texte simples. - Aucune fonctionnalité dédiée au développement logiciel (pas de compilation, pas de débogage, pas de gestion de projet). - Utilisé pour des tâches utilisateur génériques : prendre des notes, éditer des fichiers de configuration simples, écrire des lettres. → Logiciel applicatif (spécifiquement, un éditeur de texte de base). ### Exercices d'application corrigés **Exercice 1** : Un étudiant utilise Python pour écrire un script qui calcule la moyenne des notes d'une classe. Il exécute le script avec la commande `python3 moyenne.py`. *Question* : Le logiciel Python (l'interpréteur) appartient-il à la catégorie du logiciel de programmation, du logiciel système, ou du logiciel applicatif ? Justifiez. *Corrigé* : > L'interpréteur Python (`python3`) est un **logiciel de programmation**. > - Il ne réalise pas directement la tâche de calcul de moyenne : il lit et exécute ligne par ligne le code source du script `moyenne.py`. > - Il fournit l'environnement d'exécution nécessaire pour que le code Python soit traduit en opérations matérielles (via la machine virtuelle Python et les appels système sous-jacents). > - Il s'exécute en mode utilisateur : l'utilisateur lance la commande explicitement. > - Il ne gère pas le matériel directement : il dépend du système d'exploitation pour l'accès à la mémoire, au disque, etc. > - Son but est permettre l'écriture et l'exécution de programmes : il est donc un outil de développement. > Même si le script `moyenne.py` lui-même, une fois exécuté, réalise une tâche utilisateur (calcul de moyenne), l'interpréteur Python qui le rend possible appartient bien à la catégorie du logiciel de programmation. > *Note* : Le script `moyenne.py` est un logiciel applicatif (il réalise une tâche utilisateur spécifique), mais l'outil qui l'exécute (Python) est du logiciel de programmation. **Exercice 2** : Un développeur utilise Git pour suivre les modifications du code source d'une application mobile. Il exécute les commandes `git add .`, `git commit -m "mise à jour"`, et `git push`. *Question* : Git est-il un logiciel de programmation ? Justifiez votre réponse en le comparant à un compilateur comme GCC. *Corrigé* : > Oui, Git est un **logiciel de programmation**. > - Comme GCC, il ne réalise pas directement une tâche utilisateur finale (comme éditer un document ou envoyer un email). > - Son but est de gérer l'évolution du code source : suivi des versions, résolution de conflits, collaboration entre développeurs. > - Il s'exécute en mode utilisateur : les commandes sont lancées depuis un terminal par le développeur. > - Il ne gère pas le matériel directement : il travaille sur des fichiers stockés sur disque, en utilisant les services du système d'exploitation pour la lecture/écriture et la communication réseau. > - Il est essentiel au processus de développement logiciel, tout comme un compilateur ou un débogueur. > La différence avec GCC est que GCC transforme du code source en code exécutable, tandis que Git gère l'historique et la cohérence du code source lui-même. Mais les deux servent à créer et maintenir d'autres logiciels : ils appartiennent donc tous deux à la catégorie du **logiciel de programmation**. --- ## III. Logiciel applicatif (Application Software) ### Définition et propriétés > **Le logiciel applicatif est l'ensemble des programmes qui accomplissent directement des tâches spécifiques pour répondre aux besoins de l'utilisateur final, qu'ils soient personnels, professionnels, éducatifs, ou de loisir.** Il est celui avec lequel l'utilisateur interagit directement pour atteindre un objectif concret. **Propriétés essentielles** : - Réalise une fonction utilisateur clairement définie : traitement de texte, navigation web, jeu vidéo, comptabilité, conception assistée par ordinateur (CAO), etc. - S'exécute généralement en mode utilisateur, sauf dans des cas spécifiques (ex. : certains antivirus ou outils de monitoring système qui nécessitent des privilèges élevés, mais restent des applicatifs par leur finalité). - Dépend entièrement du système d'exploitation et des logiciels système pour accéder au matériel : il ne contient généralement pas de code pour piloter directement le matériel. - Peut être propriétaire (ex. : Microsoft Office), libre (ex. : LibreOffice), ou open source (ex. : Firefox). - Est souvent distribué sous forme d'application autonome ou d'application web. - Son succès se mesure par son adéquation aux besoins de l'utilisateur, sa facilité d'utilisation, et sa fiabilité dans l'accomplissement de sa tâche spécifique. ### Exemples résolus étape par étape **Exemple 1 : Classer Microsoft Word** *Consigne* : Expliquer pourquoi Microsoft Word est un logiciel applicatif, et non un logiciel système ou de programmation. *Résolution* : 1. Microsoft Word permet à l'utilisateur de créer, d'éditer, de mettre en forme, et d'imprimer des documents texte contenant du texte, des images, des tableaux, etc. 2. Cette fonctionnalité répond directement à un besoin utilisateur : produire des rapports, des lettres, des CV, des manuscrits, etc. 3. Il s'exécute en mode utilisateur : l'utilisateur lance l'application depuis le menu Démarrer ou un raccourci. 4. Il ne gère pas le matériel directement : il utilise les appels système du système d'exploitation (Windows) pour accéder à l'imprimante, à la mémoire, au disque, et à l'affichage. 5. Il ne contient pas d'outils pour écrire ou compiler du code destiné à devenir un autre logiciel (bien qu'il puisse contenir des macros, celles-ci sont des scripts d'automatisation applicative, pas des outils de développement général). 6. Sans Word, l'utilisateur ne pourrait pas accomplir cette tâche spécifique de manière aussi efficace (bien qu'il puisse utiliser d'autres applicatifs comme LibreOffice ou Google Docs). → Donc, Microsoft Word est un **logiciel applicatif**. **Exemple 2 : Comparer un navigateur web (Chrome) et un serveur web (Apache HTTP Server)** *Consigne* : Justifier que Chrome est un logiciel applicatif, tandis qu'Apache est un logiciel système (ou plus précisément, un logiciel système servant de middleware). *Résolution* : - Google Chrome : - Permet à l'utilisateur de saisir une URL, d'afficher des pages web, de regarder des vidéos, de remplir des formulaires, etc. - Réalise directement une tâche utilisateur finale : navigation et interaction avec le contenu web. - S'exécute en mode utilisateur. → Logiciel applicatif. - Apache HTTP Server : - Attend et répond aux requêtes HTTP provenant du réseau (généralement depuis des navigateurs comme Chrome). - Ne réalise pas une tâche utilisateur directe : il ne permet pas à un utilisateur de lire un email ou de jouer à un jeu. - Son but est de fournir un service réseau : héberger et servir des ressources web (HTML, images, scripts) à d'autres ordinateurs. - Il s'exécute souvent en tant que service système (démon), avec des privilèges nécessaires pour ouvrir des ports réseau (ex. : port 80 ou 443). - Bien qu'il ne soit pas un noyau ou un pilote, il fournit une abstraction de service essentiel au fonctionnement de nombreuses applications web. Dans certaines classifications, il est considéré comme un **logiciel système de type middleware** ou comme un **serveur applicatif**, mais dans le cadre du niveau Upper Sixth et de la classification canonique (système, programmation, applicatif), il est souvent rattaché au **logiciel système** car il fournit une plateforme de service plutôt qu'une fonction utilisateur finale. → Dans ce contexte, Apache est classé comme **logiciel système** (plus précisément, logiciel système de service ou middleware), tandis que Chrome est clairement un **logiciel applicatif**. ### Exercices d'application corrigés **Exercice 1** : Une bibliothèque scolaire utilise un logiciel appelé « BiblioManage » pour suivre les prêts de livres, gérer les comptes des élèves, et générer des rapports d'utilisation mensuels. *Question* : BiblioManage est-il un logiciel applicatif ? Justifiez en identifiant la tâche utilisateur spécifique qu'il accomplit. *Corrigé* : > Oui, BiblioManage est un **logiciel applicatif**. > - Il accomplit directement une tâche utilisateur spécifique : la gestion des prêts de livres dans un contexte bibliotécaire. > - Cette tâche répond à un besoin professionnel clairement défini : suivre quels livres sont empruntés par qui, quand ils doivent être retournés, quels sont les retards, et générer des statistiques pour améliorer la gestion de la collection. > - Il s'exécute en mode utilisateur : le bibliothécaire lance l'application pour effectuer ses tâches quotidiennes. > - Il dépend du système d'exploitation pour accéder au disque (où sont stockées les données des livres et des utilisateurs), à l'imprimante (pour éditer des reçus ou des rappels), et éventuellement au réseau (si la base de données est partagée). > - Il ne gère pas le matériel directement, ne compile pas de code, et ne fournit pas de plateforme pour développer d'autres logiciels. > - Son succès se mesure par sa capacité à réduire les erreurs de suivi, à gagner du temps pour le bibliothécaire, et à fournir des informations utiles pour la prise de décision. > → Donc, BiblioManage est un logiciel applicatif dédié à la gestion bibliotécaire. **Exercice 2** : Un élève utilise une calculatrice scientifique intégrée à son téléphone pour résoudre une équation du second degré pendant un examen de mathématiques. *Question* : La calculatrice du téléphone est-elle un logiciel applicatif ? Justifiez en la distinguant du système d'exploitation du téléphone (ex. : Android). *Corrigé* : > Oui, la calculatrice scientifique du téléphone est un **logiciel applicatif**. > - Elle accomplit directement une tâche utilisateur spécifique : effectuer des calculs mathématiques complexes (opérations trigonométriques, logarithmiques, résolution d'équations, etc.) dont l'élève a besoin pour résoudre son problème de mathématiques. > - Cette tâche est finale et orientée vers l'utilisateur : elle ne sert pas à gérer le téléphone lui-même, mais à aider l'utilisateur dans son travail intellectuel. > - Elle s'exécute en mode utilisateur : l'élève lance l'application calculatrice depuis l'écran d'accueil. > - Elle dépend entièrement du système d'exploitation (Android) : pour afficher l'interface tactile, elle utilise le framework graphique d'Android ; pour effectuer les calculs, elle utilise les opérations arithmétiques du processeur accessibles via les bibliothèques système ; pour sauvegarder l'historique, elle peut utiliser le stockage interne via les API du système d'exploitation. > - En revanche, le système d'exploitation Android est un **logiciel système** : il gère les ressources matérielles (CPU, mémoire, écran tactile, batterie, réseau), planifie les processus (l'application calculatrice et d'autres apps), fournit les services de base (affichage, entrée tactile, gestion des fichiers), et permet l'exécution de toutes les autres applications. > → Donc, tandis qu'Android est le logiciel système qui rend le téléphone fonctionnel, la calculatrice est un logiciel applicatif qui utilise cette plateforme pour accomplir une tâche spécifique de l'utilisateur. --- ## IV. Logiciel utilitaire (Utility Software) ### Définition et propriétés > **Le logiciel utilitaire est une sous-catégorie spécialisée du logiciel système qui effectue des tâches de maintenance, d'optimisation, de diagnostic, ou de configuration du système informatique, afin d'assurer son bon fonctionnement, sa sécurité, ou ses performances.** Il agit souvent en arrière-plan ou sur demande de l'utilisateur administrateur. **Propriétés essentielles** : - Proche du logiciel système par sa fonction (soutien du système), mais distingué par son orientation vers des opérations spécifiques de gestion plutôt que vers la fourniture d'une plateforme générale. - Nécessite souvent des privilèges d'administrateur ou root pour s'exécuter efficacement. - Peut être intégré au système d'exploitation (ex. : Défragmenteur de disque dans Windows) ou fourni séparément (ex. : CCleaner, Antivirus). - Ses tâches incluent : sauvegarde et restauration, nettoyage de fichiers temporaires, analyse antivirus, défragmentation de disque, gestion des partitions, monitoring des performances, mise à jour du système. - Ne réalise pas une tâche utilisateur finale au sens de production de contenu (comme écrire un document), mais soutient l'environnement dans lequel de telles tâches peuvent être effectuées de manière fiable et sécurisée. - Souvent exécuté en mode utilisateur avec élévation de privilèges, ou en tant que service système. ### Exemples résolus étape par étape **Exemple 1 : Classer un logiciel antivirus (comme Avast)** *Consigne* : Expliquer pourquoi un antivirus est un logiciel utilitaire, et non un logiciel système pur ou un logiciel applicatif. *Résolution* : 1. Un logiciel antivirus scanne les fichiers, la mémoire, et le trafic réseau à la recherche de code malveillant (virus, vers, chevaux de Troie, etc.). 2. Il ne gère pas directement le matériel : il ne planifie pas les processus, ne gère pas la mémoire, ne pilote pas les périphériques. 3. Il ne fournit pas une plateforme générale pour exécuter d'autres logiciels : son but est spécifique — détecter et neutraliser des menaces. 4. Il ne réalise pas une tâche utilisateur finale de production de contenu : il ne permet pas d'écrire un rapport, de naviguer sur le web, ou de créer une présentation. 5. Il s'exécute souvent en arrière-plan comme un service (avec des privilèges élevés pour accéder à tous les fichiers et processus), ou sur demande de l'utilisateur pour un scan complet. 6. Il dépend entièrement du système d'exploitation : il utilise les API du système pour lister les processus, lire les fichiers, surveiller les appels système, et intervenir en cas de détection. 7. Son but est de maintenir l'intégrité, la sécurité, et la fiabilité du système informatique afin que les logiciels système et applicatifs puissent fonctionner correctement. → Donc, un antivirus est un **logiciel utilitaire** (sous-catégorie du logiciel système orienté vers la maintenance et la sécurité). **Exemple 2 : Comparer un outil de défragmentation de disque et un lecteur vidéo** *Consigne* : Justifier que le défragmenteur de disque est un logiciel utilitaire, tandis que VLC est un logiciel applicatif. *Résolution* : - Outil de défragmentation de disque (ex. : Défragmenteur de disque Windows) : - Réorganise les fragments de fichiers sur le disque dur afin que les données d'un même fichier soient stockées de manière contiguë, réduisant ainsi le temps de recherche mécanique (seek time) et améliorant les performances de lecture/écriture. - Cette tâche est une opération de maintenance du système de stockage : elle ne sert pas à créer ou à consommer du contenu utilisateur, mais à optimiser les performances du disque, ce qui bénéficie indirectement à tous les logiciels. - Nécessite des privilèges d'administrateur pour accéder directement au système de fichiers en bas niveau. - S'exécute généralement sur demande ou selon un planning, en arrière-plan. → Logiciel utilitaire. - VLC Media Player : - Permet à l'utilisateur de lire des fichiers audio et vidéo de divers formats (MP4, MKV, MP3, etc.) en les décodant et en les affichant à l'écran. - Réalise directement une tâche utilisateur finale : consommation de contenu multimédia pour le divertissement ou l'information. - S'exécute en mode utilisateur. → Logiciel applicatif. ### Exercices d'application corrigés **Exercice 1** : Un administrateur système utilise un outil appelé « DiskUsage » pour analyser l'espace occupé par les dossiers sur un serveur Linux. Il exécute la commande `du -sh /*` pour voir quels répertoires consomment le plus d'espace, puis décide de nettoyer les fichiers de logs anciens. *Question* : L'outil `du` (disk usage) appartient-il à la catégorie du logiciel utilitaire, du logiciel système, ou du logiciel applicatif ? Justifiez. *Corrigé* : > La commande `du` est un **logiciel utilitaire**. > - Elle ne gère pas directement le matériel : elle ne pilote pas le disque dur, ne gère pas la mémoire, ne planifie pas les processus. > - Elle ne fournit pas une plateforme générale pour exécuter d'autres logiciels : son but est spécifique — analyser l'utilisation de l'espace disque. > - Elle ne réalise pas une tâche utilisateur finale de production de contenu : elle ne permet pas d'écrire un document, de naviguer sur le web, ou de jouer à un jeu. Son output est une liste de tailles de répertoires, destinée à informer une décision de gestion (ex. : supprimer des fichiers inutiles). > - Elle s'exécute en mode utilisateur : l'administrateur lance la commande explicitement depuis un terminal. > - Cependant, elle nécessite un accès en lecture à tout le système de fichiers pour fournir une analyse précise, et son output est utilisé pour des tâches de maintenance du système (nettoyage, planification de capacité, dépannage). > - Elle dépend entièrement du système d'exploitation : elle utilise les API du noyau pour parcourir l'arborescence des fichiers et obtenir leurs tailles. > - Son but est d'aider à maintenir la santé et l'efficacité du système de stockage, ce qui soutient le bon fonctionnement de l'ensemble du système informatique. > → Donc, `du` est un logiciel utilitaire. Il est souvent fourni avec le système d'exploitation (comme partie des outils de base Unix/Linux), ce qui renforce son classement dans la catégorie des utilitaires système. **Exercice 2** : Une entreprise déploie un logiciel de sauvegarde automatique qui copie chaque nuit les données critiques des serveurs vers un stockage externe sécurisé. Ce logiciel vérifie l'intégrité des copies, maintient un historique des versions, et envoie une alerte par email en cas d'échec. *Question* : Ce logiciel de sauvegarde est-il un logiciel utilitaire ? Justifiez en le comparant à un logiciel de compression comme WinZip. *Corrigé* : > Oui, ce logiciel de sauvegarde automatique est un **logiciel utilitaire**. > - Comme WinZip, il ne réalise pas une tâche utilisateur finale de production de contenu (comme écrire un rapport ou éditer une image). > - Son but est spécifique : assurer la préservation, la récupérabilité, et l'intégrité des données critiques face à des risques tels que la panne matérielle, l'erreur humaine, ou l'attaque malveillante. > - Il s'exécute généralement en arrière-plan, selon un planning (ex. : chaque nuit à 2h du matin), souvent avec des privilèges élevés pour accéder à tous les fichiers nécessaires. > - Il dépend entièrement du système d'exploitation : il utilise les API pour lire les fichiers, les copier vers le stockage externe (USB, réseau, cloud), vérifier leur intégrité (via des checksums), et gérer l'historique des versions. > - Il ne gère pas le matériel directement : il ne pilote pas le disque dur ou la carte réseau, mais utilise les services fournis par le système d'exploitation pour ces opérations. > - WinZip, quant à lui, est également un logiciel utilitaire : sa fonction est de compresser et décompresser des fichiers pour économiser de l'espace de stockage ou faciliter le transfert. Bien qu'il puisse être utilisé par un utilisateur pour préparer un envoi email (tâche utilisateur), sa fonction principale reste la manipulation des fichiers pour des raisons de stockage ou de transmission — ce qui relève de la maintenance du système de fichiers plutôt que d'une tâche utilisateur finale de création de contenu. > → Donc, tant le logiciel de sauvegarde que WinZip sont des **logiciels utilitaires**. Ils soutiennent l'efficacité, la sécurité, et la fiabilité du système informatique en agissant sur les données ou le stockage, plutôt qu'en fournissant une plateforme générale ou en accomplissant une tâche utilisateur directe de type création, communication, ou divertissement. --- ## Synthèse du chapitre - Le **logiciel système** gère directement les ressources matérielles et fournit une plateforme pour l'exécution d'autres logiciels (ex. : noyau, pilotes, chargeur d'amorçage, système d'exploitation, processus d'initialisation comme systemd). - Le **logiciel de programmation** permet d'écrire, tester, et maintenir le code source d'autres logiciels (ex. : compilateurs comme GCC, interpréteurs comme Python, IDE comme VS Code, outils de gestion de version comme Git). - Le **logiciel applicatif** accomplit directement des tâches spécifiques pour l'utilisateur final (ex. : traitement de texte comme Word, navigateur web comme Chrome, lecteur multimédia comme VLC, logiciel de gestion bibliotécaire). - Le **logiciel utilitaire** est une sous-catégorie du logiciel système axée sur la maintenance, l'optimisation, la sécurité, ou la configuration du système (ex. : antivirus, défragmenteur de disque, outils de sauvegarde comme `du` ou logiciels de backup, logiciels de compression comme WinZip). - La classification dépend de la **finalité principale** et du **niveau d'interaction avec le matériel**, et non uniquement du mode d'exécution (utilisateur vs noyau) ou de la fréquence d'utilisation. - Un même outil peut parfois appartenir à différentes catégories selon son contexte d'utilisation, mais sa catégorie fondamentale est déterminée par sa fonction première dans l'écosystème logiciel. --- ## Glossaire > **Logiciel système** : Ensemble de programmes qui gèrent les ressources matérielles et fournissent une plateforme pour l'exécution d'autres logiciels. > **Noyau (kernel)** : Composant central du système d'exploitation qui s'exécute en mode privilégié et gère directement le matériel. > **Pilote (driver)** : Logiciel qui permet au système d'exploitation de communiquer avec un périphérique matériel spécifique. > **Logiciel de programmation** : Outils utilisés pour écrire, tester, et maintenir le code source d'autres logiciels (compilateurs, interpréteurs, IDE, débogueurs). > **Environnement de développement intégré (IDE)** : Application qui regroupe éditeur de texte, compilateur, débogueur, et autres outils dans une interface unifiée pour faciliter le développement logiciel. > **Logiciel applicatif** : Programme qui accomplit directement une tâche spécifique pour répondre aux besoins de l'utilisateur final. > **Logiciel utilitaire** : Sous-catégorie du logiciel système dédiée à la maintenance, l'optimisation, la sécurité, ou la configuration du système informatique. > **Antivirus** : Logiciel utilitaire qui détecte, bloque, et supprime les logiciels malveillants pour protéger l'intégrité du système. > **Défragmentation** : Processus de réorganisation des données sur un disque de stockage pour améliorer les performances d'accès en réduisant la fragmentation. > **Sauvegarde (backup)** : Copie de données destinée à permettre leur restauration en cas de perte, de corruption, ou de sinistre. > **Chargeur d'amorçage (bootloader)** : Petit programme qui s'exécute au démarrage pour charger le système d'exploitation en mémoire. > **Middleware** : Logiciel qui fournit des services communs aux applications au-delà de ceux offerts par le système d'exploitation (ex. : serveurs web, serveurs de bases de données). > **Mode noyau (kernel mode)** : État d'exécution du processeur permettant un accès privilégié au matériel et aux ressources système critiques. > **Mode utilisateur (user mode)** : État d'exécution restreint où les applications s'exécutent sans accès direct au matériel, en s'appuyant sur les appels système du système d'exploitation. > **Appel système (system call)** : Interface utilisée par les logiciels en mode utilisateur pour demander des services au noyau (ex. : lecture de fichier, création de processus). --- *Fin de la fiche de cours. Cette synthèse couvre explicitement et intégralement la leçon « classification of software » du programme officiel de Computer Science – Upper Sixth, système éducatif camerounais anglophone, sans digression, sans invention de faits, et avec une densité adaptée aux attentes du niveau.*

Quiz du chapitre

12 questions — vérifie chaque réponse pour voir l'explication.

  1. 1. Which of the following best describes system software?
  2. 2. What is the primary purpose of utility software?
  3. 3. Which category does a web browser like Mozilla Firefox belong to?
  4. 4. What distinguishes firmware from other types of software?
  5. 5. A school uses a program to track student attendance, grades, and timetables. This program is best classified as:
  6. 6. Which of the following is an example of programming software?
  7. 7. In a computerized library system, the software that manages the database of books and handles check-out transactions is:
  8. 8. Which statement correctly describes the relationship between the operating system and application software?
  9. 9. A user installs a program that defragments their hard drive to improve file access speed. This program is:
  10. 10. Which of the following is NOT a characteristic of open-source software?
  11. 11. In embedded systems such as smart thermostats, the software that directly controls the temperature sensor and relay switch is most accurately termed:
  12. 12. A developer creates a mobile app that uses the device’s GPS to provide real-time navigation. Which layer of software is primarily responsible for translating the app’s location requests into signals the GPS hardware can understand?