Software -Framework

Im Computerprogrammierung, a Software -Framework ist ein Abstraktion in welchem SoftwareDie Bereitstellung generischer Funktionen kann selektiv durch zusätzlichen benutzerbezogenen Code geändert werden, wodurch die anwendungsspezifische Software bereitgestellt wird. Es bietet eine Standardmethode zum Erstellen und Bereitstellen von Anwendungen und ist ein universelles, wiederverwendbares Erstellen Softwareumgebung Das liefert besondere Funktionen als Teil eines größeren Softwareplattform Erleichterung der Entwicklung von Softwareanwendungen, Produkte und Lösungen. Software -Frameworks können Supportprogramme, Compiler, Codebibliotheken, Toolsets und umfassen Anwendungsprogrammierschnittstellen (APIs) das bringt all die verschiedenen zusammen Komponenten Um die Entwicklung von a zu ermöglichen Projekt oder System.

Frameworks weisen wichtige Unterscheidungsmerkmale auf, die sie von normalem Trennen trennen Bibliotheken:

  • Kontrollinversion: In einem Framework, im Gegensatz zu Bibliotheken oder in Standardbenutzeranwendungen, im Gesamtprogramm des Programms Kontrollfluss wird nicht vom Anrufer diktiert, sondern vom Rahmen.[1] Dies wird normalerweise mit dem erreicht Template -Methodenmuster.
  • Standardverhalten: Dies kann mit den invarianten Methoden der Template -Methodenmuster in einer abstrakten Klasse, die im Rahmen bereitgestellt wird.
  • Erweiterbarkeit: Ein Benutzer kann das Framework erweitern - normalerweise durch selektives Überschreiben - oder Programmierer können speziellen Benutzercode hinzufügen, um spezifische Funktionen bereitzustellen. Dies wird normalerweise durch eine Hook -Methode in einer Unterklasse erreicht, die eine Vorlagenmethode in der Superklasse überschreibt.
  • Nicht modifizierbarer Framework-Code: Der Framework-Code soll im Allgemeinen nicht geändert werden, während benutzerfeindliche Erweiterungen akzeptiert werden. Mit anderen Worten, Benutzer können das Framework erweitern, können jedoch den Code nicht ändern.

Begründung

Die Designer von Software-Frameworks möchten Softwareentwicklungen erleichtern, indem Designer und Programmierer ihre Zeit für die Erfüllung der Softwarebedingungen einsetzen, anstatt sich mit den Standarddetails mit niedrigem Niveau der Bereitstellung eines Arbeitssystems zu befassen, wodurch die allgemeine Entwicklungszeit verkürzt werden kann.[2] Zum Beispiel ein Team, das a verwendet Web Framework Um eine Bankwebsite zu entwickeln, kann man sich darauf konzentrieren, Code, das speziell für das Bankgeschäft zu schreiben ist, und nicht auf die Mechanik des Anfragebehandels und der Bearbeitung von Anfragen zu schreiben und Staatsmanagement.

Frameworks tragen häufig zur Größe der Programme bei, ein Phänomen, das bezeichnet wird. “Code aufblähen". Aufgrund von Kundenbedarfsanforderungen enden sowohl konkurrierende als auch komplementäre Rahmenbedürfnisse manchmal in einem Produkt. Aufgrund der Komplexität ihrer APIs kann die beabsichtigte Verkürzung der gesamten Entwicklungszeit aufgrund der Notwendigkeit möglicherweise nicht erreicht werden Verbringen Sie zusätzliche Zeit damit Der speziell geschriebene Code, der den Mitarbeitern des Projekts vertraut ist, behalten Kopien nützlicher Kesselplatten für gemeinsame Anforderungen.

