Montag, 30. Mai 2016

Robotino Virtual Machine

Als wir die Robotino-VM ausprobieren wollten, ließ sich die Zip-Datei weder auf Linux noch auf Windows entpacken. Wir vermuten, sie ist beschädigt. Könnte das bitte überprüft werden?

Eine Robotino-VM wurde von uns dieses Semester noch nicht zur Verfügung gestellt.

Kommunikation

Sollen wie in der Vorstufe Interfaces zwischen Server und Robot verwenden werden, die dann durch eine Netzwerkbibliothek serialisiert und gemappt werden? Oder wird erwartet, dass wir dieses Mapping selbst (z. B. mit IWlanAdpater) durchführen? Wie weit sollen wir hier abstrahieren? Ist z. B. eine Remote-Call-Bibliothek erlaubt, die die Netzwerkschicht automatisch übernimmt? Wozu benötigen wir dann Message etc.?

Sie sollen die Verwendung des IWlanAdapters und des MessageHandlers modellieren und verdeutlichen wie kommuniziert wird. Haben Sie das modelliert dann können Sie in den anderen Teilen darauf bezug nehmen.

Zusammengestossene Roboter

Sollen wir bei einem Zusammenstoß davon ausgehen, dass der Roboter kaputt ist und manuelle Wartung braucht (und somit aus allen folgenden Workflows ausscheidet)? Oder sollen wir (z. B. nach einem Rücksetzen) einfach weiterfahren?

Der Roboter braucht dann manuelle Wartung. Alternativ erreicht das System einen Fehlerzustand (Absturz). Einfach weitermachen wäre zu einfach.

Anzahl Roboter

Ist die Anzahl der Roboter konstant?

Ja

Krankenhausaufträge sequentiell

Gibt es das Interface IHospitalOutput und IHospitalInputHandler für jeden Roboter einmal? Sonst gäbe es das Problem, dass man nicht weiß, welcher Patient aus welchem Roboter bei Aufruf von IHospitalInputHandler.patientArrived() angekommen ist und somit nicht weiß, welches Vehikel wieder vom Krankenhaus losfahren kann. Das gleiche Problem gibt es mit IHospitalInputHandler.patientOnBoard().

Es gibt immer nur einen Krankentransport auf einmal. Das heisst es wird kein Transport angefragt, bevor der zuletzt ausgelöste nicht schon beendet wurde.

Position

Ist die Klasse Position, die in ITaxiAppUserInputHandler.orderTaxi(source: Position, destination: Position) verwendet wird, die selbe wie die, die im Roboterpaket definiert ist? 

Ja.

Verhalten Appcontainer

Liefert IAppContainer.getApps() immer die selben Apps (-> gleiche Anzahl)?

Ja. Wir halten es erstmal einfach.

Ist die Batterie voll?

Für die Abfrage, ob die Batterie beim Wiederaufladen schon voll ist, gibt es folgende Optionen: (1) Blockierende Warteschliefe (dann kann allerdings nicht auf Server reagiert werden), (2) Nichtblockierende Schleife in (a) einem zweiten Thread oder (b) per Timer
(3) Wir bekommen ein verbessertes Batterie-Interface mit, was sich über eine Schnittstelle von selbst zurückmeldet. sobald es voll ist.
 


Das Batterieinterface bleibt so wie es ist. Sie müssen sich dann für eine der Optionen entscheiden. Blockierend ist allerdings keine gute Idee.

Messages

Wie soll mit einer Message etwas versendet werden, wenn nur IDs enhalten sind?

Für das Versenden werden konkrete Objekte benötigt. Die Klassen dazu dürfen Sie selber modellieren und die dürfen auch eine Payload haben (ja es sind auch verschiedene Implementierungen der Klasse denkbar oder sogar eine Typhierarchie).

Namensschemainkonsistenzen

ArrivalHandler, Message: Warum beginnen diese im Gegensatz zu allen anderen Interfaces nicht mit I?

Dafür gibt es keinen spezifischen Grund.

Krankenhausposition

Woher bekommen wir die Position des Krankenhauses?

Die fehlende Konstante im Dokument wurde nachgetragen, es steht eine aktuallisiert Version im Materialienverzeichnis

Was passiert beim Taxifahren bei Zieleinfahrt

