SoftwareEngineering

Download Report

Transcript SoftwareEngineering

Software Engineering
Studiengang Betriebsinformatik
Sommersemester 2010
Vorlesung : 4 Veranst. á 2 DS
Praktikum : 1 Veranst. á 2 DS
= 16 Unterrichtsstunden
= 4 Unterrichtsstunden
Inhalt
1.
Einführung: Ziele und Arbeitsmethoden der Softwaretechnologie
2.
Objektorientierte Modellierung
Unified Modeling Language (UML 2)
3.
Implementation von UML-Modellen
4.
Systemarchitekturen
5.
Der Software-Entwicklungsprozess
6.
Wiederverwendung
Literatur
H. Balzert:
Lehrbuch der Objektmodellierung. Analyse und Entwurf
mit der UML 2.
Spektrum Akademischer Verlag, 2004
M. Fowler, K. Scott: UML konzentriert. Eine Einführung in die StandardObjektmodellierungssprache.
Addison-Wesley, 2. Aufl., 2000
C. Rupp, S. Queins, B. Zengler:
UML 2 glasklar, Praxiswissen für die UML-Modellierung
Carl Hanser Verlag, 3. Aufl., 2007
W. Pree:
Komponentenbasierte Softwareentwicklung mit Frameworks.
dpunkt.verlag, 1997
I. Sommerville:
Software Engineering.
Addison-Wesley, 8. Aufl. 2007
Rational Software Corporation Homepage:
http://www-01.ibm.com/software/rational/
1
Einführung: Ziele und Arbeitsmethoden der
Softwaretechnologie
• Softwareproduktion
• Lebenszyklusmodelle
• Methodologie
→ Objekttechnologie
• von Algorithmen zu Domänen
• „Große Systeme“:
Entwicklergruppen über längere Zeit
• Personen (Nutzer) agieren in Rollen
• Entwicklung endet nicht mit der 1. Systemversion:
Erweiterung und Anpassung („Wartung“)
offen für
Fragestellungen
• Wiederverwendung beginnt nicht erst mit der
eigenen Entwicklung
• Bestimmte Entwicklungsmethoden führen zu
bestimmten Software-Architekturen
• Entwicklungsmethoden bedürfen einer
rechentechnischen Unterstützung : CASE
• Zweckbindung -> Musterarchitekturen
Phasen im Softwareentwicklungsprozess:
Analyse
Anforderungsanalyse (Pflichtenheft)
Anwendungsfallanalyse
Problembereichsanalyse (Geschäftsklassen)
Entwurf
Softwareentwurf
(Geschäftsklassen + Fachklassen)
Algorithmenentwurf
Komponenten-/Systementwurf
Implementation
Programmierung, weitestgehende Generierung
Test
Unittest, Integrationstest, Systemtest
→ möglichst entwicklungsbegleitend
Lebenszyklusmodelle:
Die Unified Modeling Language
( G. Booch, J. Rumbough, I. Jacobson )
► Diagramme visualisieren Ausschnitte aus bzw. Sichten auf
Modelle
– Diagrammtypen
– Modelltypen
– Eine grafische Sprache
– Metamodellierung
Diagrammtypen:
•
•
•
•
•
•
•
•
Use-Case-Diagramm
Klassenstruktur-Diagramm
Sequenz-Diagramm
Kommunikations-Diagramm
Zustands-Diagramm
Aktivitäten-Diagramm
Komponenten-Diagramm
Verteilungs-Diagramm
(use case diagram)
(static structure diagram)
(sequence diagram)
(communication diagram)
(statechart diagram)
(activity diagram)
(component diagram)
(deployment diagram)
Modelltypen:
•
•
•
•
•
•
Use-Case-Modell
Klassenstrukturmodell
Interaktionsmodell
Zustandsmodell
Komponentenmodell
Verteilungsmodell
(Sequenz- u. Kommunikations-Diagramm)
(Zustands- u. Aktivitäten-Diagramm)
Metamodellierung
► Die UML ist eine grafische formale Sprache
=>
Syntax + Semantik
► Die Definition einer formalen Sprache erfolgt mit den Mitteln einer
(formalen) Sprache
=>
Metasprache zur Definition einer Objektsprache
Bsp.:
EBNF zur Definition der Syntax von Programmiersprachen
► UML zur Modellierung von UML-Konzepten
=>
Metamodelle
2
Objektorientierte Modellierung
•
•
•
•
•
•
•
•
•
•
•
•
Klassen-Instanzen-Abstraktion
Attribute und Operationen
Sichtbarkeit und Lebensdauer
Assoziationen und Verknüpfungen
Aggregation und Komposition
Generalisierung und Spezialisierung
Vererbung und Delegation
Polymorphie
Abstrakte und konkrete Klassen
Instanzen als Laufzeitobjekte
Statechart-Modelle
Aktivitäten-Diagramme
Klassen-Instanzen-Abstraktion
Objekt
ist ein (abstrakter) Gegenstand oder ein Konzept mit klarer Abgrenzung und
präziser Bedeutung.
Beispiele: Kommissar Rex, das Fenster links oben im Haus, Herr Lutze,
Mediatec GmbH, ein bestimmter Button auf der GUI des Finanzprogrammes,
...
Klasse
•
•
•
umfasst eine Menge von Objekten, die
ähnliche Struktur und ähnliche Merkmale (Attribute) besitzen,
ähnliches Verhalten zeigen (Operationen bzw. „Methoden“),
in Relationen zu Objekten anderer Klassen oder der gleichen Klasse stehen.
Eine Klasse kann durch Aufzählung der Objekte oder durch die Definition der
Eigenschaften der Objekte (Klassendefinition) beschrieben werden.
Zu einer Klasse gehörige Objekte werden als Instanzen, Instanzobjekte oder auch
Exemplare der Klasse bezeichnet. Klassen werden benannt.
Beispiele: Hund, Fenster, Person, Firma, Button, ...
Objekte
• sind immer Instanzen einer bestimmten Klasse und
• besitzen eine Identität und eine Lebensdauer.
Jedes Objekt kennt die Klasse, zu der es gehört.
Die Identifizierung und Benennung von Objekten hilft, die zu modellierende Welt
zu verstehen. Objekte sind Ausgangspunkt für Implementierungen auf
Computern.
Eine Klassendefinition umfasst (evtl. implizit) eine Vorschrift zur Erzeugung von
Instanzen („Konstruktor“).
Klassenbildung ist Abstraktion
( bei einer Abstraktion werden unwesentliche Eigenschaften weggelassen;
sprich: es wird von unwesentlichen Eigenschaften abstrahiert ).
Abstraktion ist ein mächtiges Mittel zur Bewältigung von Komplexität.
Art und Weise der Zerlegung eines Problems bzw. einer Domäne in
Klassen/Objekte ist subjektiv
Attribute und Operationen
Attribut :
Merkmal mit einer Ausprägung (Datenwert)
Jedes Attribut besitzt einen Wert aus dem Wertebereich für jedes Objekt.
Jedes Objekt einer Klasse kann für dasselbe Attribut zum selben Zeitpunkt
einen anderen Wert besitzen
-> „Instanzvariable“
Operation : Funktion, die auf Objekte einer Klasse angewendet werden kann.
Alle Objekte einer Klasse haben die gleichen Operationen.
Implementierung der Operation in Programmiersprache -> „Methode“
Beispiel:
P ers on
name:string
vorname:string
geschlecht:char
geburtsjahr:int
+alter:int
Ma x : Pers on
Mori tz :P ers on
•
Die Gesamtheit der Werte (d.h. der Ausprägungen) aller Attribute
eines Instanzobjektes bestimmt den Zustand des Objekts
zu einem bestimmten Zeitpunkt.
•
In Operationen kann auf Werte von Attributen zugegriffen werden. Das
Verhalten eines Objekts wird durch seinen Zustand mit bestimmt
(im Unterschied zu einer Prozedur).
•
Die Verhaltensbeschreibung existiert unabhängig von der Anzahl vorhandener
Instanzen je Klasse nur einmal und ist der Klasse zugeordnet.
Klassendiagramme (eigentlich: Klassenstrukturdiagramme)
formale grafische Notation für die Modellierung von Objekten, Klassen und Relationen,
wird durch Entwicklungswerkzeuge unterstützt.
Klassen
klassenname
[visibility] attributname : datentypname [ = default-wert ]
…
[visibility] operationsname ( argumentliste ) : ergebnistypname
…
Instanzen
[ instanzname ] : klassenname
attributname = wert
…
Instanziierungsrelation
klassenname
[instanzname] : klassenname
Klassen- u. Instanzensymbole können bei manchen Werkzeugen innerhalb eines
Klassendiagramms verwendet werden.
P ers on
name:string
vorname:string
geschlecht:char
geburtsjahr:int
+alter:int
Ma x : Pers on
Mori tz :P ers on
Unterscheiden:
→ Wert einer Instanzvariablen name
→ Name (Benennung) eines Objekts, z.B. Moritz
Sichtbarkeit und Lebensdauer
► Konstruktoren sind spezielle Operationen zur Erzeugung von Objekten. Objekte
existieren solange, solange sie referenzierbar sind bzw. bis sie explizit aus der
Objektwelt entfernt werden (durch Destruktoren).
► Durch Benennungen werden Objekten Namen (in einer Umgebung) zugeordnet.
► Objekte besitzen einen zeitlich veränderlichen Zustand
-> bestimmt durch die Werte aller Instanzvariablen (Ausprägungen aller Attribute)
► Sichtbarkeit (visibility) für Attribute und Operationen:
+
public
von überall sichtbar
#
protected
nur eigene Klasse und
abgeleitete (spezialisierte) Klassen
-
private
nur eigene Klasse
~ (oder keine Angabe) package wide
nur Klassen innerhalb eines Packages
Unterscheidung:
instance scope
->
„Instanzvariablen“, „Methoden“
class scope
->
„Klassenvariablen“, „Klassenmethoden“
(Syntax: Name und Typ werden unterstrichen)
Assoziationen und Verknüpfungen
Assoziation:
abstrakte, nicht näher charakterisierte Beziehung zwischen
zwei (binäre A.) oder
mehr (ternäre A. bzw. Assoziation höherer Ordnung) Klassen.
Notation:
binäre Ass.:
A. höherer Ordn.:
Beispiel:
Linie, die zwei Klassensymbole verbindet.
Rhombus, der durch Linien mit den
Klassensymbolen verbunden ist.
Verknüpfung:
( „Link“ )
Element einer Assoziation. Setzt eine Anzahl von Objekten
in Beziehung
Ein Pfad einer Assoziation kann an jedem Ende eine Beschriftung tragen.
Arten der Beschriftung (Auswahl):
Multiplizität
untere_grenze .. obere_grenze
0 .. *
Ordnung
geordnete Elemente werden durch {ordered} spezifiziert
Rollenname
spezifiziert die Rolle, die die Klasse am Ende des Pfades spielt
Aggregationsindikator
hohler/ausgefüllter Rhombus
Aggregation und Komposition
Aggregation:
bezeichnet die
„Teil-Ganzes“-Relation
(„ist Teil von“ bzw. „besteht aus“)
Objekte, die die Komponenten einer Sache repräsentieren, sind mit einem Objekt verknüpft,
das die Komponentengruppe repräsentiert.
Notation:
Ein Objekt der Klasse1 repräsentiert die Komponentengruppe,
Objekte der Klasse2 repräsentieren die Komponenten
Eigenschaften:
• Eine Aggregation ist eine Sonderform der Assoziation mit zusätzlicher Semantik
• Einschränkung auf Beziehung zwischen einer Komponentengruppenklasse und
einer Komponentenklasse
(eine Komponentengruppe mit Komponenten verschiedener Typen hat
entsprechend viele Aggregationsrelationen)
• Eine Aggregation ist transitiv und antisymmetrisch
• einige Eigenschaften der Komponentengruppe pflanzen sich auf die Komponenten fort
Beispiel: Ein Dokument besteht aus mehreren Absätzen, die ihrerseits aus mehreren
Sätzen bestehen.
Beispiel: In der Programmiersprache C sind ein Name, eine Argumentliste und eine
Verbundanweisung Teile einer Funktionsdefinition.
Feststellungen:
 Komponentenobjekte können unabhängig vom Komponentengruppenobjekt existieren.
Beispiel: Teile eines Computers
 Die Existenz eines Komponentenobjektes kann von der Existenz des
Komponentengruppenobjektes abhängen, zu dem es gehört.
Beispiel: Die Leimung ist Teil eines Buches zu dem sie gehört.
Komposition
- bezeichnet eine „enge“ Aggregation.
- konstituiert eine Verbindung der Teile mit dem Ganzen auch
hinsichtlich der „Lebenslinie“.
Beispiel:
Generalisierung/Spezialisierung und Vererbung
Spezialisierung:
Beziehung zwischen einer Klasse und einer oder mehrerer
verfeinerter (speziellerer) Versionen davon.
Gegenrichtung: Generalisierung
Bezeichnungen
Oberklasse
(Superklasse)
die Klasse, die verfeinert wird
Unterklasse
(Subklasse)
jede Klasse, die eine verfeinerte Version ist
Inklusionsrelation
(„is a“-Relation)
Spezialisierungsbeziehung zwischen Klassen
Eigenschaften: transitiv, antisymmetrisch
Vererbung:
•
„Merkmale“, die der Oberklasse zugeordnet sind, werden an die Unterklassen
weitergegeben und von den Unterklassen genutzt, sie gelten auch für die
Unterklassen und müssen dort nicht erneut angegeben werden.
entlang der Inklusionsrelation werden „Merkmale“ vererbt.
•
Unterklassen können Merkmale spezialisieren, d.h.
–
–
–
–
zusätzliche Attribute
zusätzliche Operationen
für geerbte Operationen spezielle Realisierungen vorsehen
Default-Werte für geerbte Attribute neu festlegen
•
die Begriffe Vorfahre und Nachkomme beschreiben Generalisierung/Spezialisierung
(und Vererbung) über mehrere Ebenen hinweg
•
eine Instanz einer Unterklasse ist gleichzeitig eine Instanz aller ihrer
Vorfahrenklassen
Beispiel:
• jedes Buch,
• jedes Fachbuch,
• jedes Informatik-Fachbuch
besitzt einen Autor und eine ISBN
• jedes Fachbuch,
• jedes Informatik-Fachbuch,
• jedes Medizin-Fachbuch
besitzt ein Literaturverzeichnis
Constraints:
neben dem Dreieck in geschweiften Klammern notiert.
overlapping, falls ein Nachkomme von mehr als einer Subklasse
abgeleitet werden kann, andernfalls disjoint
complete, falls die Anordnung der Subklassen vollständig ist,
andernfalls incomplete
Ein Diskriminator
kennzeichnet eine Partitionierung der Subklassen.
(es wird nach verschiedenen Gesichtspunkten spezialisiert)
-> an die Linie neben dem Dreieck notiert
Mehrfachvererbung:
Klassenhierarchie:
eine Klasse kann mehrere Subklassen,
aber nur eine Superklasse besitzen.
Klassenheterarchie:
eine Klasse kann mehrere Subklassen und
mehrere Superklassen besitzen.
Besitzt eine Klasse mehrere Superklassen, spricht man von Mehrfachvererbung.
Die Klasse erbt Merkmale von allen Superklassen.
Ein Merkmal aus der gleichen Vorfahrenklasse, das in mehr als einem Pfad
gefunden wird, wird nur einmal geerbt.
Es können Mehrdeutigkeiten auftreten.
Vererbung und Delegation
Mittels Aggregation + Delegation kann (in der Programmiersprache)
fehlende Mehrfachvererbung umgangen werden.
Delegation:
eine Klasse A hat ein Attribut mit Wertebereich Klasse B.
(Instanzen von A besitzen für das Attribut als Wert einen Verweis
auf eine Instanz von B)
= Implementierungsmechanismus, mittels dessen ein Objekt eine
Operation auffängt und an ein Objekt entsprechend der Aggregation
sendet.
Operationen werden aber nicht automatisch über die Aggregation hinweg vererbt!
Beispiel :
Beispiel: Realisierungsmöglichkeiten bei fehlender Mehrfachvererbung
Polymorphie
•
wörtlich: „Vielgestaltigkeit“.
•
hier: eine durch Namen und Signatur spezifizierte Operation kann in
unterschiedlichen abgeleiteten Klassen durch unterschiedliche Methoden
implementiert sein.
Signatur: Anzahl und Typen der Parameter einer Operation sowie ggf.
Typ des Rückgabewertes
statische Polymorphie vs. dynamische Polymorphie
gleichnamige Operationen mit
unterschiedlichen Parametertypen
„späte Bindung“
Beispiel: Baumklassen
Rekursive Definition:
Ein Mobile ist
- ein Gewicht oder
- ein Gestänge mit Mobiles an beiden Enden
Abstrakte und konkrete Klassen
Abstrakte Klasse:
Klasse, die selbst keine direkten Instanzen besitzt,
deren Nachkommen aber direkte Instanzen besitzen.
Konkrete Klasse:
Klasse, die direkte Instanzen besitzen kann
(„Instanziierbare Klasse“)
Nur konkrete Klassen können Blattklassen im Vererbungsbaum sein!
Eine abstrakte Klasse kann sowohl abstrakte Operationen als auch nicht abstrakte
Operationen definieren.
Abstrakte Operation:
Eine Klasse kann nur das Protokoll einer Operation definieren,
ohne eine entsprechende Methode zu implementieren.
Kennzeichnung abstrakter Operationen:
{ abstract } oder Signatur in italics
Ist eine Operation nicht als abstract gekannzeichnet, muß die Operation implementiert werden.
Instanzen als Laufzeitobjekte
•
Instanzobjekt
•
Klassen können auch Laufzeitobjekte sein ( -> Klassenobjekt)
ist Laufzeitobjekt,
belegt Speicherplatz, besitzt Identität und Lebensdauer
Objekte können benannt werden
–
–
–
–
global
(Klassen)
Paket-lokal (Klassen)
Klassen-lokal
Methoden-lokal
Typkompatibilität:
Mit einem Namen kann zeitlich wechselnd
- ein Objekt der definierten Klasse oder
- ein Objekt einer der Subklassen dieser Klasse
assoziiert sein
Objekte befinden sich in Zuständen
= Vereinigung der Werte aller Attribute zu einem bestimmten Zeitpunkt
Objekte können untereinander mittels Nachrichten kommunizieren
• Methodenaufrufe
(mit Antwort)
• Ereignisse
(ohne Antwort, Antworten sind selbst
Ereignisse)
Bei der Abarbeitung von Methoden oder der Reaktion auf Ereignisse
(in sog. Handlern) können Objekte ihren Zustand ändern.
Ereignisse und Zustände
Ereignis:
• etwas, das in einem bestimmten Augenblick passiert. Ein Ereignis hat keine Dauer.
• Übertragung von Informationen von einem Objekt zu einem anderen.
Ereignisse können in Ereignisklassen gruppiert werden.
Beispiele:
Ereignisklassen mit Attributen
Telefonhörer abgehoben.
Ziffer gewählt (Ziffer).
Maustaste gedrückt (Taste, Ort).
Flug fliegt ab (Datum, Fluglinie, Flugnummer).
Instanzen der Ereignisklassen
Telefonhörer abgehoben.
Ziffer gewählt (4).
Maustaste gedrückt (ShiftKey, (100,100))
Flug fliegt ab (15 Jan, Dresden-Bonn, LH1319)
Zustand:
•
entspricht der Zeitspanne zwischen zwei von einem Objekt empfangenen
Ereignissen. Zustände repräsentieren Zeitspannen.
Der Zustand eines Objekts bestimmt die Reaktion des Objekts auf ankommende Ereignisse.
Reaktionen können Aktionen und/oder Zustandsänderungen sein.
Szenario:
Folge von Ereignissen, die bei einer ganz bestimmten Ausführung
eines Systems auftritt.
• kann alle Ereignisse eines Systems betreffen
• kann Ereignisse betreffen, die bestimmte Objekte eines Systems beeinflussen
oder von bestimmten Objekten erzeugt werden.
Ein Szenario erhält man durch Aufzeichnung bei der Ausführung eines Systems oder
durch gedankliche Vorausplanung der Aufzeichnung.
Ereignispfad:
Merke:
zu einem Szenario werden Sender- und Empfängerobjekte
zu jedem Ereignis bestimmt und mit den Ereignissen entsprechend der
Ereignisreihenfolge in einem Ereignispfad-Diagramm dargestellt.
Ein Szenario ist für ein dynamisches Modell das gleiche, wie ein Instanzendiagramm
für ein Objektmodell!
Ein Sequenzdiagramm zeigt das Verhalten von Objekten und berücksichtigt
die Interaktion mit anderen Objekten durch Austausch von Nachrichten.
-> zeigt Objekte mit Lebenslinie und Nachrichtenaustausch
-> Interaktionen gehen stets von Objekten bzw. Prozessen aus
Statechart-Modelle/-Diagramme
Zustand: (state) ist die Verfassung (im Verlaufe des Lebens) eines Objekts, in der es
• einer Bedingung genügt
• eine Aktivität ausführt (andauernd)
• auf ein Ereignis wartet
Ein Zustand ist einer Klasse zugeordnet.
Nicht jede Änderung eines Attributwertes wird als Zustandsänderung registriert.
Transition: durch ein Ereignis verursachte Zustandsänderung eines Objekts (ZustandsÜbergang). Wenn ein Ereignis empfangen wird, hängt der nächste Zustand
sowohl vom aktuellen Zustand als auch vom empfangenen Ereignis ab.
Zustandsautomat: Graph, bestehend aus Zuständen (Knoten) und Transitionen (Kanten),
der die Reaktion eines Objekts einer Klasse auf den Empfang von „äußeren Stimuli“
beschreibt. Zustandsautomat ist einer Klasse oder einer Operation zugeordnet.
Notation:
Startzustand
Endzustand
event(argument … ) [ bedingung ] / operation(argument … )
Alle von einem Zustand ausgehenden Transitionen müssen unterschiedlichen
Ereignissen entsprechen!
Interpretation:
• Wenn sich ein Objekt in einem Zustand befindet, und ein Ereignis tritt auf, mit dem
eine seiner Transitionen beschriftet ist, geht das Objekt in den Zustand am Ende der
Transition über: Die Transition feuert.
• wenn ein Ereignis auftritt, für das es keine vom aktuellen Zustand ausgehende
Transition gibt, wird das Ereignis ignoriert.
Beispiel: Dusche-Badewanne
Beispiel: Flug-Reservierung
Beispiel: Klimaanlage
Komposite Zustände:
Ein Zustand kann dekomponiert werden
• mittels and in parallele Teilzustände
• mittels or in sich gegenseitig ausschließende Teilzustände
Eine Verfeinerung ist nur auf einem dieser beiden Wege möglich.
Aktivitäten-Diagramm
Beispiel: Autovermietung
Rücknahme
3
Implementation von UML-Modellen
Java-Applikationen
Programme in einer virtuellen Maschinensprache: JVM
Interpretative Verarbeitung
Compilation:
java MyApplication
MyApplication.java
MyApplication.class
javac MyApplication.java
import java.io.*;
public class MyApplication{
public static void main(String args[]){
System.out.println("Hello World");
for (int i = args.length -1; i>= 0; i--)
System.out.println(args[i]); } }
Interfaces in Java
Syntaktisch analog Klassen
(class → interface)
Reine Schnittstellen, enthalten keine Implementationen
Ausschließlich abstrakte Methoden und Konstanten
Eine Klasse kann ein oder mehrere Interfaces durch Implementierung erben
(Ersatz für Mehrfachvererbung)
Wenn eine Klasse ein Interface implementiert, dann muss sie alle Methoden
überschreiben
Die Eigenschaft, ein Interface zu implementieren, wird an Nachfahren der Klasse vererbt.
Implementation von Assoziationen und Aggregationen
1:1 – Beziehungen: Instanzvariable, Typ ist Klasse der zu verwaltenden Objekte
1:n – Beziehungen: Vektoren und Hashtabellen (java.util)
Vector v = new Vector(10);
Methoden:
void addElement(Object o)
void insertElement(Object o, int index)
void removeElement(Object o)
void removeElementAt(int index)
int size()
Event-Handling
import java.applet.*;
import java.awt.event.*;
import java.awt.*;
public class AcEvDemo2 extends Applet implements ActionListener{
public void init() {
System.out.println("Hello world!");
Button bopen = new Button("open");
Button bclose = new Button("close");
bopen.addActionListener(this);
bclose.addActionListener(this);
add(bopen);
add(bclose);
System.out.println("I am waiting for events.");
}
public void actionPerformed(ActionEvent evt){
if (evt.getActionCommand().equals("open")){
System.out.println("action in open");
}
if (evt.getActionCommand().equals("close")){
System.out.println("action in close");
}
}
}
4
Systemarchitekturen
System
Logische Struktur
(Klassen, objektbasiert)
Komponentenmodelle
Physische Struktur
(Komponenten, nicht objektbasiert)
UML: Komponentendiagramme
Subsystem :
package
Verteilungsmodelle
Modellierung verteilter Anwendungen: Auf Knoten laufen Prozesse ab
5
Der Softwareentwicklungsprozess
Anwendungsfallanalyse
Ein Anwendungsfall (use case) beschreibt Interaktionen zwischen Anwendern und dem
Anwendungssystem, die notwendig sind, um einen Arbeitsgang durchzuführen.
es sind Anwendungsfälle und Akteure zu identifizieren.
Methodische Aspekte der Modellierung
In der Analysephase sind folgende Aktivitäten erforderlich:
→ Zerlegung des Anwendungsbereiches in Unterbereiche
→ Analyse und Spezifikation des geforderten Systemverhaltens
Während der Problembereichsanalyse werden zunächst „Geschäftsklassen“ modelliert.
„Fachklassen“ beschreiben im Unterschied dazu implementierungs-technische
Sachverhalte.
Zur Entwicklung eines Objektmodells wird von Rumbaugh folgendes Vorgehen empfohlen:
► Objektklassen identifizieren
► ein Data Dictionary vorbereiten
► Assoziationen zwischen Objektklassen identifizieren
► Attribute identifizieren und zu Objektklassen hinzufügen
(Operationen erst spät beim Spezifizieren des Zustandsmodells hinzufügen)
► Klassen mittels Vererbung organisieren
► Zugriffspfade testen
► das Gesamtmodell in einem iterativen Prozess verfeinern
► Klassen zu Paketen (Teilsystemen) gruppieren
Qualitätssicherung
Die Qualitätssicherung umfasst
● die Planung/Durchführung von Qualitätssicherungsmaßnahmen (QSM) ,
● die Kontrolle der Einhaltung von Standards (ISO 9000, ... ) und
● die Qualitätsbewertung anhand von Metriken.
Projektmanagement & Prozessmodellierung
•
Maßnahmen zur Planung, Verfolgung und Qualitätssicherung einzelner Projekte und
von Projektfamilien
•
Prozessmodellierung:
Modellierung und Programmierung des SoftwareEntwicklungfsprozesses
(Rollen, Aktivitäten, Dokumente, Ressourcen)
Konfigurationsmanagement
Das Konfigurationsmanagement umfasst Aufgaben wie
● die Kontrolle der entwickelten Quellprogramme
● die Bereitstellung von „build“-Funktionalität
● das Release-Engineering
Das Concurrent Versions System (CVS) ist ein System, das das Versions-Management
auf der Ebene von Quellprogrammen unterstützt. Es ermöglicht die Aufzeichnung der
Entwicklungsgeschichte von Programmdokumenten in Projekten und unterstützt die
Gruppenarbeit (check out –check in).
6
Wiederverwendung
Die Verwendung objektorientierter PS allein garantieren keine Verbesserung der
Wiederverwendbarkeit
Framework:
Sammlung individueller Komponenten mit definiertem Kooperationsverhalten zur Lösung einer Aufgabe
Whitebox-Framework:
Anpassung durch Subklassenbildung + Compilation
Blackbox-Framework:
Anpassung zur Laufzeit durch unterschiedliche
Instanziierung
Entwurfsmuster
• Gamma et al. haben einen Katalog von 23 Entwurfsmustern beschrieben.
• Entwurfsmuster sind typischerweise in Anwendungen vorkommende Kombinationen
von Klassen zu größeren Einheiten, unabhängig von der Programmiersprache.
Entwurfsmuster „Beobachter“
Entwurfsmuster „Kompositum“
Die Model-View-Controller-Architektur (MVC)
View
Model
Controller
• Modell-Objekt stellt das Anwendungsobjekt dar
• View-Objekt stellt die Bildschirmrepräsentation dar
• Controller-Objekt bestimmt die Reaktion auf Benutzereingaben
→ Veränderung des Modells