Maison / Travailler sur Internet / Les outils de développement sont indispensables et simplement utiles. Un bref aperçu historique du développement d'outils de développement de logiciels malveillants

Les outils de développement sont indispensables et simplement utiles. Un bref aperçu historique du développement d'outils de développement de logiciels malveillants

Le développement logiciel, comme tout autre domaine d'activité, nécessite certains outils. Cependant, si la liste des logiciels dont la personne moyenne a généralement besoin utilisateur d'entreprise(une option pour l'utilisateur domestique moyen) est plus ou moins évidente, alors les choses ne sont pas si simples avec les développeurs : la liste des outils utilisés pour créer des applications ne se limite en aucun cas aux outils de développement.

Introduction

Lorsqu'on parle de développement logiciel, de nombreux utilisateurs entendent avant tout écrire du code d'application ou, au mieux, également implémenter les produits créés. Ce point de vue est souvent basé sur l'expérience passée. De nombreux professionnels et utilisateurs de l'informatique, en particulier les plus âgés, sont issus du milieu universitaire. Dans les années 80, la programmation complétait souvent la recherche scientifique et, en substance, le scientifique se fixait lui-même la tâche, l'exécutait et était le seul (ou l'un des rares) utilisateurs de l'application créée. La conséquence en fut qu'au début des années 1990 en Russie il y avait pas mal de développeurs (souvent les mêmes anciens scientifiques qui savaient programmer) qui créaient des produits déjà aliénés, mais en même temps négociaient avec les clients, concevaient des applications, écrivaient du code, préparaient la documentation du projet, testaient et implémentaient le produit, et souvent en même temps accompagnaient les postes de travail des utilisateurs. Naturellement, l'ensemble des outils d'un tel développeur généraliste se limitait généralement à un outil de développement, un éditeur de texte pour la préparation des contrats et de la documentation et, beaucoup moins souvent, des outils de conception et de génération de distribution de données.

Bien qu'il existe actuellement de nombreux développeurs universels de ce type en Russie, la grande majorité des entreprises, même relativement petites, préfèrent de plus en plus utiliser les services de spécialistes étroits. La raison en est une augmentation significative des exigences en matière de fonctionnalité, de conception, de qualité et de convivialité des logiciels (essayez de suggérer utilisateur moderne éditeur de texte avec interfaces ligne de commande au lieu de Microsoft Word!). La mise en œuvre réussie de projets modernes nécessite un très large éventail de connaissances et de compétences, qui, en règle générale, sont détenues par différents spécialistes qui effectuent diverses opérations dans le projet et ont besoin d'outils appropriés.

Étapes, rôles, outils…

La méthodologie moderne de développement de logiciels consiste à diviser un projet (ou une partie de celui-ci, comme la prochaine itération d'un projet) en étapes au cours desquelles des spécialistes qui jouent certains rôles dans le projet exécutent diverses actions et produisent les composants du projet. En règle générale, dans toute approche d'organisation du processus de développement, les étapes suivantes peuvent être distinguées sous une forme ou une autre: analyse métier et définition des exigences, conception, développement, test et évaluation de la qualité, documentation, mise en œuvre et maintenance - et, par conséquent, des rôles tels que chef de projet, analyste métier, analyste système, architecte d'application, auteur de code d'application, spécialiste des tests et de l'évaluation de la qualité, rédacteur technique, spécialiste de la mise en œuvre, spécialiste de la maintenance, spécialiste de la formation des utilisateurs, spécialiste du marketing du produit créé. La liste des rôles peut être étendue en fonction de la taille et de la complexité du projet (par exemple, dans certains projets, les testeurs sont divisés en gestionnaires de test, analystes de test, rédacteurs de scripts pour les tests automatisés, testeurs d'interface utilisateur, testeurs de charge, et chacun d'eux nécessite ses propres outils), et vice versa - dans un petit projet, un interprète peut jouer plusieurs rôles (par exemple, combiner les rôles de testeur et de rédacteur technique).

Ci-dessous, nous examinerons les outils dont une équipe de développement peut avoir besoin à différentes étapes du développement d'applications.

Définition des besoins

La détermination des besoins est la tâche des analystes commerciaux qui réalisent une enquête préalable au projet, communiquent avec le client et les utilisateurs potentiels et découvrent leurs problèmes et leurs besoins. Le résultat de l'enquête est généralement un document appelé dans les termes de référence de notre pays et contenant des informations sur l'objectif du produit, un ensemble d'exigences pour celui-ci et une description des limites du projet.

De quels outils les analystes commerciaux ont-ils besoin ? Le besoin d'outils est déterminé par l'ampleur du projet, les exigences du client en matière de documentation, les normes adoptées dans une société de développement particulière. L'analyste d'affaires peut faire traitement de texte(par exemple, Microsoft Word), énonçant les exigences sous forme de texte. Cependant, récemment, il est d'usage d'illustrer la description des exigences avec des diagrammes UML et IDEF0 qui décrivent des scénarios d'interaction de l'utilisateur avec le produit, l'ordre dans lequel les messages sont transmis d'un objet à un autre, l'interaction des objets entre eux, les workflows et les états changeants des objets. Pour créer de tels diagrammes, vous pouvez utiliser Microsoft Visio, Rational Rose, Rational XDE, Borland Together, pour créer des diagrammes dans la norme IDEF0, CA AllFusion Process Modeler (anciennement appelé BPwin) est le plus activement utilisé.

L'outil qui convient à un projet donné dépend en grande partie des processus de développement. Si un analyste métier n'a besoin que d'illustrer la documentation du projet, le choix de l'outil n'est pas critique - tant que vous pouvez dessiner l'un ou l'autre diagramme avec. Si l'analyste métier ne doit pas seulement faire une illustration, mais créer un modèle pour une utilisation ultérieure par les analystes système, les développeurs et les testeurs aux étapes ultérieures du projet, alors le choix de l'outil est déterminé par sa capacité à s'intégrer aux outils de développement, qui seront très probablement utilisés comme outil d'implémentation de code. Parmi les paires modernes les plus avancées sur le plan technologique "outil de développement - outil de modélisation", il convient de noter telles que Visual Studio .NET - Rational XDE, Visual Studio .NET - Borland Together, Borland JBuilder - Borland Together.

En plus des éditeurs de texte et des outils de modélisation, les analystes métier peuvent utiliser des outils de gestion des exigences qui permettent de stocker une liste structurée et systématique des exigences du produit dans une base de données et de s'y référer lors des étapes ultérieures, en reliant les exigences aux composants du produit qui les implémentent et aux tests qui vérifient que le produit répond aux exigences, et également de suivre correctement les changements d'exigences qui se produisent dans presque tous les projets, quelle que soit la minutie de l'étude, et l'impact de ces changements sur les résultats des travaux ultérieurs. RequisitePro (IBM/Rational), DOORS (Telelogic) et CaliberRM (Borland) sont parmi les outils de gestion des exigences les plus connus aujourd'hui. En fait, avec la bonne organisation du processus de développement et avec les modèles nécessaires, les termes de référence peuvent être générés à l'aide de l'outil de gestion des exigences et même conformes aux exigences des normes de l'État russe.

Interface typique de l'outil de gestion des exigences (Borland Caliber RM)

Ainsi, au stade de la définition des exigences, des outils de préparation de documents sont nécessaires, et dans de nombreux cas également des outils de gestion des exigences, de modélisation des processus métier et de modélisation UML.

Conception

L'étape de définition des besoins, aboutissant à l'approbation des termes de référence, est suivie de l'étape de conception. Elle est réalisée, en règle générale, par des architectes d'applications qui prennent des décisions concernant l'architecture et les composants de la solution en cours de création, ainsi que des technologies pour leur mise en œuvre, et par des analystes système qui conçoivent des classes de données et d'applications, et parfois des prototypes d'interfaces utilisateur. Le résultat de cette étape est généralement un document, souvent appelé projet technique, contenant des diagrammes de classes, des modèles de données, des prototypes d'interface utilisateur.

Typiquement, à ce stade, des diagrammes de classes des applications en cours de création et des diagrammes de déploiement de la solution en cours de création, ainsi que des diagrammes décrivant le modèle logique de données et leur structure physique pour le SGBD sélectionné, sont ajoutés au modèle créé par les analystes métier à ce stade.

Quels outils sont utilisés à ce stade ? Les outils de modélisation UML ci-dessus sont utilisés pour créer des diagrammes de classes et des diagrammes de déploiement. L'ingénierie des données utilise généralement des outils tels que CA AllFusion Data Modeler (anciennement ERwin), Sybase Power Designer, Oracle Designer et des outils similaires d'Embarcadero et de Popkin Software. Pour le SGBD développé par Microsoft, vous pouvez utiliser avec succès Microsoft Visio. Les outils répertoriés vous permettent de créer au moins un script pour générer Base de données, et les différences entre eux résident dans la manière dont ils contrôlent la génération du code côté serveur associé à la création de déclencheurs et de procédures stockées.

Notez que si les outils de modélisation UML ne sont pas encore utilisés partout, alors l'utilisation d'outils de conception de données est maintenant typique même pour les petites entreprises. Cette catégorie d'outils peut être classée comme obligatoire.

Le prototypage de l'interface utilisateur, s'il existe à ce stade, peut nécessiter l'utilisation soit d'un outil de dessin d'images des formulaires de la future application (par exemple, Microsoft Visio ou des éditeurs graphiques), soit directement d'outils de développement d'applications.

Ainsi, au stade de la conception, des outils de modélisation et de conception de données et de modélisation UML sont nécessaires, et dans certains cas, des outils de création d'images de formulaires.

Développement de produits

Au stade du développement, le code applicatif est créé conformément au projet technique, y compris le code serveur qui implémente la fonctionnalité qui n'est pas dans le modèle de données. A ce stade, l'outil principal qui doit être utilisé est l'outil de développement d'applications. Le choix de l'outil de développement est principalement déterminé par la plate-forme (Windows, .NET, Java/J2EE, Linux/UNIX) et l'architecture (applications avec interface graphique, applications et services console, applications Web) et est actuellement assez diversifié. Les outils de développement d'applications Java / J2EE sont produits par IBM, Oracle, Borland, les outils de développement d'applications Windows - Microsoft, Borland, Sybase, les outils de développement d'applications .NET - Microsoft et Borland, les outils de développement d'applications Linux - Borland et quelques autres sociétés.

En plus des outils de développement, diverses bibliothèques de composants supplémentaires sont parfois nécessaires à ce stade, conçues pour être utilisées sur une plate-forme spécifique ou avec certains outils de développement. Ces composants sont fournis un grand nombre de développeurs indépendants, ainsi que de nombreux fournisseurs de produits commerciaux sur la base desquels des solutions sont censées être créées par d'autres développeurs (des exemples de tels produits sont de nombreux systèmes d'information géographique, des applications CAO et certains produits serveur).

Naturellement, lors de la création de solutions basées sur n'importe quel produit serveur (SGBD, serveur J2EE, serveur de messagerie, etc.) à ce stade, vous devriez avoir ce produit. Dans de nombreux cas, en particulier pour les développeurs de solutions, les fabricants de ces produits publient des versions destinées au développement et au débogage d'applications, mais pas à la production.

Au stade du développement de l'application, des outils de modélisation sont également utilisés, en particulier lorsqu'ils peuvent non seulement générer du code dans divers langages de programmation, mais également prendre en charge l'ingénierie inverse en créant un diagramme de classes basé sur une application finie ou en vous permettant de modifier de manière synchrone le code et le modèle. La fonction de changement synchrone de code et de modèle simplifie grandement de nombreux processus qui accompagnent le développement réel, donc s'il y a un choix d'outils, vous devez faire attention à sa prise en charge (par exemple, le changement synchrone de code et de modèle est pris en charge par certaines éditions de l'outil de modélisation UML Borland Together).

Souvent, au stade de la création d'applications, des outils d'optimisation et de débogage du code sont utilisés. Ces outils peuvent faire partie du kit de développement ou être fournis séparément.

Essais et évaluation de la qualité

Lors du test d'un produit, sa conformité aux exigences est vérifiée, et en fonction de ces exigences, la définition des méthodes de test, la création de tests et la sélection des outils appropriés sont effectuées.

Dans les projets modernes, l'interface utilisateur, les performances des applications, la sécurité des données et la compatibilité avec divers systèmes d'exploitation et applications sont testées. Des outils appropriés ont été développés pour cela, tels que des utilitaires de test de base de données, des outils de test d'interface utilisateur automatisés, des outils de test de charge, des outils de test d'erreur d'exécution et des outils de test de sécurité des applications. En règle générale, ces outils contiennent des outils de script, selon lesquels des tests automatisés sont effectués, c'est-à-dire l'exécution multiple d'un ensemble d'actions tout en collectant des statistiques d'échec, le temps d'exécution des opérations et d'autres informations liées à l'évaluation de la qualité du produit.

Les principaux fabricants d'outils de test sont actuellement Compuware, Segue, Mercury Interactive, IBM/Rational, Borland. Chacun d'eux produit plusieurs outils de test automatisés, notamment des tests de charge, des tests d'interface utilisateur, des tests d'erreur d'exécution.

En plus des outils de test, pour évaluer la qualité d'un produit, des analyseurs du code source de l'application sont souvent utilisés pour déterminer l'exactitude de la conception de la hiérarchie des classes, du style d'écriture du code et d'autres caractéristiques de l'implémentation du produit. Ils peuvent être réalisés sous la forme candidatures individuelles ou être inclus dans des outils de simulation (notamment dans certaines éditions de Borland Together) ou des outils de développement d'applications.

Si une application est destinée à s'exécuter sur différents systèmes d'exploitation et leurs versions linguistiques (par exemple, différentes versions et éditions 32 bits de Microsoft Windows), les testeurs peuvent trouver utile de créer machines virtuelles, vous permettant d'avoir plusieurs systèmes d'exploitation différents chargés simultanément sur un ordinateur et d'organiser l'interaction réseau entre eux (nous prévoyons de parler des produits de cette catégorie dans un article séparé). Parmi les logiciels de cette classe, les produits de Microsoft et VMWare sont largement utilisés. Lors du test de programmes pour l'installation d'applications, des outils peuvent également être utilisés Réserver une copie et la récupération d'images de disque dur produites par Symantec, PowerQuest et d'autres.

Documentation

La documentation du projet est réalisée par différents spécialistes. Un manuel d'utilisation est généralement créé par un rédacteur technique, et son outil principal est un éditeur de texte et un outil de traitement graphique pas trop compliqué avec lequel vous pouvez ajouter des flèches, des légendes et d'autres éléments aux captures d'écran qui sont généralement représentées dans les illustrations de ces documents. Les rédacteurs de cours de formation sur les produits et de supports marketing ont besoin d'outils similaires, et ils peuvent également avoir besoin d'outils de présentation tels que Microsoft PowerPoint.

La documentation de déploiement et de maintenance, ainsi que d'autres documents techniques, sont généralement rédigés par des analystes ou des spécialistes du déploiement. Dans ce cas, ils peuvent avoir besoin de plusieurs des éléments ci-dessus, tels que des outils de gestion des exigences, des outils de modélisation de données et des outils de modélisation UML - souvent une partie importante de ces documents se compose de rapports de modèles. Dans le même temps, plus le travail sur le modèle était effectué avec précision, plus il était facile de créer la documentation du projet.

Les fichiers d'aide sont généralement générés à partir du guide de l'utilisateur à l'aide d'outils spéciaux. Dans le cas le plus simple, un fichier d'aide peut être créé à l'aide de Microsoft Word et des utilitaires de Microsoft pour créer des fichiers d'aide inclus avec de nombreux outils de développement, mais grand volume travail utilise souvent des outils spécialisés d'entreprises telles que Blue Sky Software, EC Software, JGsoft.

Mise en œuvre et assistance

