Schools  Projects  Blogs  Log In 








FU Berlin ``Kundenprojekt`` Summer 2009

The Kundenprojekt "Webservices" consists of two tasks:

Image Uploader:
imageexpanded|size=widtheditor|raUID=196647580916633688|

and Analysis Server
imageexpanded|size=widtheditor|raUID=788464600156086394|

Hand-over occurs at the SA Embassy on the 15th of July 2009.

1. Summary

The Kundenprojekt is a joint project between the Freie Universität Berlin and the Village Scribe Association. eKhaya ICT as developer of awareNet is acting facilitator.

Project Lead     
Philipp Cordes
Developers20
Begin2009-4-15
End2009-7-15
Tasks2

[more]

2. 2009-07-02 - Milestone 4

blockquote> Another great Milestone as the software keeps looking better and better.

This is a fantastic effort!
Der 4. Meilenstein stand vor allen Dingen im Zeichen des Bugfixing und der Stabilisierung. Eine 100% Fertigstellung konnten wir zwar zu diesem Zeitpunkt nicht erreichen aber wir sind was die funktionalen Anforderungen angeht fertig. Zu erledigen sind im Grunde nur noch eventuelle Fehler die noch im Laufe der folgenden Wochen auftreten und behoben werden müssen, sowie das Fertigstellen der Dokumentation. So würde ich behaupten, dass wir zu 90% - 95% fertig sind und nun die kommenden zwei Wochen genügend Zeit haben noch die nicht funktionalen Anforderungen zu erfüllen.

Allgemein
Zu dem Punkt ob wir die in den Pflichtenheften angegeben Frameworks und IDEs verwenden: Dies kann ich bestätigen.
Bei dem Analyse-Server ist für die Datenbankabstraktion noch  "SQLAlchemy" (lizenziert unter MIT-Lizenz) hinzugekommen.

Die vergangene Woche galt vor allen Dingen der Stabilisierung und Fehlerbehebung. Die extra Gruppe für die Qualitätssicherung hat sich hier also ausgezahlt. Wir haben nun noch einiges an Fehlerbehandlung eingebaut, sodass man eventuell nachvollziehen kann was warum schiefgegangen ist.

Analyse-Server
Alle von Ron angemerkten Punkte, bis auf die Ordner-Struktur, wurden behandelt. Die gewünschte Ordner-Struktur werden wir erst zu nächster Woche realisieren können. Leider zeigte sich NetBeans doch nicht als so Refactoring-Freundlich wie ich mir das anfangs erhofft habe. Hierfür muss man offenbar also ein wenig manuelle Arbeit mit einbringen.

Alle von Ron angemerkten Punkte, bis auf die Ordner-Struktur, wurden behandelt. Die gewünschte Ordner-Struktur werden wir erst zu nächster Woche realisieren können. Leider zeigte sich NetBeans doch nicht als so Refactoring-Freundlich wie ich mir das anfangs erhofft habe. Hierfür muss man offenbar also ein wenig manuelle Arbeit mit einbringen.Alle von Ron angemerkten Punkte, bis auf die Ordner-Struktur, wurden behandelt. Die gewünschte Ordner-Struktur werden wir erst zu nächster Woche realisieren können. Leider zeigte sich NetBeans doch nicht als so Refactoring-Freundlich wie ich mir das anfangs erhofft habe. Hierfür muss man offenbar also ein wenig manuelle Arbeit mit einbringen.Die Authentifizierung wird nun mittels API-Key durchgeführt. Damit die Kommunikation später sicher ablaufen kann, muss der Server über https laufen. Bei unverschlüsselter Verbindung  macht eine solche Authentifizierung nicht wirklich viel Sinn.

Bezüglich einer einheitlichen Code-Konvention im Programmcode: Hier konnte ich leider nicht mehr von den Teammitglieder abverlangen. Für viele war Python eine neue Sprache die, so habe ich es nicht erwartet, einigen doch manchen Schwierigkeiten bereitet hat. Ich habe jedoch versucht insofern ein etwas einheitliches Bild zu erhalten in dem alle mit Epi-Doc (ähnlich wie JavaDoc) dokumentieren müssen und alle nun die gleiche Funktionalitäten für die Datenbankverbindung verwenden.

