Gordon Morrison er en amerikansk utvikler og oppfinner som mener han har løsningen for å effektivisere alle former for programvareutvikling, og utrydde alle former for spagettiprogrammering som han mener ligger latent i språk som Java og C++.
Løsningen til Morrison heter COSA – Coherent Object Software Architecture. Den presenteres på nettstedet til hans konsulentselskap V.S. Merlot.
Morrison har arbeidet med flerkjernet arkitektur og parallellprosessering og -programmering siden tidlig på 1980-tallet.
For dette arbeidet har han fått innvilget fem ulike patenter, i årene 1989 til 2001. For å hevde disse patentene har han måttet saksøke selskaper som IBM, Apple, Motorola, Texas Instruments og Intel. Han har vunnet fram: Lisensinntekter fra disse selskapene utgjør en vesentlig del av hans inntekter. Han opplyser at han har søksmål på gang mot Sun og Fujitsu, og at han har hittil har vitnet rundt 400 timer i retten på å forsvare sine patenter.
COSA ble patentert i februar 2002. Morrison beskriver det som en teknologi for å effektivisere utviklingen av programvare og for å høyne kvaliteten på programvare, ved å fjerne det han kaller det «kunstneriske» og strengt håndheve det rent ingeniørmessige. Målet er å gjøre programvareutvikling like forutsigbart som andre typer ingeniørvirksomhet.
Morrison assosierer COSA med MDA (Model Driven Architecture). MDA er en tilnærming der all kode genereres av modellen, og der alle endringer i koden i prinsippet skal foregå gjennom å endre modellen.
Han skriver i sin presentasjon av COSA at dagens MDA har feilet fordi man har latt utviklerne bryte sammenhengen mellom modellen og implementasjonen. Fra artikkelen «Transforming Software Development: An MDA Road Map» til Thomas Mesevery og Kurt Fenstemacher i IEEE Computer, september 2005, henter han dette sitatet:
– Ofte, når konstruksjonen tar til, glemmer man modellen og unnlater å oppdatere den slik at den aldri gjenspeiler hvordan utviklernes tilnærming til prosjektet endrer seg.
Den typiske feilen innen programvareutvikling i dag er at man ikke definerer klare standarder for koding, men overlater dette til utviklernes «kunstnernatur». Som arkitektur er COSA så komplett at man avskaffer behovet for «lavnivåspråk» som Java og C++. Morrison mener disse, blant annet ved at de tillater nøstede erklæringer av typen «if … then … else» som motarbeider mulighetene til effektiv kontroll, testing, sporing, feilfinning og endring av koden.
– Kreativiteten ligger i løsningen på problemet, ikke i bruken av programmeringsspråket som en kunstnerisk form, tordner Morrison.
Løsningen, ifølge Morrison, ligger å skille ut de to «ortogonale» komponentene i programmets arbeidsflyt, det vil si dataflyt og kontrollflyt, og sørge for at de behandles hver for seg.
Han opphøyer dette til en likning:
Work flow = data flow + control flow
og legger til:
– Denne ortogonale tilnærmingen gjør det umulig å lage «spagettikode». Den hindrer ikke «spagettilogikk», men selv dårlig logikk er lettere å debugge når den er atskilt fra dårlig koding. I et yrke som ikke er kjent for sin disiplin, vil denne kulturelle endringen være en utfordring, som kan møtes gjennom en MDA-tilnærming.
COSA realiseres gjennom det Morrison kaller en «tabell-drevet tilstandsmaskin» («Table Driven State Machine»). Han oppgir at kontrollmotoren til denne tilstandsmaskin kan nøye seg med åtte linjer med kode. En COSA tilstandstabell kan typisk nøye seg med syv kolonner:
- en regel
- en beskrivelse av en ventet tilstand
- en funksjon for hva som skal gjøres dersom tilstanden er som ventet
- neste regel dersom tilstanden er som ventet
- en funksjon for hva som skal gjøres dersom tilstanden ikke er som ventet
- neste regel dersom tilstanden ikke er som ventet
- en verdi for å spore hva som er skjedd
Morrison mener, ifølge et intervju i EETimes, at COSA vil være spesielt fordelaktig der man skal lage programmer for moderne parallelle arkitekturer.
EETimes har bedt andre utviklingseksperter kommentere COSA. James McGraw, som arbeidet med et tilsvarende utviklingsprosjekt (kalt «Sisal») i årene 1985 til 1995 uten å lykkes, har mye pent å si om COSA, men advarer at tilnærming med tilstandstabeller kan bli for komplisert når det er snakk om virkelig store systemer.
Morrison advarer at COSA på langt nær er ferdig. Han anslår at det vil koste 15 millioner dollar å realisere konseptet i produksjonsklar kode.
Les også:
- [07.04.2005] Ett språk for program og databaser
- [02.11.2004] Svært lønnsomt med moderne utviklerverktøy
- [19.11.2003] Slik kan J2EE-utvikling effektiviseres