Gibt es allgemeine Regeln oder bewährte Methoden für die Erstellung eines neuen Frameworks?

17

Ich muss mit dem Entwurf und der Entwicklung eines neuen Frameworks beginnen, um mit einem Open-Source-ECM interagieren zu können. Dies beinhaltet ein angepasstes Datenmodell, das Website-Entwicklern die Interaktion mit diesem ECM erleichtert, sodass sie sich nicht um die Details der Knotenmanipulation und andere Details auf niedriger Ebene kümmern müssen. Das sind nur ein paar Klassen und Methoden, die entwickelt werden müssen.

Ich habe einige Zweifel, wie ich mit der Organisation und Abwicklung dieses Projekts umgehen soll: Gibt es einige allgemeine Regeln, Tipps, bewährte Methoden oder etwas, das ich bei der Entwicklung eines solchen Projekts beachten muss?

Ich bin sicher, dass es einen Unterschied zwischen der Entwicklung eines Frameworks oder einer Bibliothek und einer Anwendung gibt.

Andrea Girardi
quelle
Sollen wir davon ausgehen, dass ECM Enterprise Content Management [System] bedeutet?
Mark Canlas
Ja, ich arbeite mit Alfresco
Andrea Girardi

Antworten:

14

Hier sind zunächst meine 2 Regeln zur Vermeidung des Framework-Waste-Syndroms:

  • Das Fehlen eines vorhandenen, das 80% meiner Bedürfnisse abdeckt und erweiterbar ist, um die letzten 20% zu decken
  • Die nahezu Gewissheit, dass ich es wieder verwenden werde, in einer anderen Anwendung

Nachdem Sie diese bestanden haben, überprüfen Sie Folgendes:


quelle
1
Ich würde hinzufügen, dass wenn Sie kein Framework finden, das Ihrer 80/20 Regel entspricht, Sie entweder in einer extrem einzigartigen Domain arbeiten oder Ihre Domain nicht gut genug verstehen.
ElGringoGrande
5

1) Features sollten nur dann zu einem Framework hinzugefügt werden, wenn sie aus dem Arbeitscode extrahiert wurden. Mit anderen Worten, bevor Sie Ihre coole neue Idee zu Ihrem coolen neuen Framework hinzufügen, stellen Sie sicher, dass es tatsächlich einen Mehrwert für eine funktionierende, reale Anwendung darstellt und Wiederholungen reduziert.

2) Dokumentation, Dokumentation, Dokumentation.

3) Dokumentation, Dokumentation, Dokumentation.

Adam Crossland
quelle
3

Schmerzhafte Erfahrungen und viel verschwendeter Aufwand führen zu diesem Rat: Extrahieren oder Refactern eines Frameworks aus funktionierender Software. Erstellen Sie diese Software, und denken Sie daran, dass Sie in Zukunft ein Framework extrahieren möchten, aber erstellen Sie das Framework nicht zuerst.

Dennis S.
quelle
3

Ich würde das Buch Framework Design Guidelines vorschlagen . Es ist ein paar Jahre alt, aber die Prinzipien bleiben wahr. Es enthält eine Vielzahl von Mustern und erklärt die Gründe für Entscheidungen, die Sie beim Erstellen eines Frameworks treffen.

Ryan Hayes
quelle
2

1) Halten Sie sich von Anfang an an gute Konventionen. Stellen Sie sicher, dass Sie eine sehr spezifische Konvention dokumentiert haben. Die besten Frameworks sind diejenigen, die intern konsistent sind.

2) Stellen Sie sicher, dass alles gut dokumentiert ist, von guten Code-Kommentaren bis hin zu Erklärungen der wichtigsten Funktionen, die Sie benötigen und produzieren brauche nur das eine genau dann.

3) Machen Sie sich selbst ein Projekt-Briefing mit dem, was der Rahmen erreichen soll, realistischen Zielen und allgemeinen Prioritäten.

4) Wenn es für Benutzer verfügbar sein soll, stellen Sie sicher, dass eine Form von Support-Prozess / Bug-Tracking vorhanden ist. Es wird Käfer geben, das passiert uns allen, aber wenn Sie es von Anfang an schaffen, wird es Ihnen das Leben leichter machen.

Alles in allem ein ähnlicher Ansatz zum Erstellen von Anwendungen, aber Entwickler sind noch umständlicher als Benutzer, und die besten Frameworks sind diejenigen, die wir aufnehmen, verstehen und die wir nicht bekämpfen müssen.

Nicholas Smith
quelle
2

Ich bin nicht einverstanden mit vielem, was gesagt wurde, und ich habe das Gefühl, dass mehr unerwähnt geblieben ist, also fange ich von vorne an.

Agile Methoden

Setzen Sie während Ihrer Framework-Entwicklung agile Methoden ein, damit Sie sich an Veränderungen anpassen, schnell auf Straßensperren reagieren und ein funktionierendes, qualitativ hochwertiges Endprodukt sicherstellen können. Agile Methoden sind solche, die gemäß dem "Agile Manifest" folgende Prioritäten setzen:

Individuen und Interaktionen über Prozesse und Tools
Arbeits Software über eine umfassende Dokumentation
Zusammenarbeit mit dem Kunden über Vertragsverhandlungen
Reaktion ändern über einen Plan folgenden

Das ist richtig. Ich sagte, Funktionalität ist wichtiger als Dokumentation. Beachten Sie, dass im "Agilen Manifest" erwähnt wird, dass die Prioritäten für die rechte Hand immer noch wichtig sind, nur weniger als die für die linke.

Kommunikation

Wer das Framework erstellt, muss wissen:

  1. Wie es verwendet wird: die Zielanwendung
  2. Welches Problem soll es lösen: das Zielproblem
  3. Wer wird es verwenden: die Zielgruppe

Wenn ein Unternehmen beispielsweise beabsichtigt, eine endgültige Anwendung mit ASP .NET zu entwickeln, wäre es dumm, seinen Programmierern zu sagen, dass sie "dieses Framework erstellen", ohne ihnen die oben genannten Informationen zu erteilen. Wenn die Programmierer die Zielanwendung nicht kennen, können sie sie möglicherweise nicht weborientiert machen. Wenn sie das Problem nicht kennen, können sie ein Framework für einen anderen Zweck erstellen. Wenn sie das Publikum nicht kennen, können sie das Framework in C ++ programmieren. Jeder dieser Umstände würde das resultierende Framework unbrauchbar machen.

Stil

Es ist unnötig zu erwähnen, dass Sie einen Programmierstil / ein Programmierformat festlegen und dabei bleiben müssen.

Das E ist

  1. Modularität : Verwenden Sie Code programmgesteuert und nicht wörtlich.
  2. Effizienz : Ihr Code ist zur Wiederverwendung bestimmt. Etwaige Geschwindigkeitseinbußen werden vervielfacht.
  3. Wartbarkeit : Sie möchten das Framework bearbeiten können, um mehrere Programme zu aktualisieren, ohne diese ändern zu müssen.
  4. Benutzerfreundlichkeit : Können Anwendungen Ihr Framework tatsächlich verwenden, ohne durch die Rahmen zu springen?
  5. Praktikabilität : Erfinden Sie das Rad nicht neu, wenn Sie dies nicht tun müssen. Ihr Framework kann von anderen Frameworks abhängen.
  6. Redundanz : Ausnahmen / Fehler abfangen. Überall. Mit ihnen umgehen. Überall. Vertrauen Sie keinem Code außer dem im lokalen Bereich, um Fehler zu behandeln, selbst wenn Sie wissen, dass dies der Fall ist.
Zenexer
quelle
Willkommen bei P.SE! Ich bin nicht einverstanden mit # 6, Ausnahmen in Ihrem Framework abzufangen. Ich bin der festen Überzeugung, dass das Framework ein absolutes Muss sein sollte, um Ausnahmen zu werfen und es dem Programmierer zu überlassen, das Framework zu verwenden, um sie zu erfassen oder (besser noch) ihren Code neu auszurichten, um die ausnahmefördernde Konformität mit Konventionen zu vermeiden.
Jarrod Nettles
0

Ich bin sicher, dass es einen Unterschied zwischen der Entwicklung eines Frameworks oder einer Bibliothek und einer Anwendung gibt.

Entwicklungsprozesse sind im Wesentlichen gleich. Die Unterschiede können auf Marketing- und Bereitstellungsprobleme zurückzuführen sein, obwohl ich finde, dass die größten Unterschiede normalerweise im Hinblick auf den Projektumfang und die Definition liegen. Denken Sie daran, dass eine Anwendung ein Framework oder eine Bibliothek enthalten oder verwenden kann. Ein Framework kann eine Sammlung von Bibliotheken sein.

Ich habe einige Zweifel, wie ich mit der Organisation und Abwicklung dieses Projekts umgehen soll: Gibt es einige allgemeine Regeln, Tipps, bewährte Methoden oder etwas, das ich bei der Entwicklung eines solchen Projekts beachten muss?

Projektorganisation und -management sind bei jedem Entwicklungsprojekt wieder gleich. Wieder kommt es auf den Anwendungsbereich an. Wenn Sie jedoch ein Framework schreiben, sollten Sie eine klare Vorstellung davon haben, was Sie erreichen möchten, und strenge Entwurfsregeln für die öffentliche Schnittstelle des Frameworks festlegen, um die Konsistenz in Bezug auf die API-Darstellung sicherzustellen. Wenn Sie jedem Entwickler erlauben, sein eigenes Ding zu machen, werden Sie ein kompliziertes Durcheinander und ein sehr unelegantes API-Design haben.

Ich werde der Empfehlung von Ryan Hayes folgen , die Framework Design Guidelines zu lesen , obwohl das Buch selbst auf die Entwicklung von .NET-basierten Frameworks abzielt, da die allgemeinen Hinweise unabhängig von den spezifischen Implementierungstechnologien gelten, die Sie möglicherweise verwenden.

Aus Erfahrung würde ich raten, das klassische YAGNI-Prinzip beizubehalten, indem Sie zuerst die einfachsten öffentlichen Schnittstellen implementieren und dann erweitern, um später mehr Kontrolle und Tiefe zu bieten. Achten Sie jedoch darauf, nützliche Namen zu verwenden, um zu zeigen, warum Methoden oder Klassen erweitert werden. Ich war noch nie ein Fan von dem Hinzufügen von "Ex" oder anderen ähnlichen Suffixen zu Methodennamen oder dem Hinzufügen von Zahlen zu erweiterten Schnittstellendefinitionen. Differenzieren Sie nach Funktionalität, und Ihre Schnittstellen- / Methodennamen sollten klarer und hoffentlich weniger verschleiert und verwirrend sein.

S.Robins
quelle