Firefox-Plugin
Das Firefox-Plugin kann man als weitesgehend fertig bezeichnen. Einzig die URL zu dem entsprechenden awareNet-Server müsste noch richtig gestellt werden. Es ist nun auch möglich, sich als anderer Nutzer einzuloggen. Bei Änderungen auf der Server-Seite wird automatisch ein Refresh durchgeführt.

Was ist noch zu tun?
Vor allen Dingen die Dokumentation auf Programmcodeebene und auf der Übersichtsebene (z.B. UML) wird das Ziel der kommenden Woche sein. Aber auch für eventuelle Fehler die noch auffallen haben wir ausreichend Kapazität diese zu beheben.

[more]

3. 2009-06-18 - Milestone 3

blockquote style="font-style: italic;"> Feedback for 3. Milestone

MILESTONE PASSED!

Note:

For both tasks: can you please confirm that the development environments, IDE's and packages in the terms of reference (Pflichtenhefte) are the ones actually used. Thank You.

Analysis Server

GENERAL COMMENTS:
This project has done very well to craft some code and to create an API that sets a good tone for future work - in a task that was poorly defined by the client and quite explorative in nature. The technologies chosen are state of the art and good programming practices have been selected. The back end does include more logic than can be seen in the tests, and the software engineers have done well to balance functionality and usability within the short time frame given. Quite clearly there are different programmers at work and a Python Programming best practices has not been chosen to guide the development. The tests are very disappointing as I could not get them to work.

Another very pleasing aspect of this work is that there were no exceptions thrown, or long debug output thrown at me while testing the interface. So excellent use of logging and good software design on that front.

On the whole, I am very pleased with the overall quality of what has been produced for this task by students.

TODOs UNTIL 4th MILESTONE:
  1. Standardisation of directory structure, e.g. suggested:
    conf
    var/res
    var/data
    var/log
    src/ ---> all .py directories and files on the root dir should be moved into here.
    tests/ or src/tests  -->  you decide

  2. The Terms of Reference (Pflichtenheft), section 3.3, mentions authentication capability which is not implemented. "Autorisierung eines Benutzers bzw. einer Anwendung. // Diese sollte verschluesselt stattfinden."

  3. Besser Funktionierende Tests - vor allem der Tag Cloud muss etwas verstaendliches (im Kontext der fehlenden, bzw. selbst gewonnenen Testdaten) produzieren. Vgl. Screenshots (Picture 4 / Picture 5).
Some German comments need removing / translation.


Image Uploader

GENERAL COMMENTS:
This is really useful software, and it will change the way people can use awareNet, especially users with little background knowledge. I am very excited to see it in action and it seems that we may get funding from the USA / NSF to try this out in the Grahamstown township, so I am crossing my fingers for this task.  The task was much easier than the Analysis Server and well defined, nonetheless, JS / XUL / Firefox programming is very specialised and there must have been a steep learning curve for the programmers. The functionality was very rapidly developed and with an impressive attention to detail including the "online help" button! The structuring of Mozilla projects is excellent so I think that was a good structure into which the work could fit.

I did not see evidence of the project using svn. Can you please confirm this.

Needs more testing - bugs are visible, e.g. uploading a profile picture (screenshot - Picture 5).

I rate this task as excellent.

TODOs UNTIL 4th MILESTONE:
  1. Testing and Bug fixing

  2. Refresh button should perform a refresh only on the selected folder if possible (still some instability there as explained by Philipp / known issues).

  3. Authentication aspect as per TOR (Pflichtenheft). Unter 1.1. " Authentifizierung (durch Verwendung von Cookies) ".  Unter 1.2 "– Die Anwendung star tet automatisch sobald an den Rechner ein USB-Speichergerat angesteckt wird. " --> I see you will be working on that.
Report to Milestone 3Der 3. Meilenstein war für unser Team der kritischste von allen Meilensteinen, denn in diesem ging es darum, eKhaya für die Analyse-Dienste sowie das Firefox-Plugin lauffähige Funktionalitäten zu präsentieren die alle Aspekte wie z.B. Webservice-Schnittstellen und Datenbanken berücksichtigen.

Und ich kann voller Stolz auf mein Team sagen, dass wir diesen Meilenstein mit all seinen Anforderungen mehr als erfüllen konnten.

zum Firefox Plugin
Beim Firefox -Plugin sollte zu diesem Meilenstein das Kommunikationsmodul weitesgehend fertiggestellt sein sowie weitere Funktionalitäten über die GUI verwendbar sein.

