Softwaretechnik WS2004/2005
Dies ist die detaillierte Veranstaltungsseite zur
Vorlesung und Übung "Softwaretechnik".
Beschreibung
Softwaretechnik (oder englisch Software Engineering) ist die Lehre von
der Softwarekonstruktion, also das Grundlagenfach zur Methodik.
Die Softwaretechnik ist bemüht, Antworten auf die folgenden Fragen zu geben:
- Wie findet man heraus, was eine Software für Eigenschaften haben soll (Anforderungsermittlung)?
- Wie beschreibt man dann diese Eigenschaften (Spezifikation)?
- Wie strukturiert man die Software so, dass sie sich leicht bauen und flexibel verändern lässt (Entwurf)?
- Wie verändert man Software, die keine solche Struktur hat oder deren Struktur man nicht (mehr) versteht (Wartung, Reengineering)?
- Wie deckt man Mängel in Software auf (Qualitätssicherung, Test)?
- Wie organisiert man die Arbeit einer Softwarefirma oder -abteilung, um regelmäßig kostengünstige und hochwertige Resultate zu erzielen (Prozessmanagement)?
- …und viele ähnliche mehr
Diese Vorlesung gibt einen Überblick über die Methoden und stellt
essentielles Grundwissen für jede/n ingenieurmäßig arbeitende/n
Informatiker/in dar.
Organisatorisches
Veranstalter
Voraussetzungen/Zielgruppe, Einordnung, Leistungpunkte etc.
Siehe den
Eintrag im KVV.
Die Veranstaltung ist eine Pflichtveranstaltung für die Studiengänge
Informatik Diplom und Informatik Bachelor.
Termine und Nachrichten
Zum Empfang aktueller Mitteilungen über die Vorlesung und Übung sollten
sich alle Hörer/innen auf die Mailingliste
se_v_swt@lists.spline.inf.fu-berlin.de
eintragen. Dort bitte auch den vollen Namen angeben.
- Vorlesung:
- Mo, 16-18 Uhr, Hörsaal 028 Takustr. 9
- Do, 12-14 Uhr, Hörsaal 028 Takustr. 9
- Übungsgruppen: Die Verteilung in die Tutorien wird nach dem Tag des Geburtsdatums vergeben, und zwar wie nachfolgend angegeben. In begründeten Ausnahmefällen kann ein anderer Termin genommen werden. Schreiben Sie hierzu eine Mail an den Übungsleiter (jekutsch@inf….) mit Ihrem ursprünglichem Termin und zwei Alternativterminen. Die Tutorien beginnen ab dem 25.10., also erst in der zweiten Woche. Das erste Übungsblatt erscheint am Donnerstag, 21.10., danach immer regelmäßig Montags, zur Besprechung eine Woche später.
- 1. - 4.: Mo 14-16 Uhr, SR 053, Informatikgebäude (Andrea Schuhmann)
- 5. - 8.: Mi 14-16 Uhr, SR 046, Informatikgebäude (Andrea Schuhmann)
- 9. - 12.: Mi 16-18 Uhr, SR 046, Informatikgebäude (Katja Silligmann)
- 13. - 16.: Do 14-16 Uhr, SR E2 (1.1.53), Physikgebäude (SebastianJekutsch)
- 17. - 20.: Do 14-16 Uhr, HS 001, Mathematikgebäude (Katja Silligmann)
- 21. - 24.: Do 16-18 Uhr, HS 001, Mathematikgebäude (Katja Silligmann)
- 25. - 31.: Do 16-18 Uhr, SR 007/008, Mathematikgebäude (Andrea Schuhmann)
- Scheinklausur:
- Dienstag, 22.02.2005, 10:00 Uhr s.t. in den Hörsälen 1a und 1b in der Habelschwerdter Allee ("Silberlaube")
- Klausureinsicht:
- Montag, 11.04.2005, 16:00 Uhr bis mindestens 16:30 Uhr im SR 051, Takustr. 9
- Nachklausur
- Donnerstag, 28.04.2005, 10:00 Uhr s.t. im Hörsaal 1b in der Habelschwerdter Allee ("Silberlaube")
- Klausureinsicht Klausur 2005-04-28:
- Montag, 09.05.2005, 18:00-18:30 Uhr im R.008, Takustr. 9
- Dienstag, 10.05.2005, 16:00-16:30 Uhr im R.008, Takustr. 9
Prüfungsmodalitäten
Kriterien für den Erwerb des Übungsscheins (Diplom) bzw. der Leistungspunkte
(Bachelor) sind
- die regelmäßige Bearbeitung der Übungsblätter,
- regelmäßige Teilnahme an den Übungen und
- Bestehen der Klausur.
- Die Klausur dauert 90 Minuten; es gibt 90 Punkte.
- Zum Bestehen wird eine Punktzahl ausreichen, die voraussichtlich im Bereich zwischen 25 und 38 liegen wird (ohne Gewähr). Die genaue Schwelle wird erst bei der Korrektur festgelegt.
- Bei der Klausur darf folgendes Hilfsmittel verwendet werden: Eine selbst angefertigte Unterlage im Umfang von 1 Blatt, das maximal das Format DIN A3 haben darf. Es gibt keine Einschränkungen zu Schriftgröße und Inhalt. Jede/r darf nur ihre/seine eigene mitgebrachte Unterlage benutzen.
Die Details werden in den Übungsgruppen erläutert. Zu Details des Übungs-/Tutoriumsablaufs siehe
UebungsRegeln.
Klausurtermine siehe bei
VorlesungSoftwaretechnik2004.
Inhalt
Literatur
Die Vorlesung basiert auf dem Lehrbuch
Ian Sommerville:
"Software Engineering",
7th edition,
Pearson Education,
2004.
Das Buch ist momentan leider noch nicht auf Deutsch verfügbar.
Der Preis beträgt ca. EUR 65,-.
Da das Buch in Englisch ist, die Übungsblätter aber in Deutsch, haben wir ein
Übersetzungs-Glossar entwickelt.
Die Anschaffung des Buches ist sehr empfohlen (zumal Softwaretechnik ein
Thema ist, das auch nach dem Studium sehr relevant bleibt), ist aber nicht
zwingend notwendig.
Stoffplan
Die Foliensätze sind auf Englisch; Vortragssprache ist jedoch Deutsch.
Sie sollten die Terminologie sowohl auf Englisch als auch auf
Deutsch beherrschen.
Um das zu erleichtern, werden wir im Verlauf des Semesters ein
Glossar einrichten.
- An Introduction to Software Engineering
Anmerkungen
- Wichtigkeit von Softwaretechnik (Software Engineering); Problemstellungen der Softwaretechnik; Professionelles Verhalten von Software-Ingenieuren; Softwareprodukt = Programme + Dokumentation; Software-Produktattribute (Wartbarkeit, Verlässlichkeit, Effizienz, Benutzbarkeit u.a.); Software-Prozess (Spezifikation, Entwicklung, Validation, Evolution); Methoden (Prozesse, Notationen, Form- und Verhaltensregeln); CASE-Werkzeuge (Editoren, Datenablagen, Prüfwerkzeuge, Automatisierungswerkzeuge); Anmerkungen (Lernziele, Prinzipien, Lernstil)
- Socio-technical Systems
- Sozio-technische Systeme versus HW-/SW-Systeme; Kontext; emergente Eigenschaften; system engineering (insbes. Integration); Systembeschaffung; Altsysteme
- Critical Systems
- Kritisches System (sicherheitskritisch, geschäftskritisch); Verlässlichkeit (Verfügbarkeit, Zuverlässigkeit, Sicherheit, Schutz); Maßnahmen (Fehlervermeidung, Defektentfernung, Schadensbegrenzung); sozio-technischer Entwurfsansatz
- Software Processes
- Generische Software-Prozessmodelle (Wasserfallmodell; evolutionäre Entwicklung; komponentenbasierte Entwicklung); Benutzungskriterien; Iteration; Rollen, Aktivitäten, Phasen; Modelle für Anforderungsbestimmung, Entwicklung, Test, Evolution; Rational Unified Process (RUP); Rolle von CASE
- Project Management and Risk Management
- Aufgaben; Eigenarten; Projektplanung (Meilensteine; grafische Darstellungen); Risiken und Risikomanagement
- Software Requirements
- Benutzeranforderungen, technische Anforderungen; Funktionale und nichtfunktionale Anforderungen; Anforderungsdokument; Schnittstellenbeschreibungen
- Requirements Engineering Processes
- Aktivitäten: Machbarkeitsstudie, Anforderungserhebung, -beschreibung, -analyse, -validation, -verwaltung; Beteiligtengruppen; soziale und organisatorische Faktoren; Qualitätsmerkmale für Anforderungen (Gültigkeit, Widerspruchsfreiheit, Vollständigkeit, Realismus, Überprüfbarkeit); Veränderung von Anforderungen
- System Models
- Modelle und Sichten; Kontext/Umgebung; Verhaltens-, Daten-, Objektmodelle; Methoden
- Critical Systems Specification
- Verlässlichkeits- und Sicherheitsanforderungen; Spezifikation von Sicherheit, Schutz, Zuverlässigkeit; Risikogetriebene Spezifikation; Quantifizierung und Maße (POFOD, ROCOF, MTTF, Verfügbarkeit); Induzierte funktionale Anforderungen (Versagensvorbeugung und -behandlung)
- Formal Specification
- Rolle bei der Anforderungsanalyse; Anwendungsbereich; algebraische Schnittstellenbeschreibung; modellbasierte Verhaltensbeschreibung (Zustand, Vor-/Nachbedingungen); formale und nichtformale Spezifikation; Einbettung in den SW-Prozess
- Architectural Design
- Entscheidungen auf der Architekturebene; Aspekte von Architektur (Organisation, Zerlegung, Verteilung, Steuerung); Architekturstile; Referenzarchitekturen (Aspekte: Domänenwissen, Beschreibung/Übermittlung von A., Vergleich von A., Bewertung von A.); Organisationsarten (Ablagen, Client/Server, abstrakte Maschinen); Zerlegungsarten (Objekte, Pipelines); Steuerungsarten (zentralisiert, ereignisbasiert)
- Distributed Systems Architectures
- Vorteile (gemeinsame Ressourcennutzung, Offenheit, Nebenläufigkeit, Skalierbarkeit, Fehlertoleranz); Nachteile (Komplexität, Dienstqualität); Client/Server; verteilte Objekte; Object Request Broker (CORBA); dienstorientierte Architekturen; Peer-to-Peer-Architekturen; firmenübergreifende Systeme
- Application Architectures
- Stapelverarbeitung (Eingabe, Verarbeitung, Ausgabe) vs. Transaktionsverarbeitung (Fortschreibung einer Datenbank); Resourcenverwaltungssysteme; ereignisverarbeitende Systeme; sprachen-verarbeitende Systeme
- Object-oriented Design
- Entwurf als Menge interagierender Objekte, die jeweils über Zustand und Operationen verfügen; Objekte als Dienstgeber; Entwurfsprozess; UML (diverse Arten von statischen und dynamischen Modellen; Diagramme und Modelle); Schnittstellen und Verkapselung
- Real-time Software Design
- Echtzeitsysteme (Anforderungen; nebenläufige Prozesse; Sensoren und Aktuatoren); Entwurfsprozess; Echtzeit-Betriebssystem; generische Prozessarchitekturen (Überwachungs-, Steuerungs-, Datensammelsysteme)
- User Interface Design
- Entwurfsprinzipien; Interaktionsstile (direkte Manipulation, Menüsysteme, Formularsysteme, Kommandosprachen, natürliche Sprache); grafische vs. textuelle Präsentation von Informationen; Farbe; Entwurfsprozess (Benutzeranalyse, Prototyping, Benutzbarkeitsprüfung)
- Rapid Software Development
- Inkrementelle, iterative und agile Methoden; Extreme Programming (Kundeneinbindung; allmähliche Verbesserung; Test-zuerst-Entwicklung; etc.); Prototypansatz vs. interative Entwicklung (schlecht vs. gut verstandene Anforderungen zuerst); Werkzeuge zur Entwicklung von Prototypen
- Software Reuse
- Vorteile (Kosten; Entwicklungszeit; Risikominderung); Hindernisse (Verfügbarkeit; Entdeckung; Verstehen; Brauchbarkeit; Vertrauen; Anpassung; Fortschreibung); Arten von Wiederverwendung (Muster; Generatoren; Frameworks; Komponenten; Anwendungen); COTS; Software-Produktlinien; ERP-Systeme
- Component-based Software Engineering
- Komponenten (Export-Schnittstelle; Import-Schnittstelle); Komponentenmodelle (Standards+Infrastruktur); Entwicklungsprozess (Zerlegung in Komponenten; Komponenten bauen oder finden; Zerlegung anpassen; Adapter bauen; Komposition); Probleme (Verfügbarkeit; Eignung; Versionen; Evolution)
- Critical Systems Development
- Verlässlichkeit durch Fehlervermeidung, Fehlererkennung und Fehlertoleranz; Fehlertoleranz (Fehlerentdeckung, Schadensanalyse, Wiederaufsetzen, Fehlerreparatur); Wege zu Fehlertoleranz (Diversität; Redundanz); Fehlervermeidung im SW-Prozess (definierter Prozess; Vermeidung bestimmter Konstrukte); spezifische Techniken (Ausnahmebehandlung; N-Versions-Programmierung; Wiederherstellungsblöcke)
- Software Evolution
- Veränderung und Nutzen; Wartung und Kostenfaktoren; Prozesse für Evolution; Lehmans Gesetze; korrektive, adaptive und erweiternde Wartung; Re-Engineering (Restrukturierung, Nachdokumentation); Vorgehen je nach Zustand und Wert des Systems
- Verification and Validation
- Verifikation (gegen Spezifikation) versus Validierung (gegen Bedürfnisse); statische Analyse (z.B. Inspektionen); dynamische Analyse (Test); Cleanroom-Prozess (inkrementelle Entwicklung mit Transformationen; statische Verifikation; statistisches Testen); Testpläne
- Software Testing
- Validierungstesten (um Zuverlässigkeit zu zeigen) versus Defekttesten (um Probleme aufzudecken); Komponententest, Integrationstest, Systemtest; Testfallentwurf (Funktionstest (black box), Strukturtest (white box); Schnittstellentest, Äquivalenzklassen-Partitionierung); Testautomatisierung
- Critical Systems Validation
- Messung von Zuverlässigkeit; Wachstumsmodelle für Zuverlässigkeit; Sicherheitsargumente; Sicherheits- und Verlässlichkeitsfälle; Benutzungsprofile; Gefahrenerkennung und -überwachung;
- Managing People (individuals and groups)
- Überlegungen zu Personalauswahl (Ausbildung, Bereichserfahrung, Anpassungsfähigkeit, Persönlichkeit) und Personalbindung; Motivationsfaktoren (Interaktion, Anerkennung, Weiterentwicklung); P-CMM (People Capability Maturity Model); Kommunikation in Gruppen (Status, Gruppengröße, Organisationsform, Geschlechter, Persönlichkeitstypen); Arbeitsumgebung (Interaktionsräume, abgeschirmte Arbeitsräume);
- Software Cost Estimation
- Faktoren: Entwicklungszeit, Größe, Personal, Ausstattung, Kosten; Schätzverfahren (); Preisangebote versus Produktionskosten; Personalausstattung versus Entwicklungszeit; Produktivitätsfaktoren (Begabung, Bereichserfahrung, Projektgröße, Werkzeugunterstützung, Arbeitsumfeld, etc.); COCOMO 2 ()
- Quality Management
- Aufgabe; Dokumentation; Standards und bewährte Praktiken; Begutachtungen; Messungen und Maße
- Process Improvement
- Prinzipien; Prozessqualität versus Produktqualität; CMM (Capability Maturity Model: ad-hoc, wiederholbar, definiert, quantitativ verwaltet, optimierend) und seine Anwendbarkeit; Prozessmodelle (Teilprozesse, Aufgaben, Aktivitäten, Bedingungen, Ausnahmen, Rollen, Kommunikationspfade, zu liefernde Ergebnisse); zielorientiertes Messen
- Configuration Management
- Konfigurationsverwaltung (oder -management, KM); Aktivitäten (Planung, Versionsverwaltung, Änderungsverwaltung, Erbauen); Systemfreigaben (Programme, Daten, Konfigurationsparameter, Dokumentation); Werkzeuge (Revisionsverwaltung, Konfigurations- und Änderungsverwaltung, Erbauer); Versionsidentifikation und -auswahl
- Der Persönlichkeitstyp
- Was ist das?; Wozu soll das gut sein?; Die Jung'schen Kategorien (extrovertiert/introvertiert, wahrnehmend/intuitiv, denkend/fühlend, hinnehmend/entscheidend); zugehörige Typsysteme und Messinstrumente (MBTI, KTS); andere Typsysteme (Enneagramm, Big Five); Wie bestimme ich meinen Typ?
- Tipps zur Anforderungsanalyse
- noch mal einige Hinweise zum Thema Urteilskraft und Konzentration auf das Wesentliche. (Die Cartoons hierin sind nicht so ernstzunehmen; die Hinweise aber durchaus)
- Kleinkram, Nachbemerkungen
- KISS, empfehlenswerte Gewohnheiten (Ingenieurnotizbuch, Fehlerbuch, Datumstempel, TODO-Marken); Englischkenntnisse; Hinweis zur beruflichen Zufriedenheit; praxisrelevante weiterführende Literatur
Übungsblätter
- Übungsblatt 1: Einführung (Vorlesung 1)
- Übungsblatt 2: Sozio-technische und kritische Systeme (Vorlesungen 2,3)
- Übungsblatt 3: Prozessmodelle, Projektmanagement (Vorlesungen 4,5)
- Übungsblatt 4: Anforderungen (Vorlesungen 6,7)
- Übungsblatt 5: Modellierungen, UML (Vorlesung 8)
- Übungsblatt 6: Formale Spezifikation kritischer Systeme (Vorlesung 10)
- Übungsblatt 7: Architekturen (Vorlesungen 11,12,13)
- Übungsblatt 8: Objekt-orientierter Entwurf (Vorlesung 14)
- Übungsblatt 9: Benutzungsoberflächen, RAD und agile Methoden (Vorlesungen 16,17)
- Übungsblatt 10: Wiederverwendung (Vorlesung 18)
- Übungsblatt 11: Komponenten, Fehlervermeidung (Vorlesungen 19,20)
- Übungsblatt 12: Validation, Verifikation (Vorlesungen 22,23)
- Übungsblatt 13: Testen, Verlässlichkeitsnachweis (Vorlesungen 23,24,9)
- Übungsblatt 14: Projektleitungsaufgaben (Vorlesungen 25,26,27)
- Übungsblatt 15: Klausurvorbereitung, Nachbetrachtung
- Extra-Übungsblatt
Historie des Stoffplans
WS 2004/2005:
- Vorlesung komplett umgestellt auf Buch SE7 von Sommerville (zuvor: Buch von Helmut Balzert)
WS 2003/2004:
- Weggelassen:
- Einheit zu Komponenten (JavaBeans, COM);
- Einheit zu serverseitigen Komponenten (EJB, Corba, COM+)
- Einheit zu Web-UI (Servlet, JSP, CGI)
- Einheit zu Wiederverwendung
- Zugefügt:
- Einheit zu Dokumentation
- Einheit zu Testautomatisierung
- Einheit zu Risikomanagement
- Verändert:
WS 2002/2003 (Blockkurs im März):
(Kommentare)
Wenn Sie Anmerkungen oder Vorschläge zu dieser Seite haben, können Sie sie
hier (möglichst mit Datum und Name) hinterlassen:
Bei Lehmann's Online Büchershop gibt es das obige Buch auch derzeit für 57,50 EUR siehe
http://www.lob.de
-- Heiko Ehrig - 15.10.2004
Ich fände es sinnvoll, wenn im Abschnitt über Patterns "
Inversion of Control (Kontrollumkehr)" erwähnt werden würde, da diese eins der Hauptprobleme des Zusammenfügens von Komponenten behebt. Es ist eins der fehlenden Teile, ohne welche der eigene Code immer einen Rest Uneleganz behält.
--
ChristopherOezbek - 12 Jan 2005