Avant l'introduction d'un produit, des applications de distribution sont généralement créées pour faciliter ce processus - nous les lançons lors de l'installation d'un produit particulier sur un ordinateur. Pour créer des applications de distribution, des outils spécialisés sont également utilisés, dont les leaders du marché sont InstallShield Software et Wise Solutions. Souvent, les outils de développement incluent des versions spécialisées de ces produits, en tenant compte de leurs spécificités (par exemple, la possibilité d'inclure des bibliothèques incluses dans le package de distribution). cet outil développement).

Au stade de la maintenance du produit, comme le montre la pratique, vous aurez peut-être besoin de tout ce qui a été produit pendant le travail sur le projet et, par conséquent, de l'un des outils.

Développement d'équipe et gestion de projet

Si plusieurs personnes travaillent sur une partie du projet, les outils de contrôle de version (dont les plus populaires sont Merant PVCS Version Manager et Microsoft Visual SourceSafe) peuvent être utiles pendant le développement. Ils sont souvent utilisés lors de la création non seulement de code d'application, mais également de documents (par exemple, des spécifications techniques) ou de modèles. Les grands projets utilisent souvent des outils de gestion du changement. produits similaires permettent de stocker tous les composants du projet et leurs versions dans une seule base de données et simplifient la gestion des versions de code, des modèles, des exigences, et permettent également de suivre l'impact des changements d'une partie du projet sur ses autres parties. Parmi les outils de gestion du changement les plus populaires aujourd'hui, il convient de noter les produits de Borland et IBM / Rational.

Aucun projet ne peut se passer d'une personne qui en est responsable et qui planifie les activités de tous les spécialistes et gère tous les processus de développement. Bien qu'il soit possible de planifier le travail sur papier, mais récemment, le principal outil du chef de projet (et dans les grands projets - les responsables des composants du projet) est un outil de gestion de projet spécialisé. Le leader parmi les produits de cette catégorie est la famille de produits Microsoft Project.

Exemple de plan de projet de développement logiciel (Microsoft Project)

Conclusion

énumérant les outils qui peuvent être nécessaires lors du développement d'applications, nous n'avons bien sûr pas tous nommé options possibles. Certains projets peuvent nécessiter des générateurs de rapports, d'autres peuvent nécessiter des outils graphiques, d'autres encore peuvent nécessiter des outils de conception Web et d'autres encore peuvent nécessiter des outils CAO ou SIG. En même temps, comme nous l'avons vu, dans les cas les plus simples, vous pouvez vous débrouiller avec un outil de développement et un éditeur de texte - cet ensemble peut être assez efficace si le projet n'est pas trop volumineux.

Toutes les autres catégories d'outils répertoriés dans cet article, en fait, ne sont pas strictement tenus d'être utilisés lors du développement d'applications. Cependant, comme le montre la pratique, travailler avec eux est beaucoup plus facile.

Stade 1 : avant le milieu des années 50.

Les principaux coûts sont liés au codage (en codes machine). Des autocodes (langages utilisant la notation mnémonique pour les commandes) et leurs traducteurs (assembleurs) apparaissent.

Les possibilités de compilation séparée et de portabilité des programmes sont implémentées. Les chargeurs de programmes et les éditeurs de liens apparaissent.

Étape 2 : milieu des années 50 - milieu des années 60

Les tailles de programmes augmentent, un décalage se révèle entre les notions de problématiques et les langages orientés machine. Différentes langues apparaissent haut niveau(algorithmique, universel):

Fortran (1954-1957);

Algol-60 (1958-1960);

Cobol (1959-1961);

et leurs traducteurs (compilateurs). Presque tous les types de données de base, leurs opérations, les structures de contrôle et les moyens de les afficher dans les programmes, diverses options de paramétrage des sous-programmes sont inventés et testés.

Stade 3 : milieu des années 60 - début des années 70.

La taille des logiciels augmente fortement, on assiste à une transition vers le caractère collectif du travail. Les besoins en logiciels augmentent en raison de la transition vers la production de produits de base.

Le ratio des coûts de développement de logiciels évolue (40 % ou plus sont consacrés au débogage, à la conception et à la documentation), le codage est l'un des types de travail les plus faciles. De "grands" langages de programmation sont utilisés et créés - PL/1, ALGOL-68, SIMULA-67, généralisant et intégrant des solutions précédemment trouvées.

Il existe des systèmes de programmation avancés avec des traducteurs d'optimisation et de débogage, des bibliothèques de macros, des bibliothèques programmes standards, des éditeurs de texte spécialisés, des outils d'analyse et de débogage interactif au niveau de la langue d'entrée. Des systèmes d'exploitation développés, le premier SGBD, de nombreux systèmes d'automatisation de la documentation, des systèmes de gestion de la configuration logicielle (suivi des modifications et construction des versions logicielles) sont en cours de développement.

Étape 4 ("étape de crise du développement logiciel") : début des années 1970 - milieu des années 1970

Malgré le développement des outils, la productivité des programmeurs ne progresse pas. De plus, en raison des besoins croissants en logiciels et de la croissance non linéaire de sa complexité, la productivité du travail diminue. Les conditions de développement d'un logiciel sont rompues, son coût augmente, sa qualité est imprévisible, les méthodes traditionnelles (apportant des ressources humaines et matérielles supplémentaires) ne fonctionnent pas, ce qui est qualifié de "crise logicielle".

Obtenir la reconnaissance de la méthodologie programmation structurée(Dijkstra, 1968), les bases de la technologie de programmation sont en train de se former (langage pascal (N. Wirth), 1971).

Étape 5 : 1976 - notre temps. Stade de développement post-crise des outils.

1976 – publication des travaux de Boehm, où le concept est introduit cycle de vie logiciel et il est indiqué que les principaux coûts ne concernent pas le développement, mais la maintenance du programme.

Langages de programmation:

C (début des années 1970, première description complète en 1978);

Modula-2 (1978, développé par le langage Oberon (1988));

Prolog (1972, diffusé depuis 1980) ;

Smalltalk (années 1970, introduit sous le nom de Smalltalk-80 en 1980);

C++ (début des années 1980, le nom est 1983, il existe sous sa forme habituelle depuis 1990) ;

Java (version Java 1.0 - 1996, Java 2.0 - 1998, Java 5 - 2004...) ;

C# (1998-2001, version 1.0 - 2000-2002, version 2.0 - 2003-2005, version 3.0 - 2004-2008, version 4.0 - 2008-2010).

Des environnements de développement de logiciels intégrés sont en cours de développement. L'approche orientée objet de la conception et de la programmation est de plus en plus reconnue. Des programmes sont développés pour soutenir la création de logiciels à chaque étape.

Questions de contrôle :

1. Quelles activités comprend le développement d'un produit logiciel ?

2. Quelles sont les étapes du développement logiciel dans le cadre du Rational Unified Process (RUP) ?

3. Qu'apporte l'utilisation des outils ?

4. Quels sont les composants du programme ? But de chaque partie.

5. Définitions des programmes et des logiciels.

6. Quelles propriétés le logiciel doit-il avoir ?

7. Quels langages de programmation sont utilisés dans le développement de programmes ?

8. Définition du logiciel outil.

9. En quels quatre groupes les logiciels d'outils peuvent-ils être divisés ? Exemples de logiciels pour chaque groupe.

10. Selon quels critères les programmes d'une même classe peuvent-ils être comparés ?

11. Quelles sont les étapes de développement des outils de développement logiciel ?

12. Objectif et principales caractéristiques des compilateurs (assembleurs) et des éditeurs de liens.

13. Nomination et principales caractéristiques des éditeurs de texte.

14. Objectif et principales caractéristiques des débogueurs.

15. Objectif et principales caractéristiques des programmes de création d'installateurs.

16. Objectif et principales caractéristiques des éditeurs de ressources.

17. Objectif et principales caractéristiques des profileurs.

18. Objet et principales caractéristiques des programmes de support de version.

19. Objectif et principales caractéristiques des programmes de création de fichiers d'aide (documentation).

20. Objectif et principales caractéristiques des générateurs de documentation.

21. Objectif et principales caractéristiques des désassembleurs et décompilateurs.

22. Objectif et principales caractéristiques des programmes de suivi de l'activité du système et des changements survenus dans le système.

23. Objectif et principales caractéristiques des programmes-vérificateurs et conteneurs.

24. Objectif et principales caractéristiques des programmes de protection du logiciel développé (protecteurs).

25. Objectif et principales caractéristiques du SDK.

26. But et principales caractéristiques des parseurs.

27. Nomination des normes technologiques.


SUJET: Méthodologies de développement logiciel.

Littérature: 1. Zelkowitz M., Shaw A., Gannon J. Principes du développement logiciel.

2. Ghezzi K., Jazayeri M., Mandrioli D. Principes fondamentaux du génie logiciel.

3. Kamaev V. A., Kosterin V. V. Technologies de programmation.

Considérez les concepts de méthodologie, de méthode et de moyens.

Définition 1 : Méthode(du grec methodos - une méthode de recherche ou de connaissance, de théorie ou d'enseignement) - une méthode ou un système de méthodes pour la mise en œuvre pratique de quelque chose dans n'importe quel domaine, un ensemble de méthodes ou d'opérations pour le développement pratique ou théorique de la réalité, sous réserve de la solution de problèmes spécifiques.

La méthode comprend installations- à travers lequel l'action est réalisée et façons- comment l'action est menée.

Définition 2 : Méthodologie est un système de principes, ainsi qu'un ensemble d'idées, de concepts, de méthodes, de méthodes et de moyens qui déterminent le style de développement logiciel.

Une méthodologie est une implémentation d'une norme. Les normes elles-mêmes ne parlent que de ce qui devrait être, laissant la liberté de choix et d'adaptation.

Des choses spécifiques sont mises en œuvre à travers la méthodologie choisie. C'est elle qui détermine comment le développement sera réalisé. Il existe de nombreuses méthodologies de développement de logiciels efficaces. Le choix d'une méthodologie spécifique dépend de la taille de l'équipe, des spécificités et de la complexité du projet, de la stabilité et de la maturité des processus dans l'entreprise, et des qualités personnelles des collaborateurs.

Les méthodologies sont au cœur de la théorie de la gestion du développement logiciel.

Selon le modèle de cycle de vie utilisé, les méthodologies sont divisées en :

Chute d'eau (cascade);

Itératif (spirale).

Il existe également une classification plus générale en:

prévu ;

Adaptatif.

Méthodologies projetées se concentrer sur une planification détaillée pour l'avenir. Les tâches et les ressources planifiées sont connues pendant toute la durée du projet. L'équipe ne réagit guère aux éventuels changements. Le plan est optimisé en fonction de l'étendue des travaux et des exigences existantes. L'évolution des exigences peut entraîner une modification importante du plan ainsi que de la conception du projet. Souvent un comité dédié « conduite du changement » est mis en place pour s'assurer que seules les exigences les plus importantes sont prises en compte dans le projet.

Méthodologies adaptatives visent à surmonter l'incomplétude attendue des exigences et leur évolution constante. Lorsque les exigences changent, l'équipe de développement change également. Une équipe impliquée dans le développement agile a du mal à prédire l'avenir d'un projet. Il n'y a un plan exact que pour le futur proche. Des plans plus lointains n'existent que sous forme de déclarations des objectifs du projet, des coûts et des résultats attendus.

Développement en cascade ou modèle en cascade - un modèle du processus de développement logiciel, dans lequel le processus de développement ressemble à un flux, passant séquentiellement par les phases d'analyse des exigences, de conception, de mise en œuvre, de test, d'intégration et de support.

La principale caractéristique de l'approche en cascade est la suivante : le passage à l'étape suivante n'est effectué qu'une fois le travail à l'étape actuelle entièrement terminé et il n'y a pas de retour aux étapes passées . Chaque étape se termine par des résultats qui servent d'entrée pour l'étape suivante (Fig. 1).

Riz. 1. Modèle de cycle de vie en cascade.

Chaque étape aboutit à la publication d'un ensemble de documentation suffisant pour que le développement soit poursuivi par une autre équipe de développement. Le critère de la qualité du développement avec cette approche est l'exactitude du respect des spécifications des termes de référence.

Avantages de l'utilisation de la méthode en cascade :

À chaque étape, un ensemble complet de documentation de projet est formé qui répond aux exigences d'exhaustivité et de cohérence ;

Les étapes de travail réalisées dans un ordre logique vous permettent de planifier le calendrier d'achèvement de tous les travaux et les coûts correspondants.

L'approche en cascade a fait ses preuves dans la construction de systèmes électroniques systèmes d'information, pour lesquels au tout début du développement, il est possible de formuler toutes les exigences de manière assez précise et complète afin de donner aux développeurs la liberté de les mettre en œuvre techniquement au mieux.

En même temps, cette approche présente un certain nombre d'inconvénients, principalement dus au fait que processus réel le développement de logiciels ne s'inscrit jamais complètement dans un schéma aussi rigide. Le processus de création d'un logiciel est, en règle générale, de nature itérative : les résultats de l'étape suivante entraînent souvent des changements dans solutions de conception générées dans les étapes précédentes. Ainsi, il y a un besoin constant de revenir aux étapes précédentes et de clarifier ou de réviser les décisions prises précédemment (Fig. 2). Le schéma décrit peut être attribué à un modèle distinct - le modèle avec contrôle intermédiaire, dans lequel les ajustements inter-étapes offrent une plus grande fiabilité par rapport au modèle en cascade, bien qu'ils augmentent toute la période de développement.

Le principal inconvénient du modèle en cascade est un retard important dans l'obtention des résultats et, par conséquent, un risque élevé de créer un système qui ne répond pas aux besoins changeants des utilisateurs. Cela est dû à deux raisons :

Les utilisateurs ne sont pas en mesure d'énoncer immédiatement toutes leurs exigences et ne peuvent pas prévoir comment elles évolueront au cours du développement ;

Au cours du développement, il peut y avoir des changements dans l'environnement externe qui affecteront les exigences du système.

Riz. 2. Modèle de cycle de vie en cascade dans la pratique.

Dans le cadre de l'approche en cascade, les exigences du produit en cours de développement sont fixées sous la forme d'une tâche technique pour toute la durée de sa création, et les résultats obtenus ne sont convenus avec les utilisateurs qu'aux points prévus après la réalisation de chaque étape (il est possible d'ajuster les résultats en fonction des commentaires des utilisateurs s'ils n'affectent pas les exigences énoncées dans les termes de référence). Ainsi, les utilisateurs ne peuvent faire des commentaires significatifs qu'une fois le travail sur le système entièrement terminé. Les utilisateurs peuvent recevoir un système qui ne répond pas à leurs besoins. En conséquence, vous devez démarrer un nouveau projet, qui peut subir le même sort.

Pour surmonter ces problèmes, un modèle de cycle de vie en spirale a été proposé au milieu des années 1980 (Fig. 3).

Riz. 3. Modèle de cycle de vie en spirale (itératif).

Sa caractéristique principale est la suivante : le logiciel d'application n'est pas créé immédiatement, comme dans le cas d'une approche en cascade, mais en parties en utilisant la méthode de prototypage .

Sous prototype fait référence à un composant logiciel actif qui implémente des fonctions individuelles et des interfaces externes du logiciel en cours de développement. La création de prototypes s'effectue en plusieurs itérations, ou tours de spirale. Chaque itération correspond à la création d'un fragment ou d'une version du logiciel, au cours de laquelle les objectifs et les caractéristiques du projet sont précisés, la qualité des résultats obtenus est évaluée et le travail de la prochaine itération est planifié. À chaque itération, le risque de dépassement du temps et du coût du projet est soigneusement évalué pour déterminer si une autre itération est nécessaire, le degré d'exhaustivité et de précision dans la compréhension des exigences du système et si le projet doit être interrompu.

Le modèle en spirale soulage les utilisateurs et les développeurs de la nécessité de formuler avec précision et complètement les exigences du système au stade initial, car elles sont affinées à chaque itération. Ainsi, les détails du projet sont approfondis et concrétisés de manière cohérente, et en conséquence, une option raisonnable est sélectionnée, qui est mise en œuvre.

Le modèle en spirale est un exemple classique de stratégie de conception évolutive. Le modèle en spirale (par Barry Boehm, 1988) est basé sur meilleures propriétés cycle de vie et agencement classiques, auxquels s'ajoutent nouvel élément- analyse des risques non disponible auparavant.

Le modèle en spirale définit quatre activités représentées par des secteurs individuels de la spirale :

1. Planification - définir les objectifs, les options et les contraintes.

2. Analyse des risques - analyse des options et reconnaissance/sélection des risques.

3. Ingénierie - développement de produits de niveau supérieur.

4. Évaluation - évaluation par le client des résultats de conception actuels.

L'aspect intégrateur du modèle en spirale est évident lorsque l'on considère la dimension radiale de la spirale. A chaque itération le long de la spirale (passant du centre à la périphérie), de plus en plus versions complètes PAR.

Dans le premier tour de la spirale, les objectifs initiaux, les options et les contraintes sont définis, et le risque est reconnu et analysé. Si l'analyse des risques montre l'incertitude des exigences, le prototypage (utilisé dans le quadrant de conception) vient en aide au développeur et au client. La modélisation peut être utilisée pour mieux identifier les exigences problématiques et raffinées. Le client évalue le travail d'ingénierie (conception) et fait des suggestions de modifications. La phase suivante de planification et d'analyse des risques est basée sur les suggestions des clients. Dans chaque cycle de la spirale, les résultats de l'analyse des risques sont formés sous la forme de "continuez, ne continuez pas". Si le risque est trop grand, le projet peut être arrêté.

Dans la plupart des cas, la spirale continue, chaque étape faisant progresser les développeurs vers plus modèle général systèmes.

Avec la méthode itérative, le travail manquant peut être effectué à l'itération suivante. La tâche principale est de montrer aux utilisateurs du système un produit réalisable dès que possible, activant ainsi le processus de clarification et de complément des exigences.

Le modèle en spirale n'exclut pas l'approche en cascade aux étapes finales du projet dans les cas où les exigences du système sont entièrement définies.

Le principal problème du cycle en spirale est de déterminer le moment de la transition vers l'étape suivante. Pour le résoudre, il est nécessaire d'introduire des contraintes temporelles sur chacune des étapes du cycle de vie. La transition se déroule comme prévu, même si tous les travaux prévus ne sont pas terminés. Le plan est établi sur la base de données statistiques obtenues lors de projets antérieurs et de l'expérience personnelle des promoteurs.

Avantages du modèle en spirale :

Le plus réaliste (sous forme d'évolution) reflète le développement logiciel ;

Permet de prendre explicitement en compte le risque à chaque étape de l'évolution du développement ;

Intègre l'étape de l'approche systématique dans la structure de développement itérative ;

Utilise la simulation pour réduire les risques et améliorer le produit logiciel.

Inconvénients du modèle en spirale :

nouveauté (il n'y a pas de statistiques suffisantes sur l'efficacité du modèle);

Exigences accrues pour le client ;

Difficultés de suivi et de gestion du temps de développement.

À ce jour, les méthodologies de développement logiciel itératives suivantes peuvent être distinguées :

Processus unifié rationnel (RUP)

Méthodologies de développement flexibles (SCRUM, KANBAN, DSDM, MSF, ALM, XP)

Méthodologie de développement agile(Ing. Développement logiciel Agile).

La plupart des méthodologies agiles visent à minimiser les risques en réduisant le développement à une série de cycles courts appelés itérations qui durent généralement une à deux semaines. Chaque itération elle-même ressemble à un projet logiciel miniature et comprend toutes les tâches nécessaires pour produire une mini-croissance des fonctionnalités : planification, analyse des exigences, conception, codage, test et documentation. Alors qu'une seule itération n'est généralement pas suffisante pour libérer nouvelle version produit, il est supposé que le projet logiciel Agile est prêt à être publié à la fin de chaque itération. À la fin de chaque itération, l'équipe réévalue les priorités de développement.

Les méthodes agiles mettent l'accent sur la communication en face à face. La plupart des équipes agiles sont situées dans le même bureau. Au minimum, cela inclut également les "clients" (clients qui définissent le produit, tels que les chefs de produit, les analystes commerciaux ou les clients). Le bureau peut également inclure des testeurs, des concepteurs d'interfaces, des rédacteurs techniques et des gestionnaires.

L'une des méthodologies agiles les plus connues et les plus avancées est la méthodologie SCRUM.

SCRUM- une méthodologie conçue pour les petites équipes (jusqu'à 10 personnes). L'ensemble du projet est divisé en itérations (sprints) d'une durée de 30 jours chacune. Une liste de fonctionnalités du système est sélectionnée et doit être implémentée lors du prochain sprint. Les conditions les plus importantes sont l'invariance des fonctions sélectionnées lors de l'exécution d'une itération et le strict respect des dates de sortie de la prochaine version, même s'il n'est pas possible d'implémenter toutes les fonctionnalités prévues à sa sortie. Le responsable du développement tient des réunions quotidiennes de 20 minutes, appelées scrum, dont le résultat est la définition de la fonction système mise en œuvre la veille, les difficultés rencontrées et le plan pour le lendemain. De telles réunions vous permettent de suivre en permanence l'avancement du projet, d'identifier rapidement les problèmes survenus et d'y répondre rapidement.

KANBAN– une méthodologie de développement logiciel agile et orientée tâche.

Règles de base:

Visualisation du développement :

o division du travail en tâches;

o utilisation de repères sur la position de la tâche dans le développement ;

Limitation du travail effectué simultanément à chaque étape de développement ;

Mesure du temps de cycle (temps moyen pour effectuer une tâche) et optimisation des processus.

Avantages du Kanban :

La réduction du nombre de tâches parallèles réduit considérablement le temps d'exécution de chaque tâche individuelle ;

Identification rapide des tâches problématiques ;

Calculez le temps nécessaire pour terminer la tâche moyenne.

MÉTHODE DE DÉVELOPPEMENT DE SYSTÈME DYNAMIQUE(DSDM) est née des travaux d'un consortium de 17 entreprises britanniques. Toute une organisation est impliquée dans l'élaboration de manuels sur cette méthodologie, l'organisation de formations, de programmes d'accréditation, etc. De plus, la valeur de DSDM a une valeur monétaire.

Tout commence par une étude de faisabilité du programme et de sa portée. Dans le premier cas, vous essayez de déterminer si DSDM convient à un projet donné. Il est censé étudier la portée du programme lors d'une courte série de séminaires, où les programmeurs apprendront le domaine d'activité pour lequel ils travailleront. Il aborde également les principales dispositions concernant l'architecture du futur système et le plan de projet.

Le processus est en outre divisé en trois cycles interdépendants : le cycle du modèle fonctionnel est responsable de la création de la documentation analytique et des prototypes, le cycle de conception et de construction est responsable de la mise en état de fonctionnement du système, et enfin, le dernier cycle - le cycle de mise en œuvre - assure le déploiement du système logiciel.

Les principes de base sur lesquels DSDM est construit sont :

Interaction active avec les utilisateurs ;

Publications fréquentes de versions ;

Indépendance des développeurs dans la prise de décision ;

Tests tout au long du cycle de travail.

Comme la plupart des autres méthodologies agiles, DSDM utilise de courtes itérations de deux à six semaines chacune. Un accent particulier est mis sur haute qualité performance et adaptabilité à l'évolution des besoins.

CADRE DE SOLUTIONS MICROSOFT(MSF) est une méthodologie de développement logiciel proposée par Microsoft Corporation. Le MSF s'appuie sur les meilleures pratiques de Microsoft et décrit comment les personnes et les flux de travail sont gérés pendant le processus de développement de la solution.

Concepts et principes de base du modèle de processus MSF :

Une vision unique du projet - toutes les parties intéressées et uniquement les participants au projet doivent clairement comprendre le résultat final, chacun doit comprendre le but du projet ;

Gestion des compromis - trouver des compromis entre les ressources du projet, le calendrier et les opportunités réalisables ;

Flexibilité - préparation aux conditions de conception changeantes ;

Concentrez-vous sur les priorités commerciales - concentrez-vous sur le retour et les avantages que le consommateur de la solution s'attend à recevoir ;

Encourager la communication libre au sein du projet ;

Création versions de base- réparer l'état de tout artefact de projet, y compris le code de programme, le plan de projet, le manuel de l'utilisateur, les paramètres du serveur et la gestion efficace des modifications ultérieures, l'analyse du projet.

MSF fournit des méthodologies éprouvées pour la planification, la conception, le développement et la mise en œuvre de solutions informatiques performantes. Grâce à sa flexibilité, son évolutivité et son absence de directives rigides, MSF est en mesure de répondre aux besoins d'une organisation ou d'une équipe de projet de toute taille. La méthodologie MSF comprend des principes, des modèles et des disciplines pour gérer le personnel, les processus, les éléments technologiques et les problèmes liés à tous ces facteurs qui sont typiques de la plupart des projets.

Gestion du cycle de vie des applications(ALM) - développé et maintenu par Borland.

programmation extrême(XP) - programmation extrême soutenue par une communauté ouverte de développeurs indépendants.

Sujet : Technologie de développement logiciel.

Sujet : Outils de développement de logiciels collaboratifs.

éducatif

Connaissance des outils de développement logiciel collectif.

Développement:

Développer la capacité d'écouter les autres, de tirer des conclusions et de généraliser les connaissances acquises

Éducatif:

Cultiver le sens de l'importance du sujet dans les activités professionnelles, la précision dans le travail

Liens interdisciplinaires :

langue anglaise

SE

Informatique

Fondamentaux de l'algorithmique et de la programmation

Matériel : tableau, craie, instruments d'écriture, projecteur, PC

Type de cours : combiné

Méthode d'enseignement : Explicatif Illustratif

Pendant les cours :

1. Moment organisationnel

Vérification de l'état de préparation du bureau

Annonce du thème

2. Définir l'objectif de la leçon

3.Répétition du matériel couvert

Outils de développement logiciel.

Environnements d'outils pour le développement et la maintenance d'outils logiciels et les principes de leur classification

Les principales classes d'environnements de développement d'outils et de maintenance d'outils logiciels

Environnements de programmation

4. Communication de nouvelles connaissances

Le concept de technologie de développement de logiciels informatiques et ses emplois

Systèmes d'outils technologiques de programmation

Outils de développement logiciel

5. Perception et sensibilisation des élèves au nouveau matériel

6. Généralisation de la compréhension et systématisation des connaissances

7. Résumer la leçon et préparer les devoirs

Apprendre le contenu du sujet

Gagarine L.G. pages 257-259.

Répondez aux questions:

16.4. Le concept de technologie de développement de logiciels informatiques et ses emplois

Il y a quelques difficultés à développer une définition rigoureuse de la technologie CASE (technologie informatique pour le développement de PS). CASE est l'abréviation de Computer-Aided Software Engineering (ingénierie de programmation assistée par ordinateur). Mais sans l'aide (support) d'un ordinateur, les PS n'ont pas été développés depuis longtemps (au moins un compilateur est utilisé). En fait, une signification plus étroite (spéciale) est donnée à ce concept, qui s'estompe progressivement (comme cela arrive toujours lorsqu'un concept n'a pas de définition stricte). Initialement, CASE était compris comme l'ingénierie des premières étapes du développement logiciel (définition des besoins, développement d'une description externe et de l'architecture du logiciel) utilisant le support logiciel (outils logiciels). Désormais, CASE peut également être compris comme l'ingénierie de l'ensemble du cycle de vie du logiciel (y compris sa maintenance), mais uniquement dans le cas où les programmes sont partiellement ou totalement générés selon les documents obtenus aux premiers stades de développement indiqués. Dans ce cas, la technologie CASE est devenue fondamentalement différente de la technologie manuelle (traditionnelle) de développement de logiciels : non seulement le contenu des processus technologiques a changé, mais aussi leur totalité.

Actuellement la technologie informatique Le développement de PS peut être caractérisé par l'utilisation

  • support logiciel pour le développement des exigences graphiques et des spécifications graphiques du PS,
  • génération automatique de programmes dans n'importe quel langage de programmation ou en code machine (partiellement ou totalement),
  • support logiciel pour le prototypage.

On dit aussi que la technologie informatique pour le développement de PS est "sans papier", c'est-à-dire conçu pour la représentation informatique des documents du programme. Cependant, il est assez difficile de distinguer avec certitude la technologie de développement manuel de logiciels de la technologie informatique basée sur ces fonctionnalités. Cela signifie que le plus essentiel de la technologie informatique n'a pas été pointé du doigt.

À notre avis, la principale différence entre la technologie de développement de logiciels manuels et la technologie informatique est la suivante. La technologie manuelle se concentre sur le développement de documents qui sont également compris par différents développeurs PS, tandis que la technologie informatique se concentre sur la fourniture d'une compréhension sémantique (interprétation) des documents avec un support logiciel pour la technologie informatique. La compréhension sémantique des documents donne au support logiciel la capacité de générer automatiquement des programmes. À cet égard, une partie essentielle de la technologie informatique est l'utilisation de langages formels déjà aux premiers stades du développement de logiciels : à la fois pour la spécification de programmes et pour la spécification d'autres documents. En particulier, les langages formels de spécification graphique sont largement utilisés. C'est ce qui permet de modifier rationnellement l'ensemble même des processus technologiques de développement et de maintenance des logiciels.

De la discussion, il peut être déterminé technologie informatique de développement de logiciels en tant que technologie de programmation qui utilise des outils logiciels pour développer des spécifications formalisées pour les programmes et autres documents (y compris les spécifications graphiques) avec génération automatique ultérieure de programmes et de documents (ou au moins une partie importante d'entre eux) selon ces spécifications.

Aujourd'hui, les principaux changements dans le cycle de vie des logiciels pour la technologie informatique deviennent clairs. Si, lors de l'utilisation de la technologie manuelle, les principaux efforts de développement d'un PS ont été réalisés aux étapes de programmation (codage) et de débogage (test), alors lors de l'utilisation de la technologie informatique, c'était aux premiers stades du développement d'un PS (définition des exigences et des spécifications fonctionnelles, développement d'une architecture). Dans le même temps, la nature de la documentation a considérablement changé. Au lieu de toute une chaîne de documents informels axés sur le transfert d'informations du client (utilisateur) vers diverses catégories de développeurs, un prototype PS est formé qui prend en charge l'interface utilisateur sélectionnée et les spécifications fonctionnelles formelles (parfois des spécifications formelles d'architecture PS) suffisantes pour la synthèse automatique (génération) des programmes PS (ou au moins une partie importante d'entre eux). Parallèlement, il est devenu possible de générer automatiquement une partie de la documentation nécessaire aux développeurs et aux utilisateurs. Au lieu de la programmation manuelle (codage) - génération automatique de programmes, ce qui rend inutile le débogage et le test indépendants des programmes : un contrôle sémantique automatique assez approfondi de la documentation est ajouté à la place. Il devient possible de générer automatiquement des tests selon des spécifications formelles pour un complexe ( systémique) Débogage PS. La nature de la maintenance du PS change également de manière significative : toutes les modifications sont apportées par le responsable uniquement aux spécifications (y compris le prototype), les autres modifications du PS sont effectuées automatiquement.

Cela étant dit cycle de vie du logiciel pour la technologie informatique peut être représenté par le schéma suivant (Fig. 16.3).

Riz. 16.3. Le cycle de vie d'un outil logiciel pour la technologie informatique.

prototypage PS est une étape facultative du cycle de vie du PS avec la technologie informatique, qui dans la Fig. 16.3 est représenté par une flèche en pointillé. Cependant, l'utilisation de cette étape dans de nombreux cas et le support informatique correspondant à cette étape est caractéristique de la technologie informatique. Dans certains cas, le prototypage est réalisé après (ou pendant) l'élaboration des spécifications. PS, par exemple, dans le cas du prototypage d'interface utilisateur. Ceci est illustré à la fig. 16.3 flèche de retour en pointillé. Bien que nous permettions un retour aux étapes précédentes à n'importe quelle étape, mais ici cela est montré explicitement, puisque le prototypage est une approche particulière du développement de PS (voir conférence 3). Le prototypage d'interface utilisateur vous permet de remplacer la description indirecte de l'interaction entre l'utilisateur et le PS dans la technologie manuelle (lors de l'élaboration d'une description externe du PS) par le choix direct par l'utilisateur de la méthode et du style de cette interaction, en fixant tous les détails nécessaires. Essentiellement, à ce stade, une description précise de l'interface utilisateur est produite, compréhensible par le support logiciel de la technologie informatique, et avec la participation responsable de l'utilisateur. Tout cela repose sur la présence dans le support logiciel de la technologie informatique d'une coque personnalisable avec une vaste bibliothèque d'ébauches pour divers fragments et détails d'écran. Ce type de prototypage semble être le meilleur moyen de faire le pont entre l'utilisateur et le développeur.

Élaboration des spécifications PS se décompose en plusieurs processus différents. Si nous excluons la phase initiale d'élaboration des spécifications (détermination des exigences), ces processus utilisent des méthodes qui conduisent à la création de documents formalisés, c'est-à-dire que des langages de spécification formalisés sont utilisés. Dans le même temps, les méthodes graphiques de spécifications sont largement utilisées, conduisant à la création de divers schémas et diagrammes qui déterminent la structure de l'environnement d'information et la structure de gestion du PS. Des fragments de données et des descriptions de programme sont attachés à de telles structures, présentées dans des langages de spécification algébriques (par exemple, utilisant une sémantique opérationnelle ou axiomatique), ou des langages de spécification logiques (basés sur une approche logique de la spécification de programme). De telles spécifications permettent de générer des programmes en grande partie ou complètement automatiquement. Une partie essentielle du développement des spécifications est la création d'un dictionnaire d'entités nommées utilisées dans les spécifications.

Contrôle automatisé des spécifications PS utilise le fait qu'une partie importante des spécifications sont présentées dans des langages formels. Cela permet d'effectuer automatiquement différents types de contrôle : contrôle syntaxique et sémantique partiel des spécifications, contrôle de l'exhaustivité et de la cohérence des schémas et diagrammes (en particulier, tous leurs éléments doivent être identifiés et répercutés dans le dictionnaire des entités nommées), contrôle de bout en bout de l'équilibre des niveaux de spécification, et d'autres types de contrôle selon les capacités des langages de spécification.

Génération programmes PS. A ce stade, il génère automatiquement des squelettes de code pour les programmes PS ou des codes complets pour ces programmes selon des spécifications PS formelles.

Documentation automatisée de PS. Suppose la possibilité de générer diverses formes de documents avec un remplissage partiel de ceux-ci en fonction des informations stockées dans le référentiel. Dans le même temps, le nombre de types de documents est réduit par rapport à la technologie traditionnelle.

Test complet et débogage de PS. A ce stade, toutes les spécifications PS sont testées et les erreurs trouvées lors de cette étape sont corrigées. Les tests peuvent être créés à la fois manuellement et automatiquement (si les langages de spécification utilisés le permettent) et sont passés par les programmes PS générés.

Certification PSa le même contenu.

Prise en charge PS est grandement simplifié, puisque les principales modifications ne sont apportées qu'au cahier des charges.

Lieu de travail de la technologie informatique du développement de logiciels est un environnement d'outils qui prend en charge toutes les étapes du cycle de vie de cette technologie. Cet environnement fait un usage important du référentiel. Le référentiel stocke toutes les informations créées lors du développement du PS (en particulier, le dictionnaire des entités nommées et toutes les spécifications). Ainsi, le lieu de travail informatique est intégré, du moins en termes d'interface utilisateur et de données. Les principaux outils d'un tel lieu de travail sont:

  • concepteurs d'interfaces utilisateur ;
  • un outil pour travailler avec un dictionnaire d'entités nommées ;
  • rédacteurs graphiques et testeurs de spécifications ;
  • analyseurs de spécifications;
  • générateur de programme ;
  • documentalistes.

14.5. Systèmes d'outils technologiques de programmation

Système d'outils technologiques de programmation est un ensemble intégré d'outils logiciels et matériels qui prend en charge tous les processus de développement et de maintenance d'un grand PS tout au long de son cycle de vie au sein d'une certaine technologie. Il a déjà été noté ci-dessus (voir clause 14.3) qu'en plus d'être intégré, il a aussi des propriétés de complexité et de focalisation sur le développement collectif. Cela signifie qu'il est basé sur la cohérence des produits des processus technologiques. Ainsi, le système instrumental est capable de fournir, au moins, un contrôle sur l'exhaustivité (complétude) de la documentation créée (y compris un ensemble de programmes) et la cohérence de son changement (versioning). Le support de la phase de maintenance du PS par le système instrumental implique qu'il doit fournir Gestion de la configuration PS. De plus, le système instrumental prend en charge la gestion du travail de l'équipe et pour différents membres de cette équipe fournit différents droits d'accès à divers fragments de la production de processus technologiques et prend en charge le travail gestionnaires pour gérer une équipe de développeurs. Les systèmes d'outils technologiques de programmation sont des systèmes logiciels suffisamment volumineux et coûteux pour justifier d'une manière ou d'une autre leur surcharge d'outils. Par conséquent, l'ensemble d'outils qu'ils contiennent est soigneusement sélectionné en tenant compte des besoins du domaine, des langages utilisés et de la technologie de programmation choisie.

Compte tenu des propriétés discutées des systèmes instrumentaux de la technologie de programmation, trois de leurs principaux composants peuvent être distingués :

  • dépôt,
  • outils,
  • interfaces.

Outils- un ensemble d'outils qui définit les capacités fournies par le système à l'équipe de développement. Généralement cet ensemble est ouvert et structuré. En plus de l'ensemble minimum ( outils intégrés), il contient les moyens de son extension ( instruments importés). De plus, en raison de l'intégration des actions, il se compose d'une partie commune de tous les outils ( noyaux) et des classes d'outils structurelles (parfois hiérarchiquement liées).

Interfacesdivisé en utilisateur et système. Coutume L'interface permet aux développeurs d'accéder à la boîte à outils. Il est mis en œuvre coquille systèmes. Systémique les interfaces assurent l'interaction entre les outils et leurs parties communes. Les interfaces système se distinguent en tant que composants architecturaux en raison de l'ouverture du système - elles doivent être utilisées par de nouveaux ( importé) outils inclus dans le système.

L'architecture la plus générale des systèmes instrumentaux de la technologie de programmation est illustrée à la Fig. 16.4.


Riz. 16.4. Architecture générale des systèmes instrumentaux de la technologie de programmation.

Il existe deux classes de systèmes d'outils de technologie de programmation : les systèmes d'outils de support de projet et les systèmes d'outils dépendant du langage.

Système d'outils d'aide au projet - il s'agit d'un système ouvert qui peut prendre en charge le développement de PS dans différents langages de programmation après son extension appropriée avec des outils logiciels orientés vers le langage sélectionné. L'ensemble d'outils d'un tel système prend en charge le développement de PS, et contient également des outils indépendants du langage de programmation qui prennent en charge le développement de PS (texte et éditeur graphique, générateurs de rapports, etc.). De plus, il contient des outils d'extension du système. Le cœur d'un tel système fournit notamment l'accès au référentiel.

Système d'outils dépendant de la langue - il s'agit d'un système d'aide au développement de logiciels dans un langage de programmation quelconque, qui utilise essentiellement les spécificités de ce langage dans l'organisation de son travail. Cette spécificité peut affecter à la fois les capacités du noyau (y compris la structure du référentiel) et les exigences pour le shell et les outils. Un exemple d'un tel système est l'environnement de support de programmation Ada (APSE).

7.1. Outils de développement logiciel

Logiciel outil (Outils logiciels) - logiciel utilisé dans le cadre du développement, de la correction ou du développement d'autres programmes :

éditeurs, compilateurs, débogueurs, programmes système auxiliaires, packages graphiques, etc.

Cela inclut les langages de programmation, les environnements de développement de programmes intégrés, les systèmes CASE, etc.

7.1.2. Choisir un langage de programmation

Les langages de programmation actuellement existants peuvent être divisés en groupes suivants :

Langages universels de haut niveau ;

Langages de développement de logiciels spécialisés ;

Langues d'utilisation spécialisées ;

Langues niveau faible.

Dans le groupe des langages universels de haut niveau, le leader incontesté est aujourd'hui le langage C++. En effet, il présente de nombreux avantages :

Évolutivité. Dans le langage C++, les programmes sont développés pour une grande variété de plateformes et de systèmes ;

La possibilité de travailler à bas niveau avec de la mémoire, des adresses, des ports, qui, s'ils sont utilisés avec négligence, peuvent facilement devenir un inconvénient ;

C++ possède un puissant préprocesseur hérité du C, mais comme tout autre outil puissant, il doit être utilisé avec précaution ;

Capacité à créer des algorithmes généralisés pour différents types données, leur spécialisation et les calculs au stade de la compilation à l'aide de modèles.

Dans le même temps, le langage C++ présente un certain nombre d'inconvénients importants :

Connecter l'interface d'un module externe via l'insertion par le préprocesseur d'un fichier d'en-tête (#include) ralentit sérieusement la compilation lorsqu'un grand nombre de modules sont inclus ;

Manque d'informations sur le type de données au moment de la compilation ;

Difficulté à apprendre et à compiler;

Certaines conversions de type ne sont pas intuitives. En particulier, l'opération sur les nombres non signés et signés produit un résultat non signé.

Pour C++, il existe un grand nombre de bibliothèques de classes qui prennent en charge la création d'une interface utilisateur, des applications client-serveur, l'utilisation de bases de données, etc.,

donc pour l'instant il n'y a pas d'alternative au C++. Pour les projets secondaires, Visual Basic est parfois utilisé. Le langage Java était considéré comme une alternative au Basic, mais faute de visuel

moyen de développer des formes, il reste encore peu utile.

Le Pascal Objet moderne, comme le Pascal, proposé par N. Wirth au milieu des années 70 du XXe siècle, reste le plus attractif pour enseigner les bases de la programmation en raison de sa

simplicité, structuration et détection par le compilateur d'un grand nombre d'erreurs non seulement syntaxiques, mais aussi sémantiques.

Aujourd'hui, contrairement aux années 1960, les langages de programmation sont rarement créés. Au cours des 15 dernières années, seules deux nouveautés qui se sont généralisées peuvent être notées - Java (Sun Microsystems, 1995), qui est devenu populaire en grande partie grâce à la technologie de son utilisation sur Internet et à l'émergence d'un concept tel que la machine virtuelle Java, et C # (Microsoft, 2000), créé sur la base de C ++.

Le créateur du langage est Andreas Hejlsberg, employé de Microsoft. Il est devenu célèbre dans le monde des programmeurs bien avant d'arriver chez Microsoft. Hejlsberg était parmi les leaders

développeurs de l'un des environnements de développement les plus populaires - Delphi. Chez Microsoft, il a aidé à créer Versions Java- J++, il a donc beaucoup d'expérience dans l'écriture de langages et d'environnements de programmation. Comme l'a lui-même noté Andreas Hejlsberg, C# a été créé en tant que langage de programmation de composants, et c'est l'un des principaux avantages du langage, visant la possibilité de réutiliser les composants créés.

Autres avantages du langage C# :

Il conserve les meilleures fonctionnalités des langages de programmation C/C++ populaires sur lesquels il est basé. À cet égard, la transition des programmeurs de C ++ à C # est facilitée;

Il est plus simple et plus fiable que C++. La simplicité et la fiabilité sont principalement dues au fait que C#, bien qu'autorisé, n'encourage pas des fonctionnalités aussi dangereuses de C++,

comme les pointeurs, l'adressage, le déréférencement, l'arithmétique des adresses ;

Est un langage entièrement orienté objet, où même les types intégrés au langage sont représentés par des classes ;

Implémente les capacités d'héritage et d'universalisation ;

Prend en compte toutes les fonctionnalités du Framework .Net, puisque C# a été créé en parallèle de cet environnement ;

Avec le .Net Framework construit au-dessus du système d'exploitation, les programmeurs C# bénéficient des mêmes avantages de travailler avec une machine virtuelle que

programmeurs Java. L'efficacité du code est même améliorée car le runtime CLR est un compilateur de langage intermédiaire, tandis que

la machine virtuelle Java est l'interpréteur de bytecode ;

Une bibliothèque de framework puissante prend en charge la capacité de construction divers types applications en C#, facilitant la création de services Web, d'autres types de composants,

il suffit simplement de stocker et de récupérer des informations à partir de la base de données et d'autres stockages de données ;

C'est une source de code fiable et efficace.

Outre les langages décrits ci-dessus, Modula, Ada, COBOL, FORTRAN et quelques autres appartiennent également au groupe universel. Chacune des langues ci-dessus a ses propres caractéristiques et, par conséquent, sa propre portée. Actuellement, les langages de programmation universels sont utilisés dans divers domaines de l'activité humaine, tels que :

Calcul scientifique (langages C++, FORTRAN, Java) ;

Programmation système (langages C++, Java);

Traitement de l'information (langages C++, COBOL, Java) ;

Intelligence artificielle (LISP, Prolog) ;

Édition (Postscript, TeX);

Traitement de l'information à distance (Perl, PHP, Java, C++) ;

Description des documents (HTML, XML).

Au fil du temps, certains langages se sont développés, ont acquis de nouvelles fonctionnalités et sont restés demandés, d'autres ont perdu de leur pertinence et présentent aujourd'hui au mieux un intérêt purement théorique (Focal, PL/1, etc.). Ceci est largement dû aux facteurs suivants :

Disponibilité d'un environnement de programmation prenant en charge le développement d'applications dans un langage de programmation spécifique ;

Facilité de maintenance et de test des programmes ;

Le coût du développement à l'aide d'un langage de programmation spécifique ;

Clarté et orthogonalité des constructions langagières ;

Appliquer une approche orientée objet.

Des langages de développement spécialisés sont utilisés pour créer des types de logiciels spécifiques. Ils comprennent:

Langages de base de données ;

Langages pour la création d'applications réseau ;

Langages de construction de système intelligence artificielle etc.

Les langages utilisateur spécialisés font généralement partie des environnements utilisateur professionnels, sont étroitement ciblés et ne sont pas utilisés par les développeurs de logiciels.

Les langages de bas niveau permettent de programmer presque au niveau des instructions machine. En même temps, ils obtiennent le plus optimal à la fois en termes de temps

l'exécution, et en termes de quantité de mémoire requise pour le programme. Leur inconvénient est qu'ils ne supportent pas les principes de la programmation structurée.

De nos jours, les langages de type langage d'assemblage utilisent généralement :

En écrivant comparativement programmes simples, contacter moyens techniques, tels que les chauffeurs ;

Sous forme d'inserts dans des programmes en langages de haut niveau, par exemple, pour accélérer la transformation des données en boucles avec un grand nombre de répétitions.

Dans une plus large mesure, le choix du langage de programmation est déterminé par l'expérience du développeur, les exigences de l'organisation menant le développement, ou simplement une opinion établie.

7.7.3. Choisir un environnement de programmation

Un environnement de développement logiciel intégré est un système outils logiciels utilisé par les programmeurs pour développer des logiciels.

Généralement, un environnement de développement comprend un éditeur de texte, un compilateur et/ou un interpréteur, un éditeur de liens, un débogueur et un système d'aide. Parfois contient également un système de contrôle de version et divers outils pour simplifier la construction d'une interface utilisateur graphique.

De nombreux environnements de développement modernes incluent également un inspecteur d'objets, un navigateur de classes et un diagramme de hiérarchie de classes qui sont utilisés pour le développement de logiciels orientés objet.

En règle générale, l'environnement de développement est destiné à un langage de programmation spécifique, tel que Visual Basic ou Deiphi, mais il existe des environnements de développement pour plusieurs langages, tels qu'Eclipse ou Microsoft Visual Studio.

Des exemples d'environnements de développement sont Turbo Pascal, Borland C++, la chaîne d'outils GNU, DrPython.

Récemment, avec le développement de la programmation orientée objet, les environnements de programmation visuelle mentionnés précédemment se sont généralisés, en

dans lequel les blocs de code de programme les plus courants sont représentés sous forme d'objets graphiques.

Les environnements visuels les plus couramment utilisés sont Delphi, C++ Builder de Borland (Inprise Corporation), Visual C++, Visual Basic de Microsoft, Visual Ada d'IBM, etc.

La technologie .NET Framework, proposée par Microsoft comme plate-forme pour créer à la fois des programmes réguliers et des applications Web, a acquis une grande popularité ces jours-ci. Le principal avantage de .NET est la compatibilité de différents services écrits dans différents langages.

Par exemple, un service écrit en C++ pour .NET peut accéder à une méthode de classe à partir d'une bibliothèque écrite en Delphi ; en C#, vous pouvez écrire une classe qui hérite d'une classe écrite en Visual Basic .NET, et une exception levée par une méthode écrite en C# peut être interceptée et gérée dans Delphi.

Tout comme dans le cas du choix d'un langage de programmation, le choix d'un environnement de programmation est déterminé par la nature du projet, les habitudes et les compétences du développeur, les tendances de l'époque, les exigences du client, et simplement l'opinion publique : « Tout tel développement doit être réalisé dans l'environnement...

1. Outils de développement logiciel. Dans le processus de développement d'outils logiciels, à un degré ou à un autre, un support informatique pour le développement de PS est utilisé. Ceci est réalisé en présentant au moins certains documents de programme du PS (principalement des programmes) sur des supports de données informatiques (par exemple, des disques) et en fournissant au développeur du PS un PS spécial ou des dispositifs spéciaux inclus dans l'ordinateur, créés pour tout traitement de ces documents. En tant que PS spécial, vous pouvez spécifier un compilateur à partir de n'importe quel langage de programmation.

Le compilateur soulage le développeur PS de la nécessité d'écrire des programmes dans le langage de l'ordinateur, qui est pour le développeur. PS serait extrêmement gênant - au lieu de cela, il écrit des programmes dans un langage de programmation qui lui convient, que le compilateur correspondant traduit automatiquement dans le langage informatique. Comme dispositif spécial, qui prend en charge le processus de développement d'un PS, peut servir d'émulateur de n'importe quel langage. L'émulateur permet d'exécuter (interpréter) des programmes dans un langage autre que le langage de l'ordinateur qui supporte le développement du PS, par exemple dans le langage de l'ordinateur auquel ce programme est destiné. Un PS conçu pour prendre en charge le développement d'autres PS sera appelé un outil de développement logiciel pour le PS, et un dispositif informatique spécifiquement conçu pour prendre en charge le développement du PS sera appelé un outil de développement matériel pour le PS.

Les outils de développement de PS peuvent être utilisés tout au long du cycle de vie du PS pour travailler avec différents documents de programme. Ainsi, un éditeur de texte peut être utilisé pour développer presque n'importe quel document de programme. Du point de vue des fonctions que les outils remplissent dans le développement du logiciel, ils peuvent être divisés en quatre groupes : éditeurs, analyseurs, convertisseurs, outils qui soutiennent le processus d'exécution du programme.

Les éditeurs prennent en charge la conception (formation) de certains documents de programme à différentes étapes du cycle de vie. Comme déjà mentionné, pour cela, vous pouvez utiliser une sorte d'éditeur de texte universel. Cependant, des éditeurs spécialisés peuvent fournir un support plus solide : chaque type de document a son propre éditeur. En particulier, dans les premiers stades de développement, les documents peuvent faire un usage intensif de aides graphiques descriptions (schémas, schémas, etc.). Dans de tels cas, les éditeurs graphiques peuvent être très utiles. Au stade de la programmation (codage), au lieu d'un éditeur de texte, il peut être plus pratique d'utiliser un éditeur à contrôle syntaxique orienté vers le langage de programmation utilisé. Les analyseurs effectuent soit un traitement statique des documents, effectuant divers types de contrôle, en identifiant certaines propriétés et accumulant des données statistiques (par exemple, vérifier la conformité des documents aux normes spécifiées), soit une analyse dynamique des programmes (par exemple, afin d'identifier la répartition du temps de travail du programme en fonction de modules logiciels). Les convertisseurs vous permettent d'apporter automatiquement des documents à une autre forme de présentation (par exemple, des formateurs) ou de traduire un document d'un type en un document d'un autre type (par exemple, des convertisseurs ou des compilateurs), de synthétiser un document à partir de parties distinctes, etc.

Les outils qui prennent en charge le processus d'exécution du programme permettent d'exécuter sur un ordinateur des descriptions de processus ou de leurs parties individuelles, présentées sous une forme autre que le code machine, ou le code machine avec caractéristiques supplémentaires son interprétation. Un exemple d'un tel outil est l'émulateur de code d'un autre ordinateur. Divers débogueurs devraient également être inclus dans ce groupe d'outils. Essentiellement, chaque système de programmation contient un sous-système logiciel d'exécution qui exécute les fragments de programme les plus typiques pour le langage de programmation et fournit une réponse standard aux exceptions qui surviennent lors de l'exécution des programmes (nous appellerons un tel support exécutif de sous-système) - peut également être considéré comme un outil de ce groupe.

2. Environnements d'outils pour le développement et la maintenance de logiciels. À l'heure actuelle, ce ne sont pas des outils distincts (par exemple, un compilateur) qui sont associés à chaque système de programmation, mais un ensemble logiquement lié d'outils logiciels et matériels qui prennent en charge le développement et la maintenance de systèmes logiciels sur langue donnée programmation ou axée sur un domaine particulier. Un tel ensemble sera appelé l'environnement instrumental pour le développement et la maintenance du PS. De tels environnements d'outils se caractérisent, premièrement, par l'utilisation d'outils logiciels et matériels, et, deuxièmement, par une certaine orientation soit vers un langage de programmation spécifique, soit vers un domaine spécifique. L'environnement de l'outil n'a pas à fonctionner sur l'ordinateur sur lequel le PS développé à l'aide de celui-ci devra être utilisé. Souvent, une telle combinaison est assez pratique (si seule la puissance de l'ordinateur utilisé le permet): il n'est pas nécessaire de traiter avec des ordinateurs de types différents, les composants de l'environnement de l'outil lui-même peuvent être inclus dans le PS développé.

Il existe trois classes principales d'environnements d'outils pour le développement et la maintenance de l'environnement de programmation PS, les postes de travail informatiques, les systèmes d'outils de la technologie de programmation. L'environnement de programmation est principalement destiné à prendre en charge les processus de programmation (codage), de test et de débogage du PS. Le lieu de travail de la technologie informatique est axé sur le soutien aux premières étapes du développement de PS (spécifications) et la génération automatique de programmes selon les spécifications. Le système d'outils technologiques de programmation est conçu pour prendre en charge tous les processus de développement et de maintenance tout au long du cycle de vie du logiciel et est axé sur le développement collectif de grands systèmes logiciels avec un long cycle de vie.

3. Les environnements d'outils de programmation contiennent tout d'abord un éditeur de texte permettant de concevoir des programmes dans un langage de programmation donné, des outils permettant de compiler ou d'interpréter des programmes dans ce langage, ainsi que de tester et de déboguer les programmes résultants. De plus, il peut y avoir d'autres outils, par exemple, pour l'analyse de programme statique ou dynamique. Ces outils interagissent les uns avec les autres via des fichiers ordinaires utilisant des fonctionnalités standard. système de fichiers. Il existe les classes suivantes d'environnements d'outils de programmation : environnements usage général, environnements orientés vers le langage.

Les environnements de programmation à usage général contiennent un ensemble d'outils logiciels qui prennent en charge le développement de programmes dans différents langages de programmation (par exemple, un éditeur de texte, un éditeur de liens ou un interpréteur de langage informatique cible) et constituent généralement une extension des capacités du système d'exploitation utilisé. Pour programmer dans un tel environnement dans n'importe quel langage de programmation, vous aurez besoin d'outils supplémentaires orientés vers ce langage (par exemple, un compilateur). . . Classification des environnements de programmation

4. Le concept de technologie informatique pour le développement de logiciels et ses emplois. Il y a quelques difficultés à développer une définition rigoureuse de la technologie CASE (technologie informatique pour le développement de PS). CASE est une abréviation de l'anglais Computer-Aided Software Engineering (Computer. Assisted Programming Engineering). Mais sans l'aide (support) d'un ordinateur, les PS n'ont pas été développés depuis longtemps (au moins un compilateur est utilisé). En fait, une signification plus étroite (spéciale) est donnée à ce concept, qui s'estompe progressivement (comme cela arrive toujours lorsqu'un concept n'a pas de définition stricte). Initialement, CASE était compris comme l'ingénierie des premières étapes du développement logiciel (définition des besoins, développement d'une description externe et de l'architecture du logiciel) utilisant le support logiciel (outils logiciels). Désormais, CASE peut également être compris comme l'ingénierie de l'ensemble du cycle de vie du logiciel (y compris sa maintenance), mais uniquement dans le cas où les programmes sont partiellement ou totalement générés selon les documents obtenus aux premiers stades de développement indiqués. Dans ce cas, la technologie CASE est devenue fondamentalement différente de la technologie manuelle (traditionnelle) de développement de logiciels : non seulement le contenu des processus technologiques a changé, mais aussi leur totalité.

À l'heure actuelle, la technologie informatique pour le développement de PS peut être caractérisée par - L'utilisation d'un support logiciel pour développer les exigences graphiques et les spécifications graphiques du PS, - La génération automatique de programmes dans n'importe quel langage de programmation ou en code machine (partiellement ou complètement), - Le support logiciel pour le prototypage.

Un système d'outils technologiques de programmation est un ensemble intégré d'outils logiciels et matériels qui prend en charge tous les processus de développement et de maintenance de grands systèmes logiciels tout au long du cycle de vie d'une technologie donnée. De cette définition découlent les principales caractéristiques suivantes de cette classe de support informatique : · complexité, · focalisation sur le développement collectif, · certitude technologique, · intégration.

Compte tenu des propriétés discutées des systèmes instrumentaux de la technologie de programmation, trois de leurs principaux composants peuvent être distingués : · base de données de développement (référentiel), · outils, · interfaces.

Référentiel - un stockage informatique central des informations relatives au projet (développement) du PS tout au long du cycle de vie. Boîte à outils - un ensemble d'outils qui définit les capacités fournies par le système à l'équipe de développement. Habituellement, cet ensemble est ouvert: en plus de l'ensemble minimum (outils intégrés), il contient les moyens de son extension (outils importés) et structuré, composé d'une partie commune de tous les outils (le noyau) et de classes d'outils structurelles (parfois liées hiérarchiquement). Les interfaces sont divisées en 1) utilisateur 2) système. L'interface utilisateur permet aux développeurs d'accéder à des outils (langage de commande, etc.) mis en œuvre par le shell système. Les interfaces système assurent l'interaction entre les outils et leurs parties communes. Les interfaces système se distinguent en tant que composants architecturaux en raison de l'ouverture du système - elles doivent être utilisées par de nouveaux outils (importés) inclus dans le système.

Il existe deux classes de systèmes d'outils technologiques de programmation : 1) les systèmes d'outils de support de projet et 2) les systèmes d'outils dépendant du langage. Le système d'outils de support de projet est un système ouvert capable de prendre en charge le développement de produits logiciels dans différents langages de programmation après son extension appropriée avec des outils logiciels orientés vers le langage sélectionné. Un tel système contient un noyau (fournissant notamment l'accès au référentiel), un ensemble d'outils qui supportent la gestion (gestion) du développement du PS, des outils indépendants du langage de programmation qui supportent le développement du PS (éditeurs de texte et graphiques, générateurs de rapports, etc.), ainsi que des outils d'extension du système. Un système instrumental dépendant du langage est un système de support au développement logiciel dans n'importe quel langage de programmation qui utilise essentiellement les spécificités de ce langage pour organiser son travail. Cette spécificité peut affecter à la fois les capacités du noyau (y compris la structure du référentiel) et les exigences pour le shell et les outils.

Langage de modélisation unifié UML le plus méthodes existantes L'analyse et la conception orientées objet (OOAD) comprennent à la fois un langage de modélisation et une description du processus de modélisation. Un langage de modélisation est une notation (principalement graphique) utilisée par une méthode pour décrire des projets. La notation est une collection d'objets graphiques qui sont utilisés dans les modèles ; c'est la syntaxe d'un langage de modélisation. Par exemple, la notation du diagramme de classes définit la manière dont les éléments et les concepts tels que la classe, l'association et la multiplicité sont représentés. Un processus est une description des étapes à suivre pour développer un projet. Le langage de modélisation unifié (UML) est le successeur de la génération de méthodes OOAP qui a émergé à la fin des années 80 et au début des années 90.

L'UML est un langage de modélisation visuelle à usage général conçu pour la spécification, la visualisation, la conception et la documentation de composants logiciels, de processus métier et d'autres systèmes. Le langage UML est à la fois un outil de modélisation simple et puissant qui peut être utilisé efficacement pour construire des modèles conceptuels, logiques et graphiques de systèmes complexes de toutes sortes. but désigné. L'utilisation constructive de l'UML est basée sur la compréhension principes généraux modélisation des systèmes complexes et des caractéristiques du processus de conception orientée objet (POO) en particulier. Le choix des moyens expressifs pour construire des modèles de systèmes complexes prédétermine les tâches qui peuvent être résolues à l'aide de ces modèles. Dans le même temps, l'un des principes de base pour la construction de modèles de systèmes complexes est le principe d'abstraction, qui prescrit de n'inclure dans le modèle que les aspects du système conçu qui sont directement liés à la performance des fonctions du système ou à sa destination. Dans ce cas, tous les détails mineurs sont omis afin de ne pas trop compliquer le processus d'analyse et d'étude du modèle résultant.

UML contient un ensemble standard de diagrammes et de notations de différents types. Un diagramme en UML est représentation graphique un ensemble d'éléments, le plus souvent représenté sous la forme d'un graphe connexe avec des sommets (entités) et des arêtes (relations). Les diagrammes sont dessinés pour visualiser un système sous différentes perspectives. Un diagramme est, en un sens, l'une des projections d'un système. En règle générale, sauf dans les cas les plus triviaux, les schémas donnent une vue condensée des éléments qui composent le système. Le même élément peut être présent dans tous les diagrammes, ou seulement dans quelques-uns (les plus courants), ou n'être présent dans aucun (très rare). Théoriquement, les diagrammes peuvent contenir n'importe quelle combinaison d'entités et de relations. En pratique, cependant, un nombre relativement restreint de combinaisons typiques sont utilisées, correspondant aux cinq types les plus courants qui composent l'architecture d'un système logiciel.

UML distingue les types de diagrammes suivants : - diagrammes de cas d'utilisation - pour modéliser les processus métier de l'organisation (exigences système) ; - diagrammes de classes (diagrammes de classes) - pour modéliser la structure statique des classes système et les relations entre elles. Ces diagrammes montrent des classes, des interfaces, des objets et des collaborations, ainsi que leurs relations. Lors de la modélisation de systèmes orientés objet, ce type de diagramme est le plus souvent utilisé. Les diagrammes de classes correspondent à la vue statique du système du point de vue de la conception ; – diagrammes de comportement du système (diagrammes de comportement); diagrammes d'interaction - pour modéliser le processus de messagerie entre les objets. - diagrammes d'états-transitions - pour modéliser le comportement des objets système lors de la transition d'un état à un autre.

- diagrammes d'activité - pour modéliser le comportement du système dans diverses possibilités activités d'utilisation ou de modélisation. - diagrammes d'implémentation (diagrammes d'implémentation): diagrammes de composants (diagrammes de composants) - pour modéliser la hiérarchie des composants (sous-systèmes) du système; diagrammes de déploiement (diagrammes de déploiement) - pour modéliser l'architecture physique du système.

Introduction

Dans le processus de développement de logiciels, un grand nombre des logiciels les plus polyvalents (SW) sont utilisés. Ce cours magistral examine quand et ce qui est utilisé tout au long de la phase de développement de l'application.

Pour donner une image plus complète du rôle de chaque utilitaire ou tranche de développement dans le processus de développement logiciel, tous les outils abordés dans ce cours magistral seront considérés à l'aide de l'exemple du développement d'applications utilisant l'un de leurs langages de haut niveau. Pour plus de simplicité, tous les outils utilisés peuvent être divisés en 4 groupes. Examinons de plus près chacun des groupes.

Requis

Les outils nécessaires sont ceux sans lesquels, en principe, il est impossible d'obtenir du code exécutable ; Ce groupe comprend :

§ éditeurs de texte ;

§ compilateurs et assembleurs ;

§ linkers ou éditeurs de liens (linkers) ;

Souvent utilisé

Ce sont des moyens dont l'utilisation, contrairement aux nécessaires, peut être évitée. Mais sans eux, le processus de développement est très difficile et rallongé ; Les outils couramment utilisés incluent :

§ utilitaires pour l'assemblage automatique du projet ;

§ débogueurs ;

§ programmes de création d'installateurs ;

§ éditeurs de ressources ;

§ profileurs ;

§ Programmes de support de version ;

§ programmes de création de fichiers d'aide (documentation).

Spécialisé

Ces outils sont utilisés dans des cas exceptionnels, ils résolvent des tâches assez spécifiques :

§ programmes de suivi des dépendances ;

§ désassembleurs ;

§ décompilateurs ;

§ éditeurs hexadécimaux ;

§ programmes de suivi de l'activité du système et des changements survenus dans le système ;

§ Programmes et conteneurs de vérification (créez un environnement virtuel pour des classes individuelles de programmes dans lequel vous pouvez explorer le comportement du programme) ;

Environnements de développement intégrés

Les IDE contiennent la plupart des programmes ci-dessus et facilitent la création d'applications. En gros, un environnement de développement est un programme qui regroupe plusieurs outils des premier et deuxième (et parfois troisième) groupes.

À l'avenir, nous nous familiariserons plus en détail avec les principaux représentants de chaque groupe et examinerons comment tout cela fonctionne dans un environnement de développement intégré.

CLASSEMENT DES OUTILS

THÈME 1 LE CONCEPT D'OUTILS.

CLASSEMENT DES OUTILS.

Système d'outils technologiques de programmation est un ensemble intégré d'outils logiciels et matériels qui prend en charge tous les processus de développement et de maintenance d'un grand PS tout au long de son cycle de vie au sein d'une certaine technologie.

Les systèmes d'outils de la technologie de programmation peuvent être divisés en trois composants principaux :

le référentiel

la boîte à outils,

interfaces.

Outils- un ensemble d'outils qui définit les capacités fournies par le système à l'équipe de développement. Généralement cet ensemble est ouvert et structuré. En plus de l'ensemble minimum ( outils intégrés), il contient les moyens de son extension ( instruments importés). De plus, en raison de l'intégration des actions, il se compose d'une partie commune de tous les outils ( noyaux) et des classes d'outils structurelles (parfois hiérarchiquement liées).

Interfaces divisé en utilisateur et système. Coutume L'interface permet aux développeurs d'accéder à la boîte à outils. Il est mis en œuvre coquille systèmes. Systémique les interfaces assurent l'interaction entre les outils et leurs parties communes. Les interfaces système se distinguent en tant que composants architecturaux en raison de l'ouverture du système - elles doivent être utilisées par de nouveaux ( importé) outils inclus dans le système.

L'architecture la plus générale des systèmes instrumentaux de la technologie de programmation est illustrée à la Fig.

Riz. Architecture générale des systèmes instrumentaux de la technologie de programmation.

Il existe deux classes de systèmes d'outils de technologie de programmation : les systèmes d'outils de support de projet et les systèmes d'outils dépendant du langage.

Système d'outils d'aide au projet- il s'agit d'un système ouvert qui peut prendre en charge le développement de PS dans différents langages de programmation après son extension appropriée avec des outils logiciels orientés vers le langage sélectionné. L'ensemble d'outils d'un tel système prend en charge le développement de PS, et contient également des outils indépendants du langage de programmation qui prennent en charge le développement de PS (éditeurs de texte et graphiques, générateurs de rapports, etc.). De plus, il contient des outils d'extension du système. Le cœur d'un tel système fournit notamment l'accès au référentiel.

Système d'outils dépendant de la langue- il s'agit d'un système d'aide au développement de logiciels dans un langage de programmation quelconque, qui utilise essentiellement les spécificités de ce langage dans l'organisation de son travail. Cette spécificité peut affecter à la fois les capacités du noyau (y compris la structure du référentiel) et les exigences pour le shell et les outils.