none
Softwarearchitektur - Schnittstellen RRS feed

  • Frage

  • Hallo Zusammen,
     
    ich suche Ansätze, wie man gute Softwarearchitektur plant und umsetzt.
     Am besten anhand eines Beispieles.
     
    Ich habe eine Zentrale, Manager, Controller.
     
    Dieser beinhaltet  3 Objekte.Planung UML
     
    Um nun im Manager alles zu behandeln, muss ich Schnittstellen einsetzen, um es sauber  zu trennen.
    Der Vorteil wäre, dass ich dann im Manager die Objekte erzeugen kann und dann nur deren Funktionen sehe,
    wenn ich Schnittstellen verwende. (IntelliSense)
     
    Ich könnte dann n Varianten haben, also von Datenbank, SQL, MySQL, SQL Lite, etc.
     
    Im Manager darf ich dann aber nur die Schnittstellenfunktionen aufrufen.
     
    Sehe ich das so richtig?
    Was will ich mit dem Thread?
    Einfach wie man es plant, korrekt umsetzt, Tests schreibt, evtl. auch die Features von VS2017, Test Menüpunkt korrekt einsetzt. Muss ich wegen jeder Kleinigkeit eine Schnittstelle(Interface) erzeugen?
     
    Vielleicht kennt Ihr ein Beispielprojekt, von der Planung bis zur Umsetzung, step by step. 
    Sicher gibt es Bücher, finde das aber auch zu viel und man kommt auch nicht ans Ziel. Besser finde ich ein gutes Beispiel, um die Vorteile zu erkennen. 
     
    Gruß, Oliver
    Montag, 1. Mai 2017 10:27

Antworten

  • Patentrezept wohl nicht, aber ein systematisches Vorgehen gibt es schon - das gehört dann auch zu den Ausbildungsinhalten in der Softwareentwicklung.

    Zum einen sind da die verschiedenen Analyse Phasen, beginnend mit dem Kundengespräch... etwas später kommst du dann zu den Phasen die auch in UML sämtlich abbildbar sind, wie die Ermittelung der Anwendungsfälle, anschließend die Ermittelung von Verantwortlichkeiten und den dazugehörigen Objekten,... Je nach Komplexität ist da mehr oder weniger zu Analysieren, z. B. auch Datenflüsse.

    Nach den Analyse Phasen folgen dann Designphasen, in denen kommen dann auch Schichtenmodelle und Design Patterns zum tragen. Auch hier gibt es wieder einen Haufen UML-Diagramme um die Ergebnisse abzubilden, ziemlich zum Schluss steht dann wohl ein Klassendiagramm und dann kommt noch Deployment, Wartung.

    Es ist sicher nicht in jedem Fall nötig alle Phasen durchzugehen, das ist dann eine Frage des Einzelfalls. Im Detail beschrieben ist dieses in den genannten Quellen.


    - Gruß Florian

    • Als Antwort markiert O. Stippe Montag, 8. Mai 2017 16:55
    Donnerstag, 4. Mai 2017 08:29
  • Hi Oliver,
    schau die mal die Beiträge im Internet zum Thema "Pflichtenheft" an, z.B. hier ein Muster in Form eines Word-Dokumentes. Fülle jeden Punkt nach bestem Wissen aus und Du hast ein Konzept. Wenn Du in einem Teilbereich nicht weißt, wie man es am besten macht, dann siehe Varianten und Kriterien zur Bewertung der Varianten vor.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert O. Stippe Montag, 8. Mai 2017 16:55
    Freitag, 5. Mai 2017 14:06

Alle Antworten

  • Hallo Oliver,

    deine Frage lässt sich nicht in einem Thread beantworten da es meiner Meinung nach viel zu umfangreich ist. Auch reicht dafür nicht nur ein Buch.

    Es gibt von Microsoft Patterns and Practices die einen ersten einstieg ermöglichen können. Auch wenn ich nicht viel davon halte, will ich die Clean Code Developer nicht unerwähnt lassen. 

    Es führ kein weg um diese vielen Bücher herum. Ein guter Softwareentwickler hat eben ein wichtiges Ziel neues Lernen und dies aus allen möglichen Medien (Bücher, MVA,  andere Videotrainings ) und vor allem aus den eigenen Fehler die man über die Jahre hinweg gemacht hat.

    Ziel ist es seinen eigenen Still zu entwickeln. Denn auch die Softwareentwicklung muss sich weiterentwickeln und wenn wir alle einfach nur das selbe machen, gibt es keine Weiterentwicklung. 

    Deswegen lies alle möglichen Bücher, programmiere so wie Du es für richtig hältst, hinterfrage immer wieder Dich deinen Code und deine Strategie.

    Ein Pattern das für alle Problem gleich gut geeignet ist gibt es nicht



    Gruß, Thomas

    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!

    Icon für UWP


    Montag, 1. Mai 2017 13:33
  • Hallo Oliver,

    ich stimme hier Thomas Wycichowski zu, das Thema solltest Du zunächst mit geeigneter Literatur oder in einer Schulung angehen. Ich könnte dazu eine lange Liste an Büchern aufzählen, aber ich nenne lieber ein paar Autoren: Booch, Fowler, Oestereich, Sneed, Gamma, Helm, Johnson, Vlissides. Detailfragen können sicher im Forum erörtert werden - sollte aber dann der Architektur Zweig sein. Ein Skript zum Thema findest Du auch auf unserer Downloadseite: http://www.pisoftware.de/kostenlose-downloads.aspx

    Zu deinem Entwurf: Dein Entwurf entspricht einem der bekannten Anti-Pattern -> dem Gottobjekt, ein Objekt was alles steuert und über alles andere Bescheid weiß. Die Schnittstellen mögen das etwas entschärfen, aber die Architektur ist trotzdem so aufgebaut. Über dieses und andere Anti-Pattern kannst du weiteres in der Wikipedia finden: Anti-Pattern
    oder in dem Buch Anti Patterns (ISBN 0-471-19713-0) nachlesen.
    Nach dem Studium der Artikel bzw. Bücher dürftest Du ein Gefühl dafür haben, warum die beschriebenen Anti-Pattern nicht genutzt werden sollten.


    - Gruß Florian


    Dienstag, 2. Mai 2017 07:53
  • Hallo Zusammen,
    ja ok. Sicher, meine Software hat halt eine Zentrale, einen Controller, einen Manager der die Fäden
    in der Hand hält. Dieser delegiert und steuert.
    Ok, gibt es ein Videotutorial, der das Spektrum behandelt, Möglichkeiten aufzeigt.
    Am besten wäre einfach ein Beispielprojekt von der Planung bis zur Umsetzung.
    Warum wurde jetzt dieser Weg gemacht, dieses Pattern benutzt. Dass man die Vorteile erkennt.

    Oder nochmals anders, die 3 aufgeführten Schnittstellen in meinem Beispiel.
    Wie würde man das 'richtig' umsetzen?
    Manager

      switch ( state )
      {
      default:
      break;
      case "Workflow1"
      break;
      case "Workflow2"
      break;
      }  
     
    • Datenbank
    • UserInterface
    • Algorithmen

      >Deswegen lies alle möglichen Bücher, programmiere so wie Du es für richtig hältst,

           >hinterfrage immer wieder Dich deinen Code und deine Strategie.

    Ich denke auch, man muss es schrittweise verbessern muss, der Alltag muss ja weitergehen.
    Wie auch immer, vielleicht hat nochmals jemand einen guten Tipp.
    Danke jetzt schon.

    Gruß, Oliver

    • Bearbeitet O. Stippe Dienstag, 2. Mai 2017 17:17 Formatierungsfehler
    Dienstag, 2. Mai 2017 17:00
  • Hallo Oliver,

    es kann keine schritt für schritt Anleitung geben. Da jedes Problem den man sich als Softwareentwickler widmet mehr oder weniger einzigartig ist. Somit ist jeden Lösung des Problems, einzigartig. Die meisten Pattern versuch nur eine grundlegende Struktur in das Projekt zu bringen. Die meisten haben aber eins gemeinsam, Komplexität muss immer verhindert werden. Dein Manager Objekt wird je nach Problem sehr komplex. Damit auch irgendwann nicht mehr gut wartbar. Zumindest für anderen oder Dich nach einigen Monaten.

    Für einen schnellen einstiegt in ein Thema nutze ich Videotrainings. Wenn mir das ganz dann zusagt vertiefe ich mein Wissen mit Büchern zum Thema.

    Hier ein paar Vorschläge:

    Ich würde nie versuchen einem Problem/Aufgabe in irgendein Pattern zu zwängen. Je nach Aufgabe ist ein anderes Pattern nötig. Ich folge nur einem Leitsatz "Alles muss einfach sein und für jeden Verständlich". Daran richte ich meine Architektur, Klassen und Methoden aus

    Ich entwickle grade eine Game Engine auf Basis von XNA/MonoGame. Das ist etwas ganz anderes als eine App zu entwickeln. Somit bedarf es einer ganz anderen Architektur. 

    Ich komme eigentlich aus der Netzwerkadministration, und das wissen das ich dort erlangt habe nutze ich auch in der Softwareentwicklung. 

    Früher war im Netzwerk ein Domain Controller der alle nötige Funktionalität im Netzwerk bereitgestellt hat. Schnell muss man aber feststellen das dieser sehr komplex wurde und bei Fehler das gesamte Netzwerk getroffen war. Eine Beseitigung des Fehler konnte einige Stunden oder auch Tage dauern. Ein austausch des Domian Controller ohne genauer Dokumentation war so gut wie unmöglich. 

    Heute werden Aufgaben auf mehrere Server verteilt und jeder Server hat im Idealfall nur eine Aufgabe.

    So in der Art sollte man auch entwickeln. 


    Gruß, Thomas

    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!

    Icon für UWP



    Dienstag, 2. Mai 2017 19:55
  • Am besten wäre einfach ein Beispielprojekt von der Planung bis zur Umsetzung.

    In den Skripten zum Download finden sich auch zahlreiche Beispiele und Übungen. Die genannten Autoren haben mehrere Bücher zu dem Themen Analyse, Design, Softwareentwurf geschrieben, auch in diesen findest Du Beispiele (z. B. in "Analyse und Design mit der UML 2.5: Objektorientierte Softwareentwicklung") - gibt es auch in gut sortierten Bibliotheken.

    Ich bezweifle das die Analyse ein Manager, Controller oder Zentrale Objekt ergibt.


    - Gruß Florian

    Mittwoch, 3. Mai 2017 07:05
  • Ich bezweifle das die Analyse ein Manager, Controller oder Zentrale Objekt ergibt.


    Hallo Florian,

    ich sagte ja nicht, dass das richtig ist. Deshalb fragte ich ja bei den Experten an.

    Werde mir die Videos mal zu Gemüte führen.

    Businesslayer

    Three layers

    Business Layer Guidelines

    Googelt man, wird man erschlagen. Arbeitet man alles durch, ist es ein Vollzeitjob.

    Was ist richtig, was ist falsch, was ist besser.....

    Grüße,  Oliver

    Mittwoch, 3. Mai 2017 17:18
  • Hi Oliver,
    ein Patentrezept kenne ich auch nicht und kann es mir nicht vorstellen.

    Wichtig ist aus meiner Erfahrung ein Lösungskonzept. Der Aufwand für die Ausarbeitung eines solchen Konzeptes hängt vor allem von der Aufgabenstellung ab: kleine Projekte - geringer Aufwand usw. Wobei unter kleinen Projekten nicht nur der Programmieraufwand zu verstehen ist, sondern vor allem auch ein möglicherweise in der Zukunft voraussehbarer Änderungs- und Erweiterungsaufwand.

    In solch einem Konzept kann auch eine Variantenbetrachtung eingeschlossen werden, z.B. zu möglichen Schichten. Möglich sein kann auch eine Vereinfachung der Realisierung durch Reduzierung des Aufwandes, wenn nicht genügend Kapazitäten für die Realisierung zur Verfügung stehen und es aber Zeitvorgaben gibt. Besonders wichtig in einem solchen Lösungskonzept ist auch die Festlegung von Bewertungskriterien, um zu erkennen: "... was besser ist ...".


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Donnerstag, 4. Mai 2017 04:33
  • Patentrezept wohl nicht, aber ein systematisches Vorgehen gibt es schon - das gehört dann auch zu den Ausbildungsinhalten in der Softwareentwicklung.

    Zum einen sind da die verschiedenen Analyse Phasen, beginnend mit dem Kundengespräch... etwas später kommst du dann zu den Phasen die auch in UML sämtlich abbildbar sind, wie die Ermittelung der Anwendungsfälle, anschließend die Ermittelung von Verantwortlichkeiten und den dazugehörigen Objekten,... Je nach Komplexität ist da mehr oder weniger zu Analysieren, z. B. auch Datenflüsse.

    Nach den Analyse Phasen folgen dann Designphasen, in denen kommen dann auch Schichtenmodelle und Design Patterns zum tragen. Auch hier gibt es wieder einen Haufen UML-Diagramme um die Ergebnisse abzubilden, ziemlich zum Schluss steht dann wohl ein Klassendiagramm und dann kommt noch Deployment, Wartung.

    Es ist sicher nicht in jedem Fall nötig alle Phasen durchzugehen, das ist dann eine Frage des Einzelfalls. Im Detail beschrieben ist dieses in den genannten Quellen.


    - Gruß Florian

    • Als Antwort markiert O. Stippe Montag, 8. Mai 2017 16:55
    Donnerstag, 4. Mai 2017 08:29
  • Wichtig ist aus meiner Erfahrung ein Lösungskonzept. 

    Hallo Peter,

    ja sicher.
      Ich habe ja schon viel Infos, Links bekommen. Nichtsdestotrotz kennst Du ein
      gutes Beispielszenario, was sich empfiehlt einfach mal anzuschauen,
      welche Möglichkeiten es gibt, warum macht man das jetzt so oder so....?
    Wie Du ja sagst, die Praxis macht viel aus.

    Gruß, Oliver

    Donnerstag, 4. Mai 2017 17:07
  • Hi Oliver,
    schau die mal die Beiträge im Internet zum Thema "Pflichtenheft" an, z.B. hier ein Muster in Form eines Word-Dokumentes. Fülle jeden Punkt nach bestem Wissen aus und Du hast ein Konzept. Wenn Du in einem Teilbereich nicht weißt, wie man es am besten macht, dann siehe Varianten und Kriterien zur Bewertung der Varianten vor.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert O. Stippe Montag, 8. Mai 2017 16:55
    Freitag, 5. Mai 2017 14:06