title: Adaptive software development
text: Adaptive software development (ASD) is een agile-softwareontwikkelingsproces met als belangrijkste voorganger RADical software development (RSD) van Jim Highsmith en Sam Bayer. Een belangrijk onderdeel van ASD is het principe dat een constante evaluatie en verbetering van het proces een normale gang van zaken is. Dit proces legt de nadruk op problemen in grote, complexe systemen en stimuleert incrementele en iteratieve ontwikkeling door middel van constante prototyping.
  
  Kenmerken 
  ASD wordt gekenmerkt door zes eigenschappen. 
  Mission driven: de activiteiten van elke ontwikkelcyclus moeten telkens met het projectdoel vergeleken worden. Het kan namelijk voorkomen dat het projectdoel aangepast moet worden. 
  Component-based: de nadruk van ASD ligt meer op de resultaten en hun kwaliteit in plaats van op de taken en processen die nodig zijn.
  Iterative: het watervalmodel werkt alleen in duidelijk begrepen en gedefinieerde omgevingen. Softwareontwikkeling is meestal niet strak gedefinieerd, zodat het beter zou zijn om zich te richten op herhalingen in plaats van iets in één keer perfect te doen. 
  Time boxed: dubbelzinnigheden in complexe softwareprojecten kunnen opgelost worden door het plaatsen van concrete deadlines op een regelmatige basis. Door middel van time boxes moeten onvermijdbare beslissingen aan het begin van het project worden genomen.
  Change-tolerant: veranderingen komen veelvuldig voor in softwareontwikkeling. Het is derhalve beter om ermee om te gaan, dan te proberen ze tegen te gaan. Om een change-tolerant systeem op te zetten, moeten de ontwikkelaars continu nagaan of de componenten die ze maken zouden kunnen veranderen. 
  Risk-driven: het is raadzaam om componenten met een verhoogd risico aan het begin te ontwikkelen.
  
  Iteratie 
  ASD bestaat uit drie fases: ”speculate, collaborate and learn”. De fases zijn zo genoemd om de rol van verandering te beklemtonen. Zo is speculation gebruikt in plaats van planning, omdat een plan geen onzekerheden zou mogen hebben en als er van afgeweken wordt, dit als een mislukking wordt gezien. Hetzelfde geldt voor collaborate, dat het belang van de samenwerking in de ontwikkeling van zeer veranderlijke systemen onderstreept. Met learn wordt de behoefte aan goedkeuring en reactie op fouten benadrukt en tevens het feit dat requirements tijdens een project kunnen veranderen. Het plannen (speculeren) is een onderdeel van het iteratieve proces, omdat de eisen aan de componenten continu veranderd kunnen worden en er steeds een aanpassing nodig kan zijn. Een belangrijk onderdeel van de learn-fase zijn de kwaliteitsreviews die als basis voor komende cycli dienen, waarbij de klant als een expert aanwezig is. Het laatste onderdeel in de learn-fase is het “final Q/A and release”-onderdeel. Hier is het essentieel dat gekeken wordt welke lessen er geleerd zijn. Deze post mortems zijn over het algemeen zeer belangrijk voor agile-softwareontwikkelingsprocessen.
  
  In de project initiation-fase, een subfase van speculate, wordt een schema en doelen opgesteld voor de ontwikkelcycli, die tussen de vier en acht weken duren.
  
  Externe links
   Jim Highsmith
   Messy, Exciting, and Anxiety-Ridden: Adaptive Software Development (gearchiveerd)
  
  Agile-softwareontwikkeling