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.