Ich kriege fuer ein Projekt das wir uebernehmen den Quellcode der schon bestehenden Software. Natuerlich ohne Dokumentation, nur .c und .h Dateien. Normalerweise lese ich mich dann ab der main Funktion Stueck fuer Stueck durch den ganzen Kram durch, bis ich so ungefaehr weiss was da so alles passiert. Das ist nicht gerade meine Lieblingsbeschaeftigung, und zeitraubend ist es auch. Jetzt frag ich mich, gibt es eigenlich auch Software die (zumindest in Teilen) sowas automatisieren kann? Danke schonmal
Enterprise Architekt vielleicht ? Oder mit Eclipse und die Blöcke wegklappen (folding).
Thomas W. schrieb: > Enterprise Architekt vielleicht ? Das hab ich sogar hier. Benutz ich eigenlich wenig bis gar nicht, nur als UML tool ab und zu. Ich weiss das es ein ziemlich umfangreiches Paket ist, aber ich hab mich da noch nicht mit auseinandergesetzt. Hast du vielleicht ein bisschen Starthilfe bezueglich deines Tips? Ich wusste nichtmal das man mit EA code-Dateien einlesen kann > Oder mit Eclipse und die Blöcke wegklappen (folding). Ja, das ist was ich jetzt mache. Bei gut strukturierter Software hilft das ganz gut, wenn aber die meisten Funktionen nur wieder andere anrufen ohne selber was zu machen wirds schnell unuebersichtlich. Auch toll wenn jemand angefangen hat "Vererbung" in C zu machen ohne das irgendwo zu dokumentieren (erstes Element in einem Struct als "Parent Class" benutzen).
http://www.doxygen.org/ Damit kann man auch Code, der ohne spezielle Doxygen-Kommentare vorliegt, ganz OKen Überblick über die Programmstruktur bekommen.
enginerd schrieb: > http://www.doxygen.org/ > > Damit kann man auch Code, der ohne spezielle Doxygen-Kommentare > vorliegt, ganz OKen Überblick über die Programmstruktur bekommen. Hehe, das liegt so vor der Hand das ich da gar nicht dran gedacht hab. Danke dir
https://github.com/CoatiSoftware/Sourcetrail Leider keine Weiterentwicklung mehr; funktioniert aber für C/C++ Code prima.
Matthias schrieb: > Thomas W. schrieb: >> Enterprise Architekt vielleicht ? > Hast du vielleicht ein bisschen Starthilfe bezueglich deines Tips? Soll gehen, Code generieren und einlesen, aber ich hab´s nicht gemacht, es war nur ein Tipp, weil ich wußte das es das Tool gibt. Hier sollte die Architektur und Klassen damit dokumentiert werden, ist aber wieder eingeschlafen. Sorry, kann ich nicht wirklich helfen.
Ist das eine Software, die euer Vertrieb mit den Kunden ausgehandelt hatten? Habe die Erfahrung gemacht, bei so etwas muss man die Sache ganz anders anpacken. Die Meetingprotokolle und Emails durcharbeiten. Erst mal heraus finden, was das System überhaupt machen soll. Wenn du den Programmcode durcharbeitest stolperst du über 2 Probleme. Du glaubst, du hättest das Programm nicht verstanden, weil dir deine Vermutungen unsinnig erscheinen. Und du wendest viel zu viel Zeit für Details von Komponenten auf, die du sowieso komplett ersetzen musst.
Mit GNU clow habe ich vor Jahren mal Call-Graphen erstellt. Ist halt CLI und schnörkellos, kann aber dafür gut in Skripte weiterverarbeitet werden oder im Editor durchsucht werden.
Noch ein Kommentar schrieb: > Ist das eine Software, die euer Vertrieb mit den Kunden ausgehandelt > hatten? Wir uebernehmen fuer einen Kunden ein bereits entwickeltes Produkt. Die Firma die das damals fuer den Kunden gemacht hat war gut in HW, aber relativ unerfahren in SW, vor allem embedded Linux. Was da damals ausgearbeitet wurde hat jahrelang funktioniert und gereicht, aber jetzt muss ein update her, und die Firma hat aus sich selber angegeben das sie sich nicht als kompetent genug sieht um das zu tun - embedded linux ist eben nicht deren Ding. So ist das ganze bei uns gekommen, und die Firma von der wir es uebernehmen hilft auch gern mit. Allerdings weiss das eigentlich keiner mehr genau was da vor 6 Jahren so die Gedankengaenge waren. Und so sieht der Code uebrigens auch aus. Also hier ist nur guter Wille im Spiel von allen Seiten, das moechte ich betonen. > Habe die Erfahrung gemacht, bei so etwas muss man die Sache ganz anders > anpacken. Die Meetingprotokolle und Emails durcharbeiten. Erst mal > heraus finden, was das System überhaupt machen soll. In der Basis weiss ich das, zum Glueck ist es nicht uebermaessig komplex. Aber wenn da drivers via I2C oder SPI arbeiten, dann erwartet man im ersten Moment natuerlich nicht, dass der SPI handler zwar da ist, aber nicht benutzt wird, weil im I2C handler irgendwie mit ner extra Abfrage auf einmal nach SPI verwiesen wird. Ich hab zwar eine Ahnung warum derjenige das damals gemacht hat, aber genau wissen tuts niemand > Wenn du den Programmcode durcharbeitest stolperst du über 2 Probleme. > Du glaubst, du hättest das Programm nicht verstanden, weil dir deine > Vermutungen unsinnig erscheinen. > Und du wendest viel zu viel Zeit für Details von Komponenten auf, die du > sowieso komplett ersetzen musst. Das stimmt - es ist aber schwierig zu verkaufen, denn das system so wie es ist funktioniert ja. Das Argument "manches/vieles/alles muss neu" ist teuer und muss schon unterbaut werden - auch daher eben die Code-Analyse. Re-factoring hat leider den bloeden Nachteil das man (von aussen betrachtet) erstmal am Verschlimmbessern ist, bis der Mehrwert sichtbar wird.
Matthias schrieb: > Allerdings weiss das eigentlich keiner mehr genau was da vor 6 Jahren so > die Gedankengaenge waren. Sieh es vielleicht mal von der Warte: Ob ihr den alten Code beibehaltet oder nicht, ist dem Kunden völlig schnurzpiepegal. Ihn interessiert die Funktionalität. Das was bisher funktioniert hat soll auch weiterhin tun, außerdem soll jetzt neue Funktionalität hinzukommen. Gibt es irgendwo niedergeschriebene Anforderungen? Ein Lastenheft oder Pflichtenheft? Ein Dokument zur Systemarchitektur? Irgendwas?
Um wie viele Zeilen geht es denn? 50.000? Da hat man doch nach ein paar Tagen den Überblick, wie der Kram funktioniert.
Mark B. schrieb: > Sieh es vielleicht mal von der Warte: > Ob ihr den alten Code beibehaltet oder nicht, ist dem Kunden völlig > schnurzpiepegal. Ihn interessiert die Funktionalität. Das was bisher > funktioniert hat soll auch weiterhin tun, außerdem soll jetzt neue > Funktionalität hinzukommen. Rein von der Funktionalitaet stimmt das natuerlich. Allerdings ist "Neu machen" eben teurer, und das muss man dem Kunden schon irgendwie verkaufen koennen. Das "Not invented by me" Syndrom von Programmierern taugt leider nur bedingt als Argument. Der Kunde sieht ja nur: Jetzt funktionierts doch auch, warum soll ich 200 Stunden arbeit bezahlen und hab dann hinterher genau das selbe? Mark B. schrieb: > Gibt es irgendwo niedergeschriebene Anforderungen? Ein Lastenheft oder > Pflichtenheft? Ein Dokument zur Systemarchitektur? Irgendwas? Das waer schoen, aber nein. Allerdings ist das hier auch nicht unbedingt das Thema (obwohl ich die Gedankengaenge als Hilfe sehr zu schaetzen weiss) - die Moeglichkeit, (Fremd)code relativ schnell uebersichtlich und anschaulich zu machen ist aus Prinzip schon interessant. Das kann Code von anderen (Fremd)firmen sein, aber auch 10Jahre alter Code aus dem eigenen Haus von jemandem, der nicht mehr in der Firma arbeitet. Oder einfach nur Code in total anderem Stil. Einer schrieb: > Um wie viele Zeilen geht es denn? 50.000? Da hat man doch nach ein paar > Tagen den Überblick, wie der Kram funktioniert. Stimmt - es geht in diesem Fall um eigentlich nicht so viel Code, vielleicht 10000-12000 Zeilen, mit dazu kopierte Bibliotheken (also noch wieder Fremdcode). Das ganze ist allerdings ganz schoen unuebersichtlich aufgezogen, voll mit auskommentierten Bloecken und schon die Benennung von Objekten haut hinten und vorne nicht hin (die Funktion LEDtest() zB testet nicht das LED-Array auf dem PCB (angesteuert durch led.c/.h) sondern die digitalen Ausgaenge, an denen, pro Ausgang, eine LED den jetztigen Zustand anzeigt). Das ist funktional gesehen noch trivial, gibt aber vielleicht einen Eindruck von der Qualitaet des Codes. Also, das jetztige Projekt war nur der Anstoss des Gedanken ob und wie man (Fremd)code schnell uebersichtlich machen kann. Da waren auch jetzt ein paar Vorschlaege dabei, ich guck mir das im Laufe des Tages Mal an. Vielen Dank auf jeden Fall fuer alle Anregungen und das Mitdenken. Toll
Weisz du welche tools (IDE usw) original benutzt sind ? Weiter ist es gut zu wissen ob es im code auch Unit-tests gibt Gibt eine version-control-system fuer die code ? Meine erfahrung ist da bekommt man oft extra informationen wie die code aufgebaut ist. Buecher wie die "Clean Code" serie geben da gute tips wie man so etwas anfassen soll Patrick aus die Niederlanede
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.