Heim / Arbeiten Sie im Internet / Entwicklertools sind ein Muss und einfach nur nützlich. Ein kurzer historischer Überblick über die Entwicklung böser Softwareentwicklungstools

Entwicklertools sind ein Muss und einfach nur nützlich. Ein kurzer historischer Überblick über die Entwicklung böser Softwareentwicklungstools

Die Softwareentwicklung erfordert wie jedes andere Tätigkeitsfeld bestimmte Werkzeuge. Allerdings, wenn die Liste der Software, die die durchschnittliche Person normalerweise benötigt Unternehmensbenutzer(eine Option für den durchschnittlichen Heimanwender) mehr oder weniger offensichtlich ist, dann ist bei Entwicklern alles nicht so einfach: Die Liste der Tools, die zum Erstellen von Anwendungen verwendet werden, beschränkt sich keineswegs auf Entwicklungstools.

Einführung

Wenn von Softwareentwicklung die Rede ist, meinen viele Anwender in erster Linie das Schreiben von Anwendungscode oder bestenfalls auch die Implementierung der erstellten Produkte. Diese Ansicht basiert oft auf Erfahrungen aus der Vergangenheit. Viele IT-Experten und -Anwender, insbesondere ältere, kommen aus dem akademischen Bereich. In den 80er Jahren ergänzte die Programmierung oft die wissenschaftliche Forschung und im Wesentlichen stellte sich der Wissenschaftler die Aufgabe, führte sie aus und war der einzige (oder einer der wenigen) Benutzer der erstellten Anwendung. Die Folge davon war, dass es Anfang der 1990er Jahre in Russland etliche Entwickler gab (oft dieselben ehemaligen Wissenschaftler, die programmieren konnten), die bereits verfremdete Produkte erstellten, aber gleichzeitig mit Kunden verhandelten, Anwendungen konzipierten, Code schrieben , erstellte die Projektdokumentation, testete und implementierte das Produkt und begleitete oft gleichzeitig die Benutzerarbeitsplätze. Natürlich beschränkte sich der Werkzeugsatz eines solchen Generalisten-Entwicklers normalerweise auf ein Entwicklungswerkzeug, einen Texteditor zur Erstellung von Verträgen und Dokumentationen und, viel seltener, auf Datendesign- und Verteilungsgenerierungswerkzeuge.

Obwohl es in Russland mittlerweile viele solcher universellen Entwickler gibt, zieht es die überwiegende Mehrheit der Unternehmen, auch relativ kleine, zunehmend vor, die Dienste enger Spezialisten in Anspruch zu nehmen. Grund dafür sind deutlich gestiegene Anforderungen an Funktionalität, Design, Qualität und Bedienbarkeit von Software (try to suggest moderner Benutzer Texteditor mit Schnittstelle Befehlszeile Anstatt von Microsoft Word!). Die erfolgreiche Umsetzung moderner Projekte erfordert ein sehr breites Spektrum an Kenntnissen und Fähigkeiten, die in der Regel von unterschiedlichen Spezialisten, die verschiedene Operationen im Projekt durchführen und entsprechende Werkzeuge benötigen, vorhanden sind.

Bühnen, Rollen, Werkzeuge…

Bei der modernen Softwareentwicklungsmethodik wird ein Projekt (oder ein Teil davon, z. B. die nächste Iteration eines Projekts) in Phasen unterteilt, in denen Spezialisten, die bestimmte Rollen im Projekt spielen, verschiedene Aktionen ausführen und die Komponenten des Projekts erstellen. Grundsätzlich lassen sich bei jedem Ansatz zur Organisation des Entwicklungsprozesses die folgenden Phasen in der einen oder anderen Form unterscheiden: Geschäftsanalyse und Anforderungsdefinition, Design, Entwicklung, Test und Qualitätsbewertung, Dokumentation, Implementierung und Wartung - und dementsprechend solche Rollen wie Projektmanager, Geschäftsanalytiker, Systemanalytiker, Anwendungsarchitekt, Anwendungscodeschreiber, QA/QA-Spezialist, technischer Redakteur, Implementierungsspezialist, Wartungsspezialist, Benutzerschulungsspezialist, Marketingspezialist für erstellte Produkte. Die Liste der Rollen kann je nach Umfang und Komplexität des Projekts erweitert werden (in einigen Projekten werden Tester beispielsweise in Testmanager, Testanalysten, Skriptautoren für automatisierte Tests, Benutzeroberflächentester, Lasttester und alle anderen unterteilt die ihre eigenen Tools benötigen) und umgekehrt - in einem kleinen Projekt kann ein Bearbeiter mehrere Rollen übernehmen (z. B. die Rollen eines Testers und eines Technischen Redakteurs kombinieren).

Im Folgenden werden wir uns ansehen, welche Tools ein Entwicklungsteam in verschiedenen Phasen der Anwendungsentwicklung benötigen kann.

Definition von Anforderungen

Die Ermittlung der Anforderungen ist die Aufgabe von Business Analysten, die eine Umfrage vor dem Projekt durchführen, indem sie mit dem Kunden und potenziellen Benutzern kommunizieren und deren Probleme und Bedürfnisse herausfinden. Das Ergebnis der Umfrage ist normalerweise ein Dokument, das in unserem Land Referenzbedingungen genannt wird und Informationen über den Zweck des Produkts, eine Reihe von Anforderungen dafür und eine Beschreibung der Grenzen des Projekts enthält.

Welche Tools brauchen Business Analysten? Der Bedarf an Werkzeugen wird durch den Umfang des Projekts, die Anforderungen des Kunden an die Ausführung der Dokumentation und die in einem bestimmten Entwicklungsunternehmen angenommenen Standards bestimmt. Der Business Analyst kann das Textverarbeitungssystem(z. B. Microsoft Word), die die Anforderungen in Textform darlegt. In letzter Zeit ist es jedoch üblich, die Beschreibung von Anforderungen mit UML- und IDEF0-Diagrammen zu veranschaulichen, die Szenarien für die Benutzerinteraktion mit einem Produkt beschreiben, die Reihenfolge, in der Nachrichten von einem Objekt zum anderen weitergegeben werden, die Interaktion von Objekten untereinander, Workflows, und Ändern von Objektzuständen. Um solche Diagramme zu erstellen, können Sie Microsoft Visio, Rational Rose, Rational XDE, Borland Together verwenden, um Diagramme im IDEF0-Standard zu erstellen, CA AllFusion Process Modeler (früher BPwin genannt) wird am aktivsten verwendet.

Welches Tool für ein bestimmtes Projekt geeignet ist, hängt maßgeblich von den Entwicklungsprozessen ab. Wenn ein Business Analyst nur eine Projektdokumentation illustrieren muss, dann ist die Wahl eines Tools nicht kritisch – solange man damit das eine oder andere Diagramm zeichnen kann. Wenn der Business-Analyst nicht nur eine Illustration anfertigen, sondern ein Modell für die spätere Verwendung durch Systemanalysten, Entwickler und Tester in späteren Phasen des Projekts erstellen muss, wird die Wahl des Tools durch seine Fähigkeit bestimmt, sich mit den am besten geeigneten Entwicklungstools zu integrieren wahrscheinlich als Codeimplementierungstool verwendet werden. Unter den technologisch fortschrittlichsten modernen Paaren "Entwicklungstool - Modellierungstool" ist es erwähnenswert, wie Visual Studio .NET - Rational XDE, Visual Studio .NET - Borland Together, Borland JBuilder - Borland Together.

Neben Texteditoren und Modellierungswerkzeugen können Business-Analysten Anforderungsmanagement-Tools verwenden, mit denen Sie eine strukturierte und systematisierte Liste von Produktanforderungen in einer Datenbank speichern und in späteren Phasen darauf zurückgreifen können, um Anforderungen mit den Produktkomponenten zu verknüpfen, die sie implementieren und Tests, die Überprüfung der Produktkonformität mit Anforderungen sowie die korrekte Verfolgung von Änderungen der Anforderungen, die in fast jedem Projekt auftreten, unabhängig davon, wie sorgfältig die Studie durchgeführt wird, und die Auswirkungen dieser Änderungen auf die Ergebnisse der nachfolgenden Arbeit. RequisitePro (IBM/Rational), DOORS (Telelogic) und CaliberRM (Borland) gehören heute zu den bekanntesten Anforderungsmanagement-Tools. Mit der richtigen Organisation des Entwicklungsprozesses und den erforderlichen Vorlagen können die Leistungsbeschreibungen tatsächlich mit dem Anforderungsmanagement-Tool erstellt werden und sogar den Anforderungen der russischen staatlichen Standards entsprechen.

Typische Schnittstelle für Anforderungsmanagement-Tools (Borland Calibre RM)

Daher werden in der Phase der Anforderungsdefinition Tools zur Dokumenterstellung und in vielen Fällen Tools für das Anforderungsmanagement, Geschäftsprozessmodellierung und UML-Modellierung benötigt.

Entwurf

An die Phase der Anforderungsdefinition bis hin zur Verabschiedung des Leistungsverzeichnisses schließt sich die Designphase an. Es wird in der Regel von Anwendungsarchitekten durchgeführt, die Entscheidungen über die Architektur und Komponenten der zu erstellenden Lösung sowie über Technologien für deren Implementierung treffen, und von Systemanalysten, die Daten- und Anwendungsklassen entwerfen und manchmal Prototypen erstellen Benutzeroberflächen. Das Ergebnis dieser Phase ist normalerweise ein Dokument, das oft als technisches Projekt bezeichnet wird und Klassendiagramme, Datenmodelle und Prototypen der Benutzeroberfläche enthält.

Typischerweise werden in dieser Phase Klassendiagramme der zu erstellenden Anwendungen und Bereitstellungsdiagramme der zu erstellenden Lösung sowie Diagramme, die das logische Datenmodell und ihre physische Struktur für das ausgewählte DBMS beschreiben, zu dem von Geschäftsanalysten erstellten Modell hinzugefügt diese Phase.

Welche Tools werden in dieser Phase verwendet? Die oben genannten UML-Modellierungswerkzeuge werden verwendet, um Klassendiagramme und Bereitstellungsdiagramme zu erstellen. Data Engineering verwendet typischerweise Tools wie CA AllFusion Data Modeler (früher ERwin), Sybase Power Designer, Oracle Designer und ähnliche Tools von Embarcadero und Popkin Software. Für von Microsoft entwickelte DBMS können Sie Microsoft Visio recht erfolgreich verwenden. Mit den aufgeführten Tools können Sie zumindest ein Skript zum Generieren erstellen Datenbank, und die Unterschiede zwischen ihnen liegen darin, wie sie die Generierung von serverseitigem Code steuern, der mit der Erstellung von Triggern und gespeicherten Prozeduren verbunden ist.

Beachten Sie, dass, wenn UML-Modellierungswerkzeuge noch nicht überall verwendet werden, die Verwendung von Datendesignwerkzeugen inzwischen selbst für kleine Unternehmen typisch ist. Diese Kategorie von Tools kann als obligatorisch eingestuft werden.

Das Erstellen von Prototypen der Benutzeroberfläche, falls vorhanden, in diesem Stadium, kann die Verwendung entweder eines Werkzeugs zum Zeichnen von Bildern der Formulare der zukünftigen Anwendung (z. B. Microsoft Visio oder Grafikeditoren) oder direkter Anwendungsentwicklungswerkzeuge erfordern.

Daher werden in der Designphase Modellierungs- und Datendesign- und UML-Modellierungstools benötigt, und in einigen Fällen Tools zum Erstellen von Formularbildern.

Produktentwicklung

In der Entwicklungsphase wird der Anwendungscode gemäß dem technischen Projekt erstellt, einschließlich des Servercodes, der die Funktionalität implementiert, die nicht im Datenmodell enthalten ist. In dieser Phase ist das Hauptwerkzeug, das verwendet werden muss, das Anwendungsentwicklungstool. Die Wahl des Entwicklungswerkzeugs wird in erster Linie durch die Plattform (Windows, .NET, Java/J2EE, Linux/UNIX) und Architektur (Anwendungen mit GUI, Konsolenanwendungen und -dienste, Webanwendungen) und ist derzeit sehr vielfältig. Java / J2EE-Anwendungsentwicklungstools werden von IBM, Oracle, Borland, Windows-Anwendungsentwicklungstools - Microsoft, Borland, Sybase, .NET-Anwendungsentwicklungstools - Microsoft und Borland, Linux-Anwendungsentwicklungstools - Borland und einigen anderen Unternehmen hergestellt.

