q9 quality inside ii v2.1

57
quality for IT projects

Upload: dbt23

Post on 18-Jul-2015

865 views

Category:

Technology


0 download

TRANSCRIPT

quality for IT projects

quality for IT projects

Vortrag Q9

Quality Inside – Teil 2Hit the Code Jack

MATHEMA

frühjahrs-campus 2008

19. April 2008

Detlef Burkhardt

Andreas Kock

19.04.08 Folie 3 www.gjc-quality.com

Guten Tag, wir sind:

Detlef Burkhardt Enterprise Engineer & Architect als freier Berater

für GJC & MATHEMA 42+1 Jahre jung, bekennender Bassist, Blogger & Codesemiotiker Gestartet 1986, seit 1998 in zahlreichen IT-Projekten Mache mit bei: JCP (JSR-260 Javadoc-Update), Cuba, Oracle TechNet,

MotoCoder, Apple DevCon, Bea Dev2Dev & Arch2Arch

Andreas Kock Senior Consultant bei der GJC 36 Jahre alt, elektronische Musik & überzeugter "Foto-Graf" Gestartet 1992 als Softwareentwickler, später Projektleiter Seit 7 Jahren als QM & QS Berater unterwegs

Inhalt

19.04.08 Folie 4 www.gjc-quality.com

Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse

3.1 Sourcecode-Only-Tools3.2 Bytecode & more

4. Last words about Integration

19.04.08 www.gjc-quality.com

Gnädinger & Jörder ConsultingGJC bietet seit 1991 umfassende Beratungsleistungen in den

Bereichen Projektbegleitung und Qualitätssicherung von

Optimierungs- und IT-Projekten.

Leistungsportfolio:QualitätsmanagementQualitätssicherungProzessmanagementBetriebsmanagementOrganisationsberatung

Enge Kooperation mit der MATHEMA seit 2006

Weites Tal 2, 69198 Schriesheim a.d. Bergstrasse

19.04.08 www.gjc-quality.com

Rolle der Abteilung

Fachseiten

Internet-Abteilung

Entwicklungs-Dienstleister 1

Betriebs-DienstleisterEntwicklungs-Dienstleister 2

Entwicklungs-Dienstleister n…

19.04.08 www.gjc-quality.com

5 Ebenen der IPP

Content

Applikationen & Formulare

SW-Plattformkomponenten(PA, PIF, XSL, FGen, WCMS, GSA)

SW-Basiskomponenten(BEA, Oracle, Day, u.a.)

Hardware & OS(Linux Blades)

19.04.08 www.gjc-quality.com

DE

VINT

RE

F

PR

OD

Internet Portal Platform

NAS Load Drivers Shared Config Log Server IntroscopeShared-Services

Web Presentation Layer

Cache / Proxy

Portal

CampaignServer Farm

Business Logic Layer

Portal Integration Framework

Forms GeneratorPublish & Edit

A2 A1A2 A2

Content ManagementSystem

Publish & Edit

Data Layer

Database Database Database Database

Analytics

Web

min

ing

Mo

nit

ori

ng

Go

og

le S

earc

h A

pp

lian

ce

Inhalt

19.04.08 Folie 9 www.gjc-quality.com

Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse

3.1 Sourcecode-Only-Tools3.2 Bytecode & more

4. Last words about Integration

19.04.08 Folie 10 www.gjc-quality.com

DevQS bedeutet ...

... Partner des Architekten, des Release-Managers, der FachQS und der Entwickler sein

... Standards für CodeQuality, Security, Performance setzen ... Stärken und Schwächen einer Architektur für potentielle

Refactorings auffinden und bewerten ... eine gute Nase, um den Code der riecht aufzuspüren ... Integration der verschiedener Testvorgehen vorantreiben ... Täglicher Kampf gegen Systementropie, um

das System agil zu halten

In der DevQS sorgst Du für den

Quality In <> Quality Out Effekt

im Entwicklungsprozess

19.04.08 www.gjc-quality.com

QS-Phasen

SpezifikationAM / Projekt

Realisierung

FachlicheAbnahme

BetrieblicheAbnahme

Entwicklungs-QS

Go-Live

Betrieb

„Komponenten“-Abnahme

RtP-Prozess

Quality In Quality Out

19.04.08 Folie 12 www.gjc-quality.com

Quality In <> Quality Out

Quality In:

Widerspruchsfreie, vollständige Anforderungen inkl. erster belastbarer Testfälle

Abnahme der AnforderungAnalyse und Verteilung gefunder Issues aus

Ticket-System(en)Problem-, Incident- und Risikomanagement

Bewertung der IT- und UmsetzungskonzepteUnterstützung bei Aufwands- und Releaseplanung

19.04.08 Folie 13 www.gjc-quality.com

Quality In <> Quality Out

Quality Out:

Eingelieferten Komponenten des Dienstleisters abnehmen Reifegrad der Code- und Dokumentations-Qualität darstellen Metriken vergleichbar machen …

… zwischen Packages und Systemen … über die Release-Zyklen

Testabdeckungen aufzeigenSicherheitsrisiken möglichst früh erkennen & bewerten

Inhalt

19.04.08 Folie 14 www.gjc-quality.com

Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Code-Analyse

3.1 Sourcecode-Only-Tools3.2 Bytecode & more

4. Last words about Integration

19.04.08 www.gjc-quality.com

Wie wird heute funktional getestet?

IT:assertEquals(a,b);automatisiertFokus: Funktioniert

meine Methode

QS:Step1, Expected Result.ManuellFokus: Erhalte ich die

richtigen Ergebnisse

Lösung: Datengetriebener AkzeptanztestErmittlung belastbarer Daten durch Fachseite / FachQSAutomatisierungslösungen durch IT-SeiteHier passt die FIT Idee

Testdaten per Office-Tabellenweiter über den Parser von Ward Cunninghamzum Glue Code der vermittelt

vs.

19.04.08 Folie 16 www.gjc-quality.com

Funktionales Testen á la F.I.T.

Framework for Integrated Test treibt Ward Cunningham seit 2002 Lösung für Datengetriebener Akzeptanztest Trennung von Datenermittlung und Testcode

Mit Tabellen Fixtures definierenEinfach Fixture bestehen aus den Spalten

Command Target Erwartetes Ergebnis Erhaltenes Ergebnis

Fitnesse ist ein fix und fertigs Wiki-System für Akzeptanztests

19.04.08 Folie 17 www.gjc-quality.com

Die FIT-Idee mit Selenium leben

Der Anfang ist ganz einfach

Der Ausbau schnell möglich

Die Komposition sinnvoll

Ant-Integration mit eigenem Task

19.04.08 Folie 18 www.gjc-quality.com

Selenium ist mehr als nur IDE

Selenium RC (=Remote Control) Schlüssel zur Automatisierung Selenese Task für Ant

Aufruf von Suiten Umfangreich Parametrisierbar

Selenium unterstützt Out-Of-the-Box: HTML, Java, C#, Ruby, Perl, PHP & Python

Grenzen Kein Wechsel zwischen HTTP und HTTPS in einem Testfall Domainwechsel nur in Selenium IDE möglich

Highlights auf einen Blick Einfaches aufzeichnen und abspielen Feldauswahl mittels ID's, Namen und XPath Eigene Erweiterungen via user-extensions.js

Debuging mit Breakpoints Walk through Tests Autocomplete

Inhalt

19.04.08 Folie 19 www.gjc-quality.com

Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse

3.1 Sourcecode-Only-Tools3.2 Bytecode & more

4. Last words about Integration

19.04.08 Folie 20 www.gjc-quality.com

Dimensionen der Code-Analyse

Non-Functional Domains Code-Quality Performance Security

Analysestrategien (Tools & Services) Dynamische Analyse

jMeter/Loadrunner und Wily Introscope für Performance-Analyse Emma für Testcoverage

Statische Analysen (siehe Punkt 3.1 bis 3.2) Source- & Bytecode von Java Weitere Artefakte wie Ant, XSL, XML, JS, JSP, Groovy wichtig Datenbank-Schemata nicht vergessen

Metriken: Mengenbasierte Basis-Metriken Aggregierte Metriken & Anti-Pattern

19.04.08 Folie 21 www.gjc-quality.com

Die wichtigsten Basis-Metriken

Pyramide der GrundzahlenSetzt absolute Gundzahlen in vergleichbare Relationenermittelbar mit Hilfe von javaNCSS oder iPlasma

ANDC

AHIT

19.04.08 Folie 22 www.gjc-quality.com

Noch mehr Basis-Metriken

DupeCountsBei Bewertung den Kontext beachten Kosten- / Nutzen abwägenermittelbar z.B. Mit CPD, Teilprojekt von PMD

CodecoverageTestabdeckung Ermittelbar mit cobertura oder Emma JavaDoc-Abdeckung mit doccheck

Dependecies (Class, Package & JAR)Alarm bei zyklischen AbhängigkeitenErmittelbar mit jDepend & jarAnalyzer

19.04.08 Folie 23 www.gjc-quality.com

QBench Anti-Pattern

QBench = Anti-Pattern Katalog des Fraunhofer Institut52 Anti-Pattern aus den Bereichen

Architektur, Design und Coding z.B. mit Sissy ermittelbar

QBench-Reifegrade QBL1: Rudimentary QBL4: Advanced QBL2: Basic QBL5: Complete QBL3: Extended

Zuordnung zu wichtigen ISO 9126 Qualitätseigenschaften: Analysierbarkeit Modifizierbarkeit Stabilität Prüfbarkeit Austauschbarkeit Zeitverhalten Verbrauchsverhalten

19.04.08 www.gjc-quality.com

Qbench-Klassifikation

Tote Methode aus

19.04.08 www.gjc-quality.com

Qbench-Klassifikation

Labyrintmethode aus

19.04.08 www.gjc-quality.com

Qbench-Klassifikation

Pränatale Kommunikation aus

19.04.08 Folie 27 www.gjc-quality.com

Web of Design-Disharmonies

Prof. Marinescu11 zentrale Anti-Pattern

im KontextHohe Kongruenz

zw. Marinescuund QBench

Ermittelbar mitiPlasma / Sissy

19.04.08 Folie 28 www.gjc-quality.com

Anti-Pattern des Fortify SCA

Über 150 sicherheitsrelevante Anti-Pattern u.a. aus den Bereichen: Cross-Site Scripting & Buffer Overflow Denial of Service & Race Condition Command- & SQL-Injection Log Forging & Session Fixation uvm.

Regelmässige Fortify-Rule Updates100% OWASP Compliant Java Open Review ProjectAusgereifte Audit-WorkbenchUnterstützt alle wichtigen Programmiersprachen

Java / JSP, Coldfusion, PHP, C, C++, C# Javascript, VisualBasic, VBScript, ASP PLSQL / TSQL

19.04.08 Folie 29 www.gjc-quality.com

Noch mehr Anti-Pattern

Findbugs-RepositoryUniversity of Maryland ca. 320 Muster in 15 Kategorienauch in Fortify integriert

PMD Rule Sets vs. CheckstylePMD mit ca. 260 Muster in 28 Rule-SetsCS mit 127 Rules in 14 FunktionsgruppenHohe Deckungsgleichheit zw. PMD und CSPMD Rule Sets sind imho besser ...

... Out-Of-The-Box nutzbar ... zwischen Projekten vergleichbar

19.04.08 Folie 30 www.gjc-quality.com

SCA, The Big Picture

auch XSL,JS, PL/SQL

u.a.

auch für andere Tools

nutzbar

Das Prinzip gilt z.B. auch

für Fortify

Alternative Persitenz-

Mechanismen, wie XML denkbar

(c) Fraunhofer Institut

Inhalt

19.04.08 Folie 31 www.gjc-quality.com

Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse

3.1 Sourcecode-Only-Tools3.2 Bytecode & more

4. Last words about Integration

19.04.08 Folie 32 www.gjc-quality.com

Starke Werkzeuge für ...

... Statische Code-Analyse JavaNCSSCPD / PMDSissy QBenchFortify SCA ($)

DEMO

JavaNCSS

CopyPaste Detector

PMD

Sissy / QBench

Fortify SCA

19.04.08 Folie 38 www.gjc-quality.com

Starke Werkzeuge für ...

... DocletingXHTML-Doc vs. JavaDocDocCheckXSLDocOraDocletServletDoclet

DEMO

DocCheck

Inhalt

19.04.08 Folie 40 www.gjc-quality.com

Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse

3.1 Sourcecode-Only-Tools3.2 Bytecode & more

4. Last words about Integration

19.04.08 Folie 41 www.gjc-quality.com

Bytecode für gute Beziehungen

JDependJarAnalyzerFindbugs

DEMO

JDepend

JarAnalyzer

Findbugs

19.04.08 Folie 45 www.gjc-quality.com

Mehr sehen, mehr verstehen

iPlasmastatSVNjava2HTML

DEMO

iPlasma / Insider / CodeCities

statSVN

java2HTML

Inhalt

19.04.08 Folie 49 www.gjc-quality.com

Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse

3.1 Sourcecode-Only-Tools3.2 Bytecode & more

4. Last words about Integration

19.04.08 Folie 50 www.gjc-quality.com

Glean ist Ant

Mit Ant Test-Suiten integrierenGlean ein ausgereifter Ansatz

Factory System-PropertiesLokale System-Properties

Allgemeine Tool-PropertiesLokale Tool-Properties

Durchlauf-Spezifische PropertiesDutzende von Tools bereits „Vor-Integriert“Einfache Integration eigener Tools schnell möglich

19.04.08 Folie 51 www.gjc-quality.com

Wie sag ich’s wem am Besten?

Zusammenfassung aller ReportsMit XSLT nach HTML ...

... mit gemeinsamem CSS ... einfacher Navigation ... zum CQM-Portal

Herausforderungen:Entwicklung: Verlinkung zu Quellcode und BackgroundManagement: mehrdimensionale Aggregationen

19.04.08 Folie 52 www.gjc-quality.com

Wie sag ich‘s wem am Besten?

Herausforderung Aggregierung

19.04.08 Folie 53 www.gjc-quality.com

Wie sag ich‘s am Besten?

Herausforderung Time-Based Reporting

19.04.08 Folie 54 www.gjc-quality.com

Weiter geht‘s mit ...

Cruise-ControlMehr als nur “Build-Server”Continous Testing & System-Checking via GleanDaily-, Integration-, Release-Build & TestingReporting & AlarmingDeploy-Targets:

Development & IntegrationReference & Production

Fernziel: Maven ab Version 2

Inhalt

19.04.08 Folie 55 www.gjc-quality.com

Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse

3.1 Sourcecode-Only-Tools3.2 Bytecode & more

4. Last words about Integration

19.04.08 www.gjc-quality.com

Books, Links, Feeds & more

http://codesemiotic.com/hit-the-code-jack

19.04.08 Folie 57 www.gjc-quality.com

Wir danken für Eure Aufmerksamkeit!

quality for IT projects

Noch Fragen?