Benutzer-zentriertes Informationsmanagement ( self-made )


 Antoine de Saint-Exupéry:
   Vollkommenheit entsteht offensichtlich nicht dann, 
   wenn man nichts mehr hinzuzufügen hat, sondern 
   wenn man nichts mehr wegnehmen kann.

Einführendes (Benutzer-zentriertes Informationsmanagement)

Es gibt zahlreiche spezifische Ausprägungsmuster von Eingabedaten ( asynchron gesendetet Formulardaten ), die zu einer " n => 1 - Struktur" gehören und die einen gemeinsamen "Kern von kybernetischen Ähnlichkeitsmustern" aufweisen. So sind z.B. in gewisser Weise ähnlich:

- das elektronische Sammeln, Verwalten, Präsentieren von Evaluations-Antworten von Gruppen, 
- das elektronische Sammeln, Verwalten, Präsentieren Terminabstimmungen bei verstreuten Teilnehmern, 
- das elektronische Sammeln, Verwalten, Präsentieren von Arbeitszeit-Konto bei externen Montagearbeiten,
- das elektronische Sammeln, Verwalten, Präsentieren von Tuniermeldungen bei regionalen Teilnehmern, 
- das elektronische Sammeln, Verwalten, Präsentieren von Störungsmeldungen von Kunden,
- das elektronische Sammeln, Verwalten, Präsentieren von Karteikarten und Notizen von Nutzern,
- das elektronische Sammeln, Verwalten, Präsentieren von Bemerkungen, Anmerkungen und Ideen von Kunden, 
- das elektronische Sammeln, Verwalten, Präsentieren von Bewertungen der Kundenzufriedenheit,
- das elektronische Sammeln, Verwalten, Präsentieren von Bewertungen einer Web-Seite, usw.

Hier bei diese Aufgabe geht es um ein leichtgewichtiges, Benutzer-zentriertes Informationsmanagement, das als eine Client-Server-Lösung zu entwickeln, zu erstellen und zu testen ist. Natürlich gibt es "Supernationale Cloud-Lösungsangebote", die ohne User-spzifizischer Regionalität auskommen. Die Lösung soll leichtgewichtig, einfach, universell, besonders robust und mit geringstem zusätzlichen Aufwand für alle obigen Fälle von "elektronischem Sammeln, Verwalten, Präsentieren von ..." nutzbar sein. Plagiate sind "out". Auf Cookies wird verzichtet.

 Kurt Weidemann:  
   Auf die Explosion der unbegrenzten Möglichkeiten folgt die Implosion ihrer Beherrschung.  
 Edsger W. Dijkstra:
   Einfachheit ist Voraussetzung für Zuverlässigkeit.
 Leonardo da Vinci:
   Einfachheit ist die höchst Stufe der Vollendung.

Optional soll die erstellte Lösung eine einfache End-zu-End-Verschlüsselung ( auch der Meta-Daten ) haben und auch von Laien an die eigenen Bedürfnisse angepaßt werden können, ohne daß dazu komplexe Developer-Entwicklungstools erforderlich sind.


Beispiele: Live-Evaluierungen Einstiegsmotivation

Bei Vorträgen ( Fachvorträge, Seminar, Live-Veranstaltungen ) kann es sinnvoll sein, die Zuhörer direkt und anonym einzubeziehen, indem Ideen, Meinungen, Wertungen online "on the fly" erfolgen ( Smartphon-App ). Es gibt zahlreiche Fragemuster. Die zusammengeführten Antworten werden sofort präsentiert und diskutiert, wie z.B.

 WER   soll es machen             ( Akteure )? 
 WAS   soll gemacht werden        ( Inhalte )? 
 WARUM soll es gemacht werden     ( Begründungen )?
 WOZU  soll es gemacht werden     ( Zielsetzungen )?
 WANN, WO soll es gemacht werden  ( Zeitplanung, Organisation )?
 WIE   soll es gemacht werden     ( Methoden des Vorhabens )?
Beispiele: Lastenheft und Pflichtenheft Einstiegsmotivation

Beispiel: Zur Vorbereitung eines Softwareproduktes finden Besprechungen mit unterschiedlichen Gruppen statt. Bei jeder Besprechung sollen die Teilnehmer ( Smartphon ) Anwenderwünsche, Ideen, Software-Lastenheft/Pflichtenheft, usw. anonym und on passon einbringen. Bereits während der Sitzung sollen die Anwenderwünsche, Ideen, usw. präsentiert und diskutiert werden. Diese fertige "self-made"-Lösung soll das "elektronische Sammeln, Verwalten, Präsentieren von ..." ermöglichen.

Für die Projekt-Umsetzung kann dieses Beispiel Entwickler-Hinweise geben. Die SRS ( de.wikipedia, Software Requirements Specification ) umfassen Lastenheft ( Customer-Requirement = C-Requirement ) wie Pflichtenheft ( Development-Requirement = D-Requirement ).

Beispiele: Roh-Text-Muster Einstiegsmotivation

Einige mögliche Beispiele für Roh-Text-Muster sind.

Mikro-Struktur für Weblinks:

*Weblink:
*Thema:
*Datum: 2013-11-22  10:36:00| 
*Url:
*Notizen:

Mikro-Struktur für Tagebuch-Einträge:

*Tagebuch-Eintrag:
*Datum: 2013-11-22 10:36:20| 
*Bezug:
*Notiz:
*Weblinks:

Mikro-Struktur für Kartei-Karten:

*Kartei-Karte:
*Thema:
*Datum: 2013-11-22  10:36:10| 
*Quellen:
*Freitext:
*Zitate:
*Stichwörter:

Mikro-Struktur für Kurznotizen:

*Kurznotiz:
*Thema:
*Datum: 2013-11-22  10:35:48| 
*Notizen:

Lastenheft: (Auftragsnehmer, DIN 69905):

*Produkt: (kurz-Name, Lang-Name)
*Datum: 
*Ziel: (Was soll erreicht werden?)
*Einsatz: (Produkt-Zielg ruppen)
*Kontexte (Produkt-Ressourcen, Zeitraster)
*Funktionen: (aus Anwendersicht)
*Design: (Benutzeroberfläche, Anwenderwünsche)
*Produktdaten: (persist. Daten, System-Zustände)
*Leistungen: (Produkt-Performance, Mengengerüst)
*Qualitätsanforderungen: (Erweiterbarkeit)

Software-Pflichtenheft: (IEEE 830):

*Pflichtenheft: (IEEE 830)
*Datum: 
*Produkt: (kurz-Name, Lang-Name)
*Ausgangssituation: (akt. Stand, Einsatz)
*Dokumentation: (akt. Stand, Projekt-Glossar/Index)
*Anforderungen: (aktueller Prozeß, Abnahmekriterien)
*Stabilität: (akt. Fehlerverhalten, Erweiterbarkeit)
*Fortgang (Ideen, Prozeß-Zeitraster)
AJAX ( Schnellstart ) AJAX-Einführung

Siehe AJAX from Scratch ( Vergleich zwischen Formular und AJAX ) und ggf. ergänzend Lade HTML-Fragment mit AJAX

AJAX-Response ( Callback ) Was ist das?

Zu AJAX gehört das ECMAScript-Objekt new XMLHttpRequest(), dessen Nutzung etwa wie folgt ist:

var xhr;
try {xhr = new XMLHttpRequest();} catch (try_ms) {
 try {xhr = new ActiveXObject("Msxml2.XMLHTTP");} catch (try_ms_old) {
  try {xhr = new ActiveXObject("Microsoft.XMLHTTP");} catch (failed) { xhr = false; }}}
} 
if (!xhr) { alert("Senden unmöglich\nKein Internet/XMLHttpRequest"); return; }

xhr.open("POST", "my.php", true); // AJAX-post-submit
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

var str = 'KEY1='    + MYSTR1 
     + '&JSONkey=' + JSON.stringify(obj);
xhr.send(str);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
 // lediglich zum 1. Testen 
 alert(xhr.responseText); // oder that.form.LOCATION.value = xhr.responseText;
 
 //was dann? if (o.post_reset) {that.form.reset(); }
 //was dann? if (o.post_htm) { bib.url_to_frame(o.frame_name, obj.urlpost); }
}

Wurden der var str = 'KEY1='+MYSTR1 + '&JSONkey='+JSON.stringify(obj); mit xhr.send(str) an my.php gesendet, so wird bei einer php-Antwort ( echo-Ausgabe ) die Browser-Callback-Funktion xhr.onreadystatechange = function () {...) aufgerufen. Der Antwort-String beifndet sich in xhr.responseText

Ein Anfang für PHP ... in der Vorlesung . Zeige Start als .htm, php-Code ( ungeprüfte Hinweise !), an.

PHP-Quelltext online anzeigen Wie?

Bitte an den Anfang der php-Datei ...

<?php 
 if ( isset($_GET['show_php_code'] ) ) { 
      die( highlight_file(__FILE__,1) ); 
 }

 //  anzeigen von php-Quelltext ...

?>


AJAX ( MDI-AJAX-Demo ) Hinweise, Anleitung

Diese Demo ist noch fehlerhaft und verwendet MDI-AJAX-Demo ( siehe dort den Quelltext ). Die MDI-AJAX-Demo enthält ein Formaular und ( verdeckt ) den AJAX-Aufruf top.bib.form_check(that, o ) von index.htm.

In der Seite aufgabe-10-2013-start.htm werden bei button-Klick onclick="check_form(this, {})" die Formularelemente mit Hilfe von that.form.ELMENTNAME clientseitig geprüft. Beim Senden der Demo-Formlardaten mit AJAX sammelt werden Rumpf von form_check() {...} die Formulardaten ( Strings ) und weitere Daten im obj = { ... } gesammelt. Das Objekt obj wird mit Mit JSONstr = JSON.stringify(obj) in einen JSONstr gewandelt.

Es ist günstig, eine zusätzliche hidden-Textarea <textarea name="LOCATION" zu verwenden, die den gesamten JSONstr vor dem Senden zunächst in LOCATION schreibt (debug-Kontrolle) und ggf. that.for.LOCATION.value sendet.

Die aufgerufen my.php-Datei wandelt $JSONstr mit $obj = json_decode($JSONstr,true) in ein PHP-Array-Objekt.

AJAX-Response Was?

Abhängig vom Anwendungsfall werden ( nach dem Speichern der übermittelten Daten ) auf der Client-Seite unterschiedliche Reaktionen gebraucht.


Optionale Ergänzungen Profi-Toolchen

Optional soll die erstellte Lösung eine einfache End-zu-End-Verschlüsselung ( auch der Meta-Daten ) haben und auch von Laien an die eigenen Bedürfnisse angepaßt werden können, ohne daß dazu komplexe Developer-Entwicklungstools erforderlich sind.

Viel Freude bei der Ausarbeitung!
Letzter Abgabetermin
1.So 2014 um 12.00 Uhr