Zusätzlich zu den Entwicklungstools erfordert diese Phase manchmal verschiedene zusätzliche Komponentenbibliotheken, die für die Verwendung auf einer bestimmten Plattform oder zusammen mit bestimmten Entwicklungstools entwickelt wurden. Solche Komponenten werden von einer großen Anzahl unabhängiger Entwickler sowie von vielen Anbietern kommerzieller Produkte geliefert, auf deren Basis Lösungen von anderen Entwicklern erstellt werden sollen (Beispiele für solche Produkte sind viele Geoinformationssysteme, CAD-Anwendungen und einige Serverprodukte).

Wenn Sie in dieser Phase Lösungen erstellen, die auf einem beliebigen Serverprodukt (DBMS, J2EE-Server, Messaging-Server usw.) basieren, sollten Sie natürlich dieses Produkt haben. In vielen Fällen, insbesondere für Lösungsentwickler, geben Hersteller solcher Produkte Versionen frei, die für die Anwendungsentwicklung und das Debugging bestimmt sind, aber nicht für die Produktion.

Auch in der Anwendungsentwicklung kommen Modellierungswerkzeuge zum Einsatz, insbesondere wenn sie nicht nur Code in verschiedenen Programmiersprachen generieren können, sondern auch das Reverse Engineering unterstützen, indem sie auf Basis einer fertigen Anwendung ein Klassendiagramm erstellen oder Code und Modell synchron bearbeiten können . Die Funktion der synchronen Änderung von Code und Modell vereinfacht viele der Prozesse, die die eigentliche Entwicklung begleiten, erheblich, wenn es also eine Auswahl an Werkzeugen gibt, dann sollte man auf deren Unterstützung achten (z.B. synchrone Änderung von Code und Modell wird unterstützt durch einige Editionen des UML-Modellierungstools Borland Together).

In der Phase der Anwendungserstellung werden häufig Codeoptimierungs- und Debugging-Tools verwendet. Solche Tools können Teil des Entwicklungskits sein oder separat geliefert werden.

Prüfung und Qualitätsbewertung

Beim Testen eines Produkts wird dessen Übereinstimmung mit den Anforderungen überprüft und abhängig von diesen Anforderungen die Definition von Testmethoden, die Erstellung von Tests und die Auswahl geeigneter Werkzeuge durchgeführt.

In modernen Projekten werden die Benutzeroberfläche, die Anwendungsleistung, die Datensicherheit und die Kompatibilität mit verschiedenen Betriebssystemen und Anwendungen getestet. Hierfür wurden geeignete Tools entwickelt, wie z. B. Dienstprogramme zum Testen von Datenbanken, Tools zum Testen von automatisierten Benutzeroberflächen, Tools zum Testen von Belastungen, Tools zum Testen von Ausführungsfehlern und Tools zum Testen von Anwendungssicherheit. In der Regel enthalten solche Tools Scripting-Tools, nach denen automatisierte Tests durchgeführt werden, d. h. die mehrfache Ausführung einer Reihe von Aktionen, während Fehlerstatistiken, Operationsausführungszeiten und andere Informationen zur Bewertung der Produktqualität gesammelt werden.

Die wichtigsten Hersteller von Testwerkzeugen sind derzeit Compuware, Segue, Mercury Interactive, IBM/Rational, Borland. Jeder von ihnen produziert mehrere automatisierte Testwerkzeuge, einschließlich Belastungstests, Benutzeroberflächentests und Ausführungsfehlertests.

Zusätzlich zu den Testwerkzeugen werden zur Bewertung der Qualität eines Produkts häufig Analysatoren des Anwendungsquellcodes verwendet, um die Korrektheit des Klassenhierarchiedesigns, des Codeschreibstils und anderer Merkmale der Produktimplementierung zu bestimmen. Sie können in Form gemacht werden individuelle Anwendungen oder in Simulationstools (insbesondere in einigen Editionen von Borland Together) oder Anwendungsentwicklungstools enthalten sein.

Wenn eine Anwendung auf verschiedenen Betriebssystemen und deren Sprachversionen ausgeführt werden soll (z. B. verschiedene 32-Bit-Versionen und Editionen von Microsoft Windows), kann es für Tester nützlich sein, sie zu erstellen virtuelle Maschinen, sodass Sie mehrere verschiedene Betriebssysteme gleichzeitig auf einem Computer laden und die Netzwerkinteraktion zwischen ihnen organisieren können (wir beabsichtigen, in einem separaten Artikel über Produkte in dieser Kategorie zu sprechen). Von der Software dieser Klasse sind die Produkte von Microsoft und VMWare weit verbreitet. Beim Testen von Programmen zum Installieren von Anwendungen können auch Tools verwendet werden Exemplar reservieren und Wiederherstellung von Festplatten-Images, die von Symantec, PowerQuest und anderen erstellt wurden.

Dokumentation

Die Projektdokumentation wird von verschiedenen Spezialisten durchgeführt. Ein Benutzerhandbuch wird normalerweise von einem technischen Redakteur erstellt, und sein Hauptwerkzeug ist ein Texteditor und ein nicht allzu kompliziertes Grafikverarbeitungstool, mit dem Sie Pfeile, Legenden und andere Elemente zu den Screenshots hinzufügen können, die normalerweise in den Illustrationen von solchen abgebildet sind Unterlagen. Autoren von Produktschulungen und Marketingmaterialien benötigen ähnliche Tools, und sie benötigen möglicherweise auch Präsentationstools wie Microsoft PowerPoint.

Bereitstellungs- und Wartungsdokumentation sowie andere technische Dokumente werden in der Regel von Analysten oder Bereitstellungsspezialisten erstellt. In diesem Fall benötigen sie möglicherweise viele der oben aufgeführten Dinge, z. B. Anforderungsmanagement-Tools, Datenmodellierungstools und UML-Modellierungstools – oft besteht ein erheblicher Teil dieser Dokumente aus Modellberichten. Gleichzeitig war es umso einfacher, die Projektdokumentation zu erstellen, je genauer am Modell gearbeitet wurde.

Hilfedateien werden normalerweise basierend auf dem Benutzerhandbuch mit speziellen Tools generiert. Im einfachsten Fall kann eine Hilfedatei mit Microsoft Word und Microsofts Dienstprogrammen zum Erstellen von Hilfedateien erstellt werden, die in vielen Entwicklungstools enthalten sind, aber großes Volumen Arbeit verwendet häufig spezialisierte Tools von Unternehmen wie Blue Sky Software, EC Software, JGsoft.

Umsetzung und Support

Vor der Einführung eines Produkts werden normalerweise Verteilungsanwendungen erstellt, um diesen Prozess zu erleichtern – wir starten sie, wenn wir ein bestimmtes Produkt auf einem Computer installieren. Zur Erstellung von Verteilungsanwendungen werden auch spezialisierte Tools verwendet, deren Marktführer InstallShield Software und Wise Solutions sind. Häufig enthalten die Entwicklungstools spezialisierte Versionen dieser Produkte unter Berücksichtigung ihrer Besonderheiten (z. B. die Möglichkeit, im Distributionskit enthaltene Bibliotheken einzuschließen). dieses Werkzeug Entwicklung).

Wie die Praxis zeigt, benötigen Sie in der Phase der Produktwartung möglicherweise alles, was während der Arbeit am Projekt erstellt wurde, und dementsprechend alle Werkzeuge.

Teamentwicklung und Projektmanagement

Wenn mehr als eine Person an einem Teil des Projekts arbeitet, können Versionskontrolltools (die beliebtesten sind Merant PVCS Version Manager und Microsoft Visual SourceSafe) während der Entwicklung hilfreich sein. Häufig werden sie nicht nur beim Erstellen von Anwendungscode, sondern auch von Dokumenten (z. B. technischen Spezifikationen) oder Modellen verwendet. Große Projekte verwenden häufig Change-Management-Tools. Solche Produkte ermöglichen es Ihnen, alle Komponenten des Projekts und ihre Versionen in einer einzigen Datenbank zu speichern und vereinfachen die Verwaltung von Versionen von Code, Modellen und Anforderungen und ermöglichen es auch, die Auswirkungen von Änderungen in einem Teil des Projekts zu verfolgen seine anderen Teile. Unter den heute beliebtesten Change-Management-Tools sind Produkte von Borland und IBM / Rational zu nennen.

Kein Projekt kommt ohne einen Verantwortlichen aus, der die Aktivitäten aller Spezialisten plant und alle Entwicklungsprozesse steuert. Obwohl es möglich ist, die Arbeit auf Papier zu planen, ist das Hauptwerkzeug des Projektmanagers (und in großen Projekten der Manager, die für die einzelnen Teile des Projekts verantwortlich sind) in letzter Zeit ein spezialisiertes Projektmanagement-Tool. Führend unter den Produkten in dieser Kategorie ist die Microsoft Project-Produktfamilie.

Musterentwicklungsprojektplan Softwareprodukt(Microsoft Projekt)

Fazit

Bei der Aufzählung der Werkzeuge, die bei der Entwicklung von Anwendungen benötigt werden können, haben wir natürlich nicht alle genannt Möglichkeiten. Einige Projekte erfordern möglicherweise Berichtsgeneratoren, andere Grafiktools, wieder andere Webdesign-Tools und wieder andere CAD- oder GIS-Tools. Gleichzeitig kommt man, wie wir gesehen haben, in den einfachsten Fällen mit einem Entwicklungstool und einem Texteditor aus – dieses Set kann durchaus effektiv sein, wenn das Projekt nicht zu groß ist.

Alle anderen in diesem Artikel aufgeführten Kategorien von Tools müssen tatsächlich nicht unbedingt bei der Entwicklung von Anwendungen verwendet werden. Wie die Praxis zeigt, ist die Arbeit mit ihnen jedoch viel einfacher.

Stufe 1: vor Mitte der 50er Jahre.

Die Hauptkosten sind mit der Codierung (in Maschinencodes) verbunden. Autocodes (Sprachen mit mnemonischer Notation für Befehle) und Übersetzer von ihnen (Assembler) erscheinen.

Die Möglichkeiten der getrennten Kompilierung und Portabilität von Programmen sind implementiert. Programmlader und Linker werden angezeigt.

Stufe 2: Mitte 50 - Mitte 60

Die Größe der Programme nimmt zu, es zeigt sich eine Lücke zwischen den Konzepten von Problemfeldern und maschinennahen Sprachen. Verschiedene Sprachen erscheinen hohes Level(algorithmisch, universell):

Fortran (1954-1957);

Algol-60 (1958-1960);

Cobol (1959–1961);

und Übersetzer von ihnen (Compiler). Nahezu alle grundlegenden Datentypen, Operationen auf ihnen, Kontrollstrukturen und Möglichkeiten, sie in Programmen darzustellen, verschiedene Möglichkeiten zur Parametrisierung von Unterprogrammen werden erfunden und getestet.

Stufe 3: Mitte der 60er - Anfang der 70er Jahre.

Die Größe der Software nimmt stark zu, es findet ein Übergang zur kollektiven Natur der Arbeit statt. Durch den Übergang zur Commodity-Produktion steigen die Anforderungen an Software.

Das Verhältnis der Softwareentwicklungskosten ändert sich (40% oder mehr werden für Debugging, Design und Dokumentation ausgegeben), Codieren ist eine der einfachsten Arten von Arbeit. Es werden "große" Programmiersprachen verwendet und erstellt - PL/1, ALGOL-68, SIMULA-67, die zuvor gefundene Lösungen verallgemeinern und integrieren.

Es gibt fortgeschrittene Programmiersysteme mit Optimierungs- und Debugging-Compilern, Makrobibliotheken, Bibliotheken Standardprogramme, spezialisierte Texteditoren, Analysewerkzeuge und interaktives Debugging in Bezug auf die Eingabesprache. Entwickelte Betriebssysteme, das erste DBMS, zahlreiche Dokumentationsautomatisierungssysteme, Software(Verfolgen von Änderungen und Erstellen von Softwareversionen) werden entwickelt.

Phase 4 („Krisenphase der Softwareentwicklung“): Anfang der 1970er–Mitte der 1970er Jahre

Trotz der Entwicklung von Tools wächst die Produktivität der Programmierer nicht. Zudem sinkt die Arbeitsproduktivität aufgrund der steigenden Anforderungen an Software und der nichtlinearen Zunahme ihrer Komplexität. Die Bedingungen der Softwareentwicklung sind gebrochen, ihre Kosten steigen, ihre Qualität ist unvorhersehbar, traditionelle Methoden (Bereitstellung zusätzlicher personeller und materieller Ressourcen) funktionieren nicht, was als "Softwarekrise" bezeichnet wird.

Gewinnen Sie methodische Anerkennung strukturierte Programmierung(Dijkstra, 1968) werden die Grundlagen der Programmiertechnik geschaffen (Pascal Language (N. Wirth), 1971).

Stufe 5: 1976 - unsere Zeit. Phase der Entwicklung von Tools nach der Krise.

1976 - Veröffentlichung von Boehms Arbeit, die das Konzept des Software-Lebenszyklus einführt und darauf hinweist, dass die Hauptkosten nicht für die Entwicklung, sondern für die Softwarewartung anfallen.

