211service.com
Tager programmering til det ekstreme
Mansour Raad havde et stort problem. Hans nystartede firma, DiscoverCast, var ved at udvikle kollisionsdetektionssoftware til flyindustrien - fejl i koden kunne koste liv. Men pengene tørrede ud efter en første finansieringsrunde, og det var udelukket at ansætte yderligere programmører til at færdiggøre en fejlsikker version.
Så Raad startede en relativt ny kodningsdisciplin kaldet ekstrem programmering. I stedet for at arbejde alene på individuelle opgaver, parrede programmører, den ene skrev kode, mens den anden så på og kritiserede, hvilket gav både et kritisk øje og en kritisk vigtig backup. [Min kone] fik en baby, men projektet skulle fortsætte, siger Raad. Fordi jeg viste det til de andre mennesker, kunne nogen træde ind i mine sko. Virksomheden overholdt deadlines uden stigning i fejl på grund af kommunikationen.
De fleste programmører er ikke mere tilfredse med softwarekvalitet end deres kunder. Nu forsøger et stigende antal at finde måder at skabe solid software på et marked, der forventer nye produkter og forbedringer og ønsker dem hurtigt. Softwarevirksomheder henvender sig i stigende grad til udviklingsstrategier med navne som agil udvikling og ekstreme programmeringsadrenalin-ladede vendinger, der er velegnede til koders selvbillede som barske helte i informationsalderen. I virkeligheden signalerer trenden - som har en lang historie - en afvisning af primadonna-programmering til fordel for teamwork og samarbejde.
I softwareindustrien er buggy-kode længe blevet accepteret som en kendsgerning i livet - omend en skærpende og dyr en ( se hvorfor software er så dårligt, BØRN juli/august 2002 ). Problemet er, at i software stoler folk for meget på deres egen opfindsomhed, siger Michael Stiefel, en konsulent, der træner kunder i metoder til softwarepålidelighed. Jeg ville se alle disse unge fyre i 20'erne begå de samme fejl, som vi lavede i 70'erne og 80'erne, og jeg undrer mig over, hvorfor vi skal igennem alt dette igen.
For at reducere fejl fremhæver reformatorer tilgange til softwareteknologi, kendt i branchen som agil udvikling, der stresser teamwork, samarbejde med slutbrugere og en fleksibel tilgang til forandring. For at bygge sin kollisionsundgåelsessoftware brugte Raads virksomhed én type agil udvikling, kaldet ekstrem programmering, som lægger vægt på konstant test såvel som samarbejde.
Hvis du er i stand til at anvende [et kollaborativt miljø] fuldt ud, vil kvaliteten af produkterne være bedre, siger Michele Marchesi, en førende fortaler for ekstrem programmering og professor i elektroteknik ved University of Cagliari i Italien.
Et af de mest kraftfulde aspekter ved agil programmering er såkaldt peer-programmering, hvor udviklere samarbejder og skiftes til at skrive kode og forklare dens logik til den anden. Par er midlertidige, periodisk opdeles og byttes for at tilskynde til endnu mere interaktion. Nye øjne undersøger hvert stykke kode og skaber en proces med kontinuerlig gennemgang.
To personer kan afvise ideer fra hinanden, siger Frank Arkell, en chefsoftwareingeniør hos forsvarsentreprenøren General Dynamics Decision Systems, som har brugt samarbejdsteknikker i to årtier. For at holde teams friske ændrer General Dynamics dem for hvert projekt.
En anden fordel ved peer-programmering? Gruppepres. Ingen ønsker at være den person, der slapper af, så de arbejder begge hårdere, siger Scott W. Ambler, præsident for Ronin International og forfatter og foredragsholder om agil udvikling.
Sæt på prøve
Samarbejdstilgange ændrer også måden, software testes på. Traditionelt har test været en to-trins proces. For det første skriver programmører kode baseret på krav. Derefter tester en separat gruppe resultatet. Men når software inkluderer millioner af linjer kode, er to-trins processen analog med at designe en bil på papir, bygge den og derefter kontrollere, om designet fungerede.
Den tilgang virkede bare ikke for udviklere som Nicholas Stamos, teknisk chef for Waltham, MA-baserede Phase Forward. Phase Forward udvikler software til at køre farmaceutiske kliniske forsøg, og dets produkter skal opfylde de strenge krav fra U.S. Food and Drug Administration.
Stamos siger, at Phase Forward opfylder disse krav, delvist på grund af et tæt og konstant samarbejde mellem virksomhedens programmører og kvalitetssikringspersonale. Man kan ikke smide det over agterspejlet og håbe, siger han. Kvalitet skal bygges ind fra dag ét. Når programmører færdiggør en komponent, tjekker kvalitetsteamet deres arbejde. Så bytter holdene plads til endnu en runde fejlrettelser. Til sidst testes den integrerede applikation for at finde problemer med samspillet mellem komponenter. I stedet for den gamle to-trins tilgang bliver test en interaktiv, løbende proces.
Nogle virksomheder prøver en lignende iterativ tilgang, ikke bare til at teste, men til at designe kode i første omgang. Cognizant Technology Solutions, et konsulentfirma med base i Teaneck, NJ, har fundet ud af, at eksisterende metoder til at starte med formelle specifikationer og derefter skrive kode for at tilfredsstille dem kunne have fungeret for 20 eller 30 år siden. Men i en verden, der kører på nettet og har brug for fleksibilitet, kan formel betyde stiv.
Da vi forsøgte at bruge de traditionelle processer til disse nyere typer projekter, blev kunderne enten virkelig frustrerede, fordi vi tvang dem til at fastfryse processen, eller også ville projektholdene bare ikke følge processen, siger Cognizant CEO Kumar Mahadeva. I stedet bruger projekter en række prototyper efterfulgt af en industrialiseringscyklus, der lader virksomheden håndtere pludselige ændringer fra kunder på en måde, der har mindre indflydelse på pålideligheden end at justere et program, efter det er afsluttet. Fremtidige brugere giver en lind strøm af feedback, efterhånden som applikationen tager form.
Men de ultimative grænser for softwarekvalitet ligger måske ikke i programmørernes færdigheder eller styrken af udviklingsprocessen. Dette er den gåde, som vi og mange producenter står over for i dag: Hvad er et acceptabelt kvalitetsniveau? siger James Hymel, direktør for software engineering hos Motorola. Hvis du har konkurrenter, der viser sig søde, billige, men buggy [produkter], og kunderne siger, at det er acceptabelt - det vil sige, de bruger deres penge på dem - ville du blive udfordret.
Med metoder som agil udvikling, partnerskab med udvikling og test og involvering af slutbrugere tager softwareudviklere skridt til at forbedre deres produkt. Men i sidste ende kan den største begrænsning for kvalitet være de samme mennesker, der kræver det højest: forbrugerne.