Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10...

23
Besprechung Übung 1 Software Engineering Dustin Wüest SE, 19.10.10

Transcript of Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10...

Page 1: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

Besprechung

Übung 1 Software Engineering

Dustin Wüest SE, 19.10.10

Page 2: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 2

Übungsabgaben

•  Im PDF: vollständige Namen und Matrikelnummern

•  Name vom Zip-File / PDF: Übungsnummer und Nachnamen

z.B.: Ex1_Wueest_Schoen_Mueller

(keine Umlaute / Sonderzeichen)

•  E-Mail Betreff: [SE EX HS10] ...

•  Bei Abgabe kontrollieren, ob pdf / zip vollständig ist

•  Ausschliesslich 3er Gruppen

•  Übungsabgaben auf Deutsch oder Englisch

Page 3: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 3

Aufgabe 3.1 – UML Klassendiagramm •  Um Software besser zu verstehen / Überblick

 Konstruktoren, Getters/Setters, Impl. Abstrakter Methoden weglassen

 Abstraktion und Layout

Layout Beispiel

Page 4: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 4

Aufgabe 3.1 – UML Klassendiagramm

•  Vererbung

(ohne Kardinalitäten)

•  Assoziation

•  Gerichtete Assoziation

•  Aggregation

Komposition 0..1

0..*

1

0..*

0..* 0..*

0..*

Abstrakte Klasse

Interface

Bla bla

Bla bla

Bla bla

Page 5: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 5

Aufgabe 3.1 – UML Klassendiagramm

Vererbte Methoden müssen nicht mehr aufgelistet werden. Assoziationen

nicht vergessen.

Page 6: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 6

Aufgabe 3.2 – Arten von Strichcodes

•  MultipleFormatWriter –  Ist kein echter Writer

–  Wählt den korrekten Writer aus

Page 7: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 7

Aufgabe 3.3 – UML Sequenzdiagramm

•  Aktivierungsbalken (bei laufenden Methode) •  Konstruktoraufruf

•  Alternativen

Klasse1 Klasse2

callA()

callB()

Page 8: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 8

Aufgabe 3.3 – UML Sequenzdiagramm

•  Aktivierungsbalken (bei laufenden Methode) •  Konstruktoraufruf

•  Alternativen

Klasse1

Klasse2

callA()

Klasse1

Klasse2

callA()

<<create>>

Page 9: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 9

Aufgabe 3.3 – UML Sequenzdiagramm

•  Aktivierungsbalken (bei laufenden Methode) •  Konstruktoraufruf

•  Alternativen QRCodeReader

Detector

detect(hints)

decode(img)

result

alt [!hints]

[else]

decode(b,h)

Page 10: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 10

Aufgabe 3.3 – UML Sequenzdiagramm

… (Keine offizielle Notation)

Page 11: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 11

Aufgabe 4.1 – Dokumentation

•  Prüfziffer-Berechnung –  Von rechts beginnen, jede zweite Nummer addieren

–  Ergebnis * 3

–  Von rechts, ab dritter Nummer beginnen, jede zweite Nummer addieren

–  Ergebnis modulo 10 rechnen, und dies von 10 subtrahieren

Page 12: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 12

•  Code kommentieren: JavaDoc /** ... */

normaler Kommentar /* ... */ oder //

Aufgabe 4.1 – Dokumentation

Page 13: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 13

Aufgabe 4.1 – Dokumentation

•  JavaDoc: Blackbox was macht die Klasse / die Methode (und nicht wie)

•  JavaDoc Kopfkommentare von Methoden / Klassen: weder wann noch von wem eine Methode / eine Klasse aufgerufen wird

•  Java Style Guide PDF (Kapitel 5)

–  Obligatorische Tags (author, history, version, responsibilities für Klassen und pre, post, param, return für Methoden)

Page 14: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 14

Aufgabe 4.1 – Dokumentation

•  Klassenkommentare und Attribute

Page 15: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 15

Aufgabe 4.1 – Dokumentation

•  Methodenkommentare

Page 16: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 16

Aufgabe 4.1 – Dokumentation

•  @pre: was muss erfüllt sein, damit die Methode korrekt ausgeführt wird (ohne Exception)

•  @post: Zustandszusicherung (ein Zustand, welcher sicher zutrifft, nachdem die Methode beendet ist)

•  Manchmal ist @pre und @post auch leer: @pre -, @post -

•  Z.B. für checkStandardUPCEANChecksum(String s):

Page 17: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 17

Aufgabe 4.1 – Dokumentation

•  @pre: was muss erfüllt sein, damit die Methode korrekt ausgeführt wird (ohne Exception)

•  @post: Zustandszusicherung (ein Zustand, welcher sicher zutrifft, nachdem die Methode beendet ist)

•  Manchmal ist @pre und @post auch leer: @pre -, @post -

•  Z.B. für checkStandardUPCEANChecksum(String s):

Page 18: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 18

Aufgabe 4.1 – Dokumentation

•  Beispiel für @pre und @post: Pop()-Methode entfernt das oberste Element in einem Stack

Page 19: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 19

Aufgabe 4.1 – Dokumentation

•  Oft vergessen: Auch Kommentar innerhalb der Methode ist Methodenkommentar!

•  Aber: wenn der Kommentar bloss das sagt, was schon offensichtlich ist, dann besser weglassen

//checks if the length of the string is bigger than zero

If( string.length() > 0 )

Page 20: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 20

Aufgabe 4.2 – Erweitern des Codes

•  rotateImage if (image.width < image.height) –  Ungültige Annahme, dass alle Bilder dieses Kriterium erfüllen

Systematisches Programmieren –  Kommentare zum Code

–  Einheitliche / “schöne” Formatierung des Codes

–  Sinnvolle Namen für Variablen, Methoden etc.

Verständlichkeit (in der Korrektur etwas unpassend “Simplicity”)

Page 21: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 21

Aufgabe 4.2 – Erweitern des Codes

Mögliche Lösung:

(Codes auf dem Kopf werden bereits richtig erkannt)

Page 22: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 22

Aufgabe 4.2 – Erweitern des Codes

Klammer- positionen Einrückungen

Neue Zeile?

(Separate Zeile für Zuweisung)

Kommentare fehlen

Page 23: Übung 1 Software Engineering - UZH · Software Engineering SE, 19.10.10 Dustin Wüest . 10/19/10 Besprechung SE Übung 1 2 Übungsabgaben ... • Um Software besser zu verstehen

10/19/10 Besprechung SE Übung 1 23

Die nächsten Übungsstunden beginnen gemäss Abstimmung jeweils gleich nach der Vorlesung um 11:45 Uhr

Allgemeines