Hier können wir melden, dass das Pugin nun bis auf den Login und ein paar Kleingikeiten alle Funktionalitäten realisiert.
  • Wir können die Favoriten auf die lokalen Verzeichnisse verwalten.
  • Wir können lokale Bilder auflisten.
  • Wir können ein oder mehrere Bilder per Klick auf den Button oder per Drag & Drop auf den Server hochladen oder vom Server in ein Verzeichnis herunterladen.
  • Wir können die Bilder auf dem Server auflisten, editieren und löschen.
  • Wir können die Bilder auf dem Server auflisten, editieren und löschen.
  • Bilder die gößer als 1024x768px sind werden automatisch verkleinert.
Für den nächsten Meilenstein werden wir noch, die Autostart-Funktion (beim Einstecken eines USB-Geräts) hinzufügen. Ansonsten erfüllen wir soweit alle funktionalen Anforderungen.

Wir benötigen hier noch wie verabredet die endgültige Farbgebung die wir für das Plugin realisieren sollen!

Zu den Analyse-Diensten
Hier konnten wir nun alle notwendigen Funktionalitäten in einer ersten Version fertigstellen.

Wir können:
  • Texte für die lexikalische Analyse speichern.
  • Eine Tag-Cloud für eine Liste von UIDs zurückliefern.
  • Einen Text mit Label (Klasse) zum Trainieren des Klassifizieres abspeichern.
  • Einen Text klassifizieren lassen.
  • Das Training des Klassifizierers anstoßen.
All diese Funktionalitäten operieren nun mit einer MySQL-Datenbank und sind über XML-RPC verwendbar.

Aktuell realisieren wir hier folgende XML-RPC-Schnittstellen:
  • storeText(UID, title, text)    
  • getTagCloud(UIDs)     
  • classify(text, author_id) 
  • setTrainingData(UID, title, text, author_id, label)
  • startTraining()
Folgende Beispielanwendungsfälle können mit diesen Funktionalitäten realisiert werden:

Tag-Cloud für einen oder mehrere Beiträge
  1. Beitrag oder Beiträge mit "store" abspeichern
  2. Mit UID oder Liste von UIDs der Beiträge die Tagcloud über Aufruf von "getTagcloud" abfragen.
Klassifizierer trainieren
  1. Beiträge mit "setTrainigsData" abspeichern
  2. Mit "startTraining" Klassifizierer trainieren

Beiträge klassifizieren lassen
  1. Mit "classify" wird der Beitrag übermittelt und das Label bzw. die Klasse zurückgeliefert.
Mir ist gestern im Zuge der Abnahme der Arbeitsergebnisse aufgefallen, dass die Spezifikation die in Zusammenarbeit mit Strix erstellt wurde noch zwei kleine Schwächen hat. Zum einen
soll es bei der Klassifizierung nicht nötig sein die "author_id" mit zu übergeben. Das soll generisch über die Meta-Daten ermöglicht werden. Der andere Punkt betrifft die Methode "store".
Strix hatte sich damals gewünscht, dass diese das Label bzw. die Klasse des abgespeicherten Beitrages als Ergebnis liefert. Das soll wahrscheinlich zum Sinn haben, dass kein "SPAM" in dieTag-Clouds gelangt. Nur kann Strix derzeit mit dem zurückgegebenen Label nichts weiter anfangen. Unsere Leute werden, dass noch mit Strix im laufe der kommenden Woche klären.

Ansonsten lassen sich die RPC-Methoden mit beliebigen XML-RPC Clients (wie sie es auch in PHP gibt) sehr leicht verwenden.  Funktional erfüllen wir auch hier soweit alle vereinbarten Funktionalen Anforderungen. Für die kommende Woche werden wir hier die restlichen Fehler beseitigen und das System stabilisieren.

QualitätssicherungFür die kommenden zwei Wochen steht uns nun vor allem die Stabilisierung der Arbeitsergebnisse bevor.
Hierzu gehört:
  • Refactoring
  • Code-Dokumentation
  • Fehlersuche
  • Fehlersuche
  • Fehlerbehebung
Wir haben hierfür ein separates Team zur Qualitätssicherung bereitgestellt. Dieses Team hat zur Aufgabe für das Firefox-Plugin und die Analyse-Dienste Testläufe zu spezifizieren und auszuführen. Die Arbeitsergbnisse sollen bis zur nächsten Woche diese Testläufe sowie alle Unit-Tests bestehen. Ein formales Dokument über die absolvierten Testläufe wird dann zur abschließenden Dokumentation gehören.

