Benutzer-Werkzeuge

Webseiten-Werkzeuge


se:softwaretechnologie

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
se:softwaretechnologie [2008-02-11 16:06]
stefan
se:softwaretechnologie [2008-02-18 10:55]
stefan
Zeile 13: Zeile 13:
     * zwei Entwurfsmuster und eine sonstige Entwurfsmaßnahme einsetzen     * zwei Entwurfsmuster und eine sonstige Entwurfsmaßnahme einsetzen
   * Zuletzt folgen acht Wissensfragen,​ die nichts mit dem Projekt zu tun haben.   * Zuletzt folgen acht Wissensfragen,​ die nichts mit dem Projekt zu tun haben.
 +
 +===== Einführung =====
 +==== Definitionen ====
 +Software Engineering befasst sich mit Techniken und Methoden
 +  * das Softwareprodukt möglichst fehlerfrei und möglichst nahe an den tatsächlichen Wünschen des Anwenders orientiert zu erstellen,
 +  * ständige Änderungen der Anforderungen zu bewältigen,​
 +  * die zu jeder Zeit von jedem Entwickler zu bewältigende Komplexität klein zu halten,
 +  * eine geregelte und effiziente Zusammenarbeit aller Beteiligten zu ermöglichen und
 +  * dies alles in einem rationellen und planbaren Kosten- und Zeitrahmen zu realisieren.
 +
 +> Software Engineering ist die zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige,​ ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen. (Prof. Helmut Balzert)
 +
 +Software Engineering ist Programmierung unter mindestens einer der folgenden beiden Bedingungen (Parnas):
 +  * Mehr als eine Person ist befasst mit der Erstellung und/oder dem Gebrauch des Programms.
 +  * Mehr als eine Version des Programms wird erstellt werden.
 +
 +Auf Software Engineering kann verzichten, wer alleine ein Programm für der einmaligen alleinigen Gebrauch entwickelt! ​
  
 ===== Objektorientierte Systementwicklung ===== ===== Objektorientierte Systementwicklung =====
Zeile 278: Zeile 295:
 > SDL ist eine formale Sprache mit dem Ziel der Spezifikation und Beschreibung des Verhaltens von Telekommunikationssystemen (insbesondere in den Funktionsbereichen Anrufbearbeitung,​ Wartung, Fehlerbehandlung,​ Systemkontrolle sowie beim Entwurf von Datenkommunikationsprotokollen). Aufgrund ihrer Eigenschaften ist SDL generell zur Verhaltensspezifikation von Echtzeitsystemen geeignet. Die Sprache ist in grafischer und textueller Notation definiert. SDL enthält eine Reihe von Konzepten wie Typen-, Instanzen-, Kommunikations- und Sichtbarkeitskonzept und dynamische Semantik. Aufgrund ihrer formal korrekten Syntax und Semantik sind SDL-Spezifikationen zur automatischen Konsistenzprüfung geeignet. > SDL ist eine formale Sprache mit dem Ziel der Spezifikation und Beschreibung des Verhaltens von Telekommunikationssystemen (insbesondere in den Funktionsbereichen Anrufbearbeitung,​ Wartung, Fehlerbehandlung,​ Systemkontrolle sowie beim Entwurf von Datenkommunikationsprotokollen). Aufgrund ihrer Eigenschaften ist SDL generell zur Verhaltensspezifikation von Echtzeitsystemen geeignet. Die Sprache ist in grafischer und textueller Notation definiert. SDL enthält eine Reihe von Konzepten wie Typen-, Instanzen-, Kommunikations- und Sichtbarkeitskonzept und dynamische Semantik. Aufgrund ihrer formal korrekten Syntax und Semantik sind SDL-Spezifikationen zur automatischen Konsistenzprüfung geeignet.
  
-==== Tests / Wartung ​====+==== Tests ====
   * Statische Analyse   * Statische Analyse
   * Korrektheitsbeweis   * Korrektheitsbeweis
