Praktikum Software-Technik: Extreme Programming

Größe: px
Ab Seite anzeigen:

Download "Praktikum Software-Technik: Extreme Programming"

Transkript

1 Praktikum Software-Technik: Extreme Programming Institut für Informatik Prof. Dr. Jens Grabowski M.Sc. Benjamin Zeiss Inhalt 1. Die trügerische Sicherheit des grünen Balkens 2. Quelltextabdeckung beim Testen 3. XP & Akzeptanztest 4. Refactoring 5. Refactoring & XP 6. Refactoring-Katalog 7. Stinkender Quelltext 8. Werkzeugunterstützung 9. Refactoring & Testen 10. Zusammenfassung

2 Die 12 XP-Techniken 1. Die trügerische Sicherheit des grünen Balkens (1/2) Der JUnit-Balken ist grün ist jetzt alles im grünen Bereich? Nicht zwingend: 1. Keine Garantie, dass Test an sich korrekt ist: Bei Test und Implementierung kann der gleiche Denkfehler gemacht werden. Fehler steckt sowohl in Implementierung als auch Test. Bei testgetriebener Entwicklung (bei der Testentwickler und Implementierer ja identisch sind) nicht völlig unwahrscheinlich. 2. Falls testgetriebene Entwicklung halbfertig abgebrochen wird, wird nur ein Teil der Funktionalität getestet und auch nur dieser Teil der Funktionalität überhaupt implementiert. Fehler besteht nicht aus fehlerhaftem, sondern aus fehlendem Quelltext.

3 Die trügerische Sicherheit des grünen Balkens (2/2) Nicht zwingend (Fortsetzung): 3. Es wurden zu wenig Unit-Tests geschrieben, so dass nur ein Teil der Funktionalität überhaupt getestet wird. Der von Tests durchlaufene Teil des Quelltexts ist zwar korrekt, aber Fehler steckt in dem Teil des Quelltexts, der gar nicht von Tests durchlaufen wird. Gegen 1. und 2. helfen nur Paarprogrammierung und Akzeptanztests. Gegen 3. helfen außerdem mehr Tests: wie viel Tests sind genug? Tests sollten dafür sorgen, dass möglichst der gesamte Quelltext durchlaufen wird. 2. Quelltextabdeckung beim Testen Wie viel Testen ist genug? Testfälle sollen möglichst gesamten Quelltext abdecken. 100% Abdeckung in der Praxis nur selten bzw. nur mit unverhältnismäßig hohem Aufwand machbar: Auch bei Testgetriebener Entwicklung sollte defensiv programmiert werden, d.h. man sollte Situationen abfangen, die eigentlich nicht auftreten sollten. Solche Situationen sind durch Tests schwer zu provozieren, z.b.: Out of Memory, um zu Testen, ob Implementierung korrekt mit fehlgeschlagenem new umgeht. No space left on device, um zu Testen, ob Implementierung beim Speichern mit vollem Dateisystem umgehen kann. Welche Quelltextabdeckung ist in der Praxis erstrebenswert?

