Best Practice Programmentwurf?

Ich bin noch nicht so lang dabei (juhu, erster Post!), daher fehlen mir leider noch viele Begriffe. Das macht googlen nicht einfacher.

Zurzeit suche ich nach einer strukturierten Methode, Programme zu entwerfen. Das ist nicht unbedingt Java-spezifisch, sondern trifft vermutlich alle OOP Sachen.

Bisher habe ich je nach Bedarf und Tagesform neue Klassen erstellt, aber die Projekte werden immer größer und es muß da ja eine etwas sortiertere Herangehensweise geben als meine bisherige.

Habt ihr da Vorschläge, nach was man suchen kann oder ein Tutorial?
 

Robat

Top Contributor
Vorher mit Zettel und Stift hinsetzen und sich über das Programm Gedanken machen
- Funktionalität
- Design
- Mittel zur Umsetzung

Oftmals hilft es auch zu versuchen in 2-3 Sätzen aufzuschreiben was das Programm eigentlich können soll (manchmal gar nicht so einfach ;) ) .. hilft vor allem abzugrenzen was das Programm können soll und was nicht.
 
Mit Stift und Zettel und einer ungefähren Idee ist es bisher gelaufen. Ich suche nach dem LevelUp ;)

Vielleicht mal zur Veranschaulichung, am Anfang steht immer eine wilde Idee. Die wird dann übernacht in einen Prototypen geklopft, zumeist schrecklicher Code, in einer oder einigen wenigen Klassen. Funktioniert scheinbar und alle freuen sich und dann wird das tatsächlich benutzt. Dann kommen Wünsche, ob man dieses Feature nicht noch ein wenig aufbohren und jenes grün statt gelb machen könnte. Historisch gewachsen nennt sich das dann und für kleine Sachen ist das auch nicht ganz so schlimm, da geht keiner mehr ran und teilt die "Datenbankzeugs"-Klasse ohne Not in GUI und asynchronen Bereich auf.

Jetzt kommt aber beispielsweise eine Neuimplementierung davon oder ein ganz neues Projekt, da würde ich es gern gleich richtig machen.
 

S3CR3T

Mitglied
Ich bin seit heute hier, da ich kein neuen Beitrag erstellen will, da dieser sich auch gut für meine Frage eignet, stelle ich sie einfach mal hier. Ich habe das selbe Problem, wie AliasAlreadyTaken. Ich verstehe soweit alles, nur wann muss ich interfaces statt Klassen erstellen und warum. Wie sortiere ich die Klassen, in welche packages und wie wähle ich die Namen der packages.
Was spricht für Implementierungen und Vererbungen und warum nicht einfach nur Objekte erstellen.
Wenn ich eine Klasse habe, namens Game, sollte sie Canvas erben und sollte ich Runnable implementieren, sowie es in vielen Tutorials gemacht wird?

Es tut mir leid, wenn die Frage blöd erscheint, jedoch möchte ich mehr über die Architektur von Java erfahren, ich möchte einfach sicherer Klassen, packages, Methoden usw. erstellen.
 

Robat

Top Contributor
Vielleicht mal zur Veranschaulichung, am Anfang steht immer eine wilde Idee. Die wird dann übernacht in einen Prototypen geklopft, zumeist schrecklicher Code, in einer oder einigen wenigen Klassen.
Das klingt aber nicht danach als würde man sich vorher "ausgiebig" Gedanken über den Aufbau / die Funktionalitäten des Programmes machen ;)
Die Idee meines Ratschlages bleibt: Vorher eine ordentliche Struktur + Abhängigkeiten der Klassen überlegen und dann drauf los programmieren .. das erleichtert vieles (auch im Hinblick auf eventuelle Erweiterungen). Wie man diese Vorüberlegungen jetzt macht ist jedem selbst überlassen. Einige Kommilitonen von mir schwören bspw auch auf TaskManagement-Systeme (Bsp: MeisterTask) um ihre Programme zu planen.

@S3CR3T Mach am Besten ein eigenen Post auf .. dein Thema passt nicht wirklich hier rein.
 
Die ausgiebigen Gedanken passieren in der "Nacht des Prototyps" bei einer Menge Kaffee. Grade das ist ja das Problem, jemand setzt sich hin und erstellt per Stift und Zettel einen ungefähren Aufbau, der aber einer Programmerweiterung später nicht standhält.

Meistertask habe ich mir angeschaut, da gehts eher drum, daß man nichts vergißt. Mir fehlt die Herangehensweise beim Programmentwurf, also der Schritt vom Pflichtenheft zum Systemdesign. Genau da fehlen mir aber die Wörter, um von "Ich möchte, daß das Programm XYZ kann" zu "Wir brauchen dazu Klasse ABC und dort drin Methode 123" zu kommen. Klar, es gibt nicht die Alles-glücklich-Methode, es gibt aber doch sicher bessere Methoden als mein bisheriger Ich-schätze-mal-daß-das-so-gehen-könnte-Ansatz.
 

AndiE

Top Contributor
Ich finde, zuerst sollte eine Analyse des Vorhandenen erfolgen. Und zwar grafisch mit UML oder BPMN. Daraus kann man dann schon eine Use-Story mit Use-Cases erstellen. Ab jetzt würde ich erst ein Pflichtenheft erstellen. Als nächstes Werkzeug würde ich ein Design-Pattern nutzen- Zum Anfang vielleicht als MVC-Model oder 3-Schichten-Modell(Ansichtsschicht, Schicht für Geschäftslogik, Datenschicht). Das Nächste wäre dann die Implementierung und der Test. Je nach Ergebnis fängst du evtl. wieder bei der Analyse an. Was ich auch gut finde, ist die Testgetriebene Entwicklung mit Refactoring. Dann macht dein Programm immer was, auch wenn es noch nicht "ausprogrammiert" ist.
 

mrBrown

Super-Moderator
Mitarbeiter
Ich würde auch anfangen mit Domain-Modelle, User-Storys, Use-Cases, CRC-Karten etc., um eine Grundlage zum Arbeiten zu haben.
Den Kern der Anwendung kann man damit recht gut Designen, wenn man sich noch ein bisschen an Domain-Driven-Design orientiert.
Dazu halt an dann SOLID, GRASP etc, zirkuläre Abhängigkeiten vermeiden etc...


Habt ihr denn aktuell schon irgendein Vorgehensmodell? Da solltet ihr mal den Blick in die agile Ecke werfen ;)
Meistertask habe ich mir angeschaut, da gehts eher drum, daß man nichts vergißt.
So ein Kanban-Boards ist ein zentrales Planungs-Element vieler Vorgehensmodelle, das ist keineswegs nur zum Verhindern von Vergessen :p
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Vorgehen bei Programmentwurf Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben