I programvaruutveckling (eng. Software Engineering) finns det i huvudsak tre olika processmodeller för utveckling:
Vattenfallsmodellen, evolutionär- och komponentbaserad utveckling.
Vattenfallsmodellen identifierar olika faser som gås igenom vid alla utvecklingsprojekt. Dessa består av kravspecifikation, design, implementation och enhetstest, integration och acceptanstest samt utveckling. Samtliga steg gås igenom sekventiellt och leverabler i form av rapporter presenteras när varje steg är avslutat. Det sker alltså ingen iteration mellan faserna och management kan enkelt styra processen. Detta har klara fördelar men också nackdelar i en föränderlig miljö.
Den andra konceptuella utvecklingsmodellen är evolutionär utveckling. Den består av samma faser som vattenfallsmodellen med skillnaden att dessa gås igenom i flera inkrement. Efter varje version är kunden med och tar fram nya krav till nästa version som sedan designas, implementeras och valideras. Modellen kan användas för att utveckla färdiga system samt för prototyper till kravspecifikation. Även varianter på evolutionär utveckling finns. Exempel är iterativ utveckling där kraven är färdiga och faserna därefter gås igenom i flera steg iterationer. Ett annat exempel är spiralmodellen där mycket frihet råder.
Den tredje huvudmodellen för programvaruutveckling är komponentbaserad utveckling (CBSE). Denna utvecklingsgren går ut på att återanvände färdiga så kallade COTS produkter, commercial of the shelf. Processen har går igenom följande steg; kravspecifikation, komponentsökning, kravanpassning till de komponenter som hittas, val av komponenter, integration av komponenter samt validering mot krav. Att använda CBSE minimerar ledtider och kostnader, minskar risker för projekthaveri och ökar pålitligheten eftersom komponenten testats tidigare. Nackdelar är att koden oftast inte kan inspekteras eftersom komponenten ofta kommer i ett kompilerat format. Detta ger sämre kontroll för underhåll och vad som ska ske i framtida versioner. Utöver att komponenter är körbara (kompilerade) är de standardiserade, oberoende av annat, har gränssnitt (requires och provides) och är väl dokumenterade.
Jag arbetar en del med java och skall sommarjobba med matlab. Att använda en vattenfallsmodell är då på grund av arbetets omfattning helt omöjligt. I sommar har jag en månad på mig för att sätta ihop ett matlab program som skall grafiskt skall kunna användas för beräkningar av olika eklektiska system. Att göra detta från ruta ett hade krävt tid för att lära sig hur allt ska fungera, bygga funktioner, krav, arkitektur osv. Jag kommer att utgå från funktioner som redan finns och min uppgift är att göra gränssnittet för att slå in dessa funktioner så att de går att använda på ett bättre sätt. Komponentbaserad utveckling..

GPS-klocka
Jag har länge funderat på olika privata projekt. Jag började lite på en flash applikation för att kunna presentera häftiga diagram från data ur en databas, men kom snabbt fram till att det inte intresserade mig. Jag har länge funderat på att skapa mitt eget program för gps hantering. Det jag använder nu är fokuserat på träning och har vissa bra funktioner, men jag tror att jag skulle kunna skapa något mycket bättre. Idéen är att skriva programmet i java för att kunna använda det både lokalt och via en applet på nätet. Programmet skall kombinera vanlig gps hantering i skogsmiljö samt träning med gps likt min gps-klocka (←).
Jag tror att jag behärskar de flesta av de tekniker som kommer att behövas för att skapa applikationen. Jag har nylighen hittat en mycket bra öppen komponent för gps kartor som jag kommer att använda. Komponenten omsluter (wrapper) javascript, som används för att programmera till de flesta kartor som till exepel google maps, med java. Claudius Hauptmann är en annan bra resurs som skrivit ett par artiklar om programmering till google maps.






