Återanvändbarhet - Reusability
Inom datavetenskap och programvaruteknik är återanvändbarhet användning av befintliga tillgångar i någon form inom programvaruutvecklingsprocessen ; dessa tillgångar är produkter och biprodukter från programvarans livscykel och inkluderar kod, programvarukomponenter, testpaket, design och dokumentation. Det motsatta begreppet återanvändbarhet är hävstång , som modifierar befintliga tillgångar efter behov för att möta specifika systemkrav. Eftersom återanvändning innebär att det skapas en separat underhållen version av tillgångarna är det att föredra framför hävstång.
Underrutiner eller funktioner är den enklaste formen för återanvändning. En bit kod kodas regelbundet med moduler eller namnområden i lager . Förespråkare hävdar att objekt och mjukvarukomponenter erbjuder en mer avancerad form av återanvändbarhet, även om det har varit svårt att objektivt mäta och definiera nivåer eller poäng av återanvändbarhet.
Förmågan att återanvända förlitar sig på ett väsentligt sätt på förmågan att bygga större saker från mindre delar och att kunna identifiera gemensamma egenskaper mellan dessa delar. Återanvändbarhet är ofta en nödvändig egenskap hos plattformsprogramvara . Återanvändning ger flera aspekter till programutveckling som inte behöver beaktas när återanvändbarhet inte krävs.
Återanvändbarhet innebär viss uttrycklig hantering av bygg- , förpacknings- , distributions- , installations- , konfigurations- , drifts- , underhålls- och uppgraderingsproblem . Om dessa problem inte övervägs kan programvara tyckas vara återanvändbar ur designperspektiv , men kommer inte att återanvändas i praktiken.
Återanvändbarhet av programvara hänför sig mer specifikt till designfunktioner för ett programelement (eller samling av programelement) som förbättrar dess lämplighet för återanvändning.
Många principer för återanvändningsdesign utvecklades vid WISR-workshops.
Kandidatdesignfunktioner för återanvändning av programvara inkluderar:
- Anpassbar
- Kortfattad: liten storlek
- Konsistens
- Korrekthet
- Sträckbarhet
- Snabb
- Flexibel
- Generisk
- Lokalisering av flyktiga ( föränderliga ) designantaganden ( David Parnas )
- Modularitet
- Orthogonality
- Parametrisering
- Enkelt: låg komplexitet
- Stabilitet under förändrade krav
Enighet har ännu inte uppnåtts i denna lista om posternas relativa betydelse eller om de frågor som gör var och en viktig för en viss klass av applikationer.