Djupstudieförslag
Nedanstående förslag är bara exempel och tänkta som inspiration. Egna förslag är mycket välkomna (diskutera med Görel).
NÅGRA NYA FÖRSLAG
Design by Contract
Med design by contract, t.ex. med JML, kan man ange pre och post conditions för metoder och invarianter för klasser. Hur kan detta användas och kombineras med testning?
Domain-driven design
Eric Evans har definierat ett antal mönster för god objekt-orienterad design i sin omskrivna bok "Domain-driven design". Vilka är dessa mönster? Hur kan de användas i agila metoder?
Big ball of mud / Technical debt / Large refactorings
Många system liknar efter hand en "big ball of mud", med massor av "technical debt", och man skulle behöva göra stora refaktoriseringar. Finns det metoder man kan använda för detta?
TESTNING
Testning av användargränssnitt (Björn Johnsson och Måns Engfors)
Hur kan man testa användargränssnitt? SwingUnit och Abbot är två exempel på verktyg som stöder automatiserad GUI-testning. Hur fungerar de? Finns det andra? Vilka för- och nackdelar finns?
Behavior-Driven Development (BDD) (Peter Exner)
BDD är en vidareutveckling av Test-Driven Development där man fokuserar på att beskriva det önskade beteendet tydligt. I de senaste versionerna av JUnit finns visst stöd för BDD genom s.k. HamCrest notation för assertions. Det finns också alternativa ramverk och speciella domän-specifika språk för att stödja BDD. Exempelvis RSpec och Cucumber.
Mock frameworks (Christoffer Sawicki och Johan Persson)
För att kunna enhetstesta enskilda klasser isolerat från andra klasser används ofta mock objects. Det finns särskilda ramverk som underlättar att skapa mock objects och använda dem i testfall. Ett exempel är ramverket JMock.
Generering av enhetstester
Det finns verktyg som stödjer automatisk generering av enhetstester. Exempel är Symstra, DART, och CUTE/jCUTE.
Verktyg för acceptanstestning(Johan Astborg)
Det finns ett antal system för att automatisera inte bara enhetstester utan även acceptanstester. I princip kan man använda Junit direkt för acceptanstester. Men det finns också verktyg som direkt stöder acceptanstestning. Exempel är Fitnesse och TextTest. Obs! De flesta kräver installation på servermaskin. Detta kan tyvärr inte institutionen hjälpa till med.
KOD-KVALITET / ARKITEKTUR
Kodkomplexitet(Patrik Fogwall och Axel Nilsson Svegaard)
Det finns definierade mått för att avgöra hur komplex en programvara är. Ett välkänt exempel är cyclomatic complexity. Två forskare, Chidamber och Kemerer har tagit fram en serie mått för Java-kod (the CK metrics suite). Finns det andra vanliga mått? Vad är det man mäter? Finns det verktyg som man kan använda? Är verktygen och måtten användbara för PVG-projekten?
Code smells / Refaktorisering (Anders Lund och Anders Forslund)
Finns det verktyg som kan upptäcka "code smells", dvs behov av specifika refaktoriseringar? T.ex. duplicerad kod, för stora metoder, etc. Vilka verktyg finns? Hur fungerar de? Är de användbara för PVG-projekten?
Agil arkitektur
Hur kan man arbeta med arkitekturen i ett agilt projekt? Vilka råd finns i litteraturen? Kan detta anpassas till PVG-projekten? Hur kan man arbeta med metaforer/ubiquotous language/domain-driven design för att få en bra design?
Naked objects och agil arkitektur (Michael Persson)
Vad menas med "Naked Objects"? Kan man använda dem som grundarkitektur? Vilka fördelar har de för agila projekt? Hur skulle det passa in i PVG-projekten?
SOFTWARE CONFIGURATION MANAGEMENT
Är du intresserad av djupstudier om SCM, kontakta Lars Bendix (bendix AT cs.lth.se). På http://www.cs.lth.se/home/Lars_Bendix/Research/ASCM/ kan du hitta tidigare djupstudier om SCM plus forskning kring SCM och agila metoder.
Distribuerad versionshantering i Agila projekt (David Arve)
Att använda distribuerade versionhanteringverktyg, t.ex. git, i agila projekt. Tanken är att hålla ett rent repositorie inte bara i fråga om compilering och testning men också storys. Detta stöds framförallt av möjligheten att göra lokala commits. Tanken är att detta ska leda till att varje release ska vara trivial, skulle i teorin kunna göras flera gånger om dagen och att den levererade produkten ska ha högre kvalitet när det gäller att inte ha med halvimplementerade stories.
Impact analysis (Daniel Nimren och Douglas Frisk)
METODIK OCH LEDARSKAP
Parprogrammering
Hur kan man få parprogrammering att fungera bra? Hur skall den coachas? Hur bör programmerarna agera? Hur kan man hantera situationer när programmerarna är på mycket olika nivåer kunskapsmässigt?
Kanban (Niklas Fors och Niklas Hansson)
Kanban är ett begrepp från Lean Development, och har nyligen blivit populärt som ett alternativ eller komplement till Scrum. Vad är Kanban och hur förhåller det sig till Scrum och XP's principer och värden?
Scrum+XP=Sant! (Frederik Blauenfeldt Jeppsson och Kristian Björk)
Hur kan burndown charts, incremental refactorings, impact analysis, och andra Scrum-praktiker integreras i PVG-projekten?
Agila retrospektiver
Hur får man teamet att utvecklas med hjälp av retrospektiver? Vilka råd finns i litteraturen? Hur kan man anpassa detta till de nedskalade PVG-projekten?
Självorganiserande team
I många agila metoder talar man om att team ska vara självorganiserande. Hur menas med detta? Vad blir då coachens roll? Finns det dokumenterade erfarenheter av sådana team?
Att introducera förändringar (Felix Hall och Aron Lide)
Att införa en ny metod som XP kan vara svårt på många sätt. Det krävs acceptans hos de inblandade och det är samtidigt svårt att ändra på befintliga arbetssätt. Vad är viktigt att tänka på som coach i en sådan situation? Hur kan man gå tillväga?
Business coaching
Fördjupning i business coaching och dess relation till programutvecklingsprojekt.
Tekniker för estimering av stories (Christian Lindgren och Joakim Andersson)
Det finns olika sätt att estimera hur lång en story tar att implementera. Vilken metod är att föredra? Finns det olika metoder som är bra på olika sätt? Kortsiktigt? Långsiktigt? Hur bra stämmer de överens med verkligheten?