Kontinuierliches Qualitäts-Controlling langlebiger Softwaresysteme

Größe: px
Ab Seite anzeigen:

Download "Kontinuierliches Qualitäts-Controlling langlebiger Softwaresysteme"

Transkript

1 Kontinuierliches Qualitäts-Controlling langlebiger Softwaresysteme Dr. Florian Deißenböck msg systems ag 15. März 2013 Continuous Quality in Software Engineering

2 Agenda Software-Wartung»Schlechter Code«Qualitätsverfall Qualitäts-Controlling Werkzeugunterstützung

3 Anforderungen: Geschäftsprozesse, Fahrzeugfunktionen, Software-Wartung Software-System Technologie: Hardware, BS, Sprachen, Datenbanken,

4 Relevanz Lebenszyklus-Kosten 100% 80% 60% 40% 20% Hardware Development Maintenance Wartungsfälle 60% 50% 40% 30% 20% 10% 0% % Corrective Adaptive Perfective

5 Fehleinschätzungen Wartung ist reaktiv, unkreativ Wartung erfordert keine spezielle Qualifikation Wartungs-Schulungen 80% 70% 60% 50% 40% 30% 20% 10% Prüfung der Wartbarkeit 80% 70% 60% 50% 40% 30% 20% 10% 0% ja nein Katrin Katheder, Studie zur Software-Wartung, Bachelor Thesis, TU München, % ja nein

6 Einflussfaktoren H. Sneed, Estimating the Costs of Software Maintenance Tasks, ICSM, 1995

7 #include <math.h> #include <sys/time.h> #include <X11/Xlib.h> #include <X11/keysym.h> double L,o,P,_=dt,T,Z,D=1,d, s[999],e,h= 8,I, J,K,w[999],M,m,O,n[999],j=33e-3,i= 1E3,r,t, u,v,w,s= 74.5,l=221,X=7.26, a,b,a=32.2,c, F,H; int N,q, C, y,p,u; Window z; char f[52] ; GC k; main(){ Display*e= XOpenDisplay( 0); z=rootwindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),blackpixel(e,0)) ; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400, 0,0,WhitePixel(e,0) ),KeyPressMask); for(xmapwindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6} ; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=e*k; W=cos( O); m=k*w; H=K*T; O+=D*_*F/ K+d/K*E*_; B= sin(j); a=b*t*d-e*w; XClearWindow(e,z); t=t*e+ D*B*W; j+=d*_*d-_*f*e; P=W*E*B-T*D; for (o+=(i=d*w+e *T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s ]== 0 K <fabs(w=t*r-i*e +D*P) fabs(d=t *D+Z *T-a *E)> K)N=1e4; else{ q=w/k *4E2+2e2; C= 2E2+4e2/ K *D; N-1E4&& XDrawLine(e,z,k,N,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+m *M; XDrawString(e,z,k,20,380,f,17); D=v/l*15; i+=(b *l-m*r -X*Z)*_; for(; XPending(e); u *=CS!=N){ XEvent z; XNextEvent(e,&z); ++*((N=XLookupKeysym (&z.xkey,0))-it? N-LT? UP-N?& E:& J:& u: &h); --*( DN -N? N-DT?N== RT?&u: & W:&h:&J ); } m=15*f/l; c+=(i=m/ l,l*h +I*M+a*X)*_; H =A*r+v*X-F*l+( E=.1+X*4.9/l,t =T*m/32-I*T/24 )/S; K=F*M+( h* 1e4/l-(T+ E*5*T*E)/3e2 )/S-X*d-B*A; a=2.63 /l*d; X+=( d*l-t/s *(.19*E +a *.64+J/1e3 )-M* v +A* Z)*_; l += K *_; W=d; sprintf(f, "%5d %3d" "%7d",p =l /1.7,(C=9E3+ O*57.3)%0550,(int)i); d+=t*(.45-14/l* X-a*130-J*.14)*_/125e2+F*_*v; P=(T*(47 *I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W* 179*v)/2312; select(p=0,0,0,0,&g); v-=( W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u )/107e2)*_; D=cos(o); E=sin(o); } }

8 } for (const_iterator<permission> permission = permissions.begin(); permission!= permissions.end(); ++permission) { if (!permission->isinternal()) { if (user->haspermission (permission)) { cout << " " << permission << endl; } } } } } } /* bezieht sich auf if in Zeile 172 */ Zeilen C# in einer Klasse Zeilen C# in einer Methode Schachtelungstiefe Parameter

9 Bezeichner Anzahl S0 810 S1 612 r1 490 I1 423 S2 362 i1 248 S3 211 SQL 199 CM 193 I2 155 Type # % chars % Keywords % % Delimiters % % Operators % % Identifiers % % Literals % % Total % % Eclipse 3.0: Bezeichner bestehend aus Wörtern Identifikatoren sind das Vokabular eines Programms (ca. 70%) Synonyme & Homonyme Limitierung durch Programmiersprachen F. Deißenböck, M. Pizka, Concise and Consistent Naming, IWPC, 2005

10 /* if-else-kaskade */ if (GlobalSettings::mayPrintToConsole ()) { if (!user->isadmin()) { if (!permission->isinternal()) { if (user->haspermission int search (String s, String[] strings) { //strings = tolowercase(strings); strings = sort(strings); List<String> l = aslist(strings); return search(s, strings); }

11 TODO: ist das wirklich Okay, einem QWidget einen QObject Parent zu geben? TODO: Soll das so sein? Jetzt echt? Alle alten Sachen in die Tonne? TODO: WEG MIT DIESEM DRECK - RK SOLLTE FÜR JEDEN INDEX IMMER TODO: Nicht benutzen, hat hier überhaupt nix verloren FIXME: solve timeout problem FIXME: REFACTOREN! ich habe das jetzt einfache rüberkopiert, ist Müll so TODO: remove this hack TODO: Worin unterscheidet sich dieser Test vom vorherigen?? CQSE GmbH 2013

12

13 public double calc (double d1, double 2) { if (d1 == d2) { return 0; }... public double comp (String s1, String s2) { if (s1 == s2) { return 0; }... if (condition); { code_in_if (); } if (a<1 && a>5) { code_in_if (); } Socket s = new Socket (" ", 8080); return valid? true : false; Redundante Literale Magic Numbers GOTO Ausgerollte Schleifen public int find (String[] strings) { prepare(strings); int result = findprep(strings); Logger.debug(sort(strings)); return result; }

14 private static class Dir extends PathEntry { private String dir; Dir(String d) { dir = d; } ClassFile getclassfile(string name, String suffix) throws IOException { final File file = new File(dir + File.separatorChar + name.replace('.', File.separatorChar) + suffix); return file.exists()? new ClassFile() { public InputStream getinputstream() throws IOException { return new FileInputStream(file); } public String getpath() { try { return file.getcanonicalpath(); } catch(ioexception e) { return null; } } public long gettime() { return file.lastmodified(); } public long getsize() { return file.length(); } public String getbase() { return dir; } } : null; }...

15 try {... } catch (Throwable t) {} try {... } catch (Exception ex) { ex.printstracktrace(); } try {... } catch (Exception ex) { throw new RuntimeException(ex); } ungenügende/keine Behandlung von Ausnahmen inkonsistente Verwendung von Ausnahmen Ausnahmen vs Rückgabewerte Java: Checked vs Unchecked Exceptions

16 Juergens et al., Do Code Clones Matter?, ICSE 2009

17

18

19

20 Studie Identifikation von über 100 Fehlern in produktiver Software Kritisch Nutzersichtbar Nicht nutzersichtbar Juergens et al., Do Code Clones Matter?, ICSE 2009

21 DEMO CQSE GmbH 2013

22 >10 Programmiersprachen in einem System Wahl der Sprache auf Basis der Entwicklerverfügbarkeit veraltete Technologien Sprachvermischung

23 <body> <% If Request.QueryString( ID ) <> Then %> <SCRIPT language= JavaScript > function dologin() { X } </script> <% Else %> <SCRIPT language= JavaScript > function dologin() { Y } </script> <% End If %>... </body> CQSE GmbH 2013

24 35 Trigger entführte Tabellen/verlorene User SQL-Injection Impact-Analyse auf Zuruf

25 Tests, die kontinuierlich fehlschlagen Unit-Tests, die nichts testen Mangelnde Testbarkeit Capture&Replay-Werkzeuge

26 JUnit Samples Core TextUI Runner Extensions Framework Experimental Tests Lib Matchers Hamcrest

27

28 Studie Projekt Alter kloc #Beziehungen #Abweichungen Doku. Probleme Architektur- Verletzungen A ~90% ~10% B ~88% ~12% C ~72% ~28% Erkenntnisse Dokumentation typischerweise veraltet Vielzahl relevanter Verletzungen aufgedeckt (inkl. Bugs) gemeinsames Architekturverständnis ist nötig M. Feilkas et al., The Loss of Architectural Knowledge during System Evolution, ICPC 2009

29 DEMO CQSE GmbH 2013

30 Anforderungen: Geschäftsprozesse, Fahrzeugfunktionen, Software-Wartung Software-System Technologie: Hardware, BS, Sprachen, Datenbanken,

31 »Programs, like people, get old«*»software aging in all successful products«ursachen: mangelnde Bewegung unkundige Behandlung Symptome: Gewichtszunahme sinkende Performance und Zuverlässigkeit Prävention: Vorausplanen (Qualität, Flexibles Design) Aufzeichnung aufbewahren (Dokumentation) zweite Meinung einholen (Review) Heilkunde: Alterungsprozess aufhalten, Nachdokumentation Restrukturieren, Amputation * D. L. Parnas, Software Aging, ICSE, 1994

32 Beispiel Bell Labs: 100Mloc, Module, 15 Jahre, Entwickler S. G. Eick et al., Does Code Decay?, IEEE Trans. Softw. Eng., 2001 Phänomen: Änderungsaufwand/Fehlerpotential zunehmend Symptome:»bloated«Code, Behelfslösungen, Ursachen: Zeitdruck, Werkzeuge, Umfeld, Team, Architektur, Proportional zur Anzahl Änderungen

33 LoC Clone LoC Aug. 04 Okt. 04 Dez. 04 Feb. 05 Apr. 05 Jun. 05 Aug. 05 Okt. 05 Dez. 05 Feb. 06 Apr. 06 Jun. 06 Aug. 06 Okt. 06 Dez. 06

34 CQSE GmbH 2013

35 Anforderungen: Geschäftsprozesse, Fahrzeugfunktionen, Software-Wartung Software-System Kontinuierliches Qualitäts-Controlling Technologie: Hardware, BS, Sprachen, Datenbanken,

36 Änderungen gewünschte Wartbarkeit Abweichung Korrekturen Wartbarkeit Q-Ing. Entwickler System Analyse-Ergebnis (feedback) Qualitäts-Analyse Review Analyse-Tool

37 Quality Dashboard Quality Control Project Manager interprets Quality Reports creates interprets Quality Engineer defines configures reviews triggers/educates implements analyzes generates Analysis Tool accesses Software System Data Sources respects interprets Guidelines Developer

38 Quality Dashboard Quality Control Project Manager interprets Quality Reports creates interprets Quality Engineer defines configures reviews triggers/educates implements analyzes generates Analysis Tool accesses Software System Data Sources respects interprets Guidelines Developer

39 Trugschluss: Messbar == Relevant CQSE GmbH 2013

40 org.junit.runners.enclosed org.junit.experimental.theories.theories org.junit.internal.runners.testclassrunne r org.junit.tests.parameterizedtestmethodtest org.junit.tests.alltests org.junit.tests.testmethodtest org.junit.internal.requests.classrequest org.junit.tests.enclosedtest org.junit.tests.singlemethodtes t org.junit.experimental.results.resultmatchers org.junit.tests.parameterizedtesttest org.junit.tests.suitemethodtest org.junit.tests.suitetes t org.junit.tests.testlistenertest org.junit.tests.timeouttest org.junit.tests.allteststest org.junit.tests.ignoreclasstest org.junit.tests.prejunit4testcaserunnertest org.junit.tests.listenertest org.junit.tests.runnertest org.junit.tests.commandlinetest org.junit.experimental.theories.theor y org.junit.experimental.theories.parametersignature org.junit.experimental.theories.parameterssuppliedby org.junit.experimental.theories.suppliers.testedonsupplier org.junit.experimental.theories.suppliers.testedon org.junit.experimental.theories.datapoint org.junit.experimental.theories.potentialparametervalu e org.junit.experimental.theories.parametersupplier org.junit.experimental.theories.internal.theorymethod org.junit.tests.anotherpackage.super org.junit.experimental.theories.internal.parameterizedassertionerror org.junit.internal.runners.initializationerror org.junit.runners.parameterized org.junit.tests.anotherpackage.sub org.junit.runners.suite org.junit.tests.inaccessiblebaseclasstest org.junit.internal.runners.methodvalidator org.junit.beforeclass org.junit.afterclass org.junit.internal.runners.testclass org.junit.test org.junit.before org.junit.after org.junit.internal.runners.testmethod org.junit.internal.runners.junit4classrunner org.junit.internal.runners.classroadie org.junit.internal.runners.failedbefore org.junit.runner.manipulation.filterable org.junit.internal.runners.methodroadie org.junit.internal.runners.compositerunne r org.junit.runner.manipulation.notestsremainexception org.junit.runner.manipulation.filter org.junit.internal.requests.filterrequest org.junit.ignore org.junit.runner.runwith org.junit.tests.validationtest org.junit.internal.requests.classesrequest org.junit.runner.manipulation.sorter org.junit.runner.manipulation.sortable org.junit.internal.requests.ignoredclassrunner org.junit.runner.request org.junit.internal.requests.errorreportingrequest org.junit.runner.notification.runnotifier org.junit.runner.notification.stoppedbyuserexception org.junit.tests.annotateddescriptiontes t org.junit.internal.runners.errorreportingrunner org.junit.tests.userstoptest org.junit.internal.requests.sortingreques t org.junit.tests.classrequesttest org.junit.runner.runner org.junit.runners.alltests org.junit.runner.description org.junit.internal.runners.oldtestclassrunner org.junit.internal.runners.junit38classrunner junit.framework.junit4testadapter org.junit.tests.oldtestclassadaptinglistenertes t org.junit.samples.simpletest org.junit.tests.suitedescriptiontest junit.framework.junit4testadaptercache junit.framework.junit4testcasefacade org.junit.tests.testdescriptiontest org.junit.tests.junitcoretest org.junit.assume org.junit.runner.junitcore org.junit.assert org.junit.internal.arraycomparisonfailure org.junit.tests.runwithtest org.junit.samples.listtes t org.junit.tests.testclassmethodsrunnertes t org.junit.runner.result org.junit.comparisonfailure org.junit.runner.notification.failure org.junit.experimental.results.printableresul t org.hamcrest.stringdescription org.hamcrest.basedescription org.hamcrest.internal.arrayiterator org.junit.tests.failedconstructiontest org.junit.runner.notification.runlistener org.hamcrest.core.issame org.hamcrest.selfdescribing org.junit.experimental.results.failurelist org.hamcrest.core.isinstanceof org.hamcrest.internal.selfdescribingvalueiterator org.hamcrest.internal.selfdescribingvalue org.junit.tests.assumptiontest org.junit.tests.expectedtest org.hamcrest.core.isanything org.junit.internal.textlistener org.hamcrest.description org.hamcrest.core.is org.junit.tests.assertiontes t org.hamcrest.core.isequal org.junit.tests.textlistenertest org.hamcrest.corematchers org.hamcrest.core.isnu l org.hamcrest.core.isnot org.hamcrest.basematcher org.junit.tests.oldtestclassrunnertest org.hamcrest.core.anyof org.hamcrest.matcher org.junit.tests.assumptionviolatedexceptiontest org.junit.matchers.each org.junit.matchers.iscollectioncontaining org.hamcrest.core.describedas org.junit.tests.annotationtes t org.junit.matchers.combinablematcher org.junit.tests.eachtes t org.junit.matchers.junitmatchers org.hamcrest.core.allof org.junit.matchers.stringcontains org.junit.matchers.substringmatcher org.junit.tests.bothtes t org.junit.matchers.typesafematcher org.junit.tests.initializationerrorforwardcompatibilitytest org.junit.tests.forwardcompatibilitytes t junit.framework.test org.junit.tests.forwardcompatibilityprintingtest junit.framework.testfailure junit.runner.version junit.samples.simpletes t junit.tests.runner.textrunnertes t junit.framework.testsuit e junit.framework.testresult junit.framework.protectabl e junit.textui.resultprinter junit.framework.testlistene r junit.tests.runner.textfeedbacktes t junit.textui.testrunner junit.runner.basetestrunner junit.extensions.testsetup junit.extensions.testdecorator junit.extensions.repeatedtest junit.tests.runner.textrunnersinglemethodtest junit.tests.runner.stackfiltertest org.junit.tests.oldtests junit.tests.alltest s junit.tests.runner.alltest s junit.extensions.activetestsuite junit.tests.runner.basetestrunnertes t junit.tests.framework.success junit.samples.alltests junit.tests.extensions.repeatedtesttest junit.tests.framework.failure org.hamcrest.factory junit.tests.extensions.alltest s junit.tests.framework.notestcaseclass junit.samples.listtest junit.tests.extensions.extensiontest junit.framework.testcase junit.tests.wasrun org.junit.tests.sortabletest junit.tests.extensions.activetesttes t junit.runner.testrunlistene r junit.tests.framework.testimplementortest junit.tests.framework.notvoidtestcase junit.tests.framework.notestcases junit.tests.framework.notpublictestcas e junit.tests.framework.testcasetest junit.tests.framework.alltest s junit.tests.framework.suitetes t junit.tests.framework.overridetestcase junit.tests.framework.floatasserttes t junit.tests.framework.noargtestcasetest junit.tests.framework.onetestcase junit.tests.framework.testlistenertest junit.tests.framework.asserttest junit.tests.framework.comparisonfailuretes t junit.tests.framework.comparisoncompactortest junit.framework.assert junit.framework.assertionfailederror junit.tests.framework.inheritedtestcas e junit.framework.comparisonfailure junit.framework.comparisoncompactor junit.tests.framework.doubleprecisionasserttest org.junit.samples.money.moneytest junit.samples.money.moneybag junit.samples.money.money junit.samples.money.moneytes t junit.samples.money.imoney CQSE GmbH 2013 OO Design Metrics Fan-In Fan-Out 4 Coupling Cohesion Stability Depth of Inheritance # Children

41 Trugschluss: Messung == Bewertung Messung Bewertung

42

43

44 Trugschluss: Messung == Bewertung Messung Bewertung Kontext

45 Quality Dashboard Quality Control Project Manager interprets Quality Reports creates interprets Quality Engineer defines configures reviews triggers/educates implements analyzes generates Analysis Tool accesses Software System Data Sources respects interprets Guidelines Developer

46 Manuelle Reviews viele relevante Qualitätseigenschaften sind nicht automatisch analysierbar Bezeichner Kommentare sinnvolle Verwendung von Datenstrukturen und Algorithmen Konsistenz der Fehlerbehandlung logische Redundanz diese Eigenschaften bedürfen der manuelle Analyse manuelle Analysen werden in der Praxis nur spärlich eingesetzt manuelle Analysen sollten soweit möglich durch automatische Analysen unterstüzt werden

47 Reviews bei der ConQAT-Entwicklung flächendeckendes Review aller Änderungen auf Basis des Ampelzustands der angepassten Dateien Sammlung der Issues als TODO-Tags im Code review creation release review RED YELLOW GREEN deletion modification

48

49 Quality Dashboard Quality Control Project Manager interprets Quality Reports creates interprets Quality Engineer defines configures reviews triggers/educates implements analyzes generates Analysis Tool accesses Software System Data Sources respects interprets Guidelines Developer

50 Messung erfordert Ziele 4 Keine Defizite 3 Keine Defizite in geändertem Code 2 Keine neue Defizite 1 Egal

51 Quality Dashboard Quality Control Project Manager interprets Quality Reports creates interprets Quality Engineer defines configures reviews triggers/educates implements analyzes generates Analysis Tool accesses Software System Data Sources respects interprets Guidelines Developer

52 Quality Indicator Stability of Regular Team Builds Architecture Conformance Full Assessment Build is stable. There are zero violations. Delta Assessment At the time of the last report, there was no automated build at all. Architecture specification was completed and is now fully adhered to. Stability of Unit Tests 75 unit tests are passing but many tests have been disabled. Unit tests are now executed automatically. Code Coverage Cover coverage measurement is not yet enabled. is working on this. Compiler Warnings The code exhibits 7 compiler warnings. However, it is questionable if their removal is worthwhile. The number of warnings was significantly reduced but not all fixes actually improve the code quality. Coding Guidelines Violations Duplicated Code The threshold of for types with any FxCop warning is violated. With a clone coverage of the threshold ofi s slightly violated. The amount of files with at least one FxCop warning increased. Clone coverage did not change significantly. File Size The threshold regarding files > LOC is violated. Use of partial classes improves the metric values but does not improve code quality. Nesting Depth Both thresholds are satisfied. All nestings deeper than have been removed. Length of Longest Method The threshold regarding methods > LOC is violated. The amount of types with methods longer than decreased significantly. LoCM

53 Quality Dashboard Quality Control Project Manager interprets Quality Reports creates interprets Quality Engineer defines configures reviews triggers/educates implements analyzes generates Analysis Tool accesses Software System Data Sources respects interprets Guidelines Developer

54 »Die Sau wird vom Wiegen nicht fett«messung Bewertung Aktion Task-Liste Qualitäts- Verbesserung

55 Quality Dashboard Quality Control Project Manager interprets Quality Reports creates interprets Quality Engineer defines configures reviews triggers/educates implements analyzes generates Analysis Tool accesses Software System Data Sources respects interprets Guidelines Developer

56 ConQAT graphische DSL zur Spezifikation der Analysekonfiguration Prozessoren beschreiben Analyseoperationen Kanten beschreiben Datenfluss Blöcke ermöglichen die Wiederverwendung von Analysefunktionalität source modulea Utility.java Main.java Loader.java source modulea Utility.java 128 Main.java 244 Loader.java 331 source 703 modulea 703 Utility.java 128 Main.java 244 Loader.java /04/ /04/ /03/ /06/

57 Qualitäts-Dashboards CQSE GmbH 2013

58 Eingabe Quelltext (Ada, ABAP, C/C++, Cobol, C#, Java, JavaScript, VB, PL/I, ) Textdokumente (Plain, CSV, Word, PDF) Modelle (Simulink/Stateflow) Respositories (Subversion, TFS, Bugzilla, Redmine) Analyse Basis-Metriken (# Files, LOC, SLOC, # Methods, Nesting Depth, ) Clone-Detection Architektur-Analyse Tool-Integration (PMD, Findbugs, JUnit, Cobertura, Klocwork, FxCop, ) Basis-Metriken (# Files, LOC, SLOC, # Methods, Nesting Depth, ) Historisierung Ausgabe verschiedene Formate (HTML, PDF, Text, ) Tabellen Diagramme (Balken, Linie, Radar, Fläche, Scatter, Torte, ) Tree-Maps (Plain & Cushion)

59

60 Teamscale SVN Incremental Analysis Engine Web Client Scheduler TFS NoSQL Store REST Service Layer Eclipse Worker 1 Worker N Visual Studio File System

61 DEMO CQSE GmbH 2013

62 DEMO CQSE GmbH 2013

63 DEMO CQSE GmbH 2013

64 DEMO CQSE GmbH 2013

65 DEMO CQSE GmbH 2013

66 LoC Clone LoC Aug. 04 Okt. 04 Dez. 04 Feb. 05 Apr. 05 Jun. 05 Aug. 05 Okt. 05 Dez. 05 Feb. 06 Apr. 06 Jun. 06 Aug. 06 Okt. 06 Dez. 06 Feb. 07 Apr. 07 Jun. 07 Aug. 07 Okt. 07 Dez. 07 Feb. 08 Apr. 08 Jun. 08 Aug. 08 Okt. 08 Dez. 08 Feb. 09 Apr. 09

67

68

69 Quality Dashboard Quality Control Project Manager interprets Quality Reports creates interprets Quality Engineer defines configures reviews triggers/educates implements analyzes generates Teamscale Analysis Tool accesses Software System Data Sources respects interprets Guidelines Developer

70 Kontakt Dr. Florian Deißenböck CQSE GmbH Lichtenbergstraße Garching bei

ConQAT Software-Qualitäts-Analyse aus dem Baukasten

ConQAT Software-Qualitäts-Analyse aus dem Baukasten ConQAT Software-Qualitäts-Analyse aus dem Baukasten Dr. Florian Deißenböck 6. März 2012 Universität Stuttgart Continuous Quality in Software Engineering Änderungen gewünschte Wartbarkeit Abweichung Korrekturen

Mehr

Vertrauen ist gut. Dr. Florian Deißenböck. BITKOM Arbeitskreis Software Engineering. 8. Oktober 2014. Continuous Quality in Software Engineering

Vertrauen ist gut. Dr. Florian Deißenböck. BITKOM Arbeitskreis Software Engineering. 8. Oktober 2014. Continuous Quality in Software Engineering Vertrauen ist gut Dr. Florian Deißenböck BITKOM Arbeitskreis Software Engineering 8. Oktober 2014 Continuous Quality in Software Engineering Software Engineering Governance is the set of structures, processes

Mehr

Softwarequalität Eine Einführung

Softwarequalität Eine Einführung Softwarequalität Eine Einführung Dr. Florian Deißenböck Seminar Softwarequalität 4. April 2013 Continuous Quality in Software Engineering Agenda Softwarequalität Softwarequalitätsmodelle Software-Wartung»Schlechter

Mehr

Schlechter Code Beispiele, Gründe, Gegenmaßnahmen

Schlechter Code Beispiele, Gründe, Gegenmaßnahmen Schlechter Code Beispiele, Gründe, Gegenmaßnahmen Dr. Florian Deißenböck GI Regionalgruppe München 11. Juni 2012 Continuous Quality in Software Engineering Agenda Schlechter Code Code-Reviews Werkzeuge

Mehr

Code-Qualität. Dr. Florian Deißenböck. AE-Kolloquium Versicherungskammer Bayern. 27. Oktober 2011. Continuous Quality in Software Engineering

Code-Qualität. Dr. Florian Deißenböck. AE-Kolloquium Versicherungskammer Bayern. 27. Oktober 2011. Continuous Quality in Software Engineering Code-Qualität Dr. Florian Deißenböck AE-Kolloquium Versicherungskammer Bayern 27. Oktober 2011 Continuous Quality in Software Engineering Agenda Schlechter Code Code-Reviews Werkzeuge Qualitätsverfall

Mehr

CQSE GmbH Software-Qualität. Dr. Florian Deißenböck 26. Januar Continuous Quality in Software Engineering

CQSE GmbH Software-Qualität. Dr. Florian Deißenböck 26. Januar Continuous Quality in Software Engineering CQSE GmbH 2017 Software-Qualität Dr. Florian Deißenböck 26. Januar 2017 Continuous Quality in Software Engineering CQSE GmbH 2017 Warum ist Software- Qualität wichtig? Welche Probleme gibt es? Warum wird

Mehr

Schlechter Code Beispiele, Gründe, Gegenmaßnahmen

Schlechter Code Beispiele, Gründe, Gegenmaßnahmen Schlechter Code Beispiele, Gründe, Gegenmaßnahmen Dr. Florian Deißenböck GI Regionalgruppe Hamburg 26. Oktober 2012 Continuous Quality in Software Engineering Agenda Schlechter Code Code-Reviews Werkzeuge

Mehr

Software Intelligence

Software Intelligence Software Intelligence Dr. Florian Deißenböck 9. Februar 2017 Alle Logos sind von Wikipedia. Die Rechte daran hält die jeweilige Organisation. Continuous Quality in Software Engineering Anforderungen: Geschäftsprozesse,

Mehr

Was kann man aus der Versionshistorie eines Softwaresystems lernen?

Was kann man aus der Versionshistorie eines Softwaresystems lernen? Was kann man aus der Versionshistorie eines Softwaresystems lernen? JUG Darmstadt - 13. Oktober 2016 Dr. Dennis Pagano @dennispagano Über Mich Forschung Analyse von Open Source Communities Historie von

Mehr

Was kann man aus der Versionshistorie eines Softwareprojekts lernen? Dr. Dennis

Was kann man aus der Versionshistorie eines Softwareprojekts lernen? Dr. Dennis Was kann man aus der Versionshistorie eines Softwareprojekts lernen? Dr. Dennis Pagano @dennispagano Über Mich Forschung Analyse von Open Source Communities Historie von Code und Kommunikationsartefakten

Mehr

Don't look back in anger

Don't look back in anger Don't look back in anger Wie uns Historienanalyse dabei hilft, unsere Entwicklung zu verbessern Java Forum Stuttgart - 6. Juli 2017 Dr. Dennis Pagano @dennispagano Ausschnitt aus meiner Historie Forschung

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

Test-Gap-Analyse. Wie erkennen wir ungetestete Änderungen, bevor sie ins Release gehen? Dr. Andreas Göb XP Days Germany 2015

Test-Gap-Analyse. Wie erkennen wir ungetestete Änderungen, bevor sie ins Release gehen? Dr. Andreas Göb XP Days Germany 2015 Test-Gap-Analyse Wie erkennen wir ungetestete Änderungen, bevor sie ins Release gehen? Dr. Andreas Göb XP Days Germany 2015 Über mich Forschung Modellierung von Softwarequalität Wartbarkeit, Software-Architektur

Mehr

Echolot Qualitätssicherung mit Sonar

Echolot Qualitätssicherung mit Sonar Echolot Qualitätssicherung mit Sonar Thomas Haug thomas.haug@mathema.de www.mathema.de Motivation Sonar Überblick Demo Fazit Motivation Sonar Überblick Demo Fazit Sometimes the developers manage to maintain

Mehr

Erweiterbare Architekturen

Erweiterbare Architekturen 1 Florian Deißenböck Erweiterbare Architekturen 23. September 2005 Architektenworkshop 2 Gliederung Hintergrund Persönliches, Software-Qualität, Wartbarkeit ConQATs Architektur Entwurf, Prototypen, Konfiguration

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Automatisiertes UI Testing. Mark Allibone, 18.04.2013, #2

Automatisiertes UI Testing. Mark Allibone, 18.04.2013, #2 Coded UI Testing Automatisiertes UI Testing Mark Allibone, 18.04.2013, #2 Eine klassische Applikations Architektur Grafische Oberfläche Business Logik Datenzugriff (Datenbank, Cloud, etc) Mark Allibone,

Mehr

Entwicklungswerkzeuge

Entwicklungswerkzeuge Entwicklungswerkzeuge Werner Struckmann & Tim Winkelmann 10. Oktober 2012 Gliederung Anforderungen Projekte Debugging Versionsverwaltung Frameworks Pattern Integrated development environment (IDE) Werner

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

Prüfung Software Engineering II (IB)

Prüfung Software Engineering II (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 4 A Sommersemester 2015 Prüfung Software Engineering II (IB) Datum : 20.07.2015, 12:30 Uhr Bearbeitungszeit

Mehr

Unit Tests und Fehlersuche

Unit Tests und Fehlersuche Unit Tests und Fehlersuche SE 1 - Softwareentwicklungspraktikum Test Deadline! Sinnvolle Tests kompilierbar im CVS d.h. Schnittstellen zu Strategiemethoden etc. schon erstellen Kommentieren! Besser ein

Mehr

Lokale Installation von DotNetNuke 4 ohne IIS

Lokale Installation von DotNetNuke 4 ohne IIS Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation

Mehr

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb DevOps bei den ID Build-Automatisierung statt Silo-Betrieb SWS Entwicklertreffen vom 1.10.2015 Benno Luthiger 1.10.2015 1 Ausgangslage Kundenwunsch: Stabiles System, das schnell reagiert ( Betrieb) Neue

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

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

Die Kunst des Programmierens...

Die Kunst des Programmierens... Die Kunst des Programmierens... Wo die Kosten anfallen Der Mythos Wiederverwendung: Design für Wartung als eigentliches Ziel, Objekt Spektrum 4/2009 software maintainers sped 45 percent of their time seeking

Mehr

Pragmatik von Programmiersprachen

Pragmatik von Programmiersprachen Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014 Szenario: IT Dienstleister Unternehmen: Produkte: Kunden: IT Dienstleistung Beratung und Software

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

SOMA Reverse Engineering

SOMA Reverse Engineering SOMA Reverse Engineering Univ.Prof. Dr. Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt Was versteht man unter Reverse Engineering? Techniken/Methoden Probleme VU Software Maintenance

Mehr

Test Driven Development

Test Driven Development Test Driven Development Definition & Motivation [~15min] Demo [~10min] Stubs & Mocks [~15min] Übliche Fehler [~5min] Folie 1 TDD [Kent Beck] Schreibe keine Zeile Code ohne einen fehlschlagenden (roten)

Mehr

Requirements Management mit RequisitePro. Rational in der IBM Software Group. Der Rational Unified Process als Basis für die Projektarbeit

Requirements Management mit RequisitePro. Rational in der IBM Software Group. Der Rational Unified Process als Basis für die Projektarbeit IBM Software Group IBM Rational mit RequisitePro Hubert Biskup hubert.biskup@de.ibm.com Agenda Rational in der IBM Software Group Der Rational Unified Process als Basis für die Projektarbeit mit Rational

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

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

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen ...we make the invisible visible... 1 Inhalt Fragestellungen Analysen und deren Anwendung Erfahrungen 2 Projektleiter Hat unsere Software eine klare, verständliche Struktur? Gibt es problematischen Code,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Log Parser 2.0 HackerScan.js. Beschreibung. Anforderungen. Unterstützte Plattformen. Script-Code. Zurück zur Übersichtsseite

Log Parser 2.0 HackerScan.js. Beschreibung. Anforderungen. Unterstützte Plattformen. Script-Code. Zurück zur Übersichtsseite Zurück zur Übersichtsseite Log Parser 2.0 HackerScan.js (Engl. Originaltitel: HackerScan.js) Beschreibung Dieses Script sucht in allen IIS-Protokolldateien (IIS-, HTTPError- und UrlScan-Protokolldateien)

Mehr

Uwe Baumann artiso Solutions ubaumann@artiso.com

Uwe Baumann artiso Solutions ubaumann@artiso.com Uwe Baumann artiso Solutions ubaumann@artiso.com Upgrade Strategien Data/Application Tier Anpassung von Process Templates Build Test/Lab Performance TFS Version Control Workitem Tracking Build Verwaltung

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes Programmieren mit Java. Test Driven Development Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test

Mehr

Automatisierte Akzeptanztests für ios-apps. Sven Günther it-agile GmbH

Automatisierte Akzeptanztests für ios-apps. Sven Günther it-agile GmbH Automatisierte Akzeptanztests für ios-apps Sven Günther it-agile GmbH Wer entwickelt native Apps? Wer testet die Apps selbst? Wer hat externe Testdienstleister? Wer hat Unit-Tests? Wer hat Akzeptanztests?

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

SERVICE SUCHE ZUR UNTERSTÜTZUNG

SERVICE SUCHE ZUR UNTERSTÜTZUNG SERVICE SUCHE ZUR UNTERSTÜTZUNG VON ANFORDERUNGSERMITTLUNG IM ERP BEREICH MARKUS NÖBAUER NORBERT SEYFF ERP SYSTEME Begriffsbestimmung: Enterprise Resource Planning / Business Management Solution Integrierte

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1 JUnit - Test Driven Development Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1 Gliederung 1.Einleitung 1.1 Geschichte 1.2 Was sind Unit-Tests? 1.3 Failures/Errors 1.4 Ziele und Nutzen

Mehr

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

Torsten Flatter inovex GmbH. Git.NET gibt's nicht? Torsten Flatter inovex GmbH "Git.NET" gibt's nicht? Vorstellung Torsten Flatter inovex GmbH.NET / C# seit 2004 VSS, CVS, SVN, TFS, hq, git Enterprise-Umfeld Agenda Überblick Grundlagen Einsatzbereiche

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

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

NCDiff Testmanagement leicht gemacht

NCDiff Testmanagement leicht gemacht Testmanagement leicht gemacht Nagler & Company Thomas Gebhard & Anton Garra Complexity Die stetige Anpassung an neue Anforderungen der IT und das Bestreben Marktgegebenheiten zu folgen oder voraus zu sein,

Mehr

Einreichung zum Call for Papers

Einreichung zum Call for Papers Internet: www.aitag.com Email: info@aitag.com Einreichung zum Call for Papers Kontaktinformationen Sven Hubert AIT AG Leitzstr. 45 70469 Stuttgart Deutschland http://www.aitag.com bzw. http://tfsblog.de

Mehr

ABSICHERUNG MODELLBASIERTER SICHERHEITSKRITISCHER AVIONIK SOFTWARE Dr. Elke Salecker

ABSICHERUNG MODELLBASIERTER SICHERHEITSKRITISCHER AVIONIK SOFTWARE Dr. Elke Salecker ABSICHERUNG MODELLBASIERTER SICHERHEITSKRITISCHER AVIONIK SOFTWARE Dr. Elke Salecker MOTIVATION Fahrzeug-Software wird modellbasiert mit Simulink/TargetLink entwickelt & DO331/DO-178C ermöglicht modellbasierte

Mehr

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Dennis Hardt 21.06.2006 Gliederung Statische Analyse Definition, Arbeitsweise, Werkzeuge Angewandt auf ein Projekt Statische Analyse selbst

Mehr

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor. Eclipse WSDL-Editor Übersicht Eclipse Foundation Eclipse Plugins & Projects Eclipse Ganymede Simultaneous Release Web Tools Platform Projekt WSDL Editor Bug #237918 Eclipse Foundation Was ist Eclipse?

Mehr

Software Intelligence

Software Intelligence Software Intelligence Dr. Florian Deißenböck 27. Oktober 2016 Alle Logos sind von Wikipedia. Die Rechte daran hält die jeweilige Organisation. Continuous Quality in Software Engineering 1968 1998 2004

Mehr

Iterativ. Inkrementell

Iterativ. Inkrementell Iterativ Inkrementell Build Release Test Qualität Architektur & Documentation Distributed Version Control Continuous Integration TDD Design Agile Architektur Dependency Feature Branches Mocks

Mehr

GELEBTE ENTWICKLUNGSRICHTLINIEN

GELEBTE ENTWICKLUNGSRICHTLINIEN GELEBTE ENTWICKLUNGSRICHTLINIEN VOM VERSTAUBTEM PAPIERSTAPEL ZUM SPICKZETTEL FÜR ENTWICKLER BORIS WEHRLE ENTWICKLUNGSRICHTLINIEN Ein Programmierstil (engl. code conventions, coding conventions, coding

Mehr

Es wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Es wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht. Struts Code Peaces Element Es wird das Struts Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht. Allgemeines Autor: Sascha Wolski Sebastian Hennebrüder

Mehr

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform 0. Benötigt werden folgende Softwarepakete:.NET Framework Software Development Kit (http://www.microsoft.com/downloads/details.aspx?familyid=4fe5bdb5-c7a7-4505-9927-2213868a325b&displaylang=en)

Mehr

Value Delivery and Customer Feedback

Value Delivery and Customer Feedback Value Delivery and Customer Feedback Managing Continuous Flow of Value Michael Reisinger Microsoft & ANECON Praxisupdate 2014 ANECON Software Design und Beratung G.m.b.H. Alser Str. 4/Hof 1 A-1090 Wien

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

EEX Kundeninformation 2007-09-05

EEX Kundeninformation 2007-09-05 EEX Eurex Release 10.0: Dokumentation Windows Server 2003 auf Workstations; Windows Server 2003 Service Pack 2: Information bezüglich Support Sehr geehrte Handelsteilnehmer, Im Rahmen von Eurex Release

Mehr

Summenbildung in Bauteiltabellen mit If Then Abfrage

Summenbildung in Bauteiltabellen mit If Then Abfrage Summenbildung in Bauteiltabellen mit If Then Abfrage Die in Bauteiltabellen ausgelesenen Werte lassen sich in jeder Spalte als Summe berechnen. So können selbstverständlich die Flächen der in der Tabelle

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an? WEBAPPLIKATIONEN MIT PHP Wo gibt es Hilfe? Wie fang ich an? Tools Webapplikationen bestehen aus Textdateien Lassen sich in Texteditoren schreiben Alternativen: Eclipse (PDT) Netbeans (Dynamic Languages)

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle!

Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle! Entwicklertag Karlsruhe, 20.05.2015 Ralf D. Müller, Freelancer Tobias Kraft, exensio GmbH Meine Software wird durch automatisierte Tests

Mehr

Verfügbarkeit von Applikationen und Failover Szenarien. Winfried Wojtenek. wojtenek@mac.com

Verfügbarkeit von Applikationen und Failover Szenarien. Winfried Wojtenek. wojtenek@mac.com Verfügbarkeit von Applikationen und Failover Szenarien Winfried Wojtenek wojtenek@mac.com Verfügbarkeit % Tage Stunden Minuten 99.000 3 16 36 99.500 1 20 48 99.900 0 9 46 99.990 0 0 53 99.999 0 0 5 Tabelle

Mehr

Softwarequalität sicherstellen mit Sonar

Softwarequalität sicherstellen mit Sonar Softwarequalität sicherstellen mit Sonar Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Hochschule München Michaela Lutz München, den 07. Juni 2013 1 Gliederung Was ist Sonar? Komponenten

Mehr

Evaluation of Database Design and Reverse Engineering Tools for a Large Software System

Evaluation of Database Design and Reverse Engineering Tools for a Large Software System Evaluation of Database Design and Reverse Engineering Tools for a Large Software System Anne Thomas TU Dresden Dr. B. Demuth Pre Press GmbH (Dresden) T. Reuter Gliederung Einleitung Vorgehensweise Kontext

Mehr

Erster Bug: eine Motte

Erster Bug: eine Motte SOFTWAREFEHLER Der erste Bug Erster Bug: eine Motte Der Begriff Bug (deutsch: Motte) stammt aus dem Jahre 1945, als Ingenieure in einem Schaltrelais eines Computers (Harvard Mark II-System) eine Motte

Mehr

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

Mehr

Python SVN-Revision 12

Python SVN-Revision 12 Python SVN-Revision 12 Uwe Ziegenhagen 7. Januar 2012 Vorwort Dieses Skript erhebt keinen Anspruch auf Vollständigkeit oder Richtigkeit. Es wird geschrieben, um mir als Gedächtnisstütze für den Umgang

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

Prozedurale Datenbank- Anwendungsprogrammierung Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.

Mehr

GuiXT und mysap ERP. Regensdorf, April 2004 Dr.Gerhard Rodé, Synactive GmbH

GuiXT und mysap ERP. Regensdorf, April 2004 Dr.Gerhard Rodé, Synactive GmbH GuiXT und mysap ERP Regensdorf, April 2004 Dr.Gerhard Rodé, Synactive GmbH Hinweis: Einige Aussagen und Diagramme zu den SAP Produkten in dieser Präsentation stammen aus den von SAP im Internet zur Verfügung

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Hauptseminar AOSD. Design-by-Contract

Hauptseminar AOSD. Design-by-Contract Hauptseminar AOSD Seite 1 Entstehung Was ist das? Java Annotations und AOP ConceptJ Zusammenfassung Seite 2 Entstehung Entwickelt von Bertrand Meyer Heute Prof. an der ETH Zürich Erstmals in Programmiersprache

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012 Testen Tutorial im Rahmen des Software(technik)praktikums SS 2012 Grundlagen (1) Software ist ein fundamentales Element in der Softwarequalitätssicherung Software wird am häufigsten eingesetzt Viele Organisationen

Mehr

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Testen von graphischen Benutzeroberflächen. 24. Juni 2015 Testen von graphischen Benutzeroberflächen 24. Juni 2015 Überblick Motivation für das automatische Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien für GUIs Capture / Replay Testmethode

Mehr

Erfahrungsbreicht... Von der Auswahl bis zur Verwendung von Contour im Grossunternehmen.

Erfahrungsbreicht... Von der Auswahl bis zur Verwendung von Contour im Grossunternehmen. Stefan Topp Honeywell International SARL 16. Februar 2012 Erfahrungsbreicht... Von der Auswahl bis zur Verwendung von Contour im Grossunternehmen. 1 Agenda Hintergruende Der Auswahlprozess Ausrollen von

Mehr

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen Klaus-Dieter Walter SSV Software Systems GmbH Dünenweg 5 D-30419 Hannover www.ssv-embedded.de kdw@ssv-embedded.de

Mehr

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner c.leithner@celix.at

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner c.leithner@celix.at End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner c.leithner@celix.at www.celix.at September 2015 celix Solutions GmbH Spezialist für Team Collaboration und IT Prozess Management Agile

Mehr

Projektmanagement Vorlesung 14/ 15: Wiederholung ausgewählter Themen zur Klausurvorbereitung. Prof. Adrian Müller, PMP, PSM-1, CSM FH Kaiserslautern

Projektmanagement Vorlesung 14/ 15: Wiederholung ausgewählter Themen zur Klausurvorbereitung. Prof. Adrian Müller, PMP, PSM-1, CSM FH Kaiserslautern Projektmanagement Vorlesung 14/ 15: Wiederholung ausgewählter Themen zur Klausurvorbereitung Prof. Adrian Müller, PMP, PSM-1, CSM FH Kaiserslautern phone: +49 631/3724-5329 http://www.hs-kl.de/~amueller

Mehr

Best Prac*ces for Scien*fic Compu*ng. Von Marc Grimpo

Best Prac*ces for Scien*fic Compu*ng. Von Marc Grimpo Best Prac*ces for Scien*fic Compu*ng Von Marc Grimpo 1 Zugrunde liegende Paper Best Prac*ces for Scien*fic Compu*ng, Wilson et al. A survey of the Prac*ce of Computa*onal Science, Prabhu et al. So;ware

Mehr

Comparison of Software Products using Software Engineering Metrics

Comparison of Software Products using Software Engineering Metrics Comparison of Software Products using Software Engineering Metrics Alexander Bätz Fakultät EIM Universität Paderborn 23. Juli 2009 1 / 28 Motivation Qualitätsbewertung von Software Vergleichbarkeit von

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Die Integration von Requirements Management, Software Configuration Management und Change Management mit der MKS Integrity Suite 2006

Die Integration von Requirements Management, Software Configuration Management und Change Management mit der MKS Integrity Suite 2006 Die Integration von Requirements Management, Software Configuration Management und Change Management mit der MKS Integrity Suite 2006 Oliver Böhm MKS GmbH Agenda Überblick Der Entwicklungsprozess: Requirements

Mehr

Scriptbasierte Testautomatisierung. für Web-Anwendungen

Scriptbasierte Testautomatisierung. für Web-Anwendungen Scriptbasierte Testautomatisierung für Web-Anwendungen Scriptbasierte Testautomatisierung + Web-Anwendung: Erstes Einsatzgebiet, Ergebnisse aber allgemein übertragbar + Test aus Benutzersicht - Nicht Unit-Test,

Mehr

Quelltextähnlichkeit

Quelltextähnlichkeit Quelltextähnlichkeit String autor = Tobias Jamin ; String projekt = Arte-Fakt ; String seminar = Transformationen ; Date termin = new Date(3, // Tag 2, // Monat 2006); Presentation praesentation = new

Mehr

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM 09.07.2015 NATALIE WENZ JAN GERTGENS Vorstellung Natalie Wenz Studium Medieninformatik an der Hochschule Reutlingen mit Abschluss als Master

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten

Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten main {GRUPPE} Seite 1 Jürgen Nicolai Geschäftsführender Gesellschafter Liebknechtstrasse 33 70565 Stuttgart Tel : 07 11/7 81 19 90 Fax : 07 11/ 7 81 19 91 Mail : j.nicolai@main-gruppe.de Web: www.main-gruppe.de

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

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Wer bin ich. > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre.

Wer bin ich. > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre. Copyright 2010, MATHEMA Software GmbH 1 Wer bin ich > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre.Net > Schwerpunkte Software

Mehr

Nico Orschel AIT GmbH & Co KG Marc Müller 4tecture GmbH. 95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht

Nico Orschel AIT GmbH & Co KG Marc Müller 4tecture GmbH. 95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht Nico Orschel AIT GmbH & Co KG Marc Müller 4tecture GmbH 95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht Übersicht Gründe und Zeitpunkt für Lasttests Lasttests on Premise

Mehr