Bei Ankunft des Taxis am Ziel: Teilt der Kunde dem System mit, dass er ausgestiegen ist? Oder können wir einfach abfahren, sobald wir am Zielort sind?

Einfach abfahren.

Ladungsverluste

Verliert die Roboterbatterie im Falle der Inaktivität ebenfalls an Ladung?

Nein, es kann davon ausgeganngen werden, dass der Ladungsverlusst zu vernachlässigen ist.

Samstag, 28. Mai 2016

Reichweite Batterie

Dürfen wir davon ausgehen, dass der zu betreuende Raum so begrenzt ist, dass jeder Roboter ab einem gewissen Mindestbatteriestand alle Aufträge innerhalb der Stadt erfolgreich ausführen kann?



Fragestellungen rund um die Reichweite erfordern Annahmen, die gemacht werden müssen, da im Beschreibungsdokument dazu keine Angaben vorhanden sind. Sinnvoll ist z.B. davon auszugehen, dass zurückgelegte Strecke und Batterieverbrauch in einem konstanten Verhältnis stehen (obwohl es realistischer wäre z.B. die Beschleunigung mit einzubeziehen). Zusätzlich kann davon ausgegangen werden, dass "die Stadt der Zukunft" immer noch ein physikalische Ausdehnung hat und dass alle Fahrten innerhalb der Stadt getätigt werden. Außerdem wird die Batterie eine bestimmte Kapazität haben. Wenn jeweils Konstanten definiert werden (müssen erstmal nicht belegt sein), dann ergibt sich die Antwort auf die Frage.

Mittwoch, 25. Mai 2016

Template Reflektion und Nochmalige Terminverschiebung

Am 1.6 kann die Vorlesung wegen eines Konfliktes mit der Belegung der Hörsäle nicht stattfinden. Deswegen ist er jetzt auf den 3.6 verlegt worden.

Der Abgabetermin des Reflektionsdokumentes bleibt erhalten.

Die Vorlage ist immer noch im Materialienordner, es handelt sich allerdings um ein Powerpoint-Template (ModellierungIIReflexionEntwurfTemplate.pptx). Bitte reichen Sie die Abgabe auch als Powerpointfolien basierend auf diesem Foliensatz ein (nicht als pdf).

Donnerstag, 19. Mai 2016

Leistungserfassung in neuem Gewand

Es steht eine aktualisiert Version der Leistungserfassung auf der Lehrveranstaltungsseite bereit. Sie entspricht inhaltlich den in der Einführungsvorlesung vom 15.4 bereits erläuterten Sachverhalten.

VisualParadigm und kollaboratives Arbeiten

Unter der gewohnten Stelle steht eine neue Version von Visual Paradigm zum Download bereit. Dort kann jetzt auch mit VPository kollaborativ gearbeitet werden.

ArrivalHandler vs. IBumperHandler

Wenn der ArrivalHandler nicht an der Komponente zu sehen ist, warum hat dann aber der IBumperHandler, der ebenfalls einem anderen Interface (IBumper) übergeben wird und damit ja auch unterschiedlich implementiert werden kann, trotzdem an der Komponente Robot eine Schnittstelle? 

Hier ist vorgesehen, dass eigentlich immer dieselbe Instanz eines IBumperHandler genutzt wird. Das Ganze ist auch so zu verstehen, dass die Komponente, um zu funktionieren, auf ihre als benötigt modellierten Schnittstellen angewiesen ist. Die Modellierung erzwingt zwar nicht diese Semantik, legt diese aber nahe.

Kommunikation in Iteration0

Aus der Aufgabenstellung für die 0. Iteration wurde nicht ganz klar, inwiefern wir die Kommunikation als gegeben benutzen dürfen oder sie eben noch weiter spezifizieren müssen.
"In der Vorstufe kann der Server direkt Aufrufe an den Roboter absetzen, ohne Nachrichten über das WLan versenden zu müssen.” Heißt das, dass wir nur das WLAN ignorieren sollen oder gar keine Kommunikation modellieren müssen und zwischen dem Komponenten quasi Remote Procedure Calls einsetzen können?