Zeile 289: Zeile 306:
     * Äquivalenzklassen     * Äquivalenzklassen
       * Klassifikationsbaummethode       * Klassifikationsbaummethode
 +      * OO Äquivalenzklassen -> Folgen von Änderungsoperationen
   * Testüberdeckung   * Testüberdeckung
     * C1-/​C2-Überdeckung (S. 182)     * C1-/​C2-Überdeckung (S. 182)
 +  * OO-Test (S. 183)
 +    * Test abstrakter und abgeleiteter Klassen
 +    * Integrationstest
 +    * Test zyklischer Kommunikation ​
 +    * Test in der Multitasking-Plattform ​
 +  * Testwerkzeuge
 +    * Debugger
 +    * In das Programm eingebauter "​Debugger"​
 +  * Testlogbuch
 +    * Nachweis über durchgeführte/​durchzuführende Tests
 +    * ermöglicht Regressionstests
  
-===== Prozessmodelle ​=====+==== Wartung ​==== 
 +  * Wartungskosten ​=> 1,5 * Herstellungskosten 
 +  * Arten von Wartungsarbeiten 
 +    * Anpassung an neue Anforderungen 
 +    * Anpassung an andere Maschine 
 +    * Innerbetriebliche Belange 
 +    * Fehlerbeseitigung
  
-===== Qualitätssicherung ​=====+===== Entwicklungsprozess ===== 
 + 
 + 
 + 
 +===== Qualität des Entwicklungsprozesses ​=====
  
  
Zeile 303: Zeile 342:
   * Aufwandsschätzung   * Aufwandsschätzung
     * http://​de.wikipedia.org/​wiki/​Cocomo     * http://​de.wikipedia.org/​wiki/​Cocomo
- 
- 
- 
  
 ===== ToDo ===== ===== ToDo =====
 +  * Lernziele des Skripts anschauen
   * Praktikumsunterlagen anschauen   * Praktikumsunterlagen anschauen
   * Infos zu Extreme Programming   * Infos zu Extreme Programming
Zeile 373: Zeile 410:
 ===== Übungen ===== ===== Übungen =====
 ==== Seite 12 ==== ==== Seite 12 ====
 +  * Bei der Nürnberger U3 werden unter den Türen vor dem Öffnen Trittbretter ausgefahren,​ um den Spalt zwischen Wagen und Bahnsteig zu überbrücken. Nach zwei Jahren Entwicklungszeit zeigte sich, dass alles vergeblich war, da der Spalt unterschiedliche Breite haben kann. Was ist hier falsch gemacht worden?
 +    * Die Entwickler haben sich nicht intensiv genug mit der Realität auseinandergesetzt. Sie sind offensichtlich nie vor Ort gewesen und haben sich die Gegebenheiten am Bahnsteig angeschaut.
 +  * Versuchen Sie, an einem Fahrkartenautomaten der VAG ein "​Tagesticket Plus Preisstufe 4" zu lösen, und protokollieren Sie Ihren Arbeitsablauf.
 +  * Wieso hat auch der Hersteller einer Software Qualitätsanforderungen?​
 +    * Der Hersteller sorgt nach der Auslieferung der Software auch für deren Support und Weiterentwicklung. Die Kosten hierfür übersteigen die Entwicklungskosten im Allgemeinen deutlich (Wert aus der Literatur: Faktor 1,5). Der Hersteller sollte also sicherstellen,​ dass seine Software wartungsfreundlich und leicht erweiterbar ist. Des Weiteren hat der Hersteller durchaus einen Ruf zu verlieren, wenn er qualitativ minderwertige Software herstellt.
 +  * Sie entwickeln für die "​Ich-AG"​ eines Freundes ein einfaches Buchhaltungsprogramm. Was halten Sie dabei von Software Engineering?​
 +    * Da das Programm evtl. von mehreren Personen genutzt wird und sicherlich auch mehr als einmal, ist Software-Engineering unumgänglich.
 +  * An einem großen Projekt arbeiten 150 Softwareentwickler. Wie ist das möglich?
 +    * Durch Berücksichtigung der Pronzipien des Software-Engineerings:​ Modularisierung,​ Tests, Arbeitsteilung,​ detailliertes Design etc.
 +  * Angenommen, Sie lesen in der Zeitung, dass ein neues Softwareprojekt in drei Jahren abgeschlossen sein und 15 Mio. € kosten soll. Mit welchen Ergebnissen müssen ​
 +Sie rechnen?
 +    * Die Entwicklungsdauer und -kosten werden die geplanten Werte sehr wahrscheinlich übersteigen. Aus den bekannten Durchschnittswerten aus der Literatur könnten die voraussichtlichen Werte ermittelt werden.
 +
 ==== Seite 55 ==== ==== Seite 55 ====
 ==== Seite 63 ==== ==== Seite 63 ====