[more]

4. 2009-06-04 - Milestone 2

Der 2. Meilenstein hatte vor allen Dingen zum Ziel das wir das Wissen welches wir im letzten Meilenstein gewonnen haben, nun in unsere eigene Struktur unterbringen und erste richtige Funktionalitäten realisieren. Desweiteren sollte das Firefox-Plugin schon erste Funktionalitäten über die GUI bereitstellen. Zwar wollten nach der Langfristplanung schon zu diesem mal den technologischen Durchbruch für die Webservice-Schnittstelle schaffen aber das mussten wir zugunsten der Datenbankschicht auf den nächsten Meilenstein verschieben.

Aber auch diesen Meilenstein haben sehr erfolgreich gemeistert. Wirklich interessant wird es für euch ab dem 3. Meilenstein (18.06.2009). Denn hier werdet ihr ein weitesgehend voll funktionsfähiges Firefox-Plugin erhalten und Funktionalitäten unseres Analyse-Moduls über Webservices testen können.

zum Firefox-Plugin
Das Kommunikationsmodul realisiert nun so gut wie alle Funktionalitäten die in der Spezifikation gefordert sind. Bis zum nächsten Meilenstein werden wir hiermit fertig sein.
Einen Screencast zur Ausführung der Unit-Tests findet sich unter:
http://www.pcordes.de/wp-content/uploads/api_milestone2/api_milestone2.html

Die GUI des Firefox-Plugins sollte zum heutigen Meilenstein erste Funktionalitäten dynamisieren und die Möglichkeit bieten lokale Favoriten anzulegen. Zunächst einmal werden nun die Thumbnaillisten dynamische geladen. Das kann man zwar für die Server-Seite noch nicht so nachvollziehen  aber auf der Client-Seite geht das. Mit der aktuellen Version ist es nun möglich lokale Ordner als Favoriten hinzuzufügen. Dazu muss man nur im linken Bereich auf den Button "My Folders..." klicken. In dem sich öffnenden Fenster kann man dann entweder Laufwerke oder ganz konkrete Verzeichnisse hinzufügen. Hat man dann ein Verzeichnis mit Bildern als Favoriten-Ordner hinzugefügt kann man diesen im linken Bereich der Anwendung wieder finden. Wenn man den Ordner selektiert und sich in diesem Bilder befinden werden diese entsprechend in der lokalen Thumbnailliste gezeigt.

zur Spezifikation
Unser Team hat mit Strix nun eine konkrete Spezifikation zu den Webservice-Schnittstellen für die Klassifizierung und die lexikalische Analyse ausgearbeitet. Dadurch ändern sich zwar ein wenig die Anforderungen aber diese Änderungen werden wir realisieren. Ich habe dazu das entsprechende Pflichentheft angepasst (siehe Anhang in E-Mail).

zur Klassifizierung & lexikalischen Analyse
Hier ist nun die interne Logik soweit fertig. Was hier noch fehlt ist die Anbindung zur besagten Datenbankschicht und das die Funktionalitäten nach außen hin zur Verfügung stehen.

Bei der Klassifizierung und der lexikalischen Analyse sind also soweit alle notwendigen Funktionalitäten realisiert. Die Unit-Tests dazu findest du ebenfalls in der zip-Datei.

zu deinem Problem mit der Installation
Das Plugin kann derzeit nur in Firefox 3.0 oder höher installiert werden.

Fehler in awareNet
Wir sind bei der Implementierung des Kommunikationsmoduls auf ein Rechteproblem gestoßen.

Angenommen wir haben zwei Accounts "A" und "B" auf awareNet. Wenn "A" die Uid eines Bildes von "B" kennt oder die Uid seiner Gallery, so kann er diese ohne Probleme als normale User über eure API löschen.

[more]

5. 2009-05-22 - Milestone 1

The first milestone is meant to show that the Kundenprojekt Development Team has the know-how to use the technologies that have been decided upon to implement the solutions proposed.  

The first milestone has been declared a resounding success, with:

  1. a XUL implemented mock-up of the image uploader, and
  2. a Python demonstrator which calls various NTLK functions.
The milestone has thus been reached.

Attached is the original report in German from Philipp.
"Hallo Ron,

gestern war bei uns intern die Fertigstellung des 1. Meilensteins angesagt.
Hier nun ein Überblick über den aktuellen Stand der Dinge.