Sobald jedoch ein Rahmen gelernt ist, können zukünftige Projekte schneller und einfacher zu vervollständigen sein. Das Konzept eines Frameworks besteht darin, eine einheitliche Lösung zu erstellen, und mit Vertrautheit sollte die Codeproduktion logisch steigen. Es gibt keine solchen Behauptungen über die Größe des Codes, das schließlich mit dem Ausgangsprodukt gebündelt ist, noch seine relative Effizienz und SUKTIVERSICHT. Die Verwendung einer Bibliothekslösung zieht notwendigerweise Extras und nicht verwendete Fremdgüter ein, es sei denn, die Software ist ein Compiler-Objekt-Linker, das ein enges (kleines, vollständig kontrolliertes und angegebenes) ausführbares Modul erstellt.

Das Problem geht weiter, aber ein Jahrzehnt langer Erfahrung hat gezeigt, dass sich die effektivsten Rahmenbedingungen als diejenigen herausstellen, aus denen sich entwickelt wird Re-Funktion Der gemeinsame Code des Unternehmens, anstatt ein generisches "einheitliches" -Fits-All-Rahmen zu verwenden, das von Dritten für allgemeine Zwecke entwickelt wurde. Ein Beispiel dafür wäre, wie die Benutzeroberfläche in einem solchen Anwendungspaket als Office-Suite ein gemeinsames Aussehen, das Gefühl und die Datenaustauschattribute und -methoden haben, da die einst unterschiedlichen gebündelten Anwendungen zu einer steileren Suite einheitlich werden und kleiner; Die neuere/entwickelte Suite kann ein Produkt sein, das integrale Dienstprogrammbibliotheken und Benutzeroberflächen teilt.

Dieser Trend in der Kontroverse bringt ein wichtiges Problem in Bezug auf Frameworks. Es ist immer noch eher ein Handwerk als eine Wissenschaft, ein Rahmen zu schaffen, das elegant ist, im Vergleich zu einem Problem, das lediglich ein Problem löst. "Software Eleganz"Impliziert Klarheit, SUKILISINESS UND KLEINE MAGE (zusätzliche oder fremde Funktionalität, von denen ein Großteil benutzerdefiniert ist). Für die Frameworks, die beispielsweise Code generieren, würde" Eleganz "die Erstellung von Code implizieren, die sauber und verständlich für a ist Ein vernünftigem sachkundiger Programmierer (und der daher leicht modifizierbar ist) gegenüber einem, der lediglich einen korrekten Code generiert. Das Problem der Eleganz ist, warum relativ wenige Software -Frameworks den Test der Zeit bestanden haben Diejenigen, die sich weiterentwickelt haben, behalten die Legacy -Funktionen, die die endgültige Software aufblöten, die die endgültige Software aufwirken, wenn sie ansonsten ersetzt wurden, wurden parallel zu den neueren Methoden erhalten.

Beispiele

Python Powered.png

Software -Frameworks enthalten in der Regel beträchtliche Haushalts- und Versorgungscode, um die Benutzeranwendungen zu starten, sondern konzentrieren sich im Allgemeinen auf bestimmte Problemdomänen, wie z. B.:

Die Architektur

Laut Pree,[8] Software -Frameworks bestehen aus gefrorene Flecken und Hot Spots. Gefrorene Flecken Definieren Sie die Gesamtarchitektur eines Softwaresystems, dh seine grundlegenden Komponenten und die Beziehungen zwischen ihnen. Diese bleiben in jeder Instanziierung des Anwendungsrahmens unverändert (gefroren). Hot Spots Stellen Sie diejenigen Teile dar, in denen die Programmierer, die das Framework verwenden, ihren eigenen Code hinzufügen, um die Funktionalität für ihr eigenes Projekt hinzuzufügen.