Zeile 469: Zeile 519:
  
 ==== Seite 189 ==== ==== Seite 189 ====
 +  * Vergleichen Sie die Vor- und Nachteile von Statischer Analyse, Black-Box- und White-Box-Test. 
 +  * Was hat Abschnitt 5.10.3 mit Abb. 5-140 zu tun? 
 +  * Wozu dient ein Regressionstester?​ 
 +  * Was haben der Elchtest und die letzten französischen Atomwaffentests miteinander zu tun? 
 +  * In einem Softwareprodukt wurden am ersten Testtag 250, am zweiten 130, am dritten 65, am vierten 30 und am fünften 15 Fehler gefunden. Wie viele Fehler sind voraussichtlich noch enthalten?​ 
 +  * Eine Rechteckklasse CRect ist gekennzeichnet durch ihre linke, obere, rechte und untere Begrenzung. Sie hat u.a. einen Konstruktor CRect(int links, int oben, int rechts, int unten) und eine Methode point_in_me(int x, int y), die feststellt, ob sich eine Koordinate x/y innerhalb ihrer Grenzen befindet. 
 +    * Erstellen Sie eine Äquivalenz- und Grenzwertklassenanalyse für point_in_me. 
 +    * Was kann beim Konstruktor schief gehen, und wie lässt sich das erkennen? 
 +    * Eine abgeleitete Klasse CResRect hat eine neue Methode resize(int dx, int dy). 
 +    * Was muss bei ihr getestet werden, und warum? 
 +  * Planen Sie einen Überdeckungstest für den Zustandsautomaten des Kassierers aus Abb. 5-86. 
 +    * Zu welchen Klassen müssen für den obigen Test Simulationsklassen entwickelt werden, wenn die echten Klassen noch nicht vorliegen?​ 
 +    * Wie lässt sich dieser Aufwand vermeiden?​ 
 +  * Die Nachrichten "​entriegeln"​ und "​schliessen"​ in Abb. 5-137 kommen vom Triebwagen. Warum ist das ein Testproblem,​ und was kann man dagegen tun? 
 +  * Das Subsystem Kassierer nach Abb. 5-62 soll so implementiert werden, dass es bottom-up testbar ist. In welcher Reihenfolge müssen seine Klassen und eventuell erforderlichen Simulationsklassen erstellt werden, damit alles Erstellte möglichst bald testbar ist? 
 +  * Die Funktionalität einer Klasse Stack (Stapelspeicher) ist wie folgt definiert:​ 
 +    * void push(int wert) legt die Zahl wert "oben auf den Stapel"​. 
 +    * int top() liefert den obersten Wert des Stapels 
 +    * void pop() vernichtet den obersten Wert des Stapels 
 +    * bool empty() liefert die Information,​ ob der Stapel leer ist 
 +    * void clear() löscht den gesamten Inhalt. 
 +    * Wie sieht eine Äquivalenzklassenanalyse für diese Klasse aus? 
 +  * Die Funktion void sort(int &a, int &b, int &c), die die Werte a, b und c aufsteigend sortieren soll, wurde so implementiert:​ <​code>​ 
 +void sort(int &a, int &b, int &c)  
 +{  
 + int t;  
 +  if(a > b)  
 +  {  t = a; a = b; b = t; }  
 +  if(b > c)  
 +  {  t = a; a = c; c = t; }  
 +  if(a > b)  
 +  {  t = a; a = b; b = t; }  
 +}</​code>​ 
 +    * Planen Sie einen C2-Test für diese Funktion! 
 +  * Welchem Umstand verdankt Microsoft einen wesentlichen Marktvorteil? ​
se/softwaretechnologie.txt · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)