4 Metriken zur Quelltextabdeckung Viele mögliche Metriken, um Quelltextabdeckung zu messen. Die 3 gebräuchlichsten: Methodenüberdeckung Anweisungsüberdeckung Zweigüberdeckung method1(a,b) Hierfür wird Ablaufgraph eines FALSE a>b Programmes betrachtet: block1 public void method1(int a, b) { if (a > b) { block2; else { block1; if (a >= b) { block3; FALSE a>=b TRUE block2 TRUE block3 Methodenüberdeckung Jede Methode wird mind. einmal aufgerufen. Recht grobe Metrik: 100% Methodenüberdeckung deckt selten den gesamten Quelltext ab. Beispiel: Testfall für 100% Methodenüberdeckung: method1: a=2, b=1 100% Methodenüberdeckung ist ein Muss beim Testen! Zusätzlich sollten aber noch weitere Metriken herangezogen werden... method1(a,b) FALSE block1 a>b a>=b FALSE TRUE block2 TRUE block3

5 Anweisungsüberdeckung Jede Quelltextzeile wird mind. einmal ausgeführt. Deutlich besser als Methodenüberdeckung. 100% Anweisungsüberdeckung impliziert 100% Methodenüberdeckung. Beispiel: method1(a,b) FALSE Testfälle für 100% Anweisungsüberdeckung: method1: a=2, b=1 method2: a=2, b=2 Trotz 100% Anweisungsüberdeckung wird nicht getestet, welche Auswirkung es hat, wenn FALSE-Zweig von a>=b durchlaufen wird. block1 FALSE a>b a>=b TRUE block2 TRUE block3 Zweigüberdeckung Bei jeder Verzweigung werden alle möglichen Zweige mind. einmal durchlaufen. Sinnvollste der 3 Metriken. Berücksichtigt auch leere Zweige. 100% Verzweigungsüberdeckung impliziert 100% Anweisungsüberdeckung. Beispiel: Testfälle für 100% Zweigüberdeckung: method1: a=2, b=1 method2: a=1, b=2 method1(a,b) FALSE Ca. 85% Zweigüberdeckung beim Testen! block1 a>b a>=b FALSE TRUE block2 TRUE block3

6 Bestimmung der Überdeckung Quelltextinstrumentierung: 1. Zähler werden an Verzweigungen eingefügt und der derart instrumentierte Quelltext übersetzt. Mögliche Alternativen zur Instrumentierung von Java-Quelltext: Bytecode wird instrumentiert. Java Virtual Machine Profiling Schnittstelle wird abgefragt. 2. Instrumentiertes Programm wird ausgeführt (z.b. durch Start der Unit-Tests). 3. Nach dem Testlauf werden Zähler ausgelesen und die Werte für die gewünschte Metrik berechnet. Üblicherweise wird von Werkzeugen die Abdeckung des Quelltextes inkl. der JUnit-Testfälle bestimmt, da es sich hierbei ja ebenfalls um Java-Code handelt. test-packages sollten bei der Auswertung der Überdeckung nicht betrachtet werden. Code Coverage Werkzeug Werkzeug zur Java-Quelltextinstrumentierung und zur Berechnung von Überdeckungs-Metriken. Tools: Clover (kommerziell), EclEMMA (EPL), CodeCover (EPL) Bild: Clover Praktikum: EclEMMA Weitere Quelltext- Metriken Lines of Code (LOC) ohne Kommentar- & Leerzeilen Methodenüberdeckung: 100% anstreben! Methoden- & Bedingungsüberdeckung Mittelwert der 3 Überdeckungs- Metriken: 85% anstreben!

7 3. XP & Akzeptanztest Unit-Tests bieten keine Garantie, dass Produkt fehlerfrei & vollständig ist. Außerdem testen Unit-Tests nur einzelne Klassen und nicht das Zusammenspiel aller Klassen. XP sieht daher zusätzlich funktionale Akzeptanztests (=Systemtests) vor. Gesamtsystem (aktuelles Release) wird über Benutzerschnittstelle getestet. Anhand der Akzeptanztests kann Kunde sehen, dass seine Funktionalität realisiert ist. Akzeptanztest (1/2) Testgegenstand: System (SUT=System under Test) Test über die Schnittstellen zum Benutzer bzw. zu externen Systemen. Nicht immer zu 100% automatisierbar. Z.B. automatisierter Test der Druckerausgabe schwierig. Relativ gut jedoch z.b. GUI-Tests (Capture/Replay) Jedoch wartungsintensiv, wenn sich UI während der Entwicklung ändert. Quelltextabdeckung ist beim Systemtest i.d.r. geringer als beim Unit-Test, da sich bestimmte Ablaufpfade noch schwerer als beim Unit-Test erzwingen lassen. Akzeptanztest kümmern sich um Standard -Szenarien des Kunden. Überdeckung ergibt sich aus Szenarien des Kunden. Unit-Tests kümmern sich außerdem um Sonderfälle. Hohe Überdeckung beim Unit-Test wichtig.

8 Akzeptanztest (2/2) Basierend auf User-Stories (d.h. Funktionalität): Beschreiben Anforderungen an das Gesamt-System. Zum Ende eines Release-Zyklus müssen alle bis dahin implementierten User-Stories die zugehörigen Akzeptanztests bestehen. Kunde ist i.d.r. nicht in der Lage, selber Akzeptanztests zu schreiben. Entwickler schreiben zusammen mit Kunden Akzeptanztests. Test First vs. Code First: Falls Akzeptanztests vor der Implementierung geschrieben werden, gibt Kunde Benutzeroberfläche genau vor. (Capture/Replay funktioniert nicht.) Falls Akzeptanztests nach Implementierung geschrieben werden, geben Entwickler Benutzeroberfläche vor. Werkzeuge für Akzeptanztests Testen von textbasierten Oberflächen: Z.B. DejaGNU Testen von graphischen Oberflächen: Z.B. Abbot/Costello (open source), IBM Rational Functional Tester (kommerziell), SWTBot (open source) Abstraktere Beschreibung von lediglich Benutzereingaben und erwarteten Ausgaben, die unabhängig von der konkreten Oberfläche ist: Framework for Integrated Test (FIT) Spezielle Java-Klassen, dienen als Adapter zwischen den abstrakten Ein- /Ausgabedaten und der konkreten Oberfläche. Anwender liefert lediglich die Daten, Entwickler kümmern sich darum, wie die Daten in bzw. aus dem System kommen.

9 4. Refactoring (1/3) Def.: Systematische Umstrukturierung von Quelltext, ohne das Verhalten nach außen zu verändern. Ziel: Besser lesbar, verständlicher, Besseres Design, Besser änderbar. Manche Refactorings sind trivial und werden intuitiv verwendet, ohne sich bewusst zu sein, dass es sich dabei um Refactoring handelt. Aufräumen von Code V-17 Extract Method Refactoring (2/3) Beispiel (Refactoring: Extract Method) void printowing() { printbanner(); //print details System.out.println ("name: " + thename); System.out.println ("amount:" + theamount); Extract Method: Extrahieren & in eigene Methode packen void printowing() { printbanner(); printdetails(); void printdetails() { System.out.println ("name: " + thename); System.out.println ("amount:" + theamount); Vorteile: printowing wird übersichtlicher. Neue Methode kann auch an anderer Stelle aufgerufen werden. Macht bei sinnvollen Methodennamen Kommentar unnötig. V-18

10 Refactoring (3/3) Unterschied zu intuitivem Aufräumen von Code : Refactorings beinhalten Systematik anhand von checklisten-artigen festen Schritten zur Quelltexttransformation (Mechanik). Wahrscheinlichkeit, Fehler zu machen (=Verhalten zu ändern) minimieren. Zusätzlich zu systematischen Schritten: Tests geben Sicherheit, dass Verhalten nicht geändert wurde. Falls von Refactoring betroffene Klasse(n) nicht von Tests abgedeckt sind: vorher entsprechende Tests schreiben. Während des Refactorings soll nicht noch zusätzlich neue Funktionalität hinzugefügt werden. Entweder: Refactoring Oder: Neue Funktionalität hinzufügen V Refactoring und XP (1/2) Warum ist Refactoring für XP wichtig? XP sieht einfaches Design vor: Einfache Lösung kann jedoch für neue Funktionalität zu einfach geworden sei. Refactoring hilft dann weiter! Erinnerung: Einfaches Design beinhaltet auch: Keine falschen/unbewiesenen Annahmen über Zukunft, auch nicht bzgl. Performance: Refactoring auch auf Kosten der Performance! Make it run, make it right, make it fast! : Performance-Tuning erst am Ende! Flaschenhälse liegen oft sowieso an Stellen, wo man es nicht vermutet und diese können sich mit der Zeit auch noch ändern. V-20

11 Refactoring und XP (2/2) Zwei Hüte, die sich abwechseln: Refactoring Was will ich umstrukturieren? Gibt es einen Test? Test schreiben! Refactoring durchführen Testen Evtl. Fehler beheben Funktionalität hinzufügen Was will ich hinzufügen? Test schreiben Funktionalität hinzufügen Testen Evtl. Fehler beheben Der Versuch, beides gleichzeitig zu tun, geht schief! Der Versuch, zwei verschiedene Refactorings gleichzeitig durchzuführen ebenfalls! Immer separat in die Versionsverwaltung comitten! V-21 Literatur Buch: M. Fowler: Refactoring, Addison-Wesley, 2000 DAS Standardwerk zum Thema Refactoring. Für s Praktikum sollte die Web-Seite (s.u.) reichen. R. Roock/M. Lippert: Refactorings in großen SW-Projekten, dpunkt, 2004 Ergänzende Literatur. Web: Enthält Refactorings wie im Buch, jedoch ohne Checkliste für die einzelnen Teilschritte. Wiki Wiki zu Refactoring V-22

12 6. Refactoring-Katalog Lexikonartige Sammlung von Refactorings Auswendiglernen sinnlos, aber man sollte einmal alle gesehen haben, damit man weiß, dass man bzgl. eines bestimmten Refactorings nachschlagen sollte. In dieser Vorlesung & Praktikum: nur Vorstellung einiger, wesentlicher Refactorings Im folgenden: Refactoring-Name (fett), SituationAbhilfe Code Vorher/Nachher (alte, vom Refactoring betroffene Codezeilen rot, neue grün) Systematische Schritte Vor jedem Refactoring: Sicherstellen, dass Test existiert! V-23 Rename Method Der Name einer Methode erklärt nicht deren Funktionalität. Methodenname passend umbenennen. String gettelephonenumber() { return (theofficeareacode+"/"+theofficenumber); System.out.print(getTelephoneNumber()); String getofficetelephonenumber() { return (theofficeareacode+"/"+theofficenumber); System.out.print(getOfficeTelephoneNumber()); V-24

13 Rename Method: Schritte 1. Vererbungshierarchie beachten: Ggf. gleiche Schritte für Ober- und Unterklassen durchführen. 2. Neue Methode mit neuem Namen deklarieren und Rumpf der alten Methode dorthin kopieren. 3. Compilieren 4. Den Rumpf der alten Methode derart ändern, dass dort nur noch die Methode mit dem neuen Namen aufgerufen wird. 5. Compilieren und Testen 6. Alle Aufrufe der alten Methode durch Aufruf der neuen Methode ersetzen. Nach jeder Ersetzung: Compilieren und Testen! 7. Alte Methode komplett löschen. 8. Compilieren und Testen! So merkt man, falls man in Schritt 6 einen Aufruf übersehen hat. Beachte: kopieren, nicht verschieben! Um sicherzustellen, dass man in Schritt 2 nicht bereits einen Fehler gemacht hat. Wenn bereits das schief läuft, hat man z.b. den alten Rumpf falsch in die neue Methode kopiert. So merkt man sofort, wenn man einen Fehler gemacht hat. V-25 Einschub: Warum so kompliziert? Reicht nicht auch: 1. Methode umbenennen. 2. Compilieren. 3. Jeden vom Compiler als Fehler gemeldeten Aufruf einer nicht-definierten Methode durch Aufruf der neuen Methode ersetzen. 4. Solange Compiler meckert: GOTO 2 Leider: nein! Bei Vererbung nimmt der Compiler die Methode aus der Oberklasse und ist glücklich. Metaklassen-Verwendung (Java: Reflection) und bedingte Compilierung (C/C++: #ifdef) können dazu führen, dass nicht alle Aufrufe vom Compiler erfasst werden. Die Checkliste auf der vorherigen Seite entschärft diese Gefahr. Auch bei der dortigen Checkliste besteht natürlich die Problematik, dass die Compilerläufe Metaklassen und bedingte Übersetzung nicht erfassen, ein Mensch genauso kurzsichtig wie ein Compiler arbeitet. V-26

14 Extract Method Code-Fragment, das zusammenhängt. Durch Methode mit aussagekräftigem Namen ersetzen. void printowing() { double outstanding=getoutstanding(); printbanner(); //print details System.out.println ("name: " + thename); System.out.println ("amount:" + outstanding); void printowing() { printbanner(); printdetails(getoutstanding()); void printdetails (double outstanding) { System.out.println ("name: " + thename); System.out.println ("amount:" + outstanding); V-27 Extract Method: Schritte 1. Neue Methode anlegen und sinnvoll benennen. 2. Extrahierten Code in neue Methode kopieren. 3. Im kopierten Code nach Variablen suchen, die in der Ursprungsmethode lokal sind. Variablen, die nur noch in neuer Methode benutzt werden: Lokale Variable nur noch in neuer Methode Variablen, die in neuer Methode verändert und deren Wert in Ursprungsmethode später wieder benutzt wird: Rückgabeparameter der neuen Methode (return ) Mehr als eine solche Variable: Extract Method geht so nicht! Variablen, die in neuer Methode nur gelesen werden: Als Parameter der neuen Methode übergeben 4. Compilieren 5. In Ursprungsmethode: extrahierten Code durch Aufruf der neuen Methode ersetzen, Deklaration nicht mehr benötigter lokaler Variablen löschen. 6. Compilieren und Testen! V-28

15 Inline Method Code einer Methode ist genauso aussagekräftig wie Methoden-Name. Methoden-Code an Aufrufstelle ( inline ) direkt einsetzen. int getrating() { if (morethanfivelatedeliveries()) return 2; else return 1; boolean morethanfivelatedeliveries() { return thenumberoflatedeliveries > 5; int getrating() { if (thenumberoflatedeliveries > 5) return 2; else return 1; V-29 Inline Method: Schritte 1. Sicherstellen, dass Methode nicht in einer Vererbungshierarchie für Polymorphie benötigt wird (Indikator hierfür: Methode wird in Unterklasse re-definiert). 2. Alle Methodenaufrufe suchen und durch Methodenrumpf ersetzen. 3. Compilieren und Testen! 4. Methodefinition löschen Anmerkungen: Gegenteil von Extract Method Kein Widerspruch: alles was Code lesbarer macht, ist erlaubt! Funktioniert z.b. nicht für rekursive Methoden V-30

16 Replace Temp with Query Temporäre Variable wird nur einmal mit Zwischenergebnis belegt. Zwischenergebnis-Berechnung in Methode packen und diese aufrufen. double baseprice = thequantity * theitemprice; if (thequantity > 1000) return baseprice * 0.95; else return baseprice ; if (thequantity > 1000) return baseprice() * 0.95; else return baseprice() ; double baseprice() { return thequantity * theitemprice; Mehrfache Berechnung erscheint ineffizient, aber: Code wird modularer (und: temporäre Variable gespart) V-31 (Self) Encapsulate Field Direkter Zugriff auf public Attribut von außen (Encapsulate Field) Zugriff auf private Attribut innerhalb derselben Klasse / in Unterklasse soll sich z.b. Wert des private Attributes durch Berechnung ergeben (Self Encapsulate Field) Zugriffsmethoden (get/set) anlegen und Zugriffe durch Methodenaufruf ersetzen. class Person { public String thename; aperson.thename=""; class Person { private String thename; public String getname() { return thename; public void setname(string name) { thename=name; aperson.setname(""); V-32

17 Move Field Ein Attribut wird vorwiegend von einer anderen Klasse genutzt oder passt thematisch besser in andere Klasse. Attribut dorthin verlagern. class AccountType {... class AccountType { private double therate; void setrate(double rate) { therate=rate; double getrate() { return therate;... class Account { private AccountType thetype; private double therate; double ratefordays(int days) { return therate*days/365; class Account { private AccountType thetype; double ratefordays(int days) { return thetype.getrate()*days/365; V-33 Move Method Eine Methode benutzt mehr Methoden/Attribute einer anderen Klasse als aus der eigenen Klasse bzw. wird vorwiegend von anderer Klasse genutzt. Methode dorthin verlagern. class Person { int id; class Project { boolean participates(project p) { Person[] participants; for(int i=0;i<p.participants.length;i++) { if (p.participants[i].id == id) return(true);... if (aperson.participates return(false); (aproject)) class Project { Person[] participants; boolean hasparticipant(person x) { for(int i=0;i<participants.length;i++) { if (participants[i].id == x.id) return(true); return(false); class Person { int id;... if (aproject.hasparticipant (aperson)) V-34

18 Replace Conditional with Polymorphism Fallunterscheidung für unterschiedliches Verhalten in Abhängigkeit von einem Typ. Jeden Zweig der Fallunterscheidung in eine eigene Unterklasse verlagern und diese von gemeinsamer Klasse mit abstrakter Methode erben lassen. class Bird { double getspeed() { switch (thetype) { case AFRICAN: return getbasespeed() / thenumberofcoconuts; case EUROPEAN: return getbasespeed(); class Bird { abstract double getspeed(); class AfricanBird extends Bird { double getspeed() { return getbasespeed() / thenumberofcoconuts; class EuropeanBird extends Bird { double getspeed() { return getbasespeed(); V Stinkender Quelltext Wann Refactoring durchführen? Zeitpunkte: Bevor neue Funktionalität hinzugefügt werden soll: Weil dabei ein Blick auf den Quelltext ergibt, dass er schlecht zu ändern/erweitern ist. Bei der Fehlersuche: Weil man den Quelltext nicht (mehr) versteht. Immer, wenn man eine Funktionalität fertig implementiert hat: Refactoring nicht soweit hinauszögern, bis es weh tut. Das dann nötige große Refactoring ist aufwendiger, als die vielen kleinen, die man vorher problemlos hätte vornehmen können. Indikator, ob Refactoring überhaupt notwendig ist: Stinkender Quelltext ( Code Smells ) V-36

19 Gestank 1: Doppelter Code Doppelter Code ist schlechter zu ändern! Gleicher Quelltext ist mehrfach vorhanden: Extract Method Gleicher Quelltext ist mehrfach in parallelen Unterklassen vorhanden: Pull Up Method (nicht vorgestellt) V-37 Gestank 2: Lange Methode Lange Methoden sind schwierig zu verstehen! Generelle Abhilfe: Extract Method Falls viele temporäre Variablen: Replace Temp with Query V-38

20 Gestank 3: Verteilte Änderungen Eine Änderung betrifft viele Klassen. Zu ändernde Stellen in eine Klasse zusammenziehen: Move Method Move Field V-39 Gestank 4: Neid Eine Methode beschäftigt sich hauptsächlich mit einer anderen Klasse. Methode in andere Klasse schieben: Move Method Evtl. zuvor zu verschiebende Methode verkleinern: Extract Method V-40

21 Gestank 5: Switch-Anweisungen switch wird benutzt, um Typ-abhängig unterschiedliches Verhalten auszuführen. Switch isolieren: Extract Method Isolierte Methode in Oberklasse schieben: Move Method Polymorphie statt switch benutzen: Replace Conditional with Polymorphism V-41 Gestank 6: Kommentare Kommentare sind nicht prinzipiell schlecht, werden jedoch manchmal als Deo benutzt, um anderen Gestank zu überdecken. Statt Kommentar, der erklärt, was die nächsten Zeilen machen: Extract Method Falls extrahierte Methode dennoch einen Kommentar benötigt: Rename Method Falls kein anderer Gestank: Kommentar belassen! V-42

22 Mehr Gestank Für vorgestellte Code Smells kommen häufig noch weitere Refactorings in Frage. Weitere Code Smells bekannt. Beinhalten aber jeweils Refactorings als Abhilfe, die hier nicht vorgestellt wurden. Selber mal im Refactoring -Buch schmökern! V Werkzeugunterstützung Eclipse kann einige Refactorings automatisch durchführen: Codeblock/Bezeichner, der Refactoring unterzogen werden soll, markieren. Im Refactor -Menü das gewünschte Refactoring auswählen. Evtl. Dialog ausfüllen. Eclipse kümmert sich selber darum, dass Punkte der Checkliste abgearbeitet werden. Um Tests muss man sich jedoch selber kümmern. Bei automatisierten Refactorings sind Fehler allerdings unwahrscheinlicher als bei manuellen. Eclipse verwendet teilweise allgemeinere Namen für die Refactorings: Rename kann z.b. auf Methodennamen (=Rename Method) und Variablen (=Rename Variable) angewandt werden V-44

23 Werkzeugunterstützung, um Code-Smells zu erkennen Eclipse Metrics-Plugin berechnet statische Quelltextmetriken. Können bestimmt werden, ohne den Code auszuführen, z.b.: Lines of Code pro Methode, Schachtelungstiefe, Zyklomatische Komplexität nach McCabe. Außerdem existieren Werkzeuge, um nach dupliziertem Quelltext zu suchen. Werden wir in diesem Praktikum nicht einsetzen. Extract Method in Eclipse erkennt duplizierten Quelltext leider nicht. V-45 Zyklomatische Komplexität Von McCabe entworfene Metrik, die geeignet ist, um Spaghetti-Code aufzudecken. Umgangssprachliche Formulierung: Sequentielle Aneinanderreihung von Anweisungen hat die Komplexität 1 Jede Verzweigung oder Schleife erhöht Komplexität um 1 method1(a,b) FALSE block1 Def.: Zykl. Komplexität V für Ablaufgraphen G: V(G)=e-n+p Kante a>=b TRUE e=zahl der Kanten block3 n=zahl der Knoten FALSE p=zahl der Verbindungen nach außen (I.d.R. Single Entry Point, Exit Points entsprechend block4 Anzahl der return-anweisungen) Exitblock4 Point Beispiel: e=7, n=6, p=2. V(G)=3 V-46 a>b Entry- Point Knoten TRUE block2 Kante

24 9. Refactoring & Testen Unit-Tests sichern nicht nur Refactorings ab, Refactorings können es auch erforderlich machen, dass Unit-Tests angepasst werden müssen. Z.B.: Rename Method: Test müssen einbezogen werden. Extract Method: Methode wird erzeugt, für die kein Test existiert. Move Method: Tests für Ursprungsklasse schlagen fehl, Code in Zielklasse bleibt ungetestet. 2 Lösungsmöglichkeiten: Code-First: Erst Refactoring, dann Tests anpassen. Test-First: Erst Tests anpassen, dann Refactoring. Testgetriebenes Refactoring ist vorzuziehen, da Konsequenzen von Refactorings früher deutlich werden. V Zusammenfassung Quelltextabdeckung beim Testen wichtig: 100% Quelltextabdeckung garantiert aber immer noch nicht, dass Quelltext an sich vollständig ist und z.b. alle Sonderfälle abfängt! Refactoring: Systematische Umstrukturierung von Quelltext, ohne das Verhalten nach außen zu verändern. Nur ein Teil der bekannten Refactorings vorgestellt. Refactorings auch für Testfälle benutzen! Ebenso wie für Refactorings gibt es Kataloge mit guten Teil- Designs für Klassenarchitekturen (Entwurfsmuster) Gleicher Nutzen wie bei Refactoring-Katalog: Rad nicht ein zweites Mal erfinden. Gemeinsame Sprache (einheitliche Namen für Muster bzw. Refactoring). Z.B.: E. Gamma et. al. (GOF= Gang of Four ): Entwurfsmuster, Addison-Wesley, 1995 Refactorings können benutzt werden, um auf Entwurfsmuster hin zu arbeiten. V-48

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Whitebox-Tests: Allgemeines

Whitebox-Tests: Allgemeines -Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung Projektmanagement Vorlesung von Thomas Patzelt 9. Vorlesung 1 Pläne Kein Plan überlebt die erste Feindberührung - Feldmarschall Helmuth von Moltke Prognosen sind schwierig, besonders wenn sie die Zukunft

Mehr

Probeklausur Softwareengineering SS 15

Probeklausur Softwareengineering SS 15 Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das

Mehr

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009 Testen von Software Systemen Übung 02 SS 2009 Version: 1.0 09.06.2009 Komponententest Kunde: Dr. Reinhold Plösch Dr. Johannes Sametinger Kundenreferenz: 259.019 Team 19 Mitarbeiter: Christian Märzinger

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Online Newsletter III

Online Newsletter III Online Newsletter III Hallo zusammen! Aus aktuellem Anlass wurde ein neuer Newsletter fällig. Die wichtigste Neuerung betrifft unseren Webshop mit dem Namen ehbshop! Am Montag 17.10.11 wurde die Testphase

Mehr

Das Leitbild vom Verein WIR

Das Leitbild vom Verein WIR Das Leitbild vom Verein WIR Dieses Zeichen ist ein Gütesiegel. Texte mit diesem Gütesiegel sind leicht verständlich. Leicht Lesen gibt es in drei Stufen. B1: leicht verständlich A2: noch leichter verständlich

Mehr

1 Konto für HBCI/FinTS mit Chipkarte einrichten

1 Konto für HBCI/FinTS mit Chipkarte einrichten 1 Konto für HBCI/FinTS mit Chipkarte einrichten Um das Verfahren HBCI/FinTS mit Chipkarte einzusetzen, benötigen Sie einen Chipkartenleser und eine Chipkarte. Die Chipkarte erhalten Sie von Ihrem Kreditinstitut.

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software 1. Software installieren 2. Software starten Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software 3. Auswahl 1. Neues Fotobuch erstellen oder 2. ein erstelltes, gespeichertes Fotobuch laden und bearbeiten.

Mehr

Source Code Konverter... 2. Online: (VB.net <-> C#)... 3. Kommerzielle Produkte (VB, C#, C++, Java)... 3. Code Nachbearbeitung in der Praxis...

Source Code Konverter... 2. Online: (VB.net <-> C#)... 3. Kommerzielle Produkte (VB, C#, C++, Java)... 3. Code Nachbearbeitung in der Praxis... Autor: Thomas Reinwart 2008-05-05 office@reinwart.com Inhalt Source Code Konverter... 2 Online: (VB.net C#)... 3 Kommerzielle Produkte (VB, C#, C++, Java)... 3 Code Nachbearbeitung in der Praxis...

Mehr

Java Entwicklung für Embedded Devices Best & Worst Practices!

Java Entwicklung für Embedded Devices Best & Worst Practices! Java Entwicklung für Embedded Devices! George Mesesan Microdoc GmbH Natürlich können wir dieses neue log4j Bundle auch auf dem Device verwenden. Ist doch alles Java. Java Micro Edition (ME) Java Standard

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Fotostammtisch-Schaumburg

Fotostammtisch-Schaumburg Der Anfang zur Benutzung der Web Seite! Alles ums Anmelden und Registrieren 1. Startseite 2. Registrieren 2.1 Registrieren als Mitglied unser Stammtischseite Wie im Bild markiert jetzt auf das Rote Register

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr

Wir arbeiten mit Zufallszahlen

Wir arbeiten mit Zufallszahlen Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten

Mehr

(im Rahmen der Exchange-Server-Umstellung am 15.-17.04.2005)

(im Rahmen der Exchange-Server-Umstellung am 15.-17.04.2005) Outlook-Umstellung (im Rahmen der Exchange-Server-Umstellung am 15.-17.04.2005) Die Umstellung des Microsoft Mailserver-Systems ntmail (Exchange) erfordert vielfach auch eine Umkonfiguration des Programms

Mehr

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert. Usability Heuristiken Karima Tefifha Proseminar: "Software Engineering Kernkonzepte: Usability" 28.06.2012 Prof. Dr. Kurt Schneider Leibniz Universität Hannover Die ProSeminar-Ausarbeitung beschäftigt

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Bilder zum Upload verkleinern

Bilder zum Upload verkleinern Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst. 40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

WordPress. Dokumentation

WordPress. Dokumentation WordPress Dokumentation Backend-Login In das Backend gelangt man, indem man hinter seiner Website-URL einfach ein /wp-admin dranhängt www.domain.tld/wp-admin Dabei gelangt man auf die Administrationsoberfläche,

Mehr

Reporting Services und SharePoint 2010 Teil 1

Reporting Services und SharePoint 2010 Teil 1 Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger Den Speicherplatz wechseln oder eine Sicherungskopie erstellen. Es lässt sich nicht verhindern. Manche Sachen liegen am falschen Platz, können gelöscht werden oder man will vor der Bearbeitung eine Sicherungskopie

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Was meinen die Leute eigentlich mit: Grexit?

Was meinen die Leute eigentlich mit: Grexit? Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?

Mehr

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.

Mehr

Outlook Vorlagen/Templates

Outlook Vorlagen/Templates Joachim Meyn Outlook Vorlagen/Templates Erstellen Sie Vorlagen bzw. Templates in Outlook Joachim Meyn 27.03.2013 Inhaltsverzeichnis Outlook Vorlagen (.oft Dateien)... 2 Vorbereitung... 2 Anlegen einer

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Das Persönliche Budget in verständlicher Sprache

Das Persönliche Budget in verständlicher Sprache Das Persönliche Budget in verständlicher Sprache Das Persönliche Budget mehr Selbstbestimmung, mehr Selbstständigkeit, mehr Selbstbewusstsein! Dieser Text soll den behinderten Menschen in Westfalen-Lippe,

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.NET Code schützen. Projekt.NET. Version 1.0 .NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Archiv - Berechtigungen

Archiv - Berechtigungen Archiv - Berechtigungen - 1 Inhaltsverzeichnis 1. Grunddefinitionen...3 1.1. Mögliche Definitionen...3 1.1.1. Programme...3 1.1.2. Prinzipale...3 1.1.3 Archivzugriff...3 1.2. Leserichtung...3 1.2.1. Ordnerbezogen...3

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

AZK 1- Freistil. Der Dialog Arbeitszeitkonten Grundsätzliches zum Dialog Arbeitszeitkonten AZK 1- Freistil Nur bei Bedarf werden dafür gekennzeichnete Lohnbestandteile (Stundenzahl und Stundensatz) zwischen dem aktuellen Bruttolohnjournal und dem AZK ausgetauscht. Das Ansparen und das Auszahlen

Mehr

Agile Software Development

Agile Software Development Dipl. Wirtsch. Ing. Alexander Werth Methoden der Softwareentwicklung 6-1 Agile Manifest Individuen und Interaktion statt Prozessen und Tools. Funktionierende Software statt umfangreicher Dokumentation.

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

Projektmanagement in der Spieleentwicklung

Projektmanagement in der Spieleentwicklung Projektmanagement in der Spieleentwicklung Inhalt 1. Warum brauche ich ein Projekt-Management? 2. Die Charaktere des Projektmanagement - Mastermind - Producer - Projektleiter 3. Schnittstellen definieren

Mehr

Eigenen Farbverlauf erstellen

Eigenen Farbverlauf erstellen Diese Serie ist an totale Neulinge gerichtet. Neu bei PhotoLine, evtl. sogar komplett neu, was Bildbearbeitung betrifft. So versuche ich, hier alles einfach zu halten. Ich habe sogar PhotoLine ein zweites

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

lohmeyer White Paper Use Cases II UX+Prozessanalyse

lohmeyer White Paper Use Cases II UX+Prozessanalyse White Paper Use Cases II Use Cases begleiten uns in der IT seit mehr als 15 Jahren. Nichtsdestotrotz ist es nicht so einfach, Use Cases einfach und verständlich zu schreiben. Dieses White Paper spricht

Mehr

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Erstellen einer GoTalk-Auflage

Erstellen einer GoTalk-Auflage Erstellen einer GoTalk-Auflage 1. Bei dem Startbild Vorlage öffnen wählen 2. In dem folgenden Fenster Geräte Schablonen doppelt anklicken. - und schon öffnet sich der gesamte Katalog der verfügbaren Talker-Auflagen...eigentlich

Mehr

Kurzanleitung zu. von Daniel Jettka 18.11.2008

Kurzanleitung zu. von Daniel Jettka 18.11.2008 Kurzanleitung zu Tigris.org Open Source Software Engineering Tools von Daniel Jettka 18.11.2008 Inhaltsverzeichnis 1.Einführung...1 2.Das Projektarchivs...3 2.1.Anlegen des Projektarchivs...3 2.2.Organisation

Mehr

Die Excel Schnittstelle - Pro Pack

Die Excel Schnittstelle - Pro Pack Die Excel Schnittstelle - Pro Pack Die Excel Pro Pack ist eine Erweiterung der normalen Excel Schnittstelle, die in der Vollversion von POSWare Bestandteil der normalen Lizenz und somit für alle Lizenznehmer

Mehr

Die Post hat eine Umfrage gemacht

Die Post hat eine Umfrage gemacht Die Post hat eine Umfrage gemacht Bei der Umfrage ging es um das Thema: Inklusion Die Post hat Menschen mit Behinderung und Menschen ohne Behinderung gefragt: Wie zufrieden sie in dieser Gesellschaft sind.

Mehr

SAMMEL DEINE IDENTITÄTEN::: NINA FRANK :: 727026 :: WINTERSEMESTER 08 09

SAMMEL DEINE IDENTITÄTEN::: NINA FRANK :: 727026 :: WINTERSEMESTER 08 09 SAMMEL DEINE IDENTITÄTEN::: :: IDEE :: Ich selbst habe viele verschiedene Benutzernamen und Passwörter und wenn ich mir diese nicht alle aufschreiben würde, würde ich alle durcheinander bringen oder welche

Mehr

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann. Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann. Einleitung Es kommt vor, dass im Handel Disketten angeboten werden, die Styles und Registrationen

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Layoutmodelle. Steffen Schwientek Große Klostergasse 5 61169 Friedberg Email:schwientek@web.de Web :schlaukopp.org

Layoutmodelle. Steffen Schwientek Große Klostergasse 5 61169 Friedberg Email:schwientek@web.de Web :schlaukopp.org Layoutmodelle HTML wurde von ihren Erfindern nicht als Layoutsprache entworfen, sondern zur Informationsübermittlung entworfen Es gab verschiedene Modelle, welche das Web populär machten und. Bei Erstellung

Mehr

Installationsanleitung Maschinenkonfiguration und PP s. Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18.

Installationsanleitung Maschinenkonfiguration und PP s. Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18. Installationsanleitung Maschinenkonfiguration und PP s Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18.Februar 2015 Inhaltsverzeichnis 1 Einbinden der Postprozessoren... 3 1.1

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Klassendefinitionen verstehen

Klassendefinitionen verstehen Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen

Mehr

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER Fakultät Informatik, Institut für Angewandte Informatik, Professur Technische Informationssysteme SCHNELLEINSTIEG ZUM TOOL NODEBUILDER Betreuer: Dipl.-Ing. A. Cemal Özlük Dipl.-Inf. Uwe Ryssel ALLGEMEINE

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr