15
Complexity bears Sett verdi på din kompleksitet Av Bjørn Nordlund (BBS)

Smidig2008complexity

Embed Size (px)

Citation preview

Page 1: Smidig2008complexity

Complexity bears Sett verdi på din kompleksitet

Av Bjørn Nordlund (BBS)

Page 2: Smidig2008complexity

Et sitat

”Software’s Primary Technical Imperative has to be managing complexity”

- Steve McConnel (Code Complete)

Page 3: Smidig2008complexity

En påstand

Når et system når det punktet av kompleksitet der ingen lenger forstår hvilke påvirkning en (kode-) endring ett sted vil påvirke andre deler av systemet, stopper progressjonen i prosjektet opp.

Page 4: Smidig2008complexity

Enda en påstand

Vi er alt for glade i å innføre kompleksitet

Page 5: Smidig2008complexity

Alle designavgjørelser skal tas på bakgrunn av kompleksitet!

Page 6: Smidig2008complexity

og ja jeg mener alle

Page 7: Smidig2008complexity

Hvordan

For å ta designavgjørelser på bakgrunn av kompleksitet må vi ha et mål på

kompleksiteten til forskjellige alternativer

Page 8: Smidig2008complexity

Complexity bears

En relativ størrelse for å verdisette kompleksitet, uformell og basert på magefølelse

Et redskap for teamet å bruke for å argumentere for eller i mot teknologi- og design- valg

Page 9: Smidig2008complexity

I praksis

Et system/prosjekt/team kan bare håndtere en endelig mengde complexity bears

Et krav, en implementasjon, et rammeverk, en teknologi, vil alle kreve et visst antall complexity bears

Page 10: Smidig2008complexity

Hva oppnår vi med redusert kompleksitet?

Vi frigjør mentale ressurser slik at vi kan bruke de til å fokusere på å utvikle

forretningsverdi

Page 11: Smidig2008complexity

Hva betyr dette for:

”Vi trenger distribuerte transaksjoner for å implementere dette kravet…”

”Vi trenger å deploye applikasjonen vår i websphere for å implementere dette kravet...”

”Vi må bruke hibernate for å implementere dette kravet…”

Etc….

Page 12: Smidig2008complexity

Redusere kompleksitet?

Kompleksiteten kommer allerede med kravene. Hvis du kan uttrykke enklere krav

får du et enklere system.

Page 13: Smidig2008complexity

Hvordan reduseres kompleksitet?

1) Ikke innfør kompleksiteten2) En smidig prosess

- Prioriter og diskuter krav- Bygg applikasjonen utenfra og inn- Ha jevnlig retrospectives av kompleksitet

3) Fjern kompleksitet som ikke er nødvendig for å øke verdien på tjenesten eller som kan erstattes av mindre komplekse løsninger

4) Tenk på hva som er verdikjede og hva som er systemflyt5) Fokuser på output fra systemet

Page 14: Smidig2008complexity

Eksempler fra mitt prosjekt• Fjernet distribuerte transaksjoner (60 CB)• Fjernet applikasjonsserver (30 CB)• Fjernet jms (10 CB)• Fjernet komplisert deployment (10 CB)• Kuttet ut en del gjenbruk (10 CB)• Refaktorerte overdesignet kode (10 CB)• Fjernet ubrukt kode (5 CB) • Kuttet ut enkelte systemgrensesnitt (5 CB)• Erstattet hibernate med jdbc for enkelte operasjoner (5 CB)• Kutte ut filoverføringer (5 CB)

Sum (150 CB)Dvs ca 150 CB frigjort av mentale ressurser til å implementere forretningsverdi

teamet vårt takler kanskje 300 CB totalt?

Page 15: Smidig2008complexity