Pflichtenheft Version 1.0









Firma:    Brainstrom mkH
Mitarbeiter: Brigitte Bonder, Dominik Grüning, Wolfgang Hoppe, Holger Picker,
                      Ludmilla Scheinker, Martin Swobodzinski, Knut Willems
Projekt: U-Topp (UML-Tool Programmier-Praktikum)
Kunde:   Dietmar Lammers
Version: 1.0
Datum:   25.11.00


 

1 Zielbestimmung

Es soll ein Case – Tool programmiert werden, das eine Hilfe bei der Softwareentwicklung mit UML sein soll. Das Programm soll es ermöglichen, über Eingabemasken Use – Cases, Klassen, Verbindungen zwischen den einzelnen Klassen bzw. Use – Cases und Pflichtenhefte eingeben zu können. Wichtig ist hierbei, dass alle erstellten Objekte einzeln abgespeichert werden können im Datenaustauschformat XML. Die Komponenten sollen graphisch flexibel dargestellt werden, so sollen unterschiedliche Möglichkeiten der Detaillierung darstellbar sein. Klassen sind z.B. sowohl mit als auch ohne Attribute und Operationen darstellbar.

1.1 Musskriterien

1. Eingabe der UML – Komponenten "Klasse", "Objekt" und "Use – Case“, eines Pflichtenheftes und
    Verbindungen zwischen Komponenten über Erfassmasken
2. graphische Darstellung / Ausgabe dieser Objekte
3. variierender Detaillierungsgrad bei der Anzeige der Komponenten
4. Editiermöglichkeit der Komponenten
5. Einfache Einbindungsmöglichkeit in ein späteres Gesamttool

1.2 Wunschkriterien

1. Erstellungsmöglichkeit von Klassendiagrammen, Use – Case – Diagrammen und
    Sequenzdiagrammen
2. Möglichkeit der Eingabe von frei wählbaren Datenzusätzen

1.3 Abgrenzungskriterien

1. Es soll kein vollständiges UML-Tool erstellt werden.

2 Produkteinsatz

2.1 Anwendungsbereiche

1. Softwareengineering (im Bereich der Planung, Analyse und Design mit UML)
2. Präsentationen von Softwareentwicklungsideen

2.2 Zielgruppen

1. Programmierer
2. Softwareentwickler, die UML verwenden

2.3 Betriebsbedingungen:

1. Benutzer sollte Erfahrungen über Softwareengineering haben

3 Produktumgebung

3.1 Software

1. JDK – Environment

3.2 Hardware

1. eine hinreichend leistungsfähige Hardware, auf der Java läuft

3.3 Schnittstellen

1. XML als Datenaustauschmöglichkeit

4 Produktinformation

 4.1. Use Case Diagramme

1. Neue Komponente ( = Use - Cases, Klassen, Links, Pflichtenheft)
 
Akteur Benutzer
Vorbedingung -
Nachbedingung Erfolg: Komponente angelegt
Ablauf Anlegung der neuen Komponente, Übergang in Edit - Vorgang
Ausnahmen -

2. Komponente öffnen
 
Akteur Benutzer
Vorbedingung -
Nachbedingung Erfolg: Komponente geöffnet, Daten geladen
Ablauf Benutzer wählt Komponente aus, die Daten werden geladen 
Ausnahmen Falls schon eine Komponente geöffnet: Fehlermeldung

3. Komponente editieren
 
Akteur Benutzer
Vorbedingung Komponente geöffnet 
Nachbedingung Erfolg: Datenveränderungen vorgenommen, in Grafik übernommen
Ablauf Daten einlesen, verändern und speichern
Ausnahmen -

4. Komponenten speichern
 
Akteur Benutzer
Vorbedingung Komponente geöffnet
Nachbedingung Erfolg: Komponente gespeichert
Ablauf Der Benutzer gibt den Dateinamen für die Komponente ein, diese wird gespeichert
Ausnahmen Komponentenname schon vorhanden: Fehlermeldung

5. Anzeigen
 
Akteur Benutzer
Vorbedingung Komponente geöffnet
Nachbedingung Erfolg: Komponente grafisch dargestellt
Ablauf Die gewählte Komponente wird grafisch dargestellt mit den geladenen Daten
Ausnahmen -

4.2 Sequenzdiagramme

1. Komponente neu
 
 










2. Komponente öffnen
 
 










3. Komponente editieren
 
 















4. Komponente speichern
 
 















5. Anzeigen
 
 












5. Konzeptklassen und Daten

5.1. Klassendiagramm

5.2 Klasse Info
 
Info
String info_name 
String filename 
String info_version 
String erstellungsdatum 
String aenderungsdatum 
String info_autor 
String info_firma
String kommentag
edit(String fenstertitel, String aufrufer)
read(xml xmlobjekt)
write(xml xmlobjekt)

5.3 Klasse Klasse
 
 Klasse
info klasse_info
String klasse_stereotyp 
String klasse_eigenschaftswerte 
klasse_methoden: 
  String methode_name 
  String methode_gueltigkeit 
  String methode_rueckgabetyp 
  String methode_parameter 
  String methode_zusicherung 
  Vector klasse_methoden 
klasse_attribute: 
  String attribut_name 
  String attribut_gueltigkeit 
  String attribut_datentyp 
  String attribut_initialwert 
  String attribut_zusicherung 
  Vector klasse_attribute 
edit() 
lade(String filename) 
save(String filename) 

5.4 Klasse Objekt
 
 
Objekt
info objekt_info
String objekt_stereotyp
String objekt_klasse 
String objekt_eigenschaftswerte 
objekt_methoden: 
  String methode_name 
  String methode_gueltigkeit 
  String methode_rueckgabetyp 
  String methode_parameter 
  String methode_zusicherung 
  vector objekt_methoden 
objekt_attribute: 
  String attribut_name 
  String attribut_gueltigkeit 
  String attribut_datentyp 
  String attribut_attributwert 
  String attribut_zusicherung 
  vector objekt_attribute 
edit() 
lade(String filename) 
save(String filename)

5.5 Klasse Verbindung
 
Verbindung
Info header 
String beschriftung 
String stereotyp
String zusicherung
Knoten:
  String pfeiltyp
  String multiplikator
  String zusicherung_knoten
  Knoten knoten1
  Knoten knoten2
edit() 
lade(String filename) 
save(String filename) 

5.6 Klasse Use - Case
 
UseCase
Info usecase_info 
String usecase_nummer
Vector usecase_attribute
Vector usecase_attribute_text
edit() 
lade(String filename) 
save(String filename) 

5.7 Klasse Pflichtenheft
 
Pflichtenheft
Info pflichtenheft_info 
String pflichten_text 
edit()
lade(String filename) 
save(String filename)

5.8. Klasse Topp
 
UMLTOPP
boolean klasse_offen
boolean objekt_offen
boolean usecase_offen
boolean verbindung_offen
boolean ph_offen
start()

5.9 Klasse XML
 
 
XML
char safelastchar
int internalcount
int maxbytes
Vector vectorarray
loadXML(String filename)
saveXML(String filename)
getChar() : char
lastChar() : char
writeChar(char c)
getTag(int maxlength) : String
writeTag(string tag, int leerzeichen)
getString(intmaxlength, String tag) : String
writeString(String st)
skipTag(String tag)

5.10 Klasse Start_GUI
 
Start_GUI
main()

5.11 DTD

<?xml version="1.0"?>

<!-- ================================================================ -->
<!-- Header DTD       -->
<!-- ================================================================ -->
<!-- wird jeweils eingebunden in die DTDs von       -->
<!-- Objekt, Klasse, Verbindung, UseCase und Pflichtenheft       -->

<!ELEMENT header (name?, filename?, version?,
date?, lastchanged?,
author?, company?, coment?) >
<!ELEMENT name (#PCDATA) >
<!ELEMENT filename (#PCDATA) >
<!ELEMENT version (#PCDATA) >
<!ELEMENT date (#PCDATA) >
<!ELEMENT lastchanged (#PCDATA) >
<!ELEMENT author (#PCDATA) >
<!ELEMENT company (#PCDATA) >
<!ELEMENT comment (#PCDATA) >

<!-- ================================================================ -->
<!-- Objekt DTD       -->
<!-- ================================================================ -->

<!ELEMENT objekt (header, body) >
<!ELEMENT body (stereotyp?, klasse?, eigenschaftswerte?,
methode*, attribut*) >
<!ELEMENT stereotyp (#PCDATA) >
<!ELEMENT klasse (#PCDATA) >
<!ELEMENT eigenschaftswerte (#PCDATA) >
<!ELEMENT methode (name, gueltigkeit?, rueckgabetyp?
parameter?, zusicherung?) >
<!ELEMENT attribut (name, gueltigkeit?, datentyp?
wert?, zusicherung?) >
<!ELEMENT gueltigkeit (#PCDATA) >
<!ELEMENT rueckgabetyp (#PCDATA) >
<!ELEMENT datentyp (#PCDATA) >
<!ELEMENT parameter (#PCDATA) >
<!ELEMENT wert (#PCDATA) >
<!ELEMENT zusicherung (#PCDATA) >
 

<!-- ================================================================ -->
<!-- Klasse DTD       -->
<!-- ================================================================ -->

<!ELEMENT klasse (header, body) >
<!ELEMENT body (stereotyp?, eigenschaftswerte?,
methode*, attribut*) >
<!ELEMENT stereotyp (#PCDATA) >
<!ELEMENT eigenschaftswerte (#PCDATA) >
<!ELEMENT methode (name, gueltigkeit?, rueckgabetyp?
parameter?, zusicherung?) >
<!ELEMENT attribut (name, gueltigkeit?, datentyp?
initialwert?, zusicherung?) >
<!ELEMENT gueltigkeit (#PCDATA) >
<!ELEMENT rueckgabetyp (#PCDATA) >
<!ELEMENT datentyp (#PCDATA) >
<!ELEMENT parameter (#PCDATA) >
<!ELEMENT initialwert (#PCDATA) >
<!ELEMENT zusicherung (#PCDATA) >
 

<!-- ================================================================ -->
<!-- Verbindung DTD       -->
<!-- ================================================================ -->

<!ELEMENT verbindung (header, body) >
<!ELEMENT body (beschriftung?, stereotyp?,
zusicherung?, knoten*) >
<!ELEMENT beschriftung (#PCDATA) >
<!ELEMENT stereotyp (#PCDATA) >
<!ELEMENT zusicherung (#PCDATA) >
<!ELEMENT knoten (pfeiltyp?, multiplikator?,
zusicherungs?) >
<!ELEMENT pfeiltyp (#PCDATA) >
<!ELEMENT multiplikator (#PCDATA) >
<!ELEMENT zusicherung (#PCDATA) >
 

<!-- ================================================================ -->
<!-- UseCase DTD       -->
<!-- ================================================================ -->

<!ELEMENT usecase (header, body) >
<!ELEMENT body (nummer?, eintrag*, ?zusicherung) >
<!ELEMENT eintrag (bezeichnung, text) >
<!ELEMENT bezeichnung (#PCDATA) >
<!ELEMENT text (#PCDATA) >
<!ELEMENT zusicherung (#PCDATA) >
 

<!-- ================================================================ -->
<!-- Pflichtenheft DTD       -->
<!-- ================================================================ -->

<!ELEMENT pflichtenheft (header, body) >
<!ELEMENT body (text) >
<!ELEMENT text (#PCDATA) >
 

6. Leistungen / Funktionen

6.1 Komponenten laden

    - Laden von Use-Cases, Klassen, Objekten, Verbindungen und Pflichtenheften

6.2 Komponenten editieren

    - Editieren von Komponenten über Editiermasken, die auf die jeweilige Komponente zugeschnitten sind

6.3 Komponenten anzeigen

    - Die unterschiedlichen Komponenten können in einem im Editierfenster enthaltenden
      Vorschaufenster angezeigt werden, hierbei kann bei Klasse und Objekt ein Detaillierungsgrad
      gewählt werden.

6.4 Komponenten speichern

    - Die Daten der unterschiedlichen Komponenten werden mittels XML gespeichert.

7. Benutzeroberfläche

7.1 Grundkonzeption

Das Programm enthält eine Menüleiste mit den wichtigsten Grundfunktionen. Über die Menüpunkte
Use - Case, Klasse, Objekt, Verbindung und Pflichtenheft erreicht man jeweils die Punkte
"neu" und "öffnen". Es öffnet sich jeweils ein Pop - up - Fenster zum Eingeben der Daten für die
Komponenten. Die Dialog - Fenster enthalten Eingabefelder für die Eingabe von Namen, Methoden etc.
Attribute, Methoden etc. werden in Listen verwaltet und können dort verändert werden.

7.2 Screenshots

1. Hauptprogramm

2. Eingabemaske für die Klasse
 

3. Eingabemaske für die Objekte
 


4. Eingabemaske für die Verbindungen


 

5. Eingabemaske für das Pflichtenheft

6. Editiermaske für die Use - Cases
 

7. Editierfenster für die Eingabe der allgemeinen Informationen zu den Komponenten

8. Qualitätsziele
 
Ziel ++ + +- -
Funktionalität    +       
Zuverlässigkeit    +      
Benutzbarkeit    +      
Effizienz    +      
Änderbarkeit ++          

 



Letzte Änderung: 10.01.01