Programmiersprachen:

C (Anfang der 1970er Jahre, erstmals 1978 vollständig beschrieben);

Modula-2 (1978, entwickelt von Oberon Language (1988));

Prolog (1972, verbreitet seit 1980);

Smalltalk (1970er, 1980 als Smalltalk-80 eingeführt);

C++ (Anfang der 1980er Jahre, der Name ist 1983, existiert in seiner üblichen Form seit 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).

Integrierte Softwareentwicklungsumgebungen werden entwickelt. Der objektorientierte Ansatz für Design und Programmierung setzt sich durch. Es werden Programme entwickelt, die die Erstellung von Software in jeder Phase unterstützen.

Testfragen:

1. Welche Tätigkeiten umfasst die Entwicklung eines Softwareprodukts?

2. Was sind die Phasen der Softwareentwicklung unter dem Rational Unified Process (RUP)?

3. Was bringt der Einsatz von Tools?

4. Was sind die Bestandteile des Programms? Zweck jedes Teils.

5. Programm- und Softwaredefinitionen.

6. Welche Eigenschaften soll die Software haben?

7. Welche Programmiersprachen werden bei der Entwicklung von Programmen verwendet?

8. Definition der Werkzeugsoftware.

9. In welche vier Gruppen kann Tool-Software eingeteilt werden? Softwarebeispiele für jede Gruppe.

10. Nach welchen Kriterien können Studiengänge derselben Klasse verglichen werden?

11. Welche Stadien gibt es bei der Entwicklung von Softwareentwicklungstools?

12. Zweck und Hauptmerkmale von Compilern (Assemblern) und Link-Editoren.

13. Ernennung und Hauptmerkmale von Texteditoren.

14. Zweck und Hauptmerkmale von Debuggern.

15. Zweck und Hauptmerkmale von Programmen zum Erstellen von Installationsprogrammen.

16. Zweck und Hauptmerkmale von Ressourceneditoren.

17. Zweck und Hauptmerkmale von Profilern.

18. Zweck und Hauptmerkmale von Versionsunterstützungsprogrammen.

19. Zweck und Hauptmerkmale von Programmen zum Erstellen von Hilfedateien (Dokumentation).

20. Zweck und Hauptmerkmale von Dokumentationsgeneratoren.

21. Zweck und Hauptmerkmale von Disassemblern und Decompilern.

22. Zweck und Hauptmerkmale von Programmen zur Verfolgung von Systemaktivitäten und im System auftretenden Änderungen.

23. Zweck und Hauptmerkmale von Programmüberprüfern und Containern.

24. Zweck und Hauptmerkmale von Programmen zum Schutz der entwickelten Software (Protektoren).

25. Zweck und Hauptmerkmale des SDK.

26. Zweck und Hauptmerkmale von Parsern.

27. Ernennung von technologischen Standards.


THEMA: Methoden der Softwareentwicklung.

Literatur: 1. Zelkowitz M., Shaw A., Gannon J. Prinzipien der Softwareentwicklung.

2. Ghezzi K., Jazayeri M., Mandrioli D. Grundlagen der Softwareentwicklung.

3. Kamaev V. A., Kosterin V. V. Programmiertechnologien.

Betrachten Sie die Konzepte von Methodik, Methode und Mittel.

Definition 1: Methode(aus dem Griechischen methodos - eine Forschungs- oder Erkenntnismethode, Theorie oder Lehre) - eine Methode oder ein System von Methoden zur praktischen Umsetzung von etwas in einem beliebigen Fachgebiet, eine Reihe von Methoden oder Operationen zur praktischen oder theoretischen Entwicklung der Realität, vorbehaltlich der Lösung spezifischer Probleme.

Die Methode beinhaltet Mittel- durch die die Aktion ausgeführt wird und Wege- wie die Aktion ausgeführt wird.

Definition 2: Methodik ist ein System von Prinzipien sowie eine Reihe von Ideen, Konzepten, Methoden, Methoden und Mitteln, die den Stil der Softwareentwicklung bestimmen.

Eine Methodik ist eine Implementierung eines Standards. Die Standards selbst sprechen nur von dem, was sein sollte, und lassen die Freiheit der Wahl und Anpassung.

Durch die gewählte Methodik werden konkrete Dinge umgesetzt. Sie bestimmt, wie die Entwicklung durchgeführt wird. Es gibt viele erfolgreiche Softwareentwicklungsmethoden. Die Wahl einer bestimmten Methodik hängt von der Größe des Teams, von der Spezifik und Komplexität des Projekts, von der Stabilität und Reife der Prozesse im Unternehmen und von den persönlichen Eigenschaften der Mitarbeiter ab.

Methodologien sind der Kern der Theorie des Softwareentwicklungsmanagements.

Je nach verwendetem Lebenszyklusmodell werden die Methoden unterteilt in:

Wasserfall (Kaskade);

Iterativ (Spirale).

Es gibt auch eine allgemeinere Einteilung in:

Prognostiziert;

Adaptiv.

Geplante Methodologien Konzentrieren Sie sich auf die detaillierte Planung für die Zukunft. Geplante Aufgaben und Ressourcen sind für die gesamte Projektlaufzeit bekannt. Das Team reagiert kaum auf mögliche Änderungen. Der Plan wird basierend auf dem Arbeitsumfang und den bestehenden Anforderungen optimiert. Sich ändernde Anforderungen können zu einer erheblichen Änderung des Plans sowie des Projektdesigns führen. Oft wird ein eigenes „Change Management“-Gremium eingerichtet, um sicherzustellen, dass nur die wichtigsten Anforderungen im Projekt berücksichtigt werden.

Adaptive Methoden zielen darauf ab, die zu erwartende Unvollständigkeit der Anforderungen und deren ständige Veränderung zu überwinden. Wenn sich die Anforderungen ändern, ändert sich auch das Entwicklungsteam. Ein Team, das an der agilen Entwicklung beteiligt ist, hat es schwer, die Zukunft eines Projekts vorherzusagen. Einen genauen Plan gibt es erst für die nahe Zukunft. Zeitlich weiter entfernte Planungen existieren nur noch als Erklärungen zu Projektzielen, erwarteten Kosten und Ergebnissen.

Kaskadierende Entwicklung oder Wasserfallmodell - ein Modell des Softwareentwicklungsprozesses, bei dem der Entwicklungsprozess wie ein Fluss aussieht und nacheinander die Phasen Anforderungsanalyse, Design, Implementierung, Test, Integration und Support durchläuft.

Das Hauptmerkmal Wasserfall-Ansatz ist: Der Übergang zur nächsten Stufe erfolgt erst, nachdem die Arbeit der aktuellen Stufe vollständig abgeschlossen ist, und es gibt keine Rückkehr zu den bestandenen Stufen . Jede Stufe endet mit einigen Ergebnissen, die als Input für die nächste Stufe dienen (Abb. 1).

Reis. 1. Kaskadenlebenszyklusmodell.

Jede Phase gipfelt in der Veröffentlichung einer Reihe von Dokumentationen, die ausreichen, damit die Entwicklung von einem anderen Entwicklungsteam fortgesetzt werden kann. Das Kriterium für die Qualität der Entwicklung bei diesem Ansatz ist die Genauigkeit der Erfüllung der Vorgaben der Leistungsbeschreibung.

Vorteile der Verwendung des Kaskadenverfahrens:

In jeder Phase wird eine vollständige Projektdokumentation erstellt, die die Anforderungen an Vollständigkeit und Konsistenz erfüllt.

Die in logischer Abfolge ausgeführten Arbeitsschritte ermöglichen Ihnen eine zeitliche Planung der Fertigstellung aller Arbeiten und der entsprechenden Kosten.

Der Kaskaden-Ansatz hat sich im Elektronikbau bestens bewährt Informationssysteme, für die bereits zu Beginn der Entwicklung alle Anforderungen recht genau und vollständig formuliert werden können, um Entwicklern die Freiheit zu geben, diese bestmöglich technisch umzusetzen.

Gleichzeitig hat dieser Ansatz eine Reihe von Nachteilen, hauptsächlich aufgrund der Tatsache, dass echter Prozess Softwareentwicklung passt nie ganz in ein so starres Schema. Der Prozess der Softwareerstellung ist in der Regel iterativer Natur: Die Ergebnisse der nächsten Stufe führen häufig zu Änderungen in Designlösungen in früheren Phasen erzeugt. Daher besteht die ständige Notwendigkeit, zu früheren Stadien zurückzukehren und zuvor getroffene Entscheidungen zu klären oder zu revidieren (Abb. 2). Das dargestellte Schema kann einem separaten Modell zugeordnet werden - einem Modell mit Zwischensteuerung, bei dem Anpassungen zwischen den Stufen im Vergleich zum Kaskadenmodell eine größere Zuverlässigkeit bieten, obwohl sie die gesamte Entwicklungszeit verlängern.

Der Hauptnachteil des Wasserfallmodells ist eine erhebliche Verzögerung bei der Erzielung von Ergebnissen und folglich ein hohes Risiko, ein System zu erstellen, das den sich ändernden Anforderungen der Benutzer nicht gerecht wird. Dies hat zwei Gründe:

Benutzer können nicht sofort alle ihre Anforderungen benennen und können nicht vorhersehen, wie sie sich während der Entwicklung ändern werden;

Während der Entwicklung kann es zu Änderungen in der externen Umgebung kommen, die sich auf die Anforderungen für das System auswirken.

Reis. 2. Kaskadenlebenszyklusmodell in der Praxis.

Im Rahmen des Kaskadenansatzes werden die Anforderungen an das zu entwickelnde Produkt in Form einer fachlichen Aufgabe für die gesamte Entstehungszeit fixiert und die erzielten Ergebnisse erst an den jeweils geplanten Stellen mit den Anwendern abgestimmt Phase (es ist möglich, die Ergebnisse gemäß den Kommentaren der Benutzer anzupassen, wenn sie die in der Aufgabenbeschreibung festgelegten Anforderungen nicht berühren). Daher können Benutzer erst dann wesentliche Kommentare abgeben, wenn die Arbeit am System vollständig abgeschlossen ist. Benutzer erhalten möglicherweise ein System, das ihren Anforderungen nicht entspricht. Infolgedessen müssen Sie ein neues Projekt starten, das möglicherweise das gleiche Schicksal erleidet.

Um diese Probleme zu überwinden, wurde Mitte der 1980er Jahre ein spiralförmiges Lebenszyklusmodell vorgeschlagen (Abb. 3).

Reis. 3. Spiralförmiges (iteratives) Lebenszyklusmodell.

Sein Hauptmerkmal ist das Folgende: Anwendungssoftware wird nicht wie beim Wasserfall-Ansatz sofort erstellt, sondern teilweise im Prototyping-Verfahren .

Unter Prototyp bezeichnet eine aktive Softwarekomponente, die einzelne Funktionen und externe Schnittstellen der zu entwickelnden Software implementiert. Die Erstellung von Prototypen erfolgt in mehreren Iterationen oder Windungen der Spirale. Jede Iteration entspricht der Erstellung eines Fragments oder einer Version der Software, sie verdeutlicht die Ziele und Merkmale des Projekts, bewertet die Qualität der erzielten Ergebnisse und plant die Arbeit der nächsten Iteration. Bei jeder Iteration wird das Risiko einer Überschreitung der Projektzeit und -kosten sorgfältig bewertet, um festzustellen, ob eine weitere Iteration erforderlich ist, wie vollständig und genau die Systemanforderungen verstanden werden und ob das Projekt beendet werden sollte.

Das Spiralmodell entlastet Anwender und Entwickler von der Notwendigkeit, Systemanforderungen in der Anfangsphase genau und vollständig zu formulieren, da sie bei jeder Iteration verfeinert werden. So werden die Details des Projekts vertieft und konsequent konkretisiert und im Ergebnis eine sinnvolle Option ausgewählt, die zur Umsetzung gebracht wird.

Das Spiralmodell ist ein klassisches Beispiel für eine evolutionäre Designstrategie. Das Spiralmodell (von Barry Boehm, 1988) basiert auf beste Eigenschaften klassischen Lebenszyklus und Layout, die hinzugefügt werden neues Element- Risikoanalyse bisher nicht verfügbar.

Das Spiralmodell definiert vier Aktivitäten, die durch einzelne Sektoren der Spirale repräsentiert werden:

1. Planung – Definition von Zielen, Optionen und Einschränkungen.

2. Risikoanalyse - Analyse von Optionen und Risikoerkennung/-auswahl.

3. Engineering – Produktentwicklung der nächsten Stufe.

4. Bewertung - Bewertung der aktuellen Konstruktionsergebnisse durch den Kunden.

