Protokoll 2012-06-05 Review Nikolas Herbst
Appearance
Teilnehmer
- Nikolaus
- Qais
- Fabian
- Axel Busch
- Philipp
Protokoll
- Philipp: Sequenzdiagramme fehlen, um Dynamik der Architektur zu veranschaulichen
- Qais: besser mit Datenbank (z.B. SQLLite) arbeiten statt mit CSV-Files
- Qais: bei CSV-Implementierung auf Lizenz achten
- Qais: Abwägung zwischen Platzierung des R-Servers (lokal vs. remote), um Netzwer
- Axel: Warum kein Observer-Pattern, um Workload Management über veränderten Workload/Zeitserie zu benachrichtigen?
- würde Polling erfordern
- Daten kommen periodisch (in bestimmter Taktung) an, daurch auch periodische Verarbeitung sinnvoll
- Axel: Werden Zeitreihen in CopyOnWriteArrayList abgelegt?
- Nicht mehr aktuell, da bereits durch andere Datenstruktur ersetzt
- Axel: bei vielen Schreibzugriffen nicht sinnvoll
- bei fehlender Nebenläufigkeit aber gar keine Thread-safe Implementierung nötig
- bei Konsolidierung mit Andre darauf achten, dass TimeSeries Objekt in Kiel möglicherweise doch nebenläufig verwendet wird
- Fabian, zur Review-Vorlage: beschreibender Text für Strukturdiagramme hätte zum Verständnis beigetragen
- Fabian: Was sind Forecast Objectives? z.B. Overhead der Vorhersagemethode
- Philipp, zur Workload-Klasse: eine Methode je Phase verwenden
- Qais: Statt Workload besser WorkloadClass schreiben
- Klassendiagramm Data Management
- Kardinalität zwischen Workload und ITimeSeries falsch (richtig: 0..1)
- Enums generell ohne Assoziationen zu anderen Klassen darstellen
- Methoden wie getTs() etc. nicht ohne Doku verständlich
- Klassendiagramm Forecast Strategy
- pull up von forecast() z.B. in den AbstractForecaster
- Abstract Factory für Erzeugung der Forecast-Strategien?
- Niko: 1 Thread je Workload richtige Entwurfsentscheidung?
- ermöglicht z.B. je Workload ein eigenes Polling-Intervall
- generell keine Einwände dagegen :)
- Philipp: Alternativ hätte man sich auch ThreadPool überlegen können, wobei Jobs in einer Queue liegen
- Qais: Wie wurde Entscheidungsbaum erzeugt? Entscheidungsfindungsprozess dokumentieren!
- Qais: AbstractClassificationStrategy.median(...): int/int immer int!
- Qais: Einfacher &-Operator absichtlich?
- Qais: RServerBridgeControl.getInstance() nicht thread-sicher (unsynchronized lazy initialisation)
- Qais: "Magic-Numbers" vermeiden
- Philipp: AbstractClassificationStrategy: Methoden in Utility-Klasse auslagern, außerdem Methoden mit Verben benennen sofern keine mathematischen Operatoren