Der 1. Meilenstein ist vor allen Dingen davon geprägt euch zu zeigen, dass wir mit den Technologien umgehen können die wir vorhaben zu verwenden. Ziel war es mit Hilfe von automatisierten Tests zu veranschaulichen welche Funktionen wie verwendet werden bzw. implementiert wurden. Desweiteren sollte ein erster architektonische Entwurf stehen. Für das Firefox-Plugin
sollte ein fertiger optischer Prototyp fertig sein.

Vorweggenommen kann ich sagen, dass wir alle diese Ziele erfüllt haben.

Nun zur Präsentation der Ergebnisse. Da es sich hierbei hauptsächlich um interne Funktionalitäten unserer Anwendung handelt, wird diese noch für diesen Meilenstein etwas ungewöhnlich ausfallen.

Aber erstmal zum "gewöhnlichen" Teil. Im Anhang findest du eine Datei "xulmockup.xpi". Diese stellt den mockbasierten optischen Prototypen des Firefox-Plugins dar. Um diesen in Firefox installieren zu können, musst du diesen nur in ein offenes Firefox-Fenster ziehen. Nach der Installation startet der Prototyp mit jedem Start von Firefox. Teilweise sind noch Buttons zu sehen die im fertigen Produkt nicht vorhanden sein werden. Das wird zum nächsten Meilenstein dann noch konkreter ausfallen. Hier ging es erstmal darum den Screen aus dem Pflichtenheft mit Hilfe von XUL-Komponenten zu realisieren. Und das finde ich ist dem Team
fürs erste schon sehr gut gelungen.

Nun zum etwas ungewöhnlichen Teil den internen Funktionalitäten die durch Unit-Tests präsentiert werden. Damit du dir nun nicht die Entwicklungsumgebung und etc. einrichten musst um die Lauffähigkeit nachvollziehen zu können wollte ich dir für jeden der Testfälle die du im Anhang findest deren Ausführung per Screencast festhalten. So solltest du zum einen sehen was die Unit-Tests machen und zum anderen das diese auch laufen. Mit bedauern musste ich heute feststellen, dass ich ein Problem damit habe die Entwicklungsumgebung für Python fehlerfrei zum laufen zu bekommen. Hier muss ich leider nochmal Absprache mit jemanden halten. So kann ich dir leider nur für das awareNet-Kommunikationsmodul den Screencast anbieten. Diesen findest du hier:

http://www.pcordes.de/wp-content/uploads/meilenstein/api/api.html

Ich kann dir jedoch versichern, dass die anderen Test-Fälle für die
Klassifizierung und für die Lexikalische Analyse ebenfalls grün sind.

Das hat mir das Team präsentiert.

Folgendes zeigen die Testfälle ganz konkret:
1. Die Authentifikation eurer awareNet-Spezifikation ist implementiert und einsatzbereit.
2. Die Klassifizierung und die Lexikalische Analyse zeigen ganz
explizit welche Funktionalitäten sie von NLTK verwenden wollen und das sie wissen wie sie diese verwenden.

Zu Ausarbeitung der Spezifikation:
Zwei von unseren Leuten haben gestern zum ersten Mal Kontakt mit eurem technischen Support aufgenommen. Hier haben wir auch schon eine ausführliche Antwort zurück erhalten. Wir werden das ganze bis Mittwoch 14.00 Uhr verarbeiten und uns diesbezüglich wieder melden.

Wie geht es weiter:
Der kommende 2. Meilenstein wird nun vorrangig zum Ziel haben die Funktionalitäten mit denen wir uns vertraut gemacht so zu verarbeiten, dass wir zunächst intern die nötigen Funktionalitäten testen können. Außerdem werden die ersten Webservice-Schnittstellen soweit realisiert sein, dass man diese mockbasiert testen kann. Ziel ist es also nun alle Schichten zu durchbrechen und für jede dieser einen lauffähigen Teil zu erzeugen.

Ok. Dann werde ich hier mal erstmal aufhören.
Ich bin gespannt was du dazu sagst.

Viele Grüße
Der Philipp"

[more]

6. Links

Kundenprojekt home page

Task Definition for Image Uploader: 


Task Definition for Analysis Server: none yet

The Institute doing the development:  http://www.ag-nbi.de/

[more]






  Please log in to view this section.

More >>

by: awarenet Open Day visitor
on: 2011-09-11 16:55:22