suche Schnittstellen in c/c++ Code

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • suche Schnittstellen in c/c++ Code

    Hey Freunde der Computerwelt.

    Vielleicht kann mir hier jemand helfen.

    Thema Schnittstellen und spätere Darstellung in UML.

    1. Frage: Wie erkenne ich im Code c/c++ Schnittstellen (externe oder interne)?
    Da es sich um mehrere Systeme handelt, sollen die Schnittstellen zwischen den Systemen herausgefunden und beschrieben werden.


    Ich kenne zwei Möglichkeiten
    1. Über die Headerfiles und Makeup Dateien. (nur wie und was?)
    2. Abgeleitete Klassen (sind das immer dann die Schnittstellen?)

    Code: Es handelt sich um ein paar tausend Seiten, deshalb habe ich mir sogar überlegt ein VBA Skript dafür zu schreiben, das mir die Suche vereinfacht.
    Benötige dringlich Anhaltspunkte und Ideen um Schnittstellen zu ermitteln.

    2. Frage: Wie kann ich aus dem Code -> Komponenten ermitteln, die ich in UML "Komponents" abbilden möchte?

    Eine gute Hilfe für einen bessern Überblick war im Moment der Code Visualiser.
    Ich bin für alles offen? Vielleicht kann es auch anders gelöst werden?



    Vielen Dank im Vorfeld - Watercase

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von watercase ()

  • Hausaufgaben sind normalerweise gut formuliert.. ich hab absolut keine Ahnung was hier verlangt ist.

    Was ist denn deine Definition von Schnittstellen? Du meinst pure virtual Methoden?
    Und was heißt intern/extern? Public/Private?

    C hat jedenfalls keine Objektorientierung und folglich keine Schnittstellen.
    Meinst du auch nur Funktionsprototypen? Aber was hat es für einen Sinn die ausfindig zu machen?

    Worauf zielt das ganze ab? WIllst du ein eigenes UML Tool schreiben? Fremden Code besser verstehen?
  • Danke für die schnelle aw

    Nein ich habe nicht vor das Rad neu zu erfinden.

    Es geht hier um eine Analyse mehrerer Systeme, welche schon sehr alt sind. Das Problem es gibt keine Dok. oder eher mangelhaft.

    Um nun ein Reengineering durchzuführen, müssen die vorhanden Schnittstellen bzw. der Systeme erkannt werden.

    Mit Schnittstellen meine ich somit - bswp. Komponenten, Funktionen die auf andere Komp., Systeme zugreifen (fürs Speicher von Daten auf einer DB, Verteilung von Informationen an andere Systeme zu weiteren Verarbeitung). Es können somit Daten ausgetauscht werden zwischen Anwendung - DB, Client - Server, Server - Server, Client - DB usw.. Die Kommunikation kann über verschiedene Protokolle bspw. über TCP/IP, FDDI oder Smart Sockets usw. oder ggf. ermöglicht werden. Wobei ich hier an der Stelle nicht weis ob dies ein Anhaltpunkt / Mehrwert darstellt.



    Somit kann man die Aufgabestellung ggf. so formulieren.

    1. Wie finden Sie in C und C++ Schnittstellen, die auf andere vorhandene Systeme / Datenbanken zugreifen?

    2. Welche Schnittstellen gibt es?

    3. Zerlegen Sie die einzelnen Systeme in deren Komponenten? (für die Spätere modellierung in UML "Komponents)

    4. Gibt es ein Programm mit dem Schnittstellen schneller erkannt werden können?



    Ich hoffe das ich es jetzt besser erklärt habe?



    Grüße und danke vorab.
  • watercase schrieb:

    kann mir hier niemand sagen wie ich am besten an die Aufgaben herangehe?

    Wie erkenne ich Schnittstellen im Code heraus die ggf. mit exteren Servern kommunzieren?


    Rechner kommunizieren über Sockets.
    Es sollte also reichen den Sourcecode nach Schlüsselwörtern wie "socket", "sock", "sockaddr" usw. zu durchforsten. Wenn du da fündig geworden bist, kannst du dir mal im Detail ansehen, was für Daten versendet werden und inwiefern das Programm eingehende Verbindungen verwaltet und auf eingehende Nachrichten reagiert. Mühsam, aber mir würde neben Portscanner/Packetsniffer nichts anderes einfallen.
  • Vielen Dank für den Rat, gibt es ggf. ein Tool ala Suchfunktion, dass nach Eingabe von Begriffe und Pfad im Sourcecode sucht.?!

    Bei vielen Dateien wäre das eine gute Unterstützung.?

    Frage:

    1. Würde das heißen das in meinem Fall alle Programme und Methoden im Code somit über Socket "die Kommunikationsschnittstelle" auf bspw. die DB, Server, Client zugreifen?

    2. Würde beim Einsatz einer Middelware die Kommunikation über Sockets gehen?

    3. Welche Programmiersprache VBA, C++ usw. würdet ihr empfehlen um das Suchetool ggf. zu programmieren? PS: Aber die Entwicklungsumgebung sollte sich ohne Adminrechte installieren lassen.

    Vielen Dank nochmal
  • watercase schrieb:

    Vielen Dank für den Rat, gibt es ggf. ein Tool ala Suchfunktion, dass nach Eingabe von Begriffe und Pfad im Sourcecode sucht.?!

    Bei vielen Dateien wäre das eine gute Unterstützung.?

    Frage:

    1. Würde das heißen das in meinem Fall alle Programme und Methoden im Code somit über Socket "die Kommunikationsschnittstelle" auf bspw. die DB, Server, Client zugreifen?

    2. Würde beim Einsatz einer Middelware die Kommunikation über Sockets gehen?

    3. Welche Programmiersprache VBA, C++ usw. würdet ihr empfehlen um das Suchetool ggf. zu programmieren? PS: Aber die Entwicklungsumgebung sollte sich ohne Adminrechte installieren lassen.

    Vielen Dank nochmal


    Klinkt alles etwas kurios *g*

    1) Jo, an sich sind Sockets die Kommunikationsschnittstelle. Es kann jedoch sein, dass gewisse APIs dieses verschleiern und du nicht viel zu Gesicht bekommst von Sockets *g*

    2) Jo

    3) Welche Sprache dir auch immer gefällt. Was Adminrechte betrifft ... Kein Plan. Probiers vielleicht mal mit Eclipse.
  • Viele Dank für die AW.

    Dann frage ich mich mal ganz ährlich, wie das Unternehmen machen wenn Sie ein Reengineering durchführen?

    1. Aus Code muss UML erstellt werden um den tatsächlichen Ist-Zustand zu ermitteln - das geschieht in der Analysephase um daraus ein Lastenheft zu erstellen.

    INFO. Geschäftsprozesse werde in Use Case, Aktivtäts- und ggf. Sequentsdiagrammen definiert. Vielleicht wird die DB-Struktur ermittelt. Nur was macht der jähnige der die Schnittstellen analysieren soll?

    2. Gibt es keinen Trick, Programme die aus dem Code die Schnittstellen ermitteln können?

    3. Wenn man die Schnittstellen manuell suchen muss -gibt es konkret Befehle nach den gesucht werden muss um diese zu finden?

    4. Was soll ich jetzt machen? Habe verschiedene Systeme (Applikation Server, Datenbanken) in c/c++ Code vorliegen und soll so die wichtigsten Schnittstellen ermitteln (Client-Server kommunikation, Client-DB, Server-Server) um diese in UML Komponents (interface) darzustellen.



    Was würde ihr mir hier empfehlen was und wie ich dies tun soll?
  • Wenn man ein Projekt schnell übernehmen will, ist man immer auf eine gute Dokumentation angewiesen. Tools die auf Assembler Basis arbeiten sollten recht zuverlässig sein. Vielleicht sind ja Bibliotheken dabei, von denen du den Quellcode gar nicht hast. Ansonsten musst du dir eben viele Breakpoints setzen und die Programme einfach mal benutzen... dann siehst du ja jede Codezeile auf die zugegriffen wird. PS: Willst du deinen doppelten Beitrag nicht löschen? Ich hab die zwei Threads gemerget.
  • Danke für die AW,

    Quellcode vorhanden ca. 200 cpps pro Anwendung, Entwicklungsumgebung unbekannt, Dokumentation mager und ausführen wird schwer. Somit bleibt mir nur noch der Gedankte das mir etwas Tickiges einfallen wird.

    PS: Doppelter Beitrag: ich weis nicht zum einen wie ich diesen lösche zum anderen sehe ich keinen doppelten bei mir??? Kannst mir mal einen Tip geben?