Der integrierende Aspekt des Spiralmodells wird deutlich, wenn man die radiale Dimension der Spirale betrachtet. Mit jeder Iteration entlang der Spirale (vom Zentrum zur Peripherie) mehr und mehr Vollversionen AN.

In der ersten Windung der Spirale werden erste Ziele, Optionen und Einschränkungen identifiziert, Risiken erkannt und analysiert. Wenn die Risikoanalyse die Unsicherheit der Anforderungen zeigt, kommt das Prototyping (im Design-Quadranten verwendet) dem Entwickler und dem Kunden zu Hilfe. Die Modellierung kann verwendet werden, um problematische und verfeinerte Anforderungen weiter zu identifizieren. Der Kunde bewertet die Engineering-(Design-)Arbeit und macht Änderungsvorschläge. Die nächste Phase der Planung und Risikoanalyse basiert auf Kundenvorschlägen. In jedem Zyklus in der Spirale werden die Ergebnisse der Risikoanalyse in Form von "Weitermachen, nicht weitermachen" gebildet. Ist das Risiko zu groß, kann das Projekt gestoppt werden.

In den meisten Fällen geht die Spirale weiter, wobei jeder Schritt die Entwickler zu mehr bringt allgemeines Modell Systeme.

Bei der iterativen Methode kann die fehlende Arbeit in der nächsten Iteration erledigt werden. Die Hauptaufgabe besteht darin, den Nutzern des Systems schnellstmöglich ein lauffähiges Produkt aufzuzeigen und damit den Prozess der Klärung und Ergänzung von Anforderungen anzustoßen.

Das Spiralmodell schließt den Kaskadenansatz in den Endphasen des Projekts nicht aus, wenn die Anforderungen an das System vollständig definiert sind.

Das Hauptproblem des Spiralzyklus besteht darin, den Zeitpunkt des Übergangs zur nächsten Stufe zu bestimmen. Um es zu lösen, ist es notwendig, Zeitbeschränkungen für jede der Phasen des Lebenszyklus einzuführen. Die Umstellung verläuft planmäßig, auch wenn noch nicht alle geplanten Arbeiten abgeschlossen sind. Der Plan wird auf der Grundlage statistischer Daten aus früheren Projekten und der persönlichen Erfahrung der Entwickler erstellt.

Vorteile des Spiralmodells:

Die realistischste (in Form von Evolution) spiegelt die Softwareentwicklung wider;

Ermöglicht es Ihnen, das Risiko in jeder Phase der Entwicklungsevolution explizit zu berücksichtigen;

Integriert den systematischen Ansatzschritt in die iterative Entwicklungsstruktur;

Verwendet Simulation, um Risiken zu reduzieren und das Softwareprodukt zu verbessern.

Nachteile des Spiralmodells:

Neuheit (es gibt keine ausreichenden Statistiken über die Wirksamkeit des Modells);

Erhöhte Anforderungen an den Kunden;

Schwierigkeiten bei der Überwachung und Verwaltung der Entwicklungszeit.

Bisher lassen sich folgende iterative Softwareentwicklungsmethoden unterscheiden:

Rational Unified Process (RUP)

Flexible Entwicklungsmethoden (SCRUM, KANBAN, DSDM, MSF, ALM, XP)

Agile Entwicklungsmethodik(Eng. Agile Softwareentwicklung).

Die meisten agilen Methoden zielen darauf ab, das Risiko zu minimieren, indem sie die Entwicklung auf eine Reihe von kurzen Zyklen reduzieren, die als kurz bezeichnet werden Iterationen die in der Regel ein bis zwei Wochen dauern. Jede Iteration selbst sieht aus wie ein Miniatur-Softwareprojekt und umfasst alle Aufgaben, die erforderlich sind, um ein Mini-Wachstum an Funktionalität zu erzeugen: Planung, Anforderungsanalyse, Design, Codierung, Test und Dokumentation. Während eine einzelne Iteration im Allgemeinen nicht ausreicht, um eine neue Version eines Produkts zu veröffentlichen, wird davon ausgegangen, dass ein agiles Softwareprojekt am Ende jeder Iteration zur Veröffentlichung bereit ist. Am Ende jeder Iteration bewertet das Team die Entwicklungsprioritäten neu.

Agile Methoden betonen die Kommunikation von Angesicht zu Angesicht. Die meisten agilen Teams befinden sich im selben Büro. Dazu gehören mindestens auch „Kunden“ (Kunden, die das Produkt definieren; sie können auch Produktmanager, Business-Analysten oder Kunden sein). Das Büro kann auch Tester, Schnittstellendesigner, technische Redakteure und Manager umfassen.

Eine der bekanntesten und fortschrittlichsten agilen Methoden ist die SCRUM-Methodik.

GEDRÄNGE- eine Methodik für kleine Teams (bis zu 10 Personen). Das gesamte Projekt ist in Iterationen (Sprints) von jeweils 30 Tagen Dauer unterteilt. Eine Liste von Systemfunktionen, die während des nächsten Sprints implementiert werden sollen, wird ausgewählt. Die wichtigsten Bedingungen sind die Unveränderlichkeit der ausgewählten Funktionen während der Ausführung einer Iteration und die strikte Einhaltung der Release-Termine des nächsten Releases, auch wenn nicht alle geplanten Funktionalitäten bis zu dessen Release implementiert werden können. Der Entwicklungsleiter hält täglich 20-minütige Meetings, Scrum genannt, deren Ergebnis die Definition der am Vortag implementierten Systemfunktion, der aufgetretenen Schwierigkeiten und des Plans für den nächsten Tag ist. Solche Besprechungen ermöglichen es Ihnen, den Fortschritt des Projekts ständig zu überwachen, aufgetretene Probleme schnell zu erkennen und schnell darauf zu reagieren.

Kanban– eine agile Softwareentwicklungsmethodik, die aufgabenorientiert ist.

Grundregeln:

Entwicklungsvisualisierung:

o Arbeitsteilung in Aufgaben;

o Verwendung von Noten über die Position der Aufgabe in der Entwicklung;

Begrenzung der Arbeit, die gleichzeitig in jeder Phase der Entwicklung durchgeführt wird;

Zykluszeitmessung (durchschnittliche Zeit zum Abschließen einer Aufgabe) und Prozessoptimierung.

Vorteile von KANBAN:

Die Reduzierung der Anzahl paralleler Tasks reduziert die Ausführungszeit jeder einzelnen Task erheblich;

Schnelle Identifizierung problematischer Aufgaben;

Berechnen Sie die Zeit, um die durchschnittliche Aufgabe zu erledigen.

DYNAMISCHE SYSTEMENTWICKLUNGSMETHODE(DSDM) entstand als Ergebnis der Arbeit eines Konsortiums aus 17 britischen Unternehmen. Eine ganze Organisation ist an der Entwicklung von Handbüchern zu dieser Methodik, der Organisation von Schulungen, Akkreditierungsprogrammen usw. beteiligt. Darüber hinaus hat der Wert von DSDM einen Geldwert.

Alles beginnt mit einer Untersuchung der Machbarkeit des Programms und seines Umfangs. Im ersten Fall versuchen Sie herauszufinden, ob DSDM für ein bestimmtes Projekt geeignet ist. Es soll den Umfang des Programms in einer kurzen Seminarreihe studieren, in der Programmierer das Geschäftsfeld kennenlernen, für das sie arbeiten werden. Außerdem werden die wichtigsten Bestimmungen zur Architektur des zukünftigen Systems und zum Projektplan erörtert.

Der Prozess ist weiter in drei miteinander verbundene Zyklen unterteilt: Der Funktionsmodellzyklus ist für die Erstellung analytischer Dokumentationen und Prototypen verantwortlich, der Entwurfs- und Konstruktionszyklus dient dazu, das System in einen funktionsfähigen Zustand zu bringen, und schließlich stellt der letzte Zyklus - der Implementierungszyklus - sicher die Bereitstellung des Softwaresystems.

Die Grundprinzipien, auf denen DSDM aufgebaut ist, sind:

Aktive Interaktion mit Benutzern;

Häufige Veröffentlichungen von Versionen;

Unabhängigkeit der Entwickler bei der Entscheidungsfindung;

Prüfung während des gesamten Arbeitszyklus.

Wie die meisten anderen agilen Methoden verwendet DSDM kurze Iterationen von jeweils zwei bis sechs Wochen. Besonderer Wert wird darauf gelegt hohe Qualität Leistung und Anpassungsfähigkeit an wechselnde Anforderungen.

MICROSOFT-LÖSUNGSFRAMEWORK(MSF) ist eine von der Microsoft Corporation vorgeschlagene Softwareentwicklungsmethodik. Das MSF stützt sich auf die Best Practices von Microsoft und beschreibt, wie Personen und Workflows im Lösungsentwicklungsprozess verwaltet werden.

Grundlegende Konzepte und Prinzipien des MSF-Vorgehensmodells:

Eine einheitliche Vision des Projekts – alle interessierten Parteien und nur die Projektteilnehmer müssen das Endergebnis klar verstehen, jeder sollte den Zweck des Projekts verstehen;

Tradeoff-Management – ​​Finden von Kompromissen zwischen Projektressourcen, Zeitplan und realisierbaren Möglichkeiten;

Flexibilität - Bereitschaft für sich ändernde Konstruktionsbedingungen;

Konzentrieren Sie sich auf geschäftliche Prioritäten – konzentrieren Sie sich auf die Rendite und die Vorteile, die der Verbraucher von der Lösung erwartet;

Freie Kommunikation innerhalb des Projekts fördern;

Schaffung Basisversionen- Fixierung des Zustands aller Projektartefakte, einschließlich Programmcode, Projektplan, Benutzerhandbuch, Servereinstellungen und anschließendes effektives Änderungsmanagement, Projektanalyse.

MSF bietet bewährte Methoden für die Planung, Gestaltung, Entwicklung und Implementierung erfolgreicher IT-Lösungen. Mit seiner Flexibilität, Skalierbarkeit und dem Fehlen starrer Richtlinien ist MSF in der Lage, die Anforderungen von Organisationen oder Projektteams jeder Größe zu erfüllen. Die MSF-Methodik besteht aus Prinzipien, Modellen und Disziplinen für das Management von Personal, Prozessen, technologischen Elementen und Fragen im Zusammenhang mit all diesen Faktoren, die für die meisten Projekte typisch sind.

Verwaltung des Anwendungslebenszyklus(ALM) - entwickelt und gepflegt von Borland.

extremes Programmieren(XP) - Extreme Programming, unterstützt von einer offenen Community unabhängiger Entwickler.

Thema: Softwareentwicklungstechnologie.

Thema: Kollaborative Softwareentwicklungswerkzeuge.

lehrreich

Kennenlernen der Werkzeuge der kollektiven Softwareentwicklung.

Entwicklung:

Entwickeln Sie die Fähigkeit, anderen zuzuhören, Schlussfolgerungen zu ziehen und das gewonnene Wissen zu verallgemeinern

Lehrreich:

Kultivieren Sie ein Gefühl für die Bedeutung des Themas bei beruflichen Aktivitäten und Genauigkeit bei der Arbeit

Interdisziplinäre Verbindungen:

Englische Sprache

Betriebssysteme

Informationstechnologie

Grundlagen der Algorithmisierung und Programmierung

Ausstattung: Tafel, Kreide, Schreibgeräte, Beamer, PC

Unterrichtstyp: kombiniert

Unterrichtsmethode: Erklärend Illustrativ

Während des Unterrichts:

1. Organisatorischer Moment

Überprüfung der Bereitschaft des Büros

Themenankündigung

2. Festlegung des Unterrichtsziels

3.Wiederholung des behandelten Materials

Tools zur Softwareentwicklung.

Werkzeugumgebungen für die Entwicklung und Wartung von Softwarewerkzeugen und die Prinzipien ihrer Klassifizierung

Die Hauptklassen von Werkzeugentwicklungsumgebungen und Wartung von Softwarewerkzeugen

Programmierumgebungen

4. Vermittlung neuen Wissens

Das Konzept der Computersoftware-Entwicklungstechnologie und ihre Jobs

Werkzeugsysteme der Programmiertechnik

Tools zur Softwareentwicklung

5. Wahrnehmung und Bewusstsein der Schüler für neues Material

6. Verallgemeinerung und Systematisierung von Wissen

7. Den Unterricht zusammenfassen und Hausaufgaben machen

Lerne Themeninhalte

Gagarina L. G. S. 257-259.

Beantworten Sie die Fragen:

16.4. Das Konzept der Computersoftware-Entwicklungstechnologie und ihre Jobs

