Upload
bjorn-nordlund
View
254
Download
0
Embed Size (px)
Citation preview
Complexity bears Sett verdi på din kompleksitet
Av Bjørn Nordlund (BBS)
Et sitat
”Software’s Primary Technical Imperative has to be managing complexity”
- Steve McConnel (Code Complete)
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.
Enda en påstand
Vi er alt for glade i å innføre kompleksitet
Alle designavgjørelser skal tas på bakgrunn av kompleksitet!
og ja jeg mener alle
Hvordan
For å ta designavgjørelser på bakgrunn av kompleksitet må vi ha et mål på
kompleksiteten til forskjellige alternativer
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
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
Hva oppnår vi med redusert kompleksitet?
Vi frigjør mentale ressurser slik at vi kan bruke de til å fokusere på å utvikle
forretningsverdi
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….
Redusere kompleksitet?
Kompleksiteten kommer allerede med kravene. Hvis du kan uttrykke enklere krav
får du et enklere system.
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
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?