Welchen Stellenwert hat die Vorbereitung durch formalistische architektur heute?

  • C++/CLI

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Welchen Stellenwert hat die Vorbereitung durch formalistische architektur heute?

    Hallo an alle,

    da ja der eine oder andere hier schon sehr viel Erfahrung in der Programmierung hat oder selbst Entwickler ist, wollte ich mal fragen welchen Stellenwert die formalistische architektur heutzutage hat.
    Ich denke da gerade an Sachen wie Zustandsdiagramme, Aktivitätsdiagramme oder auch Klassendiagramme.

    Ab und zu lese ich hier im Forum wie man etwas realisieren kann oder auch nicht. Meistens kommen dann Kodeschnippsel. Bisher habe ich noch kein Richtiges Diagramm gesehen was eine
    formalistische Lösung abbildet. Warum ist das so? Wird in der Realen Welt dies nicht mehr gemacht (z.b. aus Zeit- oder Kostengründen)?

    Gruß
    @MajorOli In der realen Welt gibt es Design-Vorschriften, Design-Werkzeuge, Lastenhefte und wenn man Glück hat Pflichtenhefte. Und dann gibt es noch Testprojekte.
    Diagramme sind was für Manager, die keine Ahnung von der Softwareentwicklung haben.
    Design-Vorschriften legen sowohl fest, wie GUIs auszusehen haben als auch wie Quellcode auszusehen hat.
    Also z.B.:
    • Klassen mit maximal 1000 Zeilen Quellcode ohne Kommentare, Prozeduren mit maximal 100 Zeilen ohne Kommentare, Verschachtelungstiefe, Namensgebung, Format der Header-Kommentare usw.
    • Design-Werkzeuge generieren einmal Diagramme für Manager und zum anderen überwachen sie den gerade geschrieben werdenden Quellcode auf Einhaltung der Design-Regeln.
    • In Lastenheften beschreibt der Kunde oder das Produktmanagement, was er / es will,
    • in Pflichtenheften beschreibt die Softwareentwicklung, was davon wie getan wird und was nicht oder später gemacht wird.
    • Testprojekte kann man automatisch generieren lassen, da wird für jede Klasse, jede Prozedur ein (zunächst leerer) Aufruf generiert, der dann ausgefüllt werden muss.
      Ziel ist, den gesamten Quellcode abzudecken, alle denkbaren Fälle aufzulisten und dann in automatischen Prüfläufen die Tests ablaufen zu lassen.
      Damit wird gesichert, dass beim weiteren Programmieren kein Unsinn verzapft wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Diagramme sind was für Manager, die keine Ahnung von der Softwareentwicklung haben.

    :thumbsup:

    Wobei ich minimal eingrenzen würde: Von SWE im weiteren Sinne (Projektmanagement etc.) haben sie vlt durchaus die Ahnung, und vlt gibts in dem Metier auch sinnvolle Diagramme.
    Aber Code stellt sich am besten selber dar.

    Obwohl: Bei konsequenter Entwicklung nach EBC (Event-based components) ergeben die Komponenten-Diagramme durchaus Sinn.
    Es sind sogar Designer denkbar, mit denen man EBC konziperen könnte, und die dann Rumpf-Klassen generieren können.

    Aber scheints setzt sich EBC leider nicht durch.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hallo,

    also wenn ich das jetzt richtig verstanden habe, dann sind diese UML Diagramme für die Entwicklung eines Kodes eher uninteressant.
    Interessant wären sie dann also nur, wenn z.b. jemand aus einer Fachabteilung eine Idee hat wie was gemacht werden könnte. Damit könnte er also den Entwickler sozusagen seine Idee vorstellen
    da dieser womöglich wenig Ahnung hat, wie das Quelltextseitig auszusehen hat.

    Für Entwickler selbst ist es also wichtiger auf den vorgeschriebenen oder formellen Programmierstil zu achten. Z.b. ob mit Tab oder Leerzeichen eingerückt wird sowie das der Quelltext
    für andere leicht lesbar ist.

    Wenn das so korrekt ist danke ich für eure Hilfe.

    MajorOli schrieb:

    Z.b. ob mit Tab oder Leerzeichen eingerückt wird sowie das der Quelltext für andere leicht lesbar ist.
    naja, das ist unwichtig, weil das kann man im Visualstudio jederzeit so umstellen, wies einem am besten gefällt.
    Nee - Code-Richtlinien sind viel weitergehend, wie Properties ticken sollen, wann man Methoden nimmt, wann Interfaces etc, pp,
    Und alle Richtlinien machen noch immer keinen guten Code, und das ist eben die Haupt-Frage: Wodurch zeichnet sich guter Code aus?
    "Messbare" Richtlinien-Einhaltung ist da nur ein klein Detail, hinzu kommen allerlei Prinzipien und Pattern und sonstige Konzepte.

    Es geistert eine vielbeachtete "Clean-Code"-Kampagne im INet herum - die haben hervorragendes geleistet für den (wohl niemals endeneden) Diskurs über guten Code.

    MajorOli schrieb:

    wenn z.b. jemand aus einer Fachabteilung eine Idee hat wie was gemacht werden könnte.
    Fachabteilung wofür?
    Ein Softwareentwickler lässt sich von "unbeteiligten Dritten" nicht vorschreiben, wie er was zu tun hat. Man schreibt ihm vor, was er tun soll. Den Rest erledigen die Softies dann unter sich, es sei denn, die Maschine, die sie ansteuern sollen, funktioniert nicht.
    Allerdings:
    Es gibt nur zwei Sorten von Softwareentwicklern:
    • überdurchschnittliche Softwareentwickler
      und
    • Spitzen-Softwareentwickler.
    :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich würde sagen es kommt auf die Größe des Unternehmens an.
    Code stellt sich nun mal einem Anforderer nicht am Besten dar.

    Ich kenne es so das von den Fachabteillungen oftmals BPMN Modelle kommen um den Prozess zu beschreiben (Siehe Bizagi). Häufig wird mit Excel ein Form Mock up gemacht.

    Bei einigen Softwarearchitekten ist UML sehr beliebt. Man ist in der Lage etwas zu schaffen in der beide Welten, Anforder und Umsetzer, eine gemeinsame Sicht haben und eine Diskussionsgrundlage. Hier sei mal Sparx Enterprise Architekt erwähnt.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    'RodFromGermany schrieb:

    • überdurchschnittliche Softwareentwickler
      und
    • Spitzen-Softwareentwickler

    Was unterscheidet denn einen Spitzen-Softwareentwickler von einem überdurchschnittlichen Softwareentwickler?
    Am ende zählt sowieso nur ob das Programm fehlerfrei funktioniert. Ich denke mal als Entwickler siehst du immer wieder stellen im Kode die du verbessern oder Optimieren kannst bzw.
    die du anpassen sollst weil sich die Anforderungen ändern.

    'RodFromGermany schrieb:


    Den Rest erledigen die Softies dann unter sich

    Und das sehe ich als falsch. Die Fachabteilung sollte so früh wie möglich bei der Entwicklung mit dabei sein und begleiten. Aber das sieht dann jeder anders.

    MajorOli schrieb:

    Die Fachabteilung sollte so früh wie möglich bei der Entwicklung mit dabei sein und begleiten.
    Wunsch und Wirklichkeit.
    Bei einer einzigen Firma habe ich erlebt, dass eine Entwicklung erst beschrieben und dann exakt so durchgezogen wurde.
    Da wurden sogar (Software-)Fehler, die in einer Prototyp-Software vorhanden waren, mit vollem Wissen in die Produktsoftware übernommen, nur damit die Ergebnisse (Pixel-)identisch sind.
    das Problem ist eigentlich, dass meist bei der Dokumentation gespart wird. So lange dieselben Leute dran arbeiten, ist das kein Problem. Geht jedoch ein alter Mitarbeitr raus und es kommt ein neuer rein, und der findet einen undokumentierten Code vor, dauert das Einarbeiten mehr als doppelt so lange. Ich meine jetzt hier nicht die Bedienungsanleitung, sondern die Kommentare im Code, warum an dieser Stelle dies und jenes gemacht wird.
    Das sieht die Fachabteilung nicht. Die sehen nur den Zeitdruck wegen der Auslieferung des Produkts, nicht aber die Notwendigkeit, das Produkt pflegbar zu halten bzw. zu machen.
    Also:
    Pflichtenheft, da steht drin, was gemacht wird, was nicht gemacht wird (es muss auf jeden einzelnen Punkt im Pflichtenheft eingegangen werden) und warum, und was in eine spätere Version verschoben wird.
    Design-Spezifikation, da steht drin, welche PC-Konfiguration (Betriebssystem, Architektur), welche Entwicklungsumgebung, Framework, erforderliche Hardware, Third-Party-DLLs, ...
    Das ist wichtig, um dann dem neunmalklugen Kunden, der das ganze auf ein anderes System portiert, zu sagen, dass das Produkt (Hard-, Soft- und Firmware) für diese Konfiguration nicht freigegeben ist.
    Hatte ich bereits: Als ich unter Win10 bei einer Kauf-Software Macken entdeckte, sagte man mir, dass diese Software für Win10 nicht freigegeben ist. Dafür sei die (kostenpflichtige) nächste Version zu nehmen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!