Es gibt einige Schwierigkeiten bei der Entwicklung einer strengen Definition der CASE-Technologie (Computertechnologie für die Entwicklung von PS). CASE ist eine Abkürzung für Computer-Aided Software Engineering (Computer-Assisted Programming Engineering). Aber ohne die Hilfe (Unterstützung) eines Computers werden PSs schon lange nicht mehr entwickelt (zumindest ein Compiler wird verwendet). Tatsächlich wird diesem Begriff eine engere (besondere) Bedeutung beigemessen, die allmählich verwischt wird (wie es immer geschieht, wenn ein Begriff keine strenge Definition hat). CASE wurde zunächst als Engineering der frühen Phasen der Softwareentwicklung (Definition von Anforderungen, Entwicklung einer externen Beschreibung und Architektur des PS) unter Verwendung von Softwareunterstützung (Softwaretools) verstanden. Nun kann CASE auch als Engineering des gesamten Lebenszyklus der Software (einschließlich ihrer Wartung) verstanden werden, jedoch nur dann, wenn die Programme teilweise oder vollständig gemäß den erhaltenen Dokumenten in den angegebenen frühen Entwicklungsstadien erstellt werden. Dabei unterscheidet sich die CASE-Technologie grundlegend von der manuellen (traditionellen) Technologie der Softwareentwicklung: Nicht nur der Inhalt technologischer Prozesse hat sich verändert, sondern auch deren Gesamtheit.

Derzeit Computertechnologie Die PS-Entwicklung kann durch die Nutzung charakterisiert werden

  • Softwareunterstützung für die Entwicklung von grafischen Anforderungen und grafischen Spezifikationen des PS,
  • automatische Generierung von Programmen in beliebigen Programmiersprachen oder im Maschinencode (teilweise oder vollständig),
  • Softwareunterstützung für das Prototyping.

Es wird auch gesagt, dass die Computertechnologie für die Entwicklung von PS "papierlos" ist, d.h. entwickelt für die Computerdarstellung von Programmdokumenten. Es ist jedoch ziemlich schwierig, basierend auf diesen Merkmalen sicher zwischen manueller Softwareentwicklungstechnologie und Computertechnologie zu unterscheiden. Dies bedeutet, dass das Wesentlichste in der Computertechnologie nicht herausgegriffen wurde.

Unserer Meinung nach ist der Hauptunterschied zwischen manueller Softwareentwicklungstechnologie und Computertechnologie folgender. Die manuelle Technologie konzentriert sich auf die Entwicklung von Dokumenten, die von verschiedenen PS-Entwicklern gleichermaßen verstanden werden, während die Computertechnologie darauf ausgerichtet ist, ein semantisches Verständnis (Interpretation) von Dokumenten mit Softwareunterstützung für die Computertechnologie bereitzustellen. Das semantische Verstehen von Dokumenten gibt Softwareunterstützung die Möglichkeit, automatisch Programme zu generieren. Ein wesentlicher Bestandteil der Computertechnik ist dabei die Verwendung formaler Sprachen bereits in den frühen Phasen der Entwicklung eines Softwaresystems: sowohl für die Spezifikation von Programmen als auch für die Spezifikation anderer Dokumente. Insbesondere formale grafische Spezifikationssprachen sind weit verbreitet. Dies ermöglicht es, die Gesamtheit der technologischen Prozesse für die Entwicklung und Wartung von Software rational zu ändern.

Aus der Diskussion kann es bestimmt werden Softwareentwicklung Computertechnologie als Programmiertechnologie, die Softwaretools verwendet, um formalisierte Spezifikationen für Programme und andere Dokumente (einschließlich grafischer Spezifikationen) mit anschließender automatischer Generierung von Programmen und Dokumenten (oder zumindest einem wesentlichen Teil davon) gemäß diesen Spezifikationen zu entwickeln.

Jetzt werden die wesentlichen Veränderungen im Software-Lebenszyklus für Computertechnologie deutlich. Wenn bei der Verwendung von manueller Technologie die Hauptanstrengungen bei der Entwicklung des PS in den Phasen der eigentlichen Programmierung (Codierung) und der Fehlersuche (Testen) unternommen wurden, dann bei der Verwendung von Computertechnologie in den frühen Phasen der PS-Entwicklung (Definition von Anforderungen und funktionale Spezifikation, Architekturentwicklung). Gleichzeitig hat sich die Art der Dokumentation erheblich verändert. Anstelle einer ganzen Kette informeller Dokumente, die sich auf die Weitergabe von Informationen vom Kunden (Benutzer) an verschiedene Kategorien von Entwicklern konzentrieren, wird ein PS-Prototyp gebildet, der die ausgewählte Benutzeroberfläche unterstützt, und formelle funktionale Spezifikationen (manchmal formale PS-Architekturspezifikationen) sind ausreichend zur automatischen Synthese (Generierung) von Programmen PS (oder zumindest einem wesentlichen Teil davon). Gleichzeitig wurde es möglich, einen Teil der für Entwickler und Anwender notwendigen Dokumentation automatisch zu generieren. Statt manueller Programmierung (Codierung) – automatische Generierung von Programmen, die ein eigenständiges Debuggen und Testen von Programmen überflüssig macht: Stattdessen kommt eine eher tiefe automatische semantische Kontrolle der Dokumentation hinzu. Es wird möglich, Tests nach formalen Vorgaben für einen komplexen ( systemisch) PS-Debugging. Die Art der PS-Wartung ändert sich ebenfalls erheblich: Alle Änderungen werden vom Betreuer nur an den Spezifikationen (einschließlich des Prototyps) vorgenommen, andere Änderungen am PS werden automatisch vorgenommen.

Nachdem das gesagt worden ist Software-Lebenszyklus für Computertechnologie kann durch das folgende Diagramm dargestellt werden (Abb. 16.3).

Reis. 16.3. Der Lebenszyklus eines Softwaretools für die Computertechnik.

Prototyp entwickeln PS ist eine optionale Phase des Lebenszyklus der PS mit Computertechnologie, die in Abb. 16.3 ist durch einen gepunkteten Pfeil dargestellt. Die Nutzung dieses Schrittes in vielen Fällen und die entsprechende Computerunterstützung für diesen Schritt ist jedoch charakteristisch für die Computertechnik. In einigen Fällen erfolgt das Prototyping nach (oder während) der Entwicklung von Spezifikationen. PS zum Beispiel beim User Interface Prototyping. Dies ist in Abb. 1 dargestellt. 16.3 gepunkteter Rücklaufpfeil. Obwohl wir jederzeit eine Rückkehr zu den vorherigen Stufen zulassen, wird dies hier deutlich, da Prototyping ein besonderer Ansatz zur Entwicklung von PS ist (siehe Vortrag 3). User Interface Prototyping ermöglicht es Ihnen, die indirekte Beschreibung der Interaktion zwischen dem Benutzer und dem PS in der manuellen Technologie (bei der Entwicklung einer externen Beschreibung des PS) durch die direkte Wahl der Methode und des Stils dieser Interaktion durch den Benutzer zu ersetzen und alles Notwendige festzulegen Einzelheiten. Im Wesentlichen wird in dieser Phase eine genaue Beschreibung der Benutzerschnittstelle erstellt, die durch die Softwareunterstützung der Computertechnologie und unter verantwortungsbewusster Beteiligung des Benutzers verständlich ist. All dies basiert auf dem Vorhandensein einer anpassbaren Shell mit einer umfangreichen Bibliothek von Rohlingen für verschiedene Fragmente und Bildschirmdetails in der Softwareunterstützung der Computertechnologie. Diese Art von Prototyping scheint der beste Weg zu sein, um die Barriere zwischen Benutzer und Entwickler zu überbrücken.

Entwicklung von PS-Spezifikationen gliedert sich in verschiedene Prozesse. Wenn wir die Anfangsphase der Entwicklung von Spezifikationen (Bestimmung von Anforderungen) ausschließen, verwenden diese Prozesse Methoden, die zur Erstellung formalisierter Dokumente führen, d. H. Es werden formalisierte Spezifikationssprachen verwendet. Gleichzeitig sind grafische Methoden der Spezifikation weit verbreitet, was zur Erstellung verschiedener Schemata und Diagramme führt, die die Struktur der Informationsumgebung und die Verwaltungsstruktur des PS bestimmen. An solche Strukturen werden Fragmente von Daten und Programmbeschreibungen angehängt, die in algebraischen Spezifikationssprachen (z. B. unter Verwendung von operationeller oder axiomatischer Semantik) oder logischen Spezifikationssprachen (basierend auf einem logischen Ansatz zur Programmspezifikation) dargestellt werden. Solche Vorgaben erlauben es, Programme weitgehend oder vollständig automatisch zu generieren. Ein wesentlicher Teil der Spezifikationsentwicklung ist die Erstellung eines Wörterbuchs benannter Entitäten, die in Spezifikationen verwendet werden.

Automatisierte Spezifikationskontrolle PS nutzt die Tatsache, dass ein erheblicher Teil der Spezifikationen in formalen Sprachen präsentiert wird. Auf diese Weise können Sie automatisch verschiedene Arten der Kontrolle durchführen: syntaktische und teilweise semantische Kontrolle von Spezifikationen, Kontrolle der Vollständigkeit und Konsistenz von Schemata und Diagrammen (insbesondere müssen alle ihre Elemente identifiziert und im Wörterbuch der benannten Entitäten wiedergegeben werden), Ende -Endkontrolle des Gleichgewichts der Spezifikationsebenen und andere Arten der Kontrolle in Abhängigkeit von den Fähigkeiten der Spezifikationssprachen.

Generation Programme PS. In diesem Stadium generiert es automatisch Codeskelette für PS-Programme oder vollständige Codes für diese Programme gemäß formalen PS-Spezifikationen.

Automatisierte Dokumentation von PS. Übernimmt die Möglichkeit, verschiedene Formen von Dokumenten mit teilweiser Befüllung gemäß den im Repository gespeicherten Informationen zu erstellen. Gleichzeitig wird die Anzahl der Dokumententypen im Vergleich zu herkömmlicher Technologie reduziert.

Umfassendes Testen und Debuggen von PS. In dieser Phase werden alle PS-Spezifikationen getestet und die dabei gefundenen Fehler korrigiert. Tests können sowohl manuell als auch automatisch erstellt werden (sofern die verwendeten Spezifikationssprachen dies zulassen) und durch die generierten PS-Programme geleitet werden.

PS-Zertifizierunghat den gleichen Inhalt.

PS-Unterstützung stark vereinfacht, da die wesentlichen Änderungen nur in den Spezifikationen vorgenommen werden.

Arbeitsplatz der Computertechnologie der Softwareentwicklung ist eine Werkzeugumgebung, die alle Phasen des Lebenszyklus dieser Technologie unterstützt. Diese Umgebung nutzt das Repository erheblich. Das Repository speichert alle Informationen, die während der Entwicklung des PS erstellt wurden (insbesondere das Wörterbuch der benannten Entitäten und alle Spezifikationen). Damit ist der Computertechnik-Arbeitsplatz zumindest hinsichtlich Benutzeroberfläche und Daten integriert. Die wichtigsten Werkzeuge eines solchen Arbeitsplatzes sind:

  • Designer von Benutzeroberflächen;
  • ein Werkzeug zum Arbeiten mit einem Wörterbuch benannter Entitäten;
  • grafische und Testeditoren von Spezifikationen;
  • Spezifikationsanalysatoren;
  • Programmgenerator;
  • Dokumentierer.

14.5. Werkzeugsysteme der Programmiertechnik

Werkzeugsystem der Programmiertechnik - ist ein integrierter Satz von Software- und Hardware-Tools, die alle Prozesse der Entwicklung und Wartung großer PS während ihres gesamten Lebenszyklus innerhalb einer bestimmten Technologie unterstützen. Es wurde bereits oben erwähnt (siehe Abschnitt 14.3), dass es neben seiner Integration auch die Eigenschaften der Komplexität und des Fokus auf kollektive Entwicklung hat. Das bedeutet, dass es auf der Konsistenz der Produkte technologischer Prozesse basiert. Somit ist das instrumentelle System in der Lage, zumindest die Kontrolle über die Vollständigkeit (Vollständigkeit) der erstellten Dokumentation (einschließlich einer Reihe von Programmen) und die Konsistenz ihrer Änderung (Versionierung) bereitzustellen. Die Unterstützung der PS-Erhaltungsphase durch das instrumentelle System bedeutet, dass es bereitstellen muss PS-Konfigurationsverwaltung. Außerdem unterstützt das Werkzeugsystem die Verwaltung der Arbeit des Teams und stellt für verschiedene Mitglieder dieses Teams unterschiedliche Zugriffsrechte auf verschiedene Fragmente der Produktion von technologischen Prozessen bereit und unterstützt die Arbeit Manager für die Leitung eines Teams von Entwicklern. Programmiertechnische Werkzeugsysteme sind große und teure Softwaresysteme, die irgendwie durch ihre Werkzeugüberlastung gerechtfertigt sind. Daher wird das darin enthaltene Tool-Set unter Berücksichtigung der Bedürfnisse des Fachgebiets, der verwendeten Sprachen und der gewählten Programmiertechnologie sorgfältig ausgewählt.

