|
Hvorfor skal det være så svært at udvikle computerbaserede systemer? Skal det være så svært at udvikle computerbaserede systemer? Dette er spørgsmål, som jeg ofte har stillet mig selv, og som mange andre også har stillet sig selv og andre.
En stor del af besværet skyldes uundgåelig kompleksitet ved problemerne, løsningerne og processerne i forbindelse med systemudvikling. Ofte er målet med systemudvikling ikke blot et spørgsmål om at implementere eksisterende viden i et computerbaseret system, men derimod et forsøg på at løse, forbedre eller i hvert fald forandre problemer på grænsen af eller udover vores eksisterende viden. Problemerne indgår desuden ofte i uberegnelige/uforudsigelige sociale og organisatoriske systemer. Løsningerne er sjældent rene standardløsninger, som uden videre kan anvendes i den enkelte problemsituation. For det meste involverer løsningen i et vist omfang nyudvikling af helt nye løsninger eller videreudvikling af eksisterende løsninger. Løsningerne er ofte teknisk meget omfattende og komplekse, og computerbaserede systemer er af natur i vid udstrækning usynlige og uhåndgribelige abstraktioner. Med delvist ukendte problemer og delvist ukendte løsninger følger nødvendigvis også delvist ukendte udviklingsprocesser, og usikkerheden øges af eventuelle forandringer i problemerne og løsningerne i løbet af udviklingstiden.
Dermed bliver det sikkert ved med at være svært at udvikle computerbaserede systemer, da computeren er vores kraftigste og derfor foretrukne værktøj til at løse mange svære problemer. Systemudvikling vil nærmest per definition altid omhandle nye, ukendte løsninger, da rent kendte løsninger ikke genudvikles men blot kopieres. Usikkerheden kan heller ikke undgåes, da der er tale om to forskellige, modsat rettede former for usikkerhed: kravene til systemet og dermed systemudviklingsprocessen ved specifikationen kontra systemets anvendelighed ved ibrugtagningen.
En stor del af besværet skyldes efter min mening dog også unødvendig kompleksitet som følge af de værktøjer og metoder, som vi idag anvender til systemudvikling. Metoderne er ofte for simple i forhold til alle variationerne i problemerne og systemerne, som forsøges håndteret med metoderne, således at 'virkeligheden' må tilpasses metoderne, eller at systemudviklerne må opfinde ændringer/tilføjelser til metoderne. Omvendt er metoderne også ofte for komplicerede/omfattende i forhold til de aktuelle problemer og behov i forbindelse med det enkelte system, således at de medfører unødvendigt arbejde. Værktøjerne er ofte lavet snævert til bestemte metoder og med begrænset fleksibilitet, således at problemerne ved metoderne forstærkes kraftigt. Værktøjerne er desuden ofte komplicerede at lære og at bruge, og forskellige værktøjer er svære at få til at arbejde sammen. Metoderne og værktøjerne er som regel dårligt egnede til ukendte og foranderlige systemudviklingsprocesser. Dette betyder at systemudvikling forhåbentligt kan blive nemmere, hvis (en del af) denne unødvendige kompleksitet fjernes.
|