2010-07-29 9 views
12

Es gibt einige Open-Source-Projekte/APIs/Bibliotheken, die wir in unserem Projekt verwenden (Spring, Struts, iBatis etc.) und ich möchte ihr Design und ihre Funktionsweise verstehen intern.Wie versteht man Open-Source-Projekte/Bibliotheken?

Was ist der beste Weg, diese Projekte zu verstehen? Beachten Sie, dass ich diese Bibliotheken bereits in meinem Projekt verwende. Und ich kenne die Input-Output-Interaktion/Konfigurationen für diese Bibliotheken. Was ich nicht verstehe, ist, wie diese APIs/Bibliotheken intern arbeiten.

Die Probleme, die ich konfrontiert ist:

  1. die Einstiegsklasse der Bibliothek zu finden. Gibt es eine Möglichkeit, die Eintragsklasse für die Bibliothek zu kennen - etwas, das die gesamte API kickt?
  2. Tools/Plugins zur Verwendung in Eclipse, um einen Überblick über das Design der Bibliothek zu erhalten. Durch jede Klasse der Bibliothek zu gehen, kann eine sehr entmutigende Aufgabe sein. Gibt es ein Tool, das Sie empfehlen möchten, das die Klassendiagramme der API in Eclipse generieren kann?

Vielen Dank im Voraus!


UPDATE: Ich brauche ein paar Eingänge auf Eclipse-Plugins, die mich in sich einen Überblick/Klassendiagramm der Bibliothek

+3

Für jedermann im Publikum, die Open-Source-Software schreibt; Dokumentieren Sie Ihren Code ist, was es regelmäßig verwendet. Linus Torvalds ist ein höllischer Coder ... aber auch ein höllischer Evangelist und Schriftsteller, weshalb die Welt Linux hat. –

+0

Wie unten erwähnt, müssen Sie verstehen, dass nicht alle Frameworks/Bibliotheken tatsächlich eine Hauptklasse haben. Manchmal liegt das an der Natur der lib und manchmal einfach an schlechtem Design (verrottende Architektur). Die beste Wette für OS-Projekte sind normalerweise die Dokumente und Foren und manchmal auch Bücher. Der Versuch, Tools auf chaotischen Frameworks wie (Beispiel) Hibernate auszuführen, bringt dich nirgendwohin ... –

+0

@Eran, ich meinte die Eintragsklasse nicht die Hauptklasse. Korrigiert meine Frage entsprechend. Vielen Dank. – peakit

Antwort

7

Ich benutze immer die gleiche Strategie dafür: Ich versuche nie, die Codebasis als Ganzes zu "verstehen", und ich versuche normalerweise, dem Anfragefluss zu folgen. Ich lese genug von der Dokumentation, um festzustellen, was notwendig ist, um die Anwendung zu verwenden, und ich lese , dass Code (Halten Sie alle Quellcode in Ihrer IDE geladen).

Zum Beispiel installieren Sie in Struts einen Servlet-Filter in web.xml. Beginnen Sie den Filter zu lesen und folgen Sie dem Pfad, den eine einzelne Anfrage durch Ihren Stapel führt.

Auch für den Frühling gibt es zwei Haupteinstiegspunkte, den Filter und "getBean", die beide sehr früh in der Dokumentation erwähnt werden. Lies diese zwei.

Für beide dieser Fälle werden Sie eine oder zwei Klassen finden, die den „Kern“ des Rahmen realen schnell darstellen. Lies diese wirklich gut und lass die tatsächlichen Anwendungsfälle & deine weitere Erforschung vorantreiben.

Das "Verständnis" einer Open-Source-Bibliothek (oder einer anderen Codebasis) durch den Versuch, alle Teile zu finden, ist normalerweise keine sehr gute Methode, sich diesen Dingen zu nähern, weil sie sonst nirgendwohin führt Viele dieser Dinge enthalten zu viel Code. Wenn ich dem Anforderungsfluss folge, finde ich, dass die Erstellung von Diagrammen auch ziemlich störend sein kann, und neigt dazu Aufmerksamkeit/Fokus von Verständnis abzulenken (und da mein Verständnis schnell zunimmt, sind die meisten von ihnen schon veraltet, bevor sie den Drucker erreichen).

4

Nizza Frage helfen kann !!!, was ich getan habe, speziell in Der Fall von Spring, abgesehen von der Dokumentation und ihren APIs, ist, die Quellen des Projekts an mein Projekt auf Eclipse anzuhängen, so dass ich durch den Quellcode navigieren kann, nicht nur durch die API. Es war sehr hilfreich, besonders im Fall des Projekts Spring-Security gab es einige Konzepte, die ich erst verstehen konnte, als ich den Quellcode inspizierte.

Das ist einer der Vorteile der Verwendung von Open Source-Bibliotheken.

Grüße.

+0

Vielen Dank für Ihre Erfahrungen! Aber, wie man ein Gefühl des Gesamtentwurfs erhält, kann das Befolgen der Klassen, indem man Haltepunkte setzt, schwierig sein ... – peakit

+0

Für den gesamten Entwurf der beste Rat, den ich geben kann, ist, die Projektweb site zu konsultieren und die Projektreferenz heraus zu überprüfen ... wenn Any exists, ich muss zugeben, dass nicht alle Open-Source-Projekte aufgrund ihrer Dokumentation glänzen, besonders wenn es um die Design-Entscheidungen geht, die sie getroffen haben. –

0

Ihre beste Wette für diese drei wäre es, die offizielle Dokumentation zu konsultieren (stellen Sie sicher, dass Sie sich die Version ansehen, die Sie verwenden) oder ein Buch über die Technologie zu bekommen.

0

Die meisten APIs haben keine Klasse mit einer Hauptmethode. Sie laufen auf dem Webserver, der vom Server selbst aufgerufen wird. Wenn sie nicht als eigener Server ausgeführt werden, haben sie keine Hauptmethode.

+0

Von "main" habe ich die Eintragsklasse gemeint, die die meisten Funktionalitäten gebunden hat. – peakit

+0

@peakit: Sie müssen die Dokumente und die Quelle lesen; Jedes Projekt unterscheidet sich erheblich. Sie könnten versuchen und beginnen, indem Sie herausfinden, was die Konfigurationsdateien lädt; das wird zuerst oder nahe zuerst laden, und alles andere wird sich darauf verlassen. –

1

Mit Tools wie Structure101 (http://www.headwaysoftware.com/products/structure101/index.php) und Lattix (http://www.lattix.com/) können Sie Code analysieren und Architekturdiagramme/Abhängigkeitsmatrizen erstellen.

Dies ist nicht gerade Klassendiagramm - das Hauptaugenmerk auf Schichtung ist. Der Einstiegspunkt ist normalerweise die oberste Ebene.

Aber andererseits, wie ich oben angegeben habe, werden Sie bemerken, dass einige Bibliotheken nur ein Durcheinander sind, und diese Werkzeuge werden nicht hilfreich genug sein.

Siehe S101 Online-Demo: http://www.structure101.com/java/ Das ist zum Beispiel der Sonar Projektarchitektur: http://www.structure101.com/java/tracker/sonar/1.11.1/arch.html