Cursus Software evolution Dr. Bastiaan Heeren (
[email protected]) Touw Symposium, 24 november 2012 Studiecentrum Amsterdam
Inhoud Organisatie cursus De software vulkaan Opdracht 1: metrieken Opdracht 2: visualisatie
Geschiedenis
§1 Organisatie cursus
Software evolution is een populaire cursus aan de Universiteit van Amsterdam (6 ects) • Actieve onderzoeksgroep • Heel eigen aanpak met Rascal Zelf colleges en practicum gevolgd (nov-dec 2010) bij Paul Klint en Jurgen Vinju Cursusmateriaal ontwikkeld voor onderwijs op afstand Proefrun met 12 studenten (sept 2011-jan 2012) Woensdag 21 november 2012 start eerste groep
Rascal
§1 Organisatie cursus
Domein-specifieke taal voor programma-analyse, transformatie en visualisatie (meta-programmeren) Gebaseerd op syntax analyse, term herschrijven en de relationele calculus Ontwikkeld door het CWI Alfaversie Features: Java syntax, relaties, reguliere expressies, comprehensies, Java en Eclipse integratie, compositionele figuren, (traversals), …
Onderwerpen Blok I
Introduction to software evolution De software vulkaan (als metafoor)
Blok II EASY meta-programming with Rascal
Het Extract-Analyze-Synthesize paradigma
Opdracht 1
Blok III Topics in software evolution
De wetten van Lehman
Blok IV Towards visual software analytics
Principes van Tufte en Shneiderman
Opdracht 2
Blok V Mining software repositories
§1 Organisatie cursus
Leerdoelen
§1 Organisatie cursus
Kiezen uit verschillende programma-analyse technieken
De kwaliteit en structuur van een systeem kunnen analyseren (feiten extraheren en daaruit conclusies trekken)
Voor- en nadelen van softwaremetrieken begrijpen
Softwaremetrieken kunnen toepassen op een systeem
Problemen bij onderhouden en uitbreiden software beschrijven (bedrijfskundige en software technologische perspectief)
De oorzaken van software-evolutie herkennen en de daaruit voortvloeiende problemen analyseren en oplossen
Systeem meer flexibel maken door het toepassen van programmatransformaties, of door middel van reverse engineering
Gegevens over software visualiseren met Tufte's grafische ontwerpprincipes en Shneiderman's interactieprincipes
De software vulkaan (*)
Mt. Etna, Sicily, Italy (*) Naar slides van Paul Klint
§2 De software vulkaan
De vulkaan: talen
Verdeling van gebruikte programmeertalen in de wereld (statistieken van enkele jaren geleden) Taal COBOL
% gebruik 30
Assembler
10
C
10
C++
10
550 andere talen
40
Belangrijkste observatie: oude talen domineren Voor mainframe applicaties: 80% in COBOL Cijfers van Capers Jones (Software Productivity Research)
De vulkaan: volume Geschatte volume aan software: 7 miljard functiepunten 1 FP = 128 regels C of 107 regels COBOL Het volume van de software vulkaan: • 750 Giga regels COBOL code, of • 900 Giga regels C code
Afgedrukt op papier kan de aarde 9 keer worden ingepakt!
§2 De software vulkaan
De vulkaan: defecten
§2 De software vulkaan
Observatie: • gemiddeld 5 fouten (bugs) per functiepunt • inclusief fouten in requirements, ontwerp, code, documenten, foutieve bug-fixes Aantal defecten van de software vulkaan: 5 * #FP = 35 Giga bugs
Dat zijn 6 bugs per persoon op aarde!
§2 De software vulkaan
Verdeling programmeurs Jaar
Nieuw project
Enhancements
Repairs
Totaal
1950
90
3
7
100
1960
8.500
500
1.000
10.000
1970
65.000
15.000
20.000
100.000
1980
1.200.000
600.000
200.000
2.000.000
1990
3.000.000
3.000.000
1.000.000
7.000.000
2000
4.000.000
4.500.000
1.500.000
10.000.000
2010
5.000.000
7.000.000
2.000.000
14.000.000
2020
7.000.000
11.000.000
3.000.000
21.000.000
Nu: 60% van het werk is uitbreiden/verbeteren In 2020: slechts 30% in nieuwe software Software maintenance steeds belangrijker
§2 De software vulkaan
Boodschap Na 50 jaar heeft een industrie meer arbeiders nodig voor reparatie en onderhoud dan voor het produceren van nieuwe producten • Voorbeeld: de auto industrie Software maintenance en renovatie van bestaande systemen wordt steeds belangrijker Voorkom dat de software vulkaan tot uitbarsting komt
Opdracht 1 (20 uur)
§3 Metrieken
Analyseer de onderhoudbaarheid van 3 systemen: JabberPoint: 15 Javabestanden, 970 regels SmallSQL: 186 Javabestanden, 39.425 regels HyperSQL: 516 Javabestanden, 285.419 regels
? Een iets groter systeem is gelijk een heel stuk lastiger!
System Under Investigation (SUI)
§3 Metrieken
? Extract
Interne representatie
Synthesize
Resultaten
Analyze
SIG Maintainability Model Metrieken uit onderzoeksartikel: volume (LOC) complexiteit per eenheid (McCabe) duplicatie grootte per eenheid (unit test coverage)
§3 Metrieken
Opdracht 2 (20 uur)
§4 Visualisatie
Visualisatie van software artefacten (in Rascal) • Gebruik uitkomsten opdracht 1 • Vooraf esthetische en usability criteria opstellen • Tufte’s grafische ontwerpprincipes • Shneiderman’s interactieprincipes
Ter afsluiting Nieuwe cursus in de master Software Engineering •Studenten proefrun zijn redelijk positief •opdrachten kosten vrij veel tijd •leercurve Rascal (en wat bugs) Ietwat technische cursus, wel intensiever begeleid Prima samenwerking en ondersteuning vanuit CWI en UvA Aansluitend op de cursus is er een verdiepingsopdracht over Software evolution