Studium der Wirtschaftsinformatik an der TUM Technischen Universität in München. Berufliche Stationen: Hardwarehersteller in München - Softwarehäuser in München - eigene Firmen in München, Stuttgart und Birmingham/UK- mehrere Bücher zum Programmieren und eCommerce -Lehraufträge an verschiedenen Hochschulen in München, Stuttgart, Frankfurt - Professur an der HFU - Softwareentwickler (Ada/C/C++/C#/PHP/Python/Java) - Berater - Coach - Betriebsystemen (Unix-Portierungen) und Implementierung von eShops (Magento u.a.).
Parallelisierung ist eines der faszinierendsten Themen in der Programmierung! Parallelisierung (oder Threading) ist eines der herausforderndsten Themen in der Programmierung! Was jetzt?
Ehrlich: beides stimmt – eben wie im echten Leben: häufig ist das, was faszinierend ist auch problematisch! Nehmen wir Bergsteigen oder Parachuting. Wer’s ohne Kondition und Training macht, trägt ein hohes Risiko. Aber kommen wir zurück zum Programmieren, zurück zu Java.
ADRELI_1: Die Leser vom ersten Assignmenthaben es erkannt: das Projekt “ADRELI_1_CON” ist ein Ausbau der Erst-Semester-Projekte “Friends” oder “CarLi” (je nach Semester.)
“ADRELI_1” > “Friends” oder “CarLi”
Das Projekt “Adreli_1_COM” (oder kurz “ADRELI_1”) ist umfangreicher als das Erst-Semester-Projekt. Betroffen sind Daten,Algorithmen und die Architektur. Die Erst-Semester-Projekte sind in meinem Fall typische Ein-oder Zwei-Klassen-Architekturen (Basisklasse und manchmal noch eine Ableitung dazu).
Die Philosophie dahinter: das erste Semester kann die Objektorientierung anwenden und eine Ein-Klassen-Lösung mit (meaningfull data und meaningfull methods) als Clean-Code-Lösung ausführen.
Um im zweiten Semester daran anknüpfen zu können, bleibt für das erste Projekt ADRELI_1_CON die Architektur unverändert: eine monolithische Lösung aus ganz wenigen Klassen, naja, genaugenommen aus einer Klasses, getreu dem Prinzip KISS (keep it simple stupid). Ab dem zweiten SPRINT wird sich die Architektur ändern. ADRELI_2 wird einem MVC-Ansatz (in erster Näherung) folgen (model-view-controler).
Aus diesem Grunde ist das Projekt ADRELI_1_CON auch mit einem 2-Wochen–Sprint das kürzeste. Die anderen vier Sprints haben eine Dauer von 3 Wochen.
ADRELI_1-TO-DO
Wie oben angesprochen sind also die Daten,Algorithmen und die Architektur der Erst-Semester-Projekte betroffen. Genau das wird beim nächsten SCRUM Sprint-Planning-Meeting besprochen. Wir machen das in Form eines AKTIVEN PLENUM.
Die WIB-Veranstaltung “Programmieren 2” wurde noch vor einiger Zeit unter der Überschrift “Programmieren und Modellieren 2” an der HFU angeboten – der Anteil an SCRUM ist seit etwa Sommersemester 2005 darin enthalten. „eduSCRUM in PROG_2 ab WS1718“ weiterlesen
Wie Sie schon festgestellt habven: von Projekt zu Projekt werden die Adreli-Projekte umfangreicher, was die Code-Zeilen angeht, kurz LOC genannt (LOC=Lines of Code). Natürlich bauen die Projekte aufeinander auf, so das zu einem gewissen Teil Code-Sequenzen aus dem Vorgängerprojekt mitgenommen werden können, also nur ein gewisses Delta dazukommt, weil wir neue Features und Java-Klassen in das bisherige Projekt einbauen.
Das Semesterprojekt läuft. Wir sprechen Dienstags darüber. Und vorher schon hier und auf YouTube. Primär geht es zunächst mal darum, wie die Aufgabenstellung zu verstehen ist. Wenn das Verständnis nicht stimmt – stimmt in der Folge alles weitere nicht. Das Verständnis-Fundament muss alles andere tragen. Wie eben beim Haus auch: stimmt das Fundament nicht, so wird das Gebäude darüber einstürzen – eines der häufigsten Probleme bei Softwareprojekten: “Die Programmierer/innen haben den Auftraggeber nicht richtig verstanden!”. Wir vermeiden das, weil wir über das Projekt sprechen.
Es geht um einige Erläuterungen, die das Verständnis vertiefen. Dass im Video vom WS1617 die Rede ist, stört Sie nicht. Der Inhalt gilt auch für das WS1718.
Dass alle Termine für das WS1718 aktuell den Aushängen und dem Felix zu entnehmen sind, wissen Sie. Insgesamt handelt es sich hier um die erste Episo de “JAVA_Semesterprojekt_01_Intro” aus einer Serie von Videos zu diesem Semesterprojekt.
Die zweite Episode dürfen Sie sich auch gleich “reinziehen”:
In diesem Video sehen Sie im Part 1 (in den ersten 10 Minuten), wie ein laufende friends-Programm aussieht und funktioniert.
Im Part 2 sehen Sie den Einstieg in die Entwicklung. Machen Sie sich die Tipps aus der zweiten Episode “JAVA_Semesterprojekt_02_Intro” zu eigen – Sie werden Ihr Projekt effizienter realisieren können.
Die Episode 3
Im Part 3 ist die Entwicklung praktisch schon in vollem Gange. Wir kümmern uns in der dritten Episode um den Einbau von Arrays als Puffer und Container “JAVA_Semesterprojekt_03_Intro_data+funct“. Neben den ersten Methoden sind nun auch die ersten Daten eingerichtet.
Die Episode 4
In der Interimsversion v00 haben wie die Spec besprochen und das Projekt in Eclipse eingerichtet. Die wichtigsten Programmschritte waren die Menü-Dialog-Schnittstelle in der Methode main_menu() zu programmieren und dann diese Methode im main() einzubauen. Damit hatten wir eine sehr embryonale Interimslösung, übersetzbar und testbar.
In der darauf folgenden Interimslösung v01 haben wir begonnen die Daten zu modellieren und in einer switch-case-Konstruktion die User-Reaktion abzufangen und mit adäquaten Methoden darauf zu reagieren. Na ja, wir haben die Methoden vorbereitet. Auch diese Interimslösung ist übersetzbar und testbar.
Jetzt, in der Interimslösung v02 implementieren wir die Methoden funct_1(), funct_2() und pers_append(). Damit haben wir 50% aller benötigten Methoden implementiert.
Die letze File-Operation ist eingebaut: das Löschen der Datenbasis-Datei personenDB.csv als funct_5(). Damit ist das Semesterprojekt so gut wie fertig! Das Grooming fehlt noch.
Damit ist das Semesterprojekt so gut wie fertig! Das Grooming fehlt noch, dazu gehört z.B. das Umbenennen der Methoden. Wir hatten von Anfang an etwas synthetische Dateinamen, die nicht wirklich sprechend ware.
Insgesamt haben wir damit eine Semester-Projekt-Lösung, die von mir so geplant war, dass wir mit einer einzigen Klasse auskommen. Mehr wie eine Klasse gibt die Aufgabenstellung nicht her: wir haben zwei sehr bedeutungsvolle Datenkonstrukte und ein halbes Dutzend Methoden – genug für eine Klasse. Mehr Klassen für diese kleine Anwendung zu erfinden, wäre nicht wirklich sinnvoll.
Der GUI-GUY wartet ja schon lange darauf: endlich der Applikation eine GUI geben, ein graphical user interface. Weg vom langweiligen Menue. Deutlich flexibler und interaktiver. Spontaner. Gleich sehen, was machbar ist. Lust auf einen Klick!
Neben den skalaren Datentypen (sicherheitshalber nochmal nachlesen!) gibt es im Sprachkern von Java auch einen strukturierten Datentyp: das Array. Wir haben es schon gehört: das ist einer der prominentesten Datentypen überhaupt. Gibt’s in jeder Programmiersprache und in nahezu jedem Programm – aus so ziemlich den gleichen Gründen, warum Sie im “echten Leben” entsprechende Äquivalenzen benutzen – zum Beispiel beim Einkauf im Supermarkt. Wetten?
Das Array ist eine der prominentesten Datenstrukturen! Ein zusammengesetzter Datentyp, den es in allen gängigen Programmier-Hochsprachen gibt und damit natürlich auch in Java!
Aber lassen Sie uns nochmals innehalten und die Kontrollstrukturen “überfliegen”, um das Thema Algorthmus als einen der programmiersprachlich großen BUILDING-BLOCKS abzuschließen.
Wie wäre die Welt einfach, gäbe es nur die großen BUILDING-BLOCKS! Darüberhinaus gibt es aber noch zahlreichen Detailregelungen, die sogenanntenNitty-Gritty Details – häufig “Kleinigkeiten” – die aber eben auch zum Funktionieren unerlässlich sind. Oder “Hintergrundwissen”, das für ein fundiertes Verständnis unerlässlich ist. Schnuppern wir hier mal rein!
Das zweite ADRELI-Projekt ADRELI_2_Thread wird weiter entwickelt, in Richtung “Verteilte Applikation” mit einer Client/Server-Architektur (in der “Aussenansicht“) in der “Innenansicht” durch eine MVC-Architektur gekennzeichnet.