Unter Berücksichtigung der diskutierten Eigenschaften instrumenteller Systeme der Programmiertechnik lassen sich drei ihrer Hauptkomponenten unterscheiden:

  • Repository,
  • Werkzeug,
  • Schnittstellen.

Werkzeug- eine Reihe von Tools, die die Fähigkeiten definieren, die das System dem Entwicklungsteam zur Verfügung stellt. Normalerweise ist diese Menge offen und strukturiert. Zusätzlich zum Mindestsatz ( eingebaute Werkzeuge), es enthält die Mittel seiner Erweiterung ( importierte Instrumente). Darüber hinaus besteht es aufgrund der Integration über Aktionen aus einem gemeinsamen Teil aller Tools ( Kerne) und strukturelle (manchmal hierarchisch verwandte) Werkzeugklassen.

Schnittstellenunterteilt in Benutzer und System. Brauch Die Schnittstelle bietet Entwicklern Zugriff auf das Toolkit. Es ist implementiert Hülse Systeme. Systemisch Schnittstellen ermöglichen die Interaktion zwischen Werkzeugen und ihren gemeinsamen Teilen. Systemschnittstellen zeichnen sich als Architekturkomponenten durch die Offenheit des Systems aus - sie müssen von neuen ( importiert) Tools, die im System enthalten sind.

Die allgemeinste Architektur instrumenteller Systeme der Programmiertechnik ist in Abb. 16.4.


Reis. 16.4. Allgemeine Architektur instrumenteller Systeme der Programmiertechnik.

Es gibt zwei Klassen von programmtechnischen Werkzeugsystemen: projektunterstützende Werkzeugsysteme und sprachabhängige Werkzeugsysteme.

Werkzeugsystem zur Projektunterstützung - dies ist ein offenes System, das nach entsprechender Erweiterung mit an der gewählten Sprache orientierten Softwaretools die Entwicklung von PS in verschiedenen Programmiersprachen unterstützen kann. Der Werkzeugsatz eines solchen Systems unterstützt die Entwicklung der PS und enthält auch von der Programmiersprache unabhängige Werkzeuge, die die Entwicklung der PS unterstützen (Text- und grafischer Editor, Berichtsgeneratoren usw.). Darüber hinaus enthält es Systemerweiterungstools. Kernstück eines solchen Systems ist insbesondere der Zugriff auf das Repository.

Sprachabhängiges Werkzeugsystem - Dies ist ein System zur Unterstützung der Entwicklung von Software in einer beliebigen Programmiersprache, das im Wesentlichen die Besonderheiten dieser Sprache bei der Organisation seiner Arbeit verwendet. Diese Besonderheit kann sich sowohl auf die Fähigkeiten des Kernels (einschließlich der Struktur des Repositorys) als auch auf die Anforderungen an die Shell und die Tools auswirken. Ein Beispiel für ein solches System ist die Ada Programming Support Environment (APSE).

7.1. Tools zur Softwareentwicklung

Tool-Software (Software-Tools) - Software, die im Zuge der Entwicklung, Korrektur oder Entwicklung anderer Programme verwendet wird:

Editoren, Compiler, Debugger, Systemhilfsprogramme, Grafikpakete etc.

Dazu gehören Programmiersprachen, integrierte Programmentwicklungsumgebungen, CASE-Systeme usw.

7.1.2. Auswahl einer Programmiersprache

Die derzeit existierenden Programmiersprachen lassen sich in folgende Gruppen einteilen:

Universelle Hochsprachen;

Spezialisierte Sprachen für Softwareentwickler;

Spezialisierte Benutzersprachen;

Sprachen niedriges Niveau.

In der Gruppe der universellen Hochsprachen ist heute die Sprache C++ unangefochtener Spitzenreiter. In der Tat hat es eine Reihe von Vorteilen:

Skalierbarkeit. In der Sprache C++ werden Programme für eine Vielzahl von Plattformen und Systemen entwickelt;

Die Fähigkeit, auf niedrigem Niveau mit Speicher, Adressen, Ports zu arbeiten, was bei unvorsichtiger Verwendung leicht zum Nachteil werden kann;

C++ hat einen mächtigen Präprozessor, der von C geerbt wurde, aber wie jedes andere mächtige Werkzeug muss er mit Vorsicht verwendet werden;

Fähigkeit, verallgemeinerte Algorithmen für zu erstellen verschiedene Typen Daten, deren Spezialisierung und Berechnungen bei der Erstellung anhand von Vorlagen.

Gleichzeitig hat die Sprache C++ eine Reihe von erheblichen Nachteilen:

Das Verbinden der Schnittstelle eines externen Moduls durch das Einfügen einer Header-Datei (#include) durch den Präprozessor verlangsamt die Kompilierung erheblich, wenn eine große Anzahl von Modulen eingebunden wird;

Fehlende Datentypinformationen zur Kompilierzeit;

Schwierigkeit zu lernen und zu kompilieren;

Einige Typkonvertierungen sind nicht intuitiv. Insbesondere die Operation mit vorzeichenlosen und vorzeichenbehafteten Zahlen erzeugt ein vorzeichenloses Ergebnis.

Für C++ gibt es eine große Anzahl von Klassenbibliotheken, die das Erstellen einer Benutzeroberfläche, Client-Server-Anwendungen, das Arbeiten mit Datenbanken usw. unterstützen.

Daher gibt es derzeit keine Alternative zu C++. Für sekundäre Projekte wird manchmal Visual Basic verwendet. Die Java-Sprache wurde als Alternative zu Basic in Betracht gezogen, jedoch aufgrund des Fehlens eines Visuals

Mittel zur Entwicklung von Formen, bleibt es jedoch von geringem Nutzen.

Modernes Object Pascal, wie Pascal, das Mitte der 70er Jahre des 20. Jahrhunderts von N. Wirth vorgeschlagen wurde, bleibt aufgrund seiner Eigenschaften am attraktivsten für die Vermittlung der Grundlagen der Programmierung

Einfachheit, Strukturiertheit und Erkennung einer großen Anzahl nicht nur syntaktischer, sondern auch semantischer Fehler durch den Compiler.

Heute, anders als in den 1960er Jahren, Programmiersprachen werden selten erstellt. In den letzten 15 Jahren sind nur zwei weit verbreitete Neuheiten zu verzeichnen - dies ist Java (Sun Microsystems, 1995), das vor allem aufgrund der Technologie seiner Verwendung im Internet und der Entstehung eines solchen Konzepts populär geworden ist die Java Virtual Machine und C# (Microsoft, 2000), basierend auf C++.

Der Schöpfer der Sprache ist Microsoft-Mitarbeiter Andreas Hejlsberg. Er wurde in der Welt der Programmierer berühmt, lange bevor er zu Microsoft kam. Hejlsberg gehörte zu den führenden

Entwickler einer der beliebtesten Entwicklungsumgebungen - Delphi. Bei Microsoft half er bei der Erstellung Java-Versionen- J++, er hat also viel Erfahrung im Schreiben von Sprachen und Programmierumgebungen. Wie Andreas Hejlsberg selbst feststellte, wurde C# als Komponentenprogrammiersprache entwickelt, und dies ist einer der Hauptvorteile der Sprache, die auf die Möglichkeit der Wiederverwendung der erstellten Komponenten abzielt.

Weitere Vorteile der Sprache C#:

Es behält die besten Eigenschaften der beliebten Programmiersprachen C/C++, auf denen es basiert. Insofern wird Programmierern der Umstieg von C++ auf C# erleichtert;

Es ist einfacher und zuverlässiger als C++. Einfachheit und Zuverlässigkeit sind hauptsächlich darauf zurückzuführen, dass C# zwar erlaubt ist, aber solche gefährlichen Funktionen von C ++ nicht fördert.

wie Zeiger, Adressierung, Dereferenzierung, Adressarithmetik;

Ist eine vollständig objektorientierte Sprache, in der sogar die in die Sprache eingebauten Typen durch Klassen dargestellt werden;

Implementiert Vererbungs- und Universalisierungsfunktionen;

Berücksichtigt alle Features von Framework .Net, da C# parallel zu dieser Umgebung erstellt wurde;

Mit dem .Net Framework, das auf dem Betriebssystem aufbaut, erhalten C#-Programmierer die gleichen Vorteile wie bei der Arbeit mit einer virtuellen Maschine

Java-Programmierer. Die Codeeffizienz wird sogar verbessert, da die CLR-Laufzeit ein Compiler für Zwischensprachen ist, während

die Java Virtual Machine ist der Bytecode-Interpreter;

Eine leistungsstarke Framework-Bibliothek unterstützt die bequeme Erstellung verschiedener Arten von C#-Anwendungen, sodass Sie auf einfache Weise Webdienste und andere Arten von Komponenten erstellen können.

es reicht aus, Informationen einfach in der Datenbank und anderen Datenspeichern zu speichern und abzurufen;

Es ist eine Quelle für zuverlässigen und effizienten Code.

Neben den oben beschriebenen Sprachen gehören auch Modula, Ada, COBOL, FORTRAN und einige andere zur Gruppe der Universalsprachen. Jede der oben genannten Sprachen hat ihre eigenen Merkmale und dementsprechend ihren eigenen Anwendungsbereich. Derzeit werden universelle Programmiersprachen in verschiedenen Bereichen der menschlichen Tätigkeit verwendet, wie zum Beispiel:

Wissenschaftliches Rechnen (Sprachen C++, FORTRAN, Java);

Systemprogrammierung (Sprachen C++, Java);

Informationsverarbeitung (Sprachen C++, COBOL, Java);

Künstliche Intelligenz (LISP, Prolog);

Verlagswesen (Postscript, TeX);

Remote-Informationsverarbeitung (Perl, PHP, Java, C++);

Beschreibung der Dokumente (HTML, XML).

Im Laufe der Zeit haben sich einige Sprachen entwickelt, neue Funktionen erhalten und sind gefragt geblieben, andere haben an Relevanz verloren und sind heute bestenfalls von rein theoretischem Interesse (Focal, PL / 1 usw.). Dies ist im Wesentlichen auf folgende Faktoren zurückzuführen:

Verfügbarkeit einer Programmierumgebung, die die Entwicklung von Anwendungen in einer bestimmten Programmiersprache unterstützt;

Einfache Wartung und Testen von Programmen;

Die Kosten für die Entwicklung mit einer bestimmten Programmiersprache;

Klarheit und Orthogonalität von Sprachkonstruktionen;

Anwendung eines objektorientierten Ansatzes.

Spezialisierte Entwicklersprachen werden verwendet, um bestimmte Arten von Software zu erstellen. Sie beinhalten:

Datenbanksprachen;

Sprachen zum Erstellen von Netzwerkanwendungen;

Sprachen zum Erstellen von Systemen künstlicher Intelligenz usw.

Spezialisierte Benutzersprachen sind in der Regel Teil professioneller Benutzerumgebungen, eng fokussiert und werden von Softwareentwicklern nicht verwendet.

Low-Level-Sprachen ermöglichen die Programmierung fast auf der Ebene von Maschinenbefehlen. Gleichzeitig erhalten sie beides zeitlich optimal

Ausführung und in Bezug auf die für das Programm benötigte Speichermenge. Der Nachteil von ihnen ist, dass sie die Prinzipien der strukturierten Programmierung nicht unterstützen.

Heutzutage verwenden Sprachen vom Typ Assemblersprache normalerweise:

Beim Schreiben vergleichsweise einfache Programme, kontaktieren technische Mittel, wie Treiber;

In Form von Einfügungen in Programme in Hochsprachen beispielsweise zur Beschleunigung der Datentransformation in Schleifen mit vielen Wiederholungen.

Die Wahl der Programmiersprache wird in größerem Maße von der Erfahrung des Entwicklers, den Anforderungen der entwicklungsführenden Organisation oder einfach einer etablierten Meinung bestimmt.

7.7.3. Auswahl einer Programmierumgebung

Eine integrierte Softwareentwicklungsumgebung ist ein System Software-Tools Wird von Programmierern zur Entwicklung von Software verwendet.

Typischerweise enthält eine Entwicklungsumgebung einen Texteditor, einen Compiler und/oder Interpreter, einen Linker, einen Debugger und ein Hilfesystem. Enthält manchmal auch ein Versionskontrollsystem und verschiedene Tools, um den Aufbau einer grafischen Benutzeroberfläche zu vereinfachen.

Viele moderne Entwicklungsumgebungen enthalten auch einen Objektinspektor, einen Klassenbrowser und ein Klassenhierarchiediagramm, die für die objektorientierte Softwareentwicklung verwendet werden.

Normalerweise ist die Entwicklungsumgebung für eine bestimmte Programmiersprache wie Visual Basic oder Deiphi, aber es gibt Entwicklungsumgebungen für mehrere Sprachen wie Eclipse oder Microsoft Visual Studio.

Beispiele für Entwicklungsumgebungen sind Turbo Pascal, Borland C++, GNU Toolchain, DrPython.

In letzter Zeit haben sich mit der Entwicklung der objektorientierten Programmierung die zuvor erwähnten visuellen Programmierumgebungen weit verbreitet, in

in denen die gängigsten Blöcke des Programmcodes als grafische Objekte dargestellt werden.

Die am häufigsten verwendeten visuellen Umgebungen sind Delphi, C++ Builder von Borland (Inprise Corporation), Visual C++, Visual Basic von Microsoft, Visual Ada von IBM usw.

Die .NET Framework-Technologie, die von Microsoft als Plattform zum Erstellen sowohl herkömmlicher Programme als auch von Webanwendungen vorgeschlagen wird, erfreut sich heutzutage großer Beliebtheit. Der Hauptvorteil von .NET ist die Kompatibilität verschiedener Dienste, die in verschiedenen Sprachen geschrieben sind.

Beispielsweise könnte ein in C++ für .NET geschriebener Dienst auf eine Klassenmethode aus einer in Delphi geschriebenen Bibliothek zugreifen; In C# können Sie eine Klasse schreiben, die von einer in Visual Basic .NET geschriebenen Klasse erbt, und eine Ausnahme, die von einer in C# geschriebenen Methode ausgelöst wird, kann in Delphi abgefangen und behandelt werden.

Wie bei der Wahl einer Programmiersprache wird die Wahl einer Programmierumgebung durch die Art des Projekts, die Gewohnheiten und Fähigkeiten des Entwicklers, die Trends der Zeit, die Anforderungen des Kunden und einfach die öffentliche Meinung bestimmt : „Jede solche Entwicklung sollte in der Umwelt durchgeführt werden ...

1. Softwareentwicklungstools. Bei der Entwicklung von Softwarewerkzeugen wird bis zu einem gewissen Grad Computerunterstützung für die Entwicklung von Softwaresystemen verwendet. Dies wird dadurch erreicht, dass zumindest einige Programmdokumente der PS (in erster Linie Programme) auf Computerdatenträgern (z. B. Disketten) präsentiert werden und dem PS-Entwickler im Computer enthaltene spezielle PS oder spezielle Geräte zur Verfügung gestellt werden, die für eine beliebige Verarbeitung solcher Dokumente erstellt wurden . Als solch ein spezielles PS können Sie einen Compiler aus einer beliebigen Programmiersprache angeben.

Der Compiler entlastet den PS-Entwickler von der Notwendigkeit, Programme in der Sprache des Computers zu schreiben, die für den Entwickler bestimmt ist. PS wäre extrem umständlich – stattdessen schreibt er Programme in einer für ihn bequemen Programmiersprache, die der entsprechende Compiler automatisch in die Sprache des Computers übersetzt. Als spezielles Gerät, das den Entwicklungsprozess eines PS unterstützt, kann als Emulator für jede Sprache dienen. Der Emulator ermöglicht es Ihnen, Programme in einer anderen Sprache als der Sprache des Computers auszuführen (zu interpretieren), der die Entwicklung des PS unterstützt, beispielsweise in der Sprache des Computers, für den dieses Programm bestimmt ist. Ein PS, das die Entwicklung anderer PS unterstützen soll, wird als Software-Entwicklungstool für das PS bezeichnet, und ein Computergerät, das speziell zur Unterstützung der Entwicklung eines PS ausgelegt ist, wird als Hardware-Entwicklungstool für das PS bezeichnet.

PS-Entwicklungswerkzeuge können während des gesamten Lebenszyklus des PS verwendet werden, um mit verschiedenen Programmdokumenten zu arbeiten. So kann ein Texteditor verwendet werden, um fast jedes Programmdokument zu entwickeln. Aus Sicht der Funktionen, die die Werkzeuge bei der Entwicklung der Software erfüllen, lassen sie sich in die folgenden vier Gruppen einteilen: Editoren, Analysatoren, Konverter, Werkzeuge, die den Programmausführungsprozess unterstützen.

Redakteure unterstützen die Gestaltung (Gestaltung) bestimmter Programmdokumente in verschiedenen Phasen des Lebenszyklus. Wie bereits erwähnt, können Sie dazu eine Art universellen Texteditor verwenden. Spezialisierte Redakteure können jedoch stärkere Unterstützung leisten: Jeder Dokumenttyp hat seinen eigenen Editor. Insbesondere in frühen Phasen der Entwicklung lassen sich Dokumente umfassend nutzen grafische Hilfsmittel Beschreibungen (Diagramme, Diagramme usw.). In solchen Fällen können grafische Editoren sehr hilfreich sein. Beim Programmieren (Codieren) kann es sinnvoller sein, anstelle eines Texteditors einen syntaktisch gesteuerten Editor zu verwenden, der sich an der verwendeten Programmiersprache orientiert. Analysatoren führen entweder eine statische Verarbeitung von Dokumenten durch, führen verschiedene Arten ihrer Kontrolle durch, identifizieren bestimmte Eigenschaften von ihnen und sammeln statistische Daten (z. B. Überprüfung der Übereinstimmung von Dokumenten mit bestimmten Standards) oder eine dynamische Analyse von Programmen (z um die Verteilung der Programmlaufzeit nach Programmmodulen zu identifizieren). Mit Konvertern können Sie Dokumente automatisch in eine andere Präsentationsform bringen (z. B. Formatierer) oder ein Dokument eines Typs in ein Dokument eines anderen Typs (z. B. Konverter oder Compiler) übersetzen, ein Dokument aus separaten Teilen synthetisieren usw.

Werkzeuge, die den Prozess der Programmausführung unterstützen, ermöglichen es, Beschreibungen von Prozessen oder deren Einzelteilen, die in einer anderen Form als Maschinencode vorliegen, oder mit Maschinencode auf einem Computer auszuführen Zusatzfunktionen seine Deutung. Ein Beispiel für ein solches Werkzeug ist der Code-Emulator eines anderen Computers. Auch verschiedene Debugger sollten in dieser Gruppe von Werkzeugen enthalten sein. Im Wesentlichen enthält jedes Programmiersystem ein Runtime-Software-Subsystem, das die typischsten Programmfragmente für die Programmiersprache ausführt und eine Standardreaktion auf Ausnahmen bereitstellt, die während der Ausführung von Programmen auftreten (wir werden ein solches Subsystem Executive Support nennen) – auch sein kann als Werkzeug für diese Gruppen betrachtet.

2. Werkzeugumgebungen für die Entwicklung und Wartung von Software. Gegenwärtig sind jedem Programmiersystem nicht separate Tools (zB ein Compiler) zugeordnet, sondern ein logisch zusammengehöriger Satz von Software- und Hardware-Tools, die die Entwicklung und Wartung von Softwaresystemen weiter unterstützen gegebene Sprache Programmierung oder konzentriert sich auf einen bestimmten Themenbereich. Eine solche Menge wird als Instrumentenumgebung für die Entwicklung und Wartung des PS bezeichnet. Solche Werkzeugumgebungen zeichnen sich einerseits durch die Verwendung von Software- und Hardwarewerkzeugen und andererseits durch eine gewisse Orientierung entweder an einer bestimmten Programmiersprache oder an einem bestimmten Fachgebiet aus. Die Toolumgebung muss nicht auf dem Rechner funktionieren, auf dem das mit ihrer Hilfe entwickelte PS zum Einsatz kommt. Oft ist eine solche Kombination sehr praktisch (wenn es nur die Leistung des verwendeten Computers zulässt): Es muss nicht mit Computern unterschiedlicher Art umgegangen werden, Komponenten der Toolumgebung selbst können in das entwickelte PS aufgenommen werden.

Es gibt drei Hauptklassen von Werkzeugumgebungen für die Entwicklung und Pflege der PS-Programmierumgebung, Arbeitsplätze der Computertechnik, Werkzeugsysteme der Programmiertechnik. Die Programmierumgebung soll hauptsächlich die Prozesse des Programmierens (Codieren), Testens und Debuggens der PS unterstützen. Der Arbeitsplatz der Computertechnologie konzentriert sich auf die Unterstützung der frühen Phasen der Entwicklung von PS (Spezifikationen) und die automatische Generierung von Programmen gemäß Spezifikationen. Das Werkzeugsystem der Programmiertechnik ist darauf ausgelegt, alle Entwicklungs- und Pflegeprozesse über den gesamten Lebenszyklus der Software hinweg zu unterstützen und ist auf die gemeinsame Entwicklung von Groß und Klein ausgerichtet Softwaresysteme mit langem Lebenszyklus.

3. Programmierwerkzeugumgebungen enthalten zunächst einen Texteditor, mit dem Sie Programme in einer bestimmten Programmiersprache entwerfen können, Werkzeuge, mit denen Sie Programme in dieser Sprache kompilieren oder interpretieren sowie die resultierenden Programme testen und debuggen können. Darüber hinaus kann es weitere Tools geben, beispielsweise zur statischen oder dynamischen Programmanalyse. Diese Tools interagieren über gewöhnliche Dateien unter Verwendung von Standardfunktionen miteinander. Dateisystem. Es gibt die folgenden Klassen von Umgebungen für Programmierwerkzeuge: Umgebungen allgemeiner Zweck, sprachorientierte Umgebungen.

Allzweck-Programmierumgebungen enthalten eine Reihe von Softwaretools, die die Entwicklung von Programmen in verschiedenen Programmiersprachen unterstützen (z. B. einen Texteditor, einen Linker oder einen Interpreter für die Sprache des Zielcomputers) und sind normalerweise eine Erweiterung von die Fähigkeiten des verwendeten Betriebssystems. Um in einer solchen Umgebung in einer beliebigen Programmiersprache zu programmieren, benötigen Sie zusätzliche Werkzeuge, die sich an dieser Sprache orientieren (z. B. einen Compiler). . . Klassifizierung von Programmierumgebungen

4. Das Konzept der Computertechnologie für die Softwareentwicklung und ihre Arbeitsplätze. Es gibt einige Schwierigkeiten bei der Entwicklung einer strengen Definition der CASE-Technologie (Computertechnologie für die Entwicklung von PS). CASE ist eine Abkürzung für das englische Computer-Aided Software Engineering (Computer. Assisted Programming Engineering). Aber ohne die Hilfe (Unterstützung) eines Computers werden PSs schon lange nicht mehr entwickelt (zumindest ein Compiler wird verwendet). Tatsächlich wird diesem Begriff eine engere (besondere) Bedeutung beigemessen, die allmählich verwischt wird (wie es immer geschieht, wenn ein Begriff keine strenge Definition hat). CASE wurde zunächst als Engineering der frühen Phasen der Softwareentwicklung (Definition von Anforderungen, Entwicklung einer externen Beschreibung und Architektur des PS) unter Verwendung von Softwareunterstützung (Softwaretools) verstanden. Nun kann CASE auch als Engineering des gesamten Lebenszyklus der Software (einschließlich ihrer Wartung) verstanden werden, jedoch nur dann, wenn die Programme teilweise oder vollständig gemäß den erhaltenen Dokumenten in den angegebenen frühen Entwicklungsstadien erstellt werden. Dabei unterscheidet sich die CASE-Technologie grundlegend von der manuellen (traditionellen) Technologie der Softwareentwicklung: Nicht nur der Inhalt technologischer Prozesse hat sich verändert, sondern auch deren Gesamtheit.

Die Computertechnik zur Entwicklung von PS kann derzeit charakterisiert werden durch - den Einsatz von Softwareunterstützung für die Entwicklung grafischer Anforderungen und grafischer Spezifikationen der PS, - automatische Generierung von Programmen in beliebigen Programmiersprachen oder in Maschinencode (teilweise oder vollständig ), - Softwareunterstützung für das Prototyping.

Ein Programmiertechnologie-Werkzeugsystem ist ein integrierter Satz von Software- und Hardwarewerkzeugen, der alle Prozesse der Entwicklung und Wartung großer Softwaresysteme über den gesamten Lebenszyklus innerhalb einer bestimmten Technologie unterstützt. Aus dieser Definition ergeben sich folgende Hauptmerkmale dieser Klasse von Computerunterstützung: · Komplexität, · Fokus auf kollektive Entwicklung, · technologische Sicherheit, · Integration.

Unter Berücksichtigung der diskutierten Eigenschaften instrumenteller Systeme der Programmiertechnik lassen sich drei ihrer Hauptkomponenten unterscheiden: · Entwicklungsdatenbank (Repository), · Werkzeuge, · Schnittstellen.

Repository - ein zentraler Computerspeicher von Informationen im Zusammenhang mit dem Projekt (der Entwicklung) des PS während des gesamten Lebenszyklus. Toolkit – eine Reihe von Tools, die die Fähigkeiten definieren, die das System dem Entwicklungsteam zur Verfügung stellt. Normalerweise ist dieses Set offen: Zusätzlich zum Mindestset (eingebaute Tools) enthält es die Mittel seiner Erweiterung (importierte Tools) und ist strukturiert, bestehend aus einem gemeinsamen Teil aller Tools (dem Kern) und strukturellen (manchmal hierarchisch verwandte) Werkzeugklassen. Schnittstellen sind unterteilt in 1) Benutzer 2) System. Die Benutzerschnittstelle bietet Entwicklern Zugriff auf Tools (Befehlssprache usw.), die von der System-Shell implementiert werden. Systemschnittstellen ermöglichen die Interaktion zwischen Werkzeugen und ihren gemeinsamen Teilen. Systemschnittstellen zeichnen sich als Architekturkomponenten durch die Offenheit des Systems aus - sie müssen von neuen (importierten) Werkzeugen verwendet werden, die in das System aufgenommen werden.

Es gibt zwei Klassen von programmiertechnischen Werkzeugsystemen: 1) projektunterstützende Werkzeugsysteme und 2) sprachabhängige Werkzeugsysteme. Das Projektunterstützungstoolsystem ist ein offenes System, das in der Lage ist, die Entwicklung von Softwareprodukten in unterschiedlichen Programmiersprachen nach entsprechender Erweiterung mit an der gewählten Sprache orientierten Softwaretools zu unterstützen. Ein solches System enthält einen Kern (der insbesondere den Zugriff auf das Repository bereitstellt), eine Reihe von Tools, die das Management (Management) der PS-Entwicklung unterstützen, programmiersprachenunabhängige Tools, die die Entwicklung des PS unterstützen (Text und Grafik Editoren, Reportgeneratoren etc.) sowie Systemerweiterungstools. Ein sprachabhängiges Instrumentalsystem ist ein System zur Unterstützung der Softwareentwicklung in einer beliebigen Programmiersprache, das im Wesentlichen die Besonderheiten dieser Sprache bei der Organisation seiner Arbeit verwendet. Diese Besonderheit kann sich sowohl auf die Fähigkeiten des Kernels (einschließlich der Struktur des Repositorys) als auch auf die Anforderungen an die Shell und die Tools auswirken.

Einheitliche Modellierungssprache UML Most bestehende Methoden Objektorientierte Analyse und Design (OOAD) umfasst sowohl eine Modellierungssprache als auch eine Beschreibung des Modellierungsprozesses. Eine Modellierungssprache ist eine (meist grafische) Notation, die von einer Methode verwendet wird, um Projekte zu beschreiben. Notation ist eine Sammlung von grafischen Objekten, die in Modellen verwendet werden; es ist die Syntax einer Modellierungssprache. Beispielsweise definiert die Klassendiagrammnotation, wie Elemente und Konzepte wie Klasse, Assoziation und Multiplizität dargestellt werden. Ein Prozess ist eine Beschreibung der Schritte, die bei der Entwicklung eines Projekts zu befolgen sind. Die Unified Modeling Language (UML) ist der Nachfolger der in den späten 80er und frühen 90er Jahren entstandenen Generation von OOAP-Methoden.

Die UML ist eine visuelle Modellierungssprache für allgemeine Zwecke, die für die Spezifikation, Visualisierung, Gestaltung und Dokumentation von Softwarekomponenten, Geschäftsprozessen und anderen Systemen entwickelt wurde. Die UML-Sprache ist sowohl ein einfaches als auch ein leistungsfähiges Modellierungswerkzeug, das effektiv verwendet werden kann, um konzeptionelle, logische und grafische Modelle komplexer Systeme verschiedener Art zu erstellen. vorgesehenen Zweck. Die konstruktive Nutzung der UML basiert auf Verständnis allgemeine Grundsätze Modellierung komplexer Systeme und Merkmale des Prozesses des objektorientierten Entwurfs (OOP) im Besonderen. Die Wahl der Ausdrucksmittel zur Modellbildung komplexer Systeme gibt die Aufgaben vor, die mit diesen Modellen gelöst werden können. Gleichzeitig ist eines der Grundprinzipien für die Konstruktion von Modellen komplexer Systeme das Abstraktionsprinzip, das vorschreibt, nur diejenigen Aspekte des entworfenen Systems in das Modell aufzunehmen, die in direktem Zusammenhang mit der Ausführung der Systemfunktionen oder seinem Zweck stehen Zweck. In diesem Fall werden alle kleinen Details weggelassen, um den Prozess der Analyse und Untersuchung des resultierenden Modells nicht übermäßig zu verkomplizieren.

UML enthält einen Standardsatz von Diagrammen und Notationen verschiedener Art. Ein Diagramm in der UML ist Grafische Darstellung eine Menge von Elementen, die meistens als verbundener Graph mit Scheitelpunkten (Entitäten) und Kanten (Beziehungen) dargestellt wird. Diagramme werden gezeichnet, um ein System aus verschiedenen Perspektiven zu visualisieren. Ein Diagramm ist gewissermaßen eine der Projektionen eines Systems. In der Regel, außer in den trivialsten Fällen, geben Diagramme einen komprimierten Überblick über die Elemente, aus denen das System besteht. Dasselbe Element kann in allen Diagrammen vorhanden sein, oder nur in wenigen (die häufigste Option), oder in keinem vorhanden sein (sehr selten). Theoretisch können Diagramme jede Kombination von Entitäten und Beziehungen enthalten. In der Praxis werden jedoch relativ wenige typische Kombinationen verwendet, die den fünf häufigsten Typen entsprechen, die die Architektur eines Softwaresystems ausmachen.

UML unterscheidet folgende Arten von Diagrammen: - Anwendungsfalldiagramme - zur Modellierung der Geschäftsprozesse der Organisation (Systemanforderungen); - Klassendiagramme (Klassendiagramme) - zur Modellierung der statischen Struktur der Systemklassen und der Beziehungen zwischen ihnen. Solche Diagramme zeigen Klassen, Schnittstellen, Objekte und Kollaborationen sowie deren Beziehungen. Bei der Modellierung objektorientierter Systeme wird dieser Diagrammtyp am häufigsten verwendet. Klassendiagramme entsprechen der statischen Sicht auf das System aus gestalterischer Sicht; – Systemverhaltensdiagramme (Verhaltensdiagramme); Interaktionsdiagramme - zum Modellieren des Nachrichtenübermittlungsprozesses zwischen Objekten. - Zustandsdiagramme - zur Modellierung des Verhaltens von Systemobjekten beim Übergang von einem Zustand in einen anderen.

- Aktivitätsdiagramme - zur Modellierung des Verhaltens des Systems innerhalb Verschiedene Optionen Nutzung oder Modellierungsaktivitäten. - Implementierungsdiagramme (Implementierungsdiagramme): Komponentendiagramme (Komponentendiagramme) - zur Modellierung der Hierarchie von Komponenten (Teilsystemen) des Systems; Bereitstellungsdiagramme (Verteilungsdiagramme) - zur Modellierung der physischen Architektur des Systems.

Einführung

Im Prozess der Softwareentwicklung kommt eine Vielzahl der vielseitigsten Software (SW) zum Einsatz. Diese Vorlesung untersucht, wann und was während der Anwendungsentwicklungsphase verwendet wird.

Um ein vollständigeres Bild der Rolle der einzelnen Utility- oder Entwicklungsscheiben im Softwareentwicklungsprozess zu geben, werden alle in dieser Vorlesung behandelten Werkzeuge am Beispiel der Anwendungsentwicklung mit einer ihrer Hochsprachen betrachtet. Der Einfachheit halber lassen sich alle verwendeten Tools in 4 Gruppen einteilen. Schauen wir uns die einzelnen Gruppen genauer an.

Erforderlich

Notwendige Werkzeuge sind solche, ohne die es prinzipiell unmöglich ist, an ausführbaren Code zu kommen; Zu dieser Gruppe gehören:

§ Texteditoren;

§ Compiler und Assembler;

§ Linker oder Editor-Links (Linker);

Oft benutzt

Dies sind Mittel, deren Einsatz im Gegensatz zu den notwendigen vermieden werden kann. Aber ohne sie ist der Entwicklungsprozess sehr schwierig und verlängert sich; Zu den häufig verwendeten Tools gehören:

§ Dienstprogramme für die automatische Zusammenstellung des Projekts;

§ Debugger;

§ Programme zum Erstellen von Installern;

§ Ressourcen-Editoren;

§ Profiler;

§ Versionsunterstützungsprogramme;

§ Programme zum Erstellen von Hilfedateien (Dokumentation).

Spezialisiert

Diese Tools kommen in Ausnahmefällen zum Einsatz, sie lösen eher spezifische Aufgaben:

§ Abhängigkeitsverfolgungsprogramme;

§ Disassembler;

§ Decompiler;

§ Hex-Editoren;

§ Programme zur Verfolgung von Systemaktivitäten und im System auftretenden Änderungen;

§ Prüfprogramme und Container (erstellen Sie eine virtuelle Umgebung für einzelne Programmklassen, in der Sie das Verhalten des Programms untersuchen können);

Integrierte Entwicklungsumgebungen

IDEs enthalten die meisten der oben genannten Programme und ermöglichen es Ihnen, den Prozess der Anwendungserstellung zu vereinfachen. Im Großen und Ganzen ist eine Entwicklungsumgebung ein Programm, das mehrere Tools aus der ersten und zweiten (und manchmal dritten) Gruppe vereint.

In Zukunft werden wir die Hauptvertreter jeder Gruppe genauer kennenlernen und betrachten, wie das alles in einer integrierten Entwicklungsumgebung funktioniert.

KLASSIFIZIERUNG DER WERKZEUGE

THEMA 1 DAS KONZEPT DER WERKZEUGE.

KLASSIFIZIERUNG DER WERKZEUGE.

Werkzeugsystem der Programmiertechnik- ist ein integrierter Satz von Software- und Hardware-Tools, die alle Prozesse der Entwicklung und Wartung großer PS während ihres gesamten Lebenszyklus innerhalb einer bestimmten Technologie unterstützen.

Werkzeugsysteme der Programmiertechnik lassen sich in drei Hauptkomponenten unterteilen:

das Depot

der Werkzeugkasten,

Schnittstellen.

Werkzeug- eine Reihe von Tools, die die Fähigkeiten definieren, die das System dem Entwicklungsteam zur Verfügung stellt. Normalerweise ist diese Menge offen und strukturiert. Zusätzlich zum Mindestsatz ( eingebaute Werkzeuge), es enthält die Mittel seiner Erweiterung ( importierte Instrumente). Darüber hinaus besteht es aufgrund der Integration über Aktionen aus einem gemeinsamen Teil aller Tools ( Kerne) und strukturelle (manchmal hierarchisch verwandte) Werkzeugklassen.

Schnittstellen unterteilt in Benutzer und System. Brauch Die Schnittstelle bietet Entwicklern Zugriff auf das Toolkit. Es ist implementiert Hülse Systeme. Systemisch Schnittstellen ermöglichen die Interaktion zwischen Werkzeugen und ihren gemeinsamen Teilen. Systemschnittstellen zeichnen sich als Architekturkomponenten durch die Offenheit des Systems aus - sie müssen von neuen ( importiert) Tools, die im System enthalten sind.

Die allgemeinste Architektur instrumenteller Systeme der Programmiertechnik ist in Abb.

Reis. Allgemeine Architektur instrumenteller Systeme der Programmiertechnik.

Es gibt zwei Klassen von programmtechnischen Werkzeugsystemen: projektunterstützende Werkzeugsysteme und sprachabhängige Werkzeugsysteme.

Werkzeugsystem zur Projektunterstützung- dies ist ein offenes System, das nach entsprechender Erweiterung mit an der gewählten Sprache orientierten Softwaretools die Entwicklung von PS in verschiedenen Programmiersprachen unterstützen kann. Der Satz von Werkzeugen eines solchen Systems unterstützt die Entwicklung von PS und enthält auch von der Programmiersprache unabhängige Werkzeuge, die die Entwicklung von PS unterstützen (Text- und Grafikeditoren, Berichtsgeneratoren usw.). Darüber hinaus enthält es Systemerweiterungstools. Kernstück eines solchen Systems ist insbesondere der Zugriff auf das Repository.

Sprachabhängiges Werkzeugsystem- Dies ist ein System zur Unterstützung der Entwicklung von Software in einer beliebigen Programmiersprache, das im Wesentlichen die Besonderheiten dieser Sprache bei der Organisation seiner Arbeit verwendet. Diese Besonderheit kann sich sowohl auf die Fähigkeiten des Kernels (einschließlich der Struktur des Repositorys) als auch auf die Anforderungen an die Shell und die Tools auswirken.