In der Tat kann der Server in der Vorstufe direkt Aufrufe an den Roboter tätigen und benötigt dafür auch keine Remote Procedure Calls (die übrigens unter Umständen synchron wären). Die Modellierung der Kommunikation soll erst in den späteren Ausbaustufen erfolgen und dann auch über das WLan Interface gehen.

ArrivalHandler kein gefordertes Interface der Komponente Robot?

Im Projektdokument wird das Interface ArrivalHandler im vorgegebenen Komponentendiagramm an der Komponente Robot nicht angeboten. Wir würden das gerne als angebotene Schnittstelle in unserem Entwurf anfügen. Ist das in Ordnung?

Nein, denn die Komponente stellt den ArrivalHandler nicht zur Verfügung. Ebenso benötigt die Komponente auch nicht den ArrivalHandler (wenn schon, der naheliegendere Fall). Vielmehr kann bei jedem Aufruf von driveToPosition(...) ein anderer ArrivalHandler angegeben werden, insofern wäre die Modellierung mit einem geforderten Interface nicht richtig.

ArrivalHandler und Nachrichten

Es hat sich die Frage ergeben, ob auch der im Grunde vorgegebene ArrivalHandler zu den den in Aufgabe 3 u.a. zu modellierenden "Nachrichten" gehört, auch wenn ArrivalHandler in keiner der Operationen genutzt wird, die für eigenen Schnittstellen definiert wurden?

Mit den Nachrichten sollten Instanzen eines ArrivalHandler eigentlich nicht unbedingt zu tun haben. Dies gilt insbesondere für Iteration 0.

Mittwoch, 18. Mai 2016

Verhalten der Methode drive[Cautiously]ToPosition(...)

Wie verhält sich die Methode driveToPosition bzw. driveCautiouslyToPosition?

Ein Aufruf der Methode sorgt dafür, dass sich der Roboter direkt auf die angegebene Zielposition zubewegt. Nach dem Aufruf kehrt die Methode sofort zurück und der Roboter kann andere Dinge erledigen.

Ist der Roboter am Zielpunkt angekommen, dann wird die Methode arrived() des Objektes aufgerufen, welches ArrivalHandler implementiert und welches der driveToPosition Methode übergeben wurde.

Wird nach dem Aufruf von driveToPosition (oder driveCautiouslyToPosition) und vor der Ausführung von arrived() die drive(..), driveCatiously(..), driveToPosition(..) oder driveCautiouslyToPosition(..) Methode aufgerufen, dann wird die ursprüngliche Fahrt abgebrochen und die Methode arrived() wird nicht mehr bezüglich des urprünglichen Ziels aufgerufen.

Klassen in Komponentendiagrammen einfügen mit Visual Paradigm

Im Zuge der Entwurfsphase des Modellierungsprojekts wollte unsere Gruppe in einem Komponentendiagramm eine Klasse einfügen. Leider bietet uns VisualParadigm keine Möglichkeit dafür. Wir wissen allerdings aus der Vorlesung, dass dies syntaktisch korrekt sein müsste. Was ist zu tun?
 
Wenn links die Baumansicht mit den Verschiedenen Diagrammen angezeigt wird, dann kann einfach aus einem Klassendiagramm eine bereits definierte Klasse rüber in ein Komponentendiagramm gezogen werden. Diese Klassen werden dann auch automatisch von dem Werkzeug konsistent gehalten (wenn etwas an der Originalklasse geändert wird, dann ändert sich die Klasse auch in allen Diagrammen in denen sie auftaucht). Das ist auch für die Interfaces zu empfehlen: Ein Interface kann in ein Komponentendiagramm geschoben werden und dann können die Interfaces von Ports referenziert werden.

Samstag, 14. Mai 2016

Interface Implementierungen

Bei der Bearbeitung der aktuellen Entwurfsphase kam die Frage auf, ob wir für alle Interfaces noch implementierende Klassen modellieren müssen, um diese ansprechen zu können? Dieses Vorgehen würde dem Konzept der Interfaces in Java entsprechen.

 
Die kurze Antwort lautet: nein.
 
Die Projektbeschreibung gibt Komponenten vor, die bestimmte Schnittstellen (Interfaces) anbieten, über die die Funktionalität der Komponente angesprochen werden kann. Dabei handelt es sich um UML und nicht um Java-Schnittstellen. Die Komponente, die diese Schnittstelle umsetzt ist als Black-Box modelliert, die diese Funktionalität bereitstellt. Als Nutzer der Komponente muss man sich keine weiteren Gedanken über die Realisierung machen. 
 
