Zusammenfassung Softwareentwicklung "Methoden und Werkzeuge"
von Marion Winter
Dieses ist die erste Veröffentlichung die mir zugesandt worden ist. Vielen Dank Marion, dass du dir diese Mühe gemacht hast.
Auslöser für die methodische Softwarekrise
- Hardware wurde immer leistungsfähiger und billiger
- Als Resultat stieg die Menge der mit dem Computer lösbaren Problemen sowie Programmieraufwand
- Komplexität wurde unterschätzt, viele Projekte wurden zeit- und budgetmäßig überschritten
- Trennung von Auftraggeber und Produzenten führte zu Missverständnissen bei der Aufgabenpräzisierung
- Besonders teure Softwareentwicklung
- Neue Qualitätskriterien: Effizienz, Zuverlässigkeit, Wartbarkeit, Erfüllung der Anforderungen
Fehlerverteilung & Korrekturkosten in den Entwicklungsphasen
- Ca. 56% Fehler entstehen bei der Spezifikation der Anforderungen in der Analysephase, die Behebung dieser Fehler ist besonders teuer
- Je weiter ein Softwareprojekt fortgeschritten ist, umso teurer ist die Behebung von Fehlern
- Moderne modellgestützte Softwareentwicklung verlagert die größeren Aufwände in die Analyse und Designphase, um die frühen und teuren Fehler zu vermeiden
- 40% wurden die Kosten in der Aufwandskalkulation überschritten
Das 80/20 Problem: Perfektionismus als Kostentreiber
- Mit 20% der Kosten sind 80% der Aufgaben automatisiert
- 80% der Kosten entfallen somit auf die Automatisierung von Sonderfällen
- Nutzen der Automatisierung soll geprüft werden und ggf. sollten Sonderfälle dann manuell bearbeitet werden
- Wiederverwendbarkeit von Entwicklungsobjekten findet kaum statt, obwohl Software-Engineering Tools diese Anforderung unterstützen
Definition Software-Engineering
- Ist das Fachgebiet der Informatik, das sich mit der Bereitstellung und systematischen Verwendung von Methoden und Werkzeugen für die Herstellung und Anwendung von Software beschäftigt.
- Methodische Vorgehensweise (Planung, Kalkulation)
- Präzise Vorgaben und bessere Qualitätskontrolle (kostengünstig innerhalb Budgets, Termintreue)
- Softwaretechnik ist synonym zu verwenden
Teilgebiete des Software-Engineerings
1. Phasenmodelle (zeitlicher Verlauf)
2. Qualitätssicherung
3. Projektmanagement-Methoden (Planung und Controlling)
4. Analysenmethoden (Daten-, Funktions-, und Ablaufmodellierung)
5. Entwurfsmethoden (modularer Entwurf)
6. Entwicklungsmethoden (Pseudocode)
zu 4-6 Veranstaltung Softwareentwicklung. Methoden kommen beim Softwareentwicklungsprozess zum Einsatz
Begriffe System Engineering, Systemintegration
System Engineering:
Nicht nur methodische Softwareentwicklung sondern auch Hardwarebeschaffung und Installation, d.h. Methoden für die Entwicklung vom Gesamtsystemen.
Systemintegration:
Fokus auf die Integration neuer Systeme mit bestehenden Systemen (Systementwicklung)
Requirements Engineering:
Methoden für die Erhebung von Anforderungen an IT-Systeme
Was ist ein Software-Entwicklungsprojekt?
- Es sind mehrere Personen beteiligt
- Analyse, Entwurf und Implementierung müssen organisiert, koordiniert und laufend unterstützt werden
- Häufig in der Form von Projekten, bei großen Projekten evtl. Teilprojekte gebildet
- Projekte haben einen definierten Anfang sowie Ende, eine Zielsetzung und einen Auftraggeber
- Projektleiter mit ausreichender Kompetenz sowie Erfahrung
Extremformen des Vorgehen in Softwareentwicklungsprojekten
- Großprojekte in IT-Unternehmen sind meist professionell geleitet
- Vorgehen anhand eines Phasenmodells
- In kleineren Entwicklungsprojekten wird mehr auf Selbststeuerung der Teams gesetzt
- Selbstgesteuerte Vorgehensweise funktioniert nur, wenn Schlüsselfiguren entsprechend erfahren sind und verantwortungsbewusst agieren
- Straffes Management in Großprojekten, häufig hohes Risiko des Scheiterns
- Extremform der Selbststeuerung ist Extreme Programming, in kleinen Projekten mit unsicherer Spezifikationsbasis, hoher Änderungsfälligkeit
- XP sind stark vom Anwender getrieben mit hohem Entwicklungstempo
- Durchführungsprinzip: Pair Programming - vermeidet Fehler und erhöht Produktivität
Die Begriffe Methoden und Basistechniken 1
Methoden:
- unterstützen einen definierten Abschnitt vom Vorgehensmodell welches den Rahmen für Aktivitäten vorgibt und integrieren die Ergebnisse der einzelnen Ebenen
- geben Anleitung für die Durchführung einer Kette von Aktivitäten im VGM
- bedienen sich an Basistechniken
Basistechniken:
- unterstützen isoliert einzelne Aktivitäten der Ebenen bzw. Teile davon
- dienen zur Darstellung von Ergebnissen einzelner Aktivitäten
- keine durchgehende Anleitung
Beispiele für Basistechniken:
- Funktionshierarchie
- Datenflussdiagramm
- Entscheidungstabellen
- ER-Diagramm
- .....u.s.w
Vorgehensmodell:
- Gliedert die Entwicklungsschritte in Phasen, Meilensteine, Aktivitäten
- Erleichterung der Projektabwicklung durch strukturiertes Vorgehen
- Erleichtert die Kontrolle des Projektfortschritts
- Zur Anleitung eines Projektes oder bestimmten Phasen, dienen Methoden die Anleitung für Analyse, Entwurfs und Implementierungsaktivitäten geben
- Methoden sind im allgemeinen Toolunterstützt
- Einsatz einer Methode ohne Werkzeug ist nicht mehr zeitgemäß
Ziele des Methodeneinsatzes:
- Anleitung und Führung des Entwicklers
- Vermeidung von Fehlern im Entwicklungsprozess, durch Einbeziehung des Anwenders
- Durchgängigkeit und Integration der Entwicklungsarbeit ohne logische Brüche
- Integration der Qualitätssicherung
Bei der Entwicklung eines Systems unterscheidet man drei Modellierungsebenen:
1. Ebene der Zustände und Ereignisse
2. Ebene der Prozesse und daran beteiligten Ebenen
3. Ebene der Objekte und Ihrer Beziehungen untereinander
Ein konkreter methodischer Ansatz von Oracle
- Methode von Oracle CDM (Custom Development Method)
- Wie? Mit Basistechniken
- Mit welchen Werkzeugen? Oracle Designer das die Anwendung der Methode unterstützt und automatisiert
Basistechniken für die Prozessmodellierung
Oracle Process Modell
Darstellung von Geschäftsprozessen, es werden Symbole für die Darstellung von:
- Prozessschritten
- Verzweigpunkten
- Ereignissen
- Informationsobjekten/Entitäten
- Organisationseinheiten/durchführende Personen
verwendet.
EPKs (Ereignisgesteuerte Prozessketten)
- Hierarchisierte Darstellung von (Prozesse, Teilprozesse, unterste Ebene atomare Funktionen)
Funktionshierarchie
- Hierarchische Sicht auf die Funktionen der Prozesse
- Keine Ablauflogik
- Ebenen sind Funktion, Prozess und Elementarprozess
- Zerlegungsstrategie
-> Top Down
-> Betriebliche Sichtweise
-> Überschneidungsfreien vollständigen Funktionsbaum
-> Bis auf atomare Ebene unterteilt
-> Wurzelfunktion, Teilfunktionen, Prozesse der Funktionen, Elementarprozesse , Prüfung
Datenflussdiagramm
- Stellen ebenfalls keine Ablauflogik dar
- Hierarchisierung von Methoden:
-> Bubbles sind Funktionen
-> Tob-Ebene ist das Kontextdiagramm als Tob-Ebene mit Schnittstellen zur Umwelt
-> Übereinstimmung mit Funktionshierarchie
Struktogramm, Programmablaufplan, Pseudocode
- Dienen zur Darstellung von Kontrollstrukturen bzw. Ablaufstrukturen von Programmen und Algorithmen
- Ziel: Strukturierte Programmierung nur Sequenzen, Aufrufe, Auswahl, Wiederholungen erlaubt)
Entscheidungstabelle
- Bedingungen und ihre Aktionen werden in einer Matrix dargestellt
- Wenn Bedingung b1,b2 erfüllt, dann Aktion a1 und a2 z.b Scheckeinlösung
- Verschiedene Darstellungen (Tabellen, Bäume)
- Eliminierung und Konsolidierung von Regeln
| Bedingung | Bedingungsanzeiger |
| Aktion | Aktionsanzeiger |
Petrinetz
- Ist ein gerichteter Graph
- Zur Darstellung von dynamischen Vorgängen mit parallelen unabhängigen Vorgängen
- Passive Elemente (Bedingung Stelle) als Kreise und aktive Elemente (Ereignis, Instanz) als Rechtecke dargestellt
- Ereignis X kann eintreffen (=schalten) wenn jede Vorbedingung erfüllt ist (Marke belegt)
- Beim Schalten entnimmt Ereignis den Vorbedingungen die Marke und führt sie der Nachbedingung zu
Zustandsautomat
- Gerichteter Graph
- Ziel: Darstellung von möglichen Objektzuständen und Zustandsübergängen
- Zustände durch Kreise und Zustandsübergänge durch Pfeile dargestellt
- Zustandsübergänge durch Ereignisse
- Bestandteil von SA/RT
- Oftmals in objektorientierten Methoden zu finden
Methoden:
Structured Analysis SA
- Zur Unterstützung der Analyse Phase von Softwareprojekten
- Bei SA wird Datenflussorientiert modelliert
- Kombiniert verschiedene Basistechniken (Funktionsbaum, Datenflussdiagramm, ERM, Entscheidungstabelle/baum, Pseudocode)
Modern Structured Analysis MSA
- Entwickelt von Edward Yourdon und integrierte Elemente von SA/RT
- Unterstützt die Analysephase von Softwareprojekten
- Höchste Ebene ist das Kontextdiagramm (Schnittstellen des betrachteten Systems zur Umwelt)
- Erweiterung durch Kontrollflüsse, sie beschreiben zeitliche Ereignisse
- Erweitert durch Zustandsdiagramme
Structured Analysis Real Time (SA/RT)
- Real Time Systeme nehmen abhängig von Ereignissen schlagartig und unmittelbar ihre Arbeit auf
- Erweiterung der Methode SA um die Möglichkeit der zeit und ereignisgesteuerten Modellierung
- Kontrollflüsse zusätzlich zu Datenflüssen, beide werden in einem Flussdiagramm dargestellt
- Zusätzliche Basistechnik: Zustandsautomat
- Beispiel für Kontrollflüsse: am 15.03 muß die Gehaltsabrechnung rausgehen
Objektorientierte Methode: Unified Modeling Language
- Erste Objektorientierten Ansätze konzentrierten sich auf das Design und die Programmierung
- Später wurde auch die Analyse Objekt orientiert
- Werden für die reine Prozessmodellierung kaum eingesetzt
- Ansätze wurden zu der einheitlichen Notation Unified Modeling Language zusammengefasst
- Vorgehen anhand des Unified Process
- Gekennzeichnet durch Steuerung durch Use Cases= Beschreibung einer typischen Benutzung eines Systems durch z.B. Zustandsautomaten oder Szenarien
Standard für objektorientierte Methoden: UML
Entitätsname: Auftrag
Attribute: Datum, Sachbearbeiter
Methoden: Aufnehmen, Prüfen
- Für Klassen wird die übliche dreigeteilte Notation verwendet
- Im Klassendiagramm gibt es Vererbungsbeziehungen, Assoziationen und Aggregationsbeziehungen
Objektorientierung: Grundgedanken
- Zusammenfassung von Daten und Funktionen zu Klassen
- Klassen können in einer Klassenhierarchie (Vererbungsbeziehung) angeordnet sein
- Untergeordnete Klassen erben Attribute und Methoden der übergeordneten Klassen
- Es gibt auch übergeordnete Klassen von denen es keine Instanz geben kann=abstrakte Klassen
- Ein Objekt ist eine Ausprägung (=Instanz) einer Klasse
Objektorientierung: Ziele
- Die Vermeidung von Abstimmungsproblemen, die sich bei klassischen Ansätzen ergeben (Trennung von Daten und Funktionen)
- Vermeidung von Methodenbruch beim Übergang von Analyse in die Entwurfsphase
- Gezielte Unterstützung der Wiederverwendbarkeit einen effizienteren Softwareentwicklungsprozess zu gewährleisten
- Wurzeln in der ersten objektorientierten Programmiersprache SIMULA
Objektorientierung: Prinzipien
Objektidentität:
Jedes Objekt verfügt während seiner Lebensdauer über eine eindeutige Identität in Bezug auf relationalen Datenbanken dass jeder Datensatz einen eindeutigen Primärschlüssel besitzen muss.
Datenkapselung:
Die interne Darstellung der Daten eines Objektes und deren Verarbeitung ist nach außen nicht sichtbar. Daten und Funktionen werden über eine Schnittstelle zugänglich gemacht.
Vererbung:
Objekte können Daten und Methoden erben. Wird bei der Modellierung der Klassenhierarchie definiert. Erspart Aufwand bei der Implementierung.
Polymorphismus:
Sind Methoden mit gleichen Namen, können beim Aufruf verschiedene Reaktionen auslösen, je nach Stelle in der Klassenhierarchie eine andere gezogen wird.
Objektorientierung: Vererbung als Schlüssel zur Wiederverwendung
- Code in Superklassen kann von beliebig vielen Subklassen genutzt werden
- Vermeidet die Wiederholte Definition von identischen Objekteigenschaften
- Programme werden kürzer und übersichtlicher
- Anstatt eine neue Klasse zu entwickeln, nimmt man eine existierende passende Klasse als Oberklasse und beschreibt nur die Unterschiede der alten und neuen Klasse
Was für Diagramme gibt es bei der Objektmodellierung?
- Objekt/Klassendiagramm
- Zustandsdiagramm
- Nachrichtendiagramm
Methode: Custom Development Method CDM
- CDM Herstellerspezifische Entwicklungsmethode der Firma Oracle
- Kundenorientierte, individuelle Softwareentwicklung
Umfasst folgende Elemente:
- Prozessmodell
- Entitiy Relationship Modeling
- Funktionshierarchie
- Datenflußdiragramm
- UML möglich (Design für Datenbank)
Process Model und Function Hierarchy Models mit CDM
- Ausgangspunkt der Modellierung ist das Prozess Modell
- Funktionsmodell entsteht automatisch durch die hierarchische Anordnung des Prozessmodells
- Änderungen in der Funktionshierarchie im Designer wirken sich auf das Prozessmodell aus
- Funktionsmodell dient als Darstellung der Business Functions und Überprüfung des Gesamtmodells
Cross-Checking zwischen Funktions- und Datenmodell CRUD Matrix
- Wie beeinflussen die Funktionen die Entitäten und Attribute?
- Daten und Funktionsmodell werden überprüft auf evtl. fehlende Entitäten, Attribute, Beziehungen
- Welche Auswirkungen haben die Funktionen auf das Datenmodell?
- Ziel: Qualitätssicherung (zu jeder Entität je mindestens eine Funktion, die erzeugt, liest und löscht
- Lebenszyklus Analyse (Wie verändern sich die Instanzen einer Entität? Update Funktion)
- Existiert im Datenmodell eine Entität, jedoch keine atomare Funktion, die Instanzen der Identität erzeugt, fehlt eine Funktion
- Nach dem Cross Checking ist bekannt welche Datenmodell Operationen durch die atomare Funktionen ausgelöst werden
Der Übergang von der Analysephase zum Systemdesign (Entwurf)
- Blickwinkelwechsel auf das erstellte Modell
- Nicht mehr wichtig ist das betriebliche Modell
- Sondern wie die vorgefundenen Strukturen durch Systemfunktionen, ,-Abläufe und Datenbankstrukturen unterstützt werden.
- Berücksichtigung neuer Aspekte: Wiederverwendbarkeit von Funktionsbaumsteinen, Effizienz der DB-Zugriffe, Modularisierung
- Neue Aspekte im Design, machen andere Methoden erforderlich "Methodenbruch"
Der Entwurf der Systemstruktur
- Orientierung an den Aktivitäten des Anwenders (Benutzeroberfläche, Systemstruktur)
- Zerlegung des Gesamtsystems in Komponenten z.B. Teilsysteme/Module
- Modul: Systembaustein, der eine Entwurfsentscheidung repräsentiert (First Cut)
- Teilsystem: Sammlung von logisch zusammengehörenden Modulen
Aufgabenanalyse
- Aus Perspektive des Anwenders
- System einer intuitiven Benutzbarkeit ermöglichen
- Nachvollziehbarkeit des Systemkontextes
- Verwendung von Begriffen und Objekten der REALEN WELT
Modularer Entwurf: Prinzipien, Kriterien
- Jedes Modul behandelt ein logisches Teilproblem (Abgeschlossenheit)
- Minimierung der Abhängigkeit der Module untereinander (Selbständigkeit)
- Einsatz von Modulen ohne Kenntnis der genauen Ablaufs
- Unkomplizierte Handhabung und Implementierung von Modulen (Application Design Transformer)
Werkzeuge des Oracle Designers
- Process Modeller => Prozessmodelle erstellen
- Entity Relationship Diagrammer => Datenmodelle erstellen
- Function Hierarchy Diagrammer => Funktionshierarchie erstellen
- Dataflow Diagrammer => Datenflussdiagramme erstellen
- Database Design Transformer => First-Cut-Design der Datenbank
- Application Design Transformer => First-Cut-Design der Module
- Design Editor => Applikations und Datenbankdesign definieren
- Repository Object Navigator => Verzeichnis aller Repositoryobjekte zum navigieren
- Matrix Diagrammer => Erlaubt Cross-Checking versch. Elemente
- Repository Reports => Reporte zum Prüfen und Kontrollieren der Arbeiten
- Admin Utility => Zum pflegen und administrieren des Repositorys
Ablauf im Oracle Designer
In welchen Schritten gelangt man bei Anwendung der Methode CDM zu einer lauffähigen Applikation?
1. Prozessmodell erstellen
- Ausgangspunkt: Business Requirements/Geschäftsprozesse
- Im Process Modeller wird ein Prozessmodell erstellt
- Es enthält: Organisationseinheiten, Floats, Process Steps, Triggers
2. Datenmodellierung
- Die Entitäten (Attribute) und deren Beziehungen untereinander erfassen
3. Funktionsmodell
- Darstellung der hierarchischen Funktionsstruktur mit Function Hierarchy Diagrammer
- Wird automatisch aus der Erstellung des Prozessmodells generiert.
- Atomare Funktionen erkennen (Leaf Functions) und Automatisierungskennzeichen setzen
- Responsetype festlegen z.B. immediate, overnight, daraus entstehen Reports, Screens
- Nachbearbeitungsmöglichkeit im Funktionsmodell und neue Prozesse anlagen
4. Cross Checking von Business Function und Data Modell
(Function to Entity Usages/Function to Attribute Usages)
- Überprüfung wie jede atomare Funktion und zu automatisierende Funktion die Entitäten/Attribute des Datenmodells benutzt (CRUD)
- Werkzeug ist der Matrix Diagrammer im Designer nur atomare Funktionen anzeigen lassen (=`y`) beim erstellen der CRUD Matrix
- Jede Entität muss eine Funktion geben, die Sie anlegt, liest, ändert sowie löscht oder archiviert
- Cross Checking dient der Sicherung der Vollständigkeit von Daten und Funktionsmodell sowie der Konsistenz
5. Transformation des Datenmodells in ein Servermodell
- Werkzeug im Designer "Data-Base-Design-Transformer
- Erstellt das erste Datenbank Design aus dem Datenmodell
- Attribute werden Spalten
- Entitäten werden Tabellen
- Beziehungen
- Identifiziert primary keys sowie unique keys
6. Servermodell verfeinern
- Datenbankdesign wird überarbeitet im Design Editor
- Automatisches generieren von Feldwerten
- Vorbelegung von Feldern (defaults setzen)
- Definition Properties definieren
- Nicht in der Übung Softwareentwicklung
7. Datenbank generieren
- Es wird ein SQL-Code generiert und ausgeführt der das DB-Design implementiert
- Tabellen API generieren
8. Display Standards am Server Model setzen und Prozess/Funktionsmodell in Module transformieren
- Mit dem Werkzeug Application Design Transformer
- Display Standards am Server Model setzen z.B. Feldreihenfolge, Prompt, Checkbox, Poplist
- Display Standards werden durch den A D Transformer in Modulkandidaten übernommen
- ADT laufen lassen es werden Modulkandidaten erzeugt
- In der Regel ein Modulkandidat pro atomare Funktion, evt. werden aber auch anhand Entity Usages mehrere Funktionen zu einem Modul zusammengefasst
- Modultyp wird durch den ADT festgelegt (Skript 13-6) Screen Report usw
- Modulkandidaten akzeptieren oder löschen
- Für einfache Module Prototypen generieren und testen
9. Moduldesign verfeinern (Refining Modules for Generartion Kapitel 14)
- Werkzeug Design Editor
- Modulkomponenten und Table Usages anordnen /verbinden
- Base Table Usages: Stellt Basis für Queries, Inserts, Updates auf der zugrunde liegenden Basistabelle
- Lookup Table Usages: Stellt extra Informationen zur Verfügung wie Fremdschlüssel
- Erlaubt Operationen an der Modulkomponente am Feld einstellen
- List of values einstellen
- Preferences setzen
10. Modul generieren/testen
- Generatoroptionen setzen
- Modul testen mit Forms Runtime libary oder Browser
- Generierung für verschiedene Umgebungen möglich
- Modul evtl. zweite Sprache z.B Web kopieren dann nachbearbeiten, Präferenzen setzen und generieren und testen
Zusatz: Generierung eines Web-Server-Moduls
Oracle unterstützt zwei Formen der Web Generierung:
1. Developer 2000 Application (nutzbar im Web)
2. Web Server Application mit HTML
Web Server Application mit HTML
- HTML legt Anzeige im Web fest Farben, Frames
- Web Server kann Daten in der DB ändern
- Es besteht keine permanente Verbindung zwischen DB und Web Server
- Benötigt weniger Speicher
- Geeignet für Fremdzugriff
- Schneller zu laden als Developer Forms
- Ermöglicht Update, delete auf der DB
- Infos können abgerufen werden
- Läuft in jeder Browser Umgebung
Developer 2000 Forms im Web
- Verbindung zwischen DB und Web Server besteht permanent
- Web Client muss Java benutzen
- Gut für Intranetanwendungen
- Bessere Transaktionsverwaltung
Klausurfragen Softwareentwicklung WS2003/2004
1. Erklären Sie die Begriffe Software-Engineering und System-Engineering?
1.1 Was sind die Teilgebiete des Software Engineerings?
2. Praxisaufgabe im Designer (Prozess Modell erstellen) Textaufgabe mit Aufgaben einer Bibliothek
3. Aus welchen Elementen besteht eine Moduldefinition nach CDM, in der die Inhalte aus zwei Tabellen auf einem Master-Detail Form dargestell/bearbeitet werden und und in der auch Fremdschlüsselwerte durch den Anwender nachsehbar sein müssen?
4. Aus was besteht ein Datenflussdiagramm und für was wird es eingesetzt?
4.1 Welche anderen Methoden kennen Sie noch?
5. br>
6.
|