In einem (n objektorientierter Umwelt, ein Rahmen besteht aus abstrakt und Beton Klassen. Instanziierung eines solchen Rahmens besteht aus Komponieren und Unterklasse die vorhandenen Klassen.[9]

Die notwendige Funktionalität kann durch Verwendung der implementiert werden Template -Methodenmuster in welcher gefrorene Flecken sind als invariante Methoden bekannt und die Hot Spots werden als Variante- oder Hakenmethoden bezeichnet. Die invarianten Methoden in der Superklasse bieten ein Standardverhalten, während die Hook -Methoden in jeder Unterklasse ein benutzerdefiniertes Verhalten bieten.

Bei der Entwicklung eines konkreten Softwaresystems mit einem Software -Framework nutzen Entwickler die Hotspots entsprechend den spezifischen Anforderungen und Anforderungen des Systems. Software -Frameworks stützen sich auf die Hollywood -Prinzip: "Rufen Sie uns nicht an, wir rufen Sie an."[10][11] Dies bedeutet, dass die benutzerdefinierten Klassen (z. B. neue Unterklassen) Nachrichten aus den vordefinierten Framework-Klassen empfangen. Entwickler verarbeiten dies normalerweise durch Implementierung Superklasse Abstrakte Methoden.

Siehe auch

Verweise

  1. ^ Riehle, Dirk (2000), Framework -Design: Ein Vorbildungsansatz (PDF), Schweizer Federal Institute of Technology
  2. ^ "Rahmen". Docforge. Archiviert von das Original am 7. Oktober 2018. Abgerufen 15. Dezember 2008.
  3. ^ Vlissides, j m; Linton, M A (1990), "Unidraw: Ein Rahmen für das Erstellen von domänenspezifischen grafischen Herausgebern", ACM -Transaktionen auf Informationssystemen, 8 (3): 237–268, doi:10.1145/98188.98197, S2CID 11248368
  4. ^ Johnson, R. E (1992), "Dokumentieren von Frameworks unter Verwendung von Mustern", Verfahren der Konferenz zu objektorientierten Programmiersystemen Sprachen und Anwendungen, ACM Press: 63–76
  5. ^ Birrer, a; Eierschwiler, T (1993), "Proceedings der Europäischen Konferenz über objektorientierte Programmierung", Rahmenbedingungen im Bereich Finanztechnik: Ein Erfahrungsbericht, Springer-Verlag, S. 21–35
  6. ^ Hill, C; Deluca, C; Balaji, v; Suarez, M; Da Silva, A (2004), "Architektur des Erdsystemmodellierungsrahmens (ESMF)", Computing in Wissenschaft und Ingenieurwesen, 6: 18–28, doi:10.1109/mcise.2004.1255817, S2CID 9311752
  7. ^ Gachet, A (2003), "Software -Frameworks zur Entwicklung von Entscheidungsunterstützungssystemen - eine neue Komponente in der Klassifizierung von DSS -Entwicklungstools", Journal of Decision Systems, 12 (3): 271–281, doi:10.3166/jds.12.271-280, S2CID 29690836
  8. ^ Pree, W (1994), "Meta-Muster: Ein Mittel zum Erfassen des Wesentlichen wiederverwendbaren objektorientierten Designs", Verfahren der 8. Europäischen Konferenz über objektorientierte Programmierung, Vorträge in Informatik, Springer-Verlag, 821: 150–162, Citeseerx 10.1.1.74.7935, doi:10.1007/bfb0052181, ISBN 978-3-540-58202-1
  9. ^ Buschmann, F (1996), Musterorientierte Softwarearchitektur Band 1: Ein System von Mustern. Chichester, Wiley, ISBN 978-0-471-95869-7
  10. ^ Larman, C (2001), Anwenden von UML und Mustern: Eine Einführung in die objektorientierte Analyse und das Design und den einheitlichen Prozess (2. Aufl.), Prentice Hall, ISBN 978-0-13-092569-5
  11. ^ Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Designmuster. Addison-Wesley. ISBN 0-201-63361-2.

Externe Links

  • Die Wörterbuchdefinition von Software -Framework bei wiktionary
  • Medien im Zusammenhang mit Software -Frameworks bei Wikimedia Commons