Aber: Die Komponenten bieten nicht nur Schnittstellen an, manche benötigen auch eine Instanz, die eine Schnittstelle realisiert. Hier muss eine andere Komponente diese Schnittstelle bereitstellen und dann ist tatsächlich in der internen Repräsentation der anderen Komponente eine Klasse erforderlich, die diese Realisierung vornimmt (z.B. eine Realisierung für IHospitalInputHandler für die Hospital-Komponente).

Freitag, 13. Mai 2016

Verschiebung der Vorlesung für das Feedback der Reflektion und Vorlesungstermine

Es gibt eine Änderung im Vorlesungsplan:
Die Ursprünglich für den 27.5 vorgesehene Vorlesung, in der Ihre Reflexion für den Entwurf besprochen wird, ist auf den 1.6 verschoben worden. Bitte beachten: es bleibt bei dem Abgabetermin für die Reflexion.

Im Materialienordner befindet sich jetzt auch das Template für die Reflexion.

Vorlesungstermine finden NICHT am 18.5, 20.5, 25.5, 27.5 statt.
Am 1.6 findet die Vorlesung zur Reflexion des Entwurfs statt.
Am 3.6 gibt es KEINE Vorlesung.

Donnerstag, 12. Mai 2016

Funktionsweise von drive(...) aus IDrive

Wenn drive() aufgerufen wird, wird dann unendlich in die an drive() durch die Parameter übergebene Richtung gefahren oder fährt der Roboter nur z.B. 10 Meter weit oder 1 Minute?

Der Aufruf von drive(..) sorgt dafür, das sich der Roboter ab sofort mit den angegebenen Parametern bewegt. Um den Roboter wieder zum Stehen zu bringen ist ein expliziter Aufruf von drive(...) mit auf 0 gesetzten Parametern erforderlich.

Handler für Distanzsensoren?

Darf davon ausgegangen werden, dass es zur Komponente IDistanceSensor einen Handler gibt, der anzeigt, wenn eine kritische Distanz zu einem Objekt erreicht wurde, sodass man nicht periodisch IDistanceSensor nach neuen Distanzdaten abfragen muss?

Die periodische Abfrage ist notwendig, es gibt keinen Handler.

Mittwoch, 11. Mai 2016

Kommunikation in der Vorstufe und den Ausbaustufen

In der Aufgabenstellung steht, dass man in der Vorstufe davon ausgehen kann, dass Robot und Server direkt kommunizieren koennen. Muessen dann fuer die Ausbaustufen die Dinge aus der Beispielanalyse/Beispielentwurf uebernommen werden oder kann wieder von der direkten Kommunikation ausgegangen werden?

In den weiteren Ausbaustufen kann nicht mehr von der direkten Kommunikation ausgegangen werden. Server und Roboter müssen dann Nachrichten über die entsprechenden Interfaces austauschen (siehe auch Vorlesung).

driveToPosition modellieren (wie funktioniert die Methode eigentlich)?

In IDrive ist die Methode driveToPosition vorhanden.Soll die Funktionalität dieser Methode modelliert werden?

Nein, die Methode ist gegeben und ihre Funktionalität steht auch fest. Als Ergänzung zur Beschreibung gilt folgende Erläuterung: Durch den Aufruf von driveToPositon wird der Roboter dazu veranlasst, zu  der angegebenen Position zu fahren. Die Methode ist nicht blockierend, das bedeutet, dass der Roboter z.B. weiter auf Dinge reagieren kann. Das Fahren wird nebenläufig ausgeführt. Die Ankunft des Roboters kann durch den ArrivalHandler, der beim Methodenaufruf übergeben wird, festgestellt werden (callback Methode arrived()). 

Die Nutzung des Methodenaufrufs und des Handlers ist hingegen zu modellieren.

Gegebene Interfaces Modellieren?

Frage bzgl. des Entwurfsdokumentes zu den Komponentenschnittstellen (Abschnitt 3): Sollen bereits im IST-Zustand der Aufgabenstellung beschriebene Interfaces noch einmal dort modelliert werden (z.B. IDrive etc.)?

Nein, dies sind lediglich Interfaces auf die im Rahmen der eigenen Modellierung zugegriffen wird. Sie sind ja schon modelliert und könnten lediglich wiedergegeben werden (auch nicht notwendig).

Montag, 9. Mai 2016

Kleine Änderung in der Projektbeschreibung (Hospital)

Es gibt eine kleine Anpassung der Projektbeschreibung. Bisher war es nicht möglich den Handler für Eingaben vom Krankenhaus irgendwo anzumelden, sodass dort ein Aufruf stattfinden kann. Die Hospital-Komponente hat jetzt ein zusätzliches Interface wo dies stattfinden kann.

Diese Änderung betrifft erst Phase 1.

Reflexion/Protokoll Abgabe

In welcher Form und wo soll das Protokolldokument abgegeben werden?

Das Protokoll soll auch im GIT-Repository abgelegt werden unter den Namen:
mod2016-gruppe[n]-protokoll-analyse.pdf
und
mod2016-gruppe[n]-protokoll-entwurf.pdf

Sonntag, 8. Mai 2016

Sourcecode?

Sollen für die Implementierung nur jar-Dateien abgegeben werden oder auch die Quelldateien?


Die Frage kommt noch ein bisschen früh aber lässt sich jetzt schon beantworten. Erwartet wird eine Abgabe mit Quelldateien, die sich fehlerfrei übersetzen lassen.

Freitag, 6. Mai 2016

Englisch?

Können wir die Abgabe auch komplett in Englisch machen?

Abgaben in Englisch können gerne gemacht werden. ABER: es sollte keinen Mehraufwandt bedeuten. Wenn es gegen Ende des Projektes enger mit der Zeit wird ist es wichtiger, dass der Inhalt stimmt.

Donnerstag, 5. Mai 2016

Systemgrenze der Vorstufe (Analyse)

Laut Aufgabenstellung gibt es explizit ein System Roboter, dass zu modellieren ist - bedeutet das, dass der Server definitiv nicht Teil des Systems ist (also außerhalb der Systemgrenzen)?

Für die Vorstufe ist nur das System Roboter zu modellieren, für die folgenden Stufen erweitert sich die Systemgrenze.

Erklärung zum Analyse-Template

Punkt 4.1 "Systemumgebung" - was genau verteht man darunter? Oder bedeutet Systemumgebung Hardware- und Softwarumgebung gemeinsam?

Es handelt sich hier um den übergeordneten Abschnitt der folgenden drei Unterabschnitte: Hardwareumgebung, Softwareumgebung und Ressourcenübersicht. Zwischen 4.1 und 4.1.1 wird also lediglich einleitender Text erwartet.

Wiederverwendung von Grafiken

Dürfen wir für die Vorstufe Grafiken aus dem Projektdokument wiederverwenden?

Gerne dürfen Sie Grafiken aus dem Projektdokument wiederverwenden. Wichtig ist, dass Sie für Ihr Dokument einen Mehrwert bedeuten.

Latex Template Analyse

Gibt es ein Latex-Template?

Ist im Materialienordner verfügbar. Solange Sie die inhaltlichen Vorgaben des Templates einhalten (egal ob Word oder Latex), können Sie immer auch mit ihrem eigenen Latex-Template arbeiten.

Teamwork-Server und Visual Paradigm

Die Version, die uns von Visual Paradigm zu Verfügung steht erlaubt es uns nicht den Teamwork-Server zu benutzen. Gäbe es die Möglichkeit eine Lizenz für eine Version, die uns das ermöglicht zu beschaffen?


Wir sind mit dem Hersteller im Gespräch. Bis jetzt wissen wir nur, dass SVN nicht mehr unterstützt wird und GIT nicht unterstützt werden wird.

Eigene Ladestationen?

Hat jeder Roboter eine eigene Ladestation oder kann jeder Roboter zu jeder Station fahren, sofern sie frei ist?

Jeder Roboter hat seine eigene Ladestation. Die Position bekommt man über das IBattery-Interface.

Mittwoch, 4. Mai 2016

Aktivierung der Ladestation

Muss die Ladestation explizit aktiviert werden, um einen Roboter zu laden, oder passiert dies implizit?

Antwort: Die Roboter werden an der Position der Ladestation automatisch geladen.