Programvaruutveckling

Programvaruutveckling (också: mjukvaruutveckling eller programutveckling, på engelska: software engineering eller, när man inte nödvändigtvis syftar på utveckling med grund i ingenjörsvetenskap, software development) är tillämpningen av en systematisk, disciplinerad och mätbar metod för utvecklandet, användandet och underhållet av programvara. Den engelska termen software engineering populariserades efter 1968 års NATO Software Engineering Conference som hölls i Garmisch, Tyskland av dess ordförande F.L. Bauer, och har använts sedan dess. Programvaruutveckling innefattar kunskapen, verktygen, och metoderna för att definiera specifikationer och design, programmering, testning, och underhållning av programvara. Disciplinen har även påverkats av fälten datavetenskap, management, matematik, projektledning, kvalitetsteknik, ergonomi, och datorteknik. På svenska kan programvaruutveckling även syfta till utveckling av programvara i allmänhet, utan krav på att aktiviteten vilar på ingenjörsvetenskaplig grund.

Programvaruutveckling bedrivs oftast med en uttalad programutvecklingsmetodik. Datorbaserade systemutvecklingsverktyg kallas CASE-verktyg (Computer Aided Software Engineering) och används för att automatisera arbete inom de olika utvecklingsfaserna. Exempel på områden där de används är design, avlusning, testning och spårbarhet.

Områden 
Inom disciplinen ingår flera subområden som:

 Programutvecklingsmetodik, (eng. software development process), är en struktur som antas för en utvecklingsprocess.
 Kravhantering, (eng. requirements engineering), innefattar fastställandet av intressenternas produktmål samt specificerandet av dessa.
 Programvarudesign, (eng. software design), syftar till processen att planera för en programvarulösning på både arkitektonisk och lägre nivå.
 Programvarutestning, (eng. software testing), behandlar utvärdering av en programvaruprodukts kvalitet.
 Konfigurationshantering, (eng. configuration management), identifierar och underhåller produktkonfiguration under produktens livscykel.
 Spårbarhet, (eng. requirements traceability), innebär förmågan att kunna följa ett krav både framåt och bakåt under utveckling och underhåll, och spårbarhetsåterhämtning.
 Datorstöd för programvaruutveckling, (eng. computer-aided software engineering), studerar verktygsstöd för utveckling av programvara.
 Programvarukvalitet, (eng. software quality), syftar till hur väl en produkt uppfyller funktionella krav och kvalitetskrav.
 Programvaruunderhåll, (eng. software maintenance), studerar hur man effektivt underhåller programvara.
 Reverse engineering, innebär antingen att analysera ett system och skapa en representation på högre abstraktionsnivå eller att gå bakåt i utvecklingskedjan
 Reengineering, undersökandet och förändrandet av programvara för att stöpa den i annan form.

Svenska profiler 
 Claes Wohlin, Blekinge Tekniska Högskola. Sveriges första professor med inriktning mot storskalig programvaruutveckling.
 Per Runeson, Lunds Universitet. Professor sedan 2004 med särskild inriktning mot storskalig testning av programvara. Handleddes som doktorand av Claes Wohlin.
Dick Schefström(1956-2003), Luleå tekniska universitet. Avliden professor i programvaruteknik.

Svenska forskargrupper 
 SERL, Software Engineering Research Lab, Blekinge tekniska högskola.
 Use-Oriented Design and Development, Blekinge tekniska högskola.
 SERG, Software Engineering Research Group, Lunds universitet.
 Software Engineering & Management, Chalmers tekniska högskola.
 SED, Software Engineering Division, Mälardalens högskola.
 MASK, Management and Acquisition of Software Engineering Knowledge, Linköpings universitet.
 Software Engineering Group, Umeå universitet.
 RICS, Research in Computer Science, Linnéuniversitetet.

Se även 
 Unix-filosofin, en programvaruutvecklingsparadigm som betonar enkelhet och modularitet.

Referenser

Externa länkar 
 CASE Tools
 UML CASE tools
 Agile CASE Tool

Programutveckling