Internett har revolusjonert tilgang til informasjon på en måte verden aldri har sett før. I løpet av de siste tiårene har web-teknologier integrert tidligere uavhengige verktøy og systemer, og dermed utvidet mulighetene for effektiv informasjonsinnhenting. Tidligere ble verktøy som Gopher og WAIS brukt til å hente informasjon, men i dag er det nettverksgrensesnitt og websystemer som dominerer. Det som en gang var funksjonaliteter utviklet for systemer som opererte uavhengig av nettet, er nå blitt en naturlig del av de verktøyene vi bruker hver dag. Dette gjelder ikke bare for generell informasjonssøk, men også i den spesifikke konteksten av programvarekomponenter og gjenbruk av programvare.
Et godt eksempel på dette er Army Reuse Center, som har gjort det mulig for brukere å få tilgang til deponier med programvare og lære om deres syn på programvaregjenbruk. Slike plattformer har utviklet seg til å bli sentrale knutepunkter for programvareutvikling og vedlikehold, som tilbyr tilgjengelighet til et stort antall komponenter og ressurser for utviklere. Web-baserte systemer som SAIC/ASSET gir ikke bare tilgang til informasjon om gjenbruk, men også konkrete programvarekomponenter som kan lastes ned og brukes i andre utviklingsprosjekter.
Disse systemene har som hovedmål å gjøre programvareutvikling mer effektiv gjennom gjenbruk. Dette gjøres ved å tilby en samling av programvarekomponenter som kan søkes gjennom, lastes ned og implementeres i nye prosjekter, uten at utviklere trenger å bygge alt fra bunnen av. Dette reduserer både tid og kostnader, og gjør det mulig å oppnå høyere kvalitet på slutproduktet. Ved å bruke slike verktøy kan utviklere få tilgang til både åpne og kommersielle programvarekomponenter, og de kan bruke disse på en måte som passer deres spesifikke behov.
En viktig aspekt ved disse systemene er hvordan de organiserer informasjonen og hvordan denne informasjonen blir hentet ut. Et sentralt begrep i dette arbeidet er forskjellen mellom "recall" og "precision" i informasjonsgjenfinning. "Recall" refererer til systemets evne til å hente frem relevante dokumenter, mens "precision" handler om systemets evne til å ekskludere irrelevante dokumenter. Disse to aspektene er viktige for at gjenfinningssystemene skal være effektive. Et godt system balanserer disse faktorene, men i praksis vil de fleste systemer med høy recall ha lav precision, og omvendt.
En annen viktig komponent er hvordan man overvåker effektiviteten til et gjenfinningssystem. Et godt utformet bibliotek vil kunne generere statistikk over hvilke komponenter som er mest etterspurt, og dermed gi innspill til hvilke områder som bør utvides eller oppdateres. Hvis et system også kan analysere søk som ikke fører frem, kan det bidra til å identifisere mangler i biblioteket og foreslå nye komponenter som bør legges til.
Størrelsen på et bibliotek er også en viktig faktor. Jo større biblioteket er, jo mer sannsynlig er det at det inneholder den nødvendige komponenten. Dette kan gjøre det mer verdifullt, men det medfører også en høyere kostnad for å bygge og vedlikeholde. Det er derfor viktig å finne en balanse mellom bibliotekets størrelse og dets praktiske nytte. Et godt organisert bibliotek kan også gi utviklere muligheten til å legge til nye komponenter og oppdatere eksisterende, slik at det forblir relevant og nyttig over tid.
Når utviklere bruker et bibliotek for gjenbruk, er det viktig at de har tilgang til et effektivt og brukervennlig grensesnitt. De fleste moderne biblioteker er nå bygget med nettverksgrensesnitt som lar brukerne enkelt søke etter, laste ned og implementere programvarekomponenter. Dette har gjort det mulig for utviklere å få tilgang til programvarekomponenter fra forskjellige kilder og bruke dem på en måte som er tilpasset deres spesifikke behov. Dette er et viktig steg mot å gjøre programvareutvikling mer fleksibel, effektiv og kostnadseffektiv.
Det er også viktig å merke seg at gjenbruk av programvare ikke bare handler om å hente komponenter fra et bibliotek. Det handler også om å skape en kultur der utviklere er villige til å dele sine verktøy og ressurser med andre. Dette kan føre til et mer samarbeidende utviklingsmiljø, der programvarekomponenter deles på tvers av organisasjoner og prosjekter. Denne delingen kan gi fordeler både for de som lager komponentene og for de som bruker dem, og bidra til en raskere utviklingssyklus.
Endelig er det verdt å påpeke at gjenbruk av programvarekomponenter ikke alltid er en enkel løsning. Det krever god organisering, vedlikehold og en klar strategi for hvordan komponentene skal integreres i nye prosjekter. Når man arbeider med programvaregjenbruk, er det viktig å vurdere kompatibiliteten mellom ulike komponenter, samt hvordan de kan kombineres for å oppnå de ønskede resultatene.
Hvordan IBM Implementerte Gjenbruk i Programvareutvikling: Erfaringer og Lærdommer
I 1987 ble det etablert et senter for gjenbrukbare programvarekomponenter på IBM sitt utviklingssenter i Böblingen, Tyskland. Hensikten var å utvikle generiske programvarekomponenter som kunne gjenbrukes globalt innen IBM. Denne erfaringen, kjent som "IBM Böblingen Experience", viste seg å være et viktig skritt i effektivisering av programvareutviklingsprosesser og reduksjon av vedlikeholdskostnader.
Målet for IBM var klart definert: Etablering av et velfungerende gjenbruksprogram innen to år, som både skulle redusere utviklingstid, øke påliteligheten til produktene og utvide omfanget av gjenbruk. Dette kravet forpliktet IBM til å utvikle en struktur som kunne knytte sammen ulike aktører i en "handel" av programvarekomponenter – leverandører som tilbød deler, og kunder som etterspurte disse. En viktig lærdom fra denne prosessen var at et velfungerende gjenbrukssystem krever mer enn bare teknisk ekspertise; det krever også en kulturell tilnærming som omfatter motivasjon, opplæring og koordinering.
Stegene for Implementering av Gjenbruk
IBM sin tilnærming fulgte fem grunnleggende steg:
-
Definere mål
-
Bestemme kritiske suksessfaktorer
-
Definere nødvendige aktiviteter
-
Validere planen
-
Utføre aktivitetene
Gjenbruk, i denne sammenhengen, innebar ikke bare å identifisere og gjenbruke eksisterende programvarekomponenter. Det handlet om å lage en struktur der kvalitet og pålitelighet av komponentene kunne garanteres. IBM innførte konseptet "sertifisering" av komponentene, som kunne være på ulike nivåer, fra de som var laget uten tanke på gjenbruk, til mer sofistikerte deler som kunne brukes direkte uten videre tilpasninger.
Kritiske Suksessfaktorer
Gjennom brainstorming og analysen av behovet for gjenbruk, identifiserte IBM flere kritiske suksessfaktorer som måtte på plass for å oppnå effektiv gjenbruk. Disse inkluderte motivasjon, utdanning, krav til deler, tilbud av deler, bibliotek for deler, kvalitetskriterier, vedlikehold, fremdriftskontroll og regnskap. En viktig faktor for å fremme motivasjon var innføringen av insentivordninger. Disse gav utviklerne kreditt basert på størrelsen og bruken av de gjenbrukte komponentene.
Kanskje den viktigste lærdommen fra IBM sin erfaring er at et godt organisert bibliotek for gjenbrukbare deler er avgjørende. I begynnelsen kunne dette biblioteket være en enkel liste, men etter hvert som samlingen vokste, ble det nødvendig å bruke mer strukturerte metoder og verktøy for å administrere og organisere delene. Selv i store databaser var det fortsatt fordelaktig å ha en enkel liste over tilgjengelige komponenter.
Vedlikehold og Kvalitet
Når programvarekomponenter gjenbrukes, oppstår nødvendigvis behovet for vedlikehold og kvalitetssikring. IBM implementerte en modell hvor feilrapporter fra kunder kunne sendes direkte til eieren av den aktuelle komponenten for raskt å håndtere eventuelle problemer. Dette er en viktig praksis for å sikre at komponentene opprettholder høy kvalitet gjennom hele livssyklusen. Kvaliteten ble overvåket ved å bruke sertifiseringsnivåer, hvor den laveste graden ble tildelt programvare som ikke var designet med tanke på gjenbruk, men som kunne være nyttig for andre.
Implementering av Gjenbruk
For å validere gjenbruksplanen var det nødvendige å gjennomføre flere aktiviteter, inkludert modifisering av utviklingsprosesser, opprettelse av insentivprogrammer og etablering av kommunikasjonspunkter. Den første modifikasjonen som ble gjort, var i kravfasen, hvor programvaren ble delt i unike koder og gjenbrukte deler. Denne separasjonen muliggjorde bedre overvåking av gjenbruksprosessen og fremdrift.
Suksessene som ble oppnådd på IBM ble drevet frem av incentiver. De som tilbød gjenbrukbare deler fikk kreditt, og de som integrerte disse delene ble også anerkjent. Dette skapte et miljø hvor gjenbruk ble sett på som en verdifull aktivitet, snarere enn en ekstra byrde.
Ulike Perspektiver på Gjenbruk
Det er viktig å forstå at gjenbruk i programvareutvikling ikke nødvendigvis innebærer store teknologiske gjennombrudd. Selv om det er egenskaper ved programvaren som kan gjøre den lettere å gjenbruke, er ikke disse nødvendige for gjenbruk. IBM sin erfaring viste at det er fullt mulig å implementere gjenbruk med eksisterende teknikker og kunnskap. Det er et spørsmål om organisering, kultur og de riktige prosessene.
I et større perspektiv er det klart at for at programvaregjenbruk skal være vellykket, må organisasjoner investere i både teknologi og mennesker. Det krever utdanning, insentiver og en kultur for kontinuerlig forbedring. Gjennom gjenbruk kan organisasjoner redusere kostnader, øke effektiviteten og skape mer pålitelige produkter. Men for å virkelig lykkes, er det også nødvendig å ha en klar visjon og mål for hva man ønsker å oppnå.
Hvordan programvaregjenbruk kan forbedre utviklingsprosesser i programvareingeniørfaget
Gjenbruk av programvare er en tilnærming til systemutvikling som handler om å bruke eksisterende programvarekomponenter og -ressurser i utviklingen av nye systemer, i stedet for å bygge alt fra bunnen av. Denne tilnærmingen, kjent som "reuse-based software engineering", er et sentralt aspekt ved moderne programvareutvikling, og den benytter allerede tilgjengelige programvareaktiva som byggesteiner. Eksempler på programvaregjenbruk kan være bruken av biblioteker for string-manipulasjon eller matematiske beregninger, eller det kan innebære å hente informasjon fra en menneskelig ekspert for å oppnå nødvendig kunnskap.
Programvaregjenbruk er en omfattende prosess som involverer flere faser, fra planlegging og iverksetting til læring og evaluering. Denne prosessen er ikke bare et teknisk spørsmål, men krever også en spesifikk infrastruktur for å støtte og opprettholde gjenbruksprosjektene. En viktig del av denne infrastrukturen er gjenbruksbibliotekene – samlinger av aktiva og tjenester som gjør det mulig å få tilgang til og bruke eksisterende programvarekomponenter på en effektiv måte. Et slikt bibliotek kan inneholde både de faktiske aktivaene, beskrivelser av dem, en datamodell for biblioteket, samt manuelle eller automatiserte tjenester for å finne, hente og bruke disse aktivaene.
For at programvaregjenbruk skal være effektivt, er det også avgjørende at forskjellige gjenbruksbibliotek er i stand til å samarbeide. Bibliotekene må kunne gi tilgang til andres aktiva og beskrivelser på en dynamisk måte. Denne interoperabiliteten mellom forskjellige gjenbruksbiblioteker er avgjørende for å maksimere verdien av eksisterende ressurser og unngå duplisering av arbeid.
En annen viktig del av programvaregjenbruk er revers engineering, en prosess som gjør det mulig å analysere et eksisterende system for å identifisere dets komponenter og deres relasjoner. Dette gir mulighet for å gjenbruke allerede eksisterende løsninger og tilpasse dem til nye behov. Revers engineering kan dermed være et verdifullt verktøy for å forstå eksisterende programvare og hvordan den kan benyttes på en optimal måte i nye sammenhenger.
Programvareingeniørens arbeidsmiljø, som består av maskinvare, operativsystemer, verktøy og kodede prosesser, spiller en viktig rolle i hvordan gjenbruk implementeres. Dette miljøet påvirker hvordan et system utvikles og hvilke verktøy som er tilgjengelige for å administrere og organisere gjenbruket. For at gjenbruk skal være effektivt, må programvareingeniøren ha tilgang til de riktige verktøyene, prosessene og retningslinjene som gjør det mulig å gjenbruke eksisterende komponenter på en smidig og effektiv måte.
Gjenbruk av programvare kan også relateres til begrepet spesifikasjoner, som er dokumenter som beskriver krav, design og andre egenskaper ved programvaren. Spesifikasjonene fungerer som et referansepunkt for utviklingsprosessen og kan være nyttige for å forstå hvordan eksisterende komponenter skal tilpasses og brukes i nye systemer.
En annen viktig faktor er tilpasning av programvaren til nye og spesifikke situasjoner. Tilpasning, eller "tailoring", er prosessen der programvareprodukter justeres for å møte de spesifikke kravene i et nytt prosjekt. Denne prosessen kan innebære å modifisere eksisterende programvarekomponenter slik at de fungerer i et nytt kontekst, eller å skape nye løsninger basert på de eksisterende aktivaene.
Gjenbruk av programvare kan ha stor betydning for å redusere utviklingstid og kostnader, samtidig som kvaliteten på sluttproduktet kan forbedres. Ved å bruke allerede eksisterende løsninger kan man unngå å "oppfinne hjulet på nytt" og heller bygge videre på solide, testede komponenter som allerede er tilgjengelige. Dette kan føre til mer stabile, pålitelige og skalerbare systemer, samtidig som man reduserer risikoen for feil og problemer i utviklingsprosessen.
Det er imidlertid viktig å være oppmerksom på at programvaregjenbruk ikke er en løsning uten utfordringer. Selv om det kan være kostnadseffektivt og tidsbesparende, kan det også innebære visse tekniske og organisatoriske utfordringer. For eksempel kan det være problemer knyttet til kompatibilitet mellom forskjellige programvarekomponenter, eller vanskeligheter med å finne de riktige aktivaene i et stort og komplekst bibliotek. Derfor er det viktig å ha en godt planlagt og organisert tilnærming til programvaregjenbruk, slik at man kan maksimere fordelene samtidig som man håndterer utfordringene på en effektiv måte.
I tillegg er det viktig å forstå at gjenbruk av programvare ikke nødvendigvis betyr at alt kan gjenbrukes. Noen ganger er det nødvendig å utvikle nye komponenter for å møte spesifikke krav som ikke kan løses med eksisterende løsninger. Gjenbruk bør derfor ikke betraktes som en erstatning for innovasjon, men som et supplement som kan forbedre effektiviteten og kvaliteten på utviklingsprosessen.
Endtext

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский