Image Systems i Linköping, 1996-2000
Ett mindre företag som utvecklar programvara
för bild- och rörelseanalys exempelvis till bilindustrins krocktestning
samt digitalisering av film och video (se
hemsida)
Programmering
Versions- och releasehanteringssystem
(objektorienterad Python)
Den roligaste biten av jobbet på Image Systems
var helt klart mitt egna projekt att utveckla det befintliga versions-
och releasehanteringssystemet. Till sist var all befintlig kod utbytt och
både en stabilare bättre funktionalitet och en objektorienterad
design erhölls. Versionskontroll av filer byggde på RCS (CVS-kommandon
var på för hög nivå för att använda som
byggstenar). Versionskontrollen av subsystem byggde på den märkning
av filer som stöddes av RCS. Versionskontrollen av baselines (systemversioner)
var en helt egen påbyggnad där grening av subsystem fungerade
automatiskt när man väl valt vilken baseline man jobbade i. Releasehantering
av kompilerade subsystem byggde på en gammal idé med zipfiler,
men jag införde t.ex. den missade länken mellan releasade subsystem
och källkodsversion så man fick automatisk spårbarhet.
Efter att grunderna var klara kunde jag automatisera byggprocessen där
det ingick att kompilera upp till ett femtiotal subsystem i inbördes
rätt ordning beroende på var uppdateringar inkommit samt att
bygga exekverbara filer och färdiga installationspaket. Numera kan
vem som helst starta en byggning när det behövs, utan att kunna
de speciella handgreppen.
Installationsprogram (InstallShield)
InstallShield kräver att man skriver egen scriptkod
(VB-liknande) vid t.o.m. ganska oavancerade installationer, men i gengäld
kan man göra nästan allt man vill. Våra produkter var i
hög grad modulariserade vilket gjorde att man behövde göra
relativt genomgripande anpassningar beroende på kund och språk
etc. Därav fick jag så småningom en stor erfarenhet av
att jobba med installationer i allmänhet och InstallShield i synnerhet.
Testrobot (VB)
Jag byggde upp ett arkiv av funktioner och satte
ihop serier av enklare testfall i verktyget SQA Robot. Det tillstötte
problem med att få produkten som skulle testas att uppföra sig
exakt lika varje gång. När det dessutom visade sig att användargränssnittet
hos produkten var alltför föränderligt för att det
skulle löna sig att köra automatiserade tester las projektet
ner. Det var roligt att hitta en snygg design på testningsrutinerna
och roligt när det fungerade, men Visual Basic slipper jag gärna.
Produktutveckling (C++)
Jag deltog i ett av uppgraderingsprojekten för
vår huvudprodukt. I ett vanligt filsystem finns två typer av
element: filer och foldrar. Min uppgift var att göra så man
kunde skapa andra typer av foldrar som hade sina egna ikoner och speciella
attribut. Arbetet med detta gav både erfarenhet av C++ och att arbeta
i större projekt. Efteråt är min upplevelse att jag inte
har något emot C++ i sig, men att vara tvungen att anpassa sig till
suboptimal tråkig kod är frustrerande.
Systemadministration
Innan jag började på Image Systems hade
jag inte använt UNIX-kommandon i någon större utsträckning
och jag var än mindre bekant med Windows. Som systemadministratör
dröjde det dock inte länge förrän jag körde shutdown,
kill, restart, find, chmod och alla de andra mer eller mindre livsnödvändiga
kommandona. Jag uppgraderade operativsystemversioner både på
UNIX och Windows och hamnade därmed ibland i otrevliga situationer
(som t.ex. att den nya versionen av OS:et inte fick plats på aktuella
filsystemet). Backuper som inte startar och servrar som kraschar är
inte min favoritsysselsättning, så jag tänker inte fortsätta
min karriär som systemadministratör!
Konfigurationshantering (CM)
Den roliga delen av CM, att utveckla ett CM-verktyg,
har jag redan beskrivit ovan. Den tråkiga delen
handlade om att bygga produkten för hand (före automatiseringens
tid), få folk att rätta buggar som stoppade upp byggprocessen,
rekonstruera gamla källkodsversioner när något gått
snett, få folk att följa strikta regler för versionshanteringen,
etc. I och med automatiseringen blev mycket av det tråkiga jobbet
bortrationaliserat.
Kvalitetssäkring
Granskningsprocessen
Eftersom jag jobbat med att införa en ny granskningsprocess
på Ericsson gav jag mig även i kast med detta på den nya
arbetsplatsen. Jag insåg dock snart att det var två vitt skilda
världar med lika skilda arbetssätt. Kodgranskning blev aldrig
en självklar del av utvecklingsprocessen, utan kvalitetssäkringen
av produkterna fokuserade istället på testning. Borde jag ha
dåligt samvete för att jag inte lyckades pracka på dem
regelbunden granskning? Jag är faktiskt inte så säker på
det.
CM-processen
Före min tid fanns inga dokument skrivna om
hur vi skulle jobba med release- och versionshantering. Jag skrev CM-dokument
till ett av rymdprojekten, där kunden krävde det, men fyllde
även i luckorna på den interna hemsida, se nedan.
Interna hemsidan
Vi upptäckte att det inte var någon idé
att skriva interna dokument som ingen läste, hellre sökte man
på interna hemsidan efter speciell info som instruktioner, manualer
och problemlösningstips. Jag gjorde därför en rejäl
uppstädning av hemsidan och fyllde på med aktuell info. På
köpet lärde jag mig html.