Software Engineering Standards Committee (SESC), som er en del av IEEE, spiller en betydelig rolle i utviklingen av standarder for programvareutvikling, spesielt i forhold til programvaregjenbruk. En av de viktigste bidragsyterne til SESC er Reuse Library Interoperability Group (RIG), en uavhengig gruppe bestående av brukere, operatører og leverandører av gjenbruksbibliotek. RIG har som mål å utvikle spesifikasjoner for interoperabilitet mellom ulike gjenbruksbibliotek, og arbeidet deres går gjennom SESC for å bli godkjent som standarder.
En viktig milepæl i RIG sitt arbeid er utviklingen av et datasett som beskriver hvordan gjenbruksbibliotek kan bytte informasjon om sine eiendeler. Dette datasettet, kjent som Basic Interoperability Data Model (BIDM), er allerede blitt godkjent som en IEEE-standard. BIDM gir et minimumskrav til hva som skal til for at gjenbruksbibliotek skal kunne utveksle informasjon om sine eiendeler, som for eksempel programvarekomponenter eller andre digitale ressurser. Dette datasettet er et fundamentalt verktøy for å sikre at programvaregjenbruk på tvers av systemer og plattformer er mulig, og at gjenbrukte elementer kan vurderes for kvalitet og egenskaper på en standardisert måte.
RIG har også utviklet utvidelser til BIDM for å beskrive hvordan eiendeler kan sertifiseres for kvalitet eller andre spesifikasjoner. Disse dokumentene er under behandling for å bli godkjent som IEEE-standarder. Videre er RIG i gang med å utvikle standarder for hvordan BIDM kan bindes til HTML og SGML, noe som kan gjøre standarden enda mer anvendelig for webbaserte og dokumentbaserte systemer.
I tillegg til SESC er det flere andre aktører som har bidratt til standardisering av programvaregjenbruk, spesielt i USA. Ett eksempel er ARPA (United States Advanced Research Projects Agency), som har utviklet et konseptuelt rammeverk for programvaregjenbruksprosesser, kalt Conceptual Framework for Reuse Processes (CFRP). Dette rammeverket er utviklet for å gi prosjektplanleggere og prosessingeniører en høy-nivå forståelse av de prosessene som er involvert i programvaregjenbruk. CFRP fokuserer på å beskrive hvordan forskjellige reuse-prosesser kan integreres med andre prosesser i programvareutvikling. Det er viktig å merke seg at CFRP ikke beskriver spesifikke implementeringer, men heller gir en veiledning for hvordan gjenbruk kan utføres på tvers av ulike sektorer og organisasjoner.
ARPA har også utviklet et modell for "Reuse Strategy", som er spesielt nyttig for virksomheter som ønsker å implementere domene-spesifik gjenbrukspraksis. Denne modellen hjelper til med å karakterisere eksisterende gjenbrukspraksiser og gir veiledning for hvordan organisasjoner kan gå videre mot å utvikle mer spesifikke, domene-baserte gjenbruksløsninger.
I tillegg til de nevnte organisasjonene har også US Department of Defense (DoD) bidratt til utviklingen av standarder for programvaregjenbruk, særlig gjennom dokumentene Software Reuse Executive Primer og Software Reuse Business Model. DoD har hatt som mål å integrere gjenbruksprinsipper i anskaffelsesprosessen for programvare, og har utviklet dokumenter som skisserer hvordan organisasjoner kan adoptere systematisk programvaregjenbruk i sine prosjekter.
En viktig komponent i denne utviklingen er å forstå de tekniske og organisatoriske utfordringene ved programvaregjenbruk. Spesielt blir det diskutert hvordan man kan overvinne hindringer som mangel på incitamenter for gjenbruk, problemer med å sikre kvaliteten på gjenbrukte komponenter, samt utfordringer knyttet til klassifisering og lagring av programvarekomponenter. Det er også nødvendig å etablere et rammeverk som kan hjelpe organisasjoner med å bygge og administrere sine egne gjenbruksbibliotek på en effektiv måte.
Programvaregjenbruk er et felt som krever samarbeid på tvers av organisasjoner, sektorer og teknologier. Standardisering er avgjørende for å kunne integrere ulike gjenbruksbibliotek og sikre at programvare kan gjenbrukes på tvers av plattformer og systemer. RIG, SESC og andre organisasjoner som ARPA og DoD spiller derfor en viktig rolle i å utvikle de nødvendige verktøyene og dokumentene som gjør det mulig for ulike aktører å implementere programvaregjenbruk på en effektiv og standardisert måte.
For leseren som ønsker å gå videre med temaet, er det viktig å forstå at standarder for programvaregjenbruk ikke bare handler om tekniske spesifikasjoner. De adresserer også organisatoriske og prosessuelle utfordringer som kan oppstå i implementeringen av gjenbruk, og gir et rammeverk for å forstå hvordan programvaregjenbruk kan støtte virksomheters mål og strategier på lang sikt. Uten et felles rammeverk for interoperabilitet og standardisering vil det være vanskelig for ulike aktører å dra nytte av de potensielle gevinstene ved gjenbruk, som kostnadsbesparelser, raskere utvikling og bedre kvalitet på sluttproduktene.
Hvordan effektivisere utviklingen av kursware gjennom gjenbruk av materiale fra bibliotek
I utviklingen av kursware er effektiviteten en avgjørende faktor, og en måte å oppnå dette på er ved å benytte et system for gjenbruk av materialer fra et kursware-bibliotek. Et slikt system kan reduseres til tre hovedfunksjoner: Samler (Collector), Populator og Indekserer (Indexer). Hver av disse funksjonene spiller en viktig rolle i hvordan materialet samles, behandles og deretter gjøres tilgjengelig for bruk i kursutviklingen.
Samleren har som oppgave å hente inn materialet. Dette materialet kan være i forskjellige former, for eksempel tekst, bilder eller diagrammer, og Samleren finner det relevante innholdet fra forfatterens liste og leverer det videre til Populatoren. Populatoren er ansvarlig for å konvertere materialet til et format som er kompatibelt med kursware-biblioteket. Når dette er gjort, blir de gjenbrukbare komponentene lagt inn i biblioteket, og her kommer Indeksereren inn i bildet. Indeksereren gir hver komponent en tekstbeskrivelse som forklarer de sentrale konseptene komponenten formidler, samtidig som han eller hun vedlikeholder innholdsfortegnelsen og listen over medietyper.
Når forfatteren trenger å hente ut materiale fra biblioteket, velger han eller hun først hvilken type tilgang som skal benyttes – enten gjennom innholdsfortegnelsen eller medieindeksen. Etter å ha valgt en medieindeks, kan forfatteren søke etter en spesifikk type medium, for eksempel et bilde eller et diagram, og deretter angi et eller flere søkeord som beskriver emnet han eller hun ønsker å hente informasjon om. For eksempel, hvis forfatteren velger "bilde" og søker på ordet "brannskade", kan et bilde som viser brannskader vises i resultatene. Dette gjør at forfatteren raskt kan finne relevante komponenter, som igjen gir raskere utvikling av kursware.
En av de største fordelene ved å bruke et gjenbruksbibliotek er at det reduserer kostnadene forbundet med utviklingen av nytt kursinnhold. For å evaluere dette, ble en øvelse gjennomført der man sammenlignet kostnadene ved å utvikle kursware med og uten hjelp av et bibliotek. I eksperimentet ble det funnet at utviklingen av kursware ved hjelp av et bibliotek kan være betydelig mer kostnadseffektiv. For eksempel, et kurs som utvikles med biblioteket koster rundt $80 i forfatterkostnader, sammenlignet med $240 når utviklingen skjer uten hjelp av verktøyene som biblioteket tilbyr. Samtidig er kostnadene ved å bygge biblioteket, inkludert utvikling av programvaren, et betydelig engangskostnad som rettferdiggjøres etter noen kursutviklinger.
Videre ble det påvist at prosessen med å digitalisere og formatere eksisterende materiale for biblioteket kan være tidkrevende. For eksempel, tekst som kun finnes på papir kan skannes inn og deretter prosesseres ved hjelp av optisk tegngjenkjenning (OCR), mens bilder må skannes og konverteres til et bitmap-format. Dette kan være tidkrevende, særlig når det gjelder å skalere bilder til passende størrelse. Likevel, når biblioteket er klart og tilgjengelig, kan forfatterne bruke det til å utvikle nytt kursinnhold raskt og med redusert arbeidsbelastning.
Er det imidlertid en begrensning i bruk av gjenbrukte materialer? Svaret er ja. Et gjenbrukbart bibliotek, selv om det gir effektivitet, krever en balansert tilnærming. Når man bare bruker innholdsfortegnelsen for å hente materialer, kan det oppstå problemer, spesielt når man forsøker å hente ut media som bilder eller diagrammer. Et kapittel som heter “Introduksjon” kan inneholde tekst som er lett å forutsi, men hvis det også inneholder et diagram eller bilde, kan forfatteren ikke alltid vite hva slags innhold som er tilgjengelig med bare en overskrift. Derfor er det viktig at både innholdsfortegnelsen og medieindeksen brukes sammen for å støtte et mer effektivt søk.
Effektivisering av materialhenting kan også forbedres med teknologi. Bruken av medieindeks gir forfatterne muligheten til å velge hvilken type medium de ønsker å jobbe med, og deretter angir de et spesifikt søkeord. Dette er et bedre alternativ enn å stole utelukkende på en innholdsfortegnelse. Forfatterne kan også bruke begge indeksene sammen for å få et bedre overblikk over hva som er tilgjengelig i biblioteket.
I tillegg til tid og kostnad, er det viktig å merke seg at kvaliteten på det materialet som legges inn i biblioteket er essensiell for suksessen til systemet. Gjenbrukbare materialer må vurderes nøye før de legges inn i biblioteket, og vurderingsprosessen kan ofte være utfordrende. Videre kan digitalisering av media som video eller lyd være en komplisert prosess som krever mer avansert teknologi.
Utviklingen av et gjenbruksbibliotek for kursware kan derfor være både tidkrevende og kostnadskrevende i starten, men det kan føre til betydelige besparelser og effektivisering på lang sikt. Forfatterne må ha tilgang til et godt organisert og lett tilgjengelig bibliotek som er godt vedlikeholdt og kontinuerlig oppdatert, samtidig som de forstår at kvaliteten på materialet er avgjørende for at gjenbruken skal være vellykket.
Hvordan programvaregjenbruk kan transformere industrien og styrke konkurranseevnen
Erfaringene fra IBM har vist at verktøy og metoder bør integreres sømløst i arbeidsmiljøet. Den største effekten på gjenbruk kom når IBM-programvareingeniører kunne ha tilgang til gjenbrukbare biblioteker rett ved fingertuppene – de kunne lett navigere mellom relevant bibliotekinnhold og selve problemløsningen der gjenbruk var aktuelt. Bare tilstedeværelsen av et brukbart bibliotek er noen ganger «godt nok», og ytterligere investering i katalogiseringsmekanismer og søkeverktøy kan gi liten gevinst. Dette taler for å kjøpe et bibliotekverktøy eller outsource en gjenbrukstjeneste og fokusere egne investeringer på innholdet i biblioteket snarere enn selve verktøyet.
Men det finnes en annen side av gjenbruk i industrien. Kunder, ikke bare et selskaps egne programvareteam, kan ha behov for tilgang til gjenbrukbare programvarebiblioteker. I markedet for World Wide Web prøver Microsoft, Netscape og andre å vinne markedsandeler blant kunder som ønsker tilgang til gjenbrukbare kodebiblioteker for å bygge interaktive nettsteder. Å ha komponenter i standardiserte språk som kan integreres på standard måter med ulike web-relaterte funksjoner er viktig for slike gjenbruksbiblioteker. Derfor føler noen av disse programvareselskapene seg tvunget til å konkurrere om å merke produktene sine som standard på en måte som passer til genereringen av kunde-tilgjengelige gjenbruksbiblioteker.
Når det gjelder statens syn på programvaregjenbruk, ser selskaper ofte på sin egen tilnærming til interne programvaregjenbruksstandarder som et viktig konkurransefortrinn. Noen av disse selskapene holder sine programvaregjenbruksstandarder konfidensielle. På den andre siden er offentlige etater mer tilbøyelige til å dele gjenbrukbare biblioteker med offentligheten. Offentlige etater har hatt en særlig aktiv rolle i å fremme gjenbruksstandarder og biblioteker som deles med allmennheten. I USA er offentlige anskaffelser juridisk forpliktet til å være rettferdige, noe som verdsettes mer enn effektivitet. Generelt kan ikke myndighetene tildele et nytt kontrakt til et selskap kun fordi det presterte godt på et tidligere program – en rettferdig konkurranse blant interesserte parter er påkrevd, og tildelingen vil bli gjort basert på en kombinasjon av foreslåtte handlinger og estimerte kostnader, snarere enn tidligere meritter. I et slikt kontraktsmiljø har myndighetene et essensielt behov for å sikre at en leverandør kan gjenbruke produktene fra tidligere kontrakter.
For eksempel bruker det amerikanske Forsvarsdepartementet 30 milliarder dollar årlig på programvare. Forsvaret kan kjøpe programvare fra mange leverandører, men ønsker at det de kjøper fra én leverandør, skal være tilgjengelig for gjenbruk av en annen leverandør. Forsvaret har utviklet retningslinjer for programvaregjenbruk som kan brukes til å standardisere leverandørers ytelse. Et viktig prosjekt fra Forsvarsdepartementet, utviklet av Advanced Research Projects Agency (DARPA), kalles STARS. Ett av hoveddokumentene fra STARS er det konseptuelle rammeverket for gjenbruksprosesser (CFRP). CFRP definerer et konseptuelt rammeverk for gjenbruk når det gjelder de involverte prosessene. Rammeverket er ment å være generisk i forhold til domener, organisasjoner, økonomiske sektorer, metoder og teknologier. CFRP identifiserer de involverte prosessene i gjenbruk og beskriver på et høyt nivå hvordan disse prosessene fungerer og samhandler. Gjenbruksstyring beskrives innenfor en spiral av planlegging, utføring og læring.
Et annet STARS-dokument er ment som et planleggingshjelpemiddel for gjenbruksprosjekter. Det gir et sett med dimensjoner for å karakterisere den nåværende gjenbrukspraksisen og en foreslått prosess for å utføre denne karakteriseringen. Begge disse STARS-dokumentene beskriver prinsipper, men implementeringsdetaljer overlates til organisasjonene som ønsker å adoptere STARS. Det er et stort gap mellom de generelle prinsippene for hvordan en organisasjon kan operere for å oppnå programvaregjenbruk, og de spesifikke detaljene i et selskaps implementering.
Gjenbruk kan innebære betydelige endringer i tradisjonelle praksiser, og det finnes en rekke utfordringer som må overvinnes for å oppnå dens fulle fordeler. Å gjøre programvaren gjenbrukbar krever vanligvis investeringer utover det som kreves for ett engangssystem. Denne innsatsen går til å gjøre programvaren mer fleksibel, sikre kvaliteten, og tilby tilleggsdokumentasjon. Hver organisasjon må ta beslutninger om hvordan investeringen skal støttes.
Moderne kontraktsmetoder kan skape en motvilje mot at leverandører gjenbruker eksisterende programvare eller gir programvare for gjenbruk av andre. Juridiske problemer oppstår rundt ansvar og garantier. Vedlikeholdsansvaret må være tydelig. Gjenbruk bør redusere vedlikeholdskostnader, ettersom det er færre feil i bevist programvare og mindre programvare generelt å vedlikeholde. For eksempel, hvis et vedlikeholdsteam har ansvar for flere forskjellige systemer med et felles grafisk brukergrensesnitt, kreves kun én rettelse for å korrigere et problem i brukergrensesnittet, i stedet for en for hvert system.
Gjenbruk kan også forbedre interoperabilitet mellom systemer. Gjennom bruken av enkeltimplementeringer av grensesnitt vil systemer kunne samhandle mer effektivt med andre systemer. For eksempel, dersom flere kommunikasjonssystemer benytter et enkelt programvarepakke for å implementere én standard kommunikasjonprotokoll, vil det sannsynligvis føre til bedre samhandling enn om hvert system er skrevet av et forskjellig selskap som skal følge den samme standarden.
En annen fordel med gjenbruk er støtte for rask prototyping. Et bibliotek med gjenbrukbare komponenter gir et effektivt grunnlag for raskt å bygge applikasjonsprototyper. Med disse prototypene kan programvareteamet få tilbakemeldinger fra kunder om systemets evner og revidere kravene i henhold til kundens behov. Når det gjelder gjenbruk på liten skala – for eksempel ved bruk av et bibliotek med matematiske funksjoner – er den besparede innsatsen fra et enkelt gjenbruk ikke stor; utbyttet kommer fra den utbredte gjenbruken som er mulig. På større skala kan hele delsystemer, som et flypilotsystem, gjenbrukes. Fordelene med storstilt gjenbruk kan imidlertid betale seg selv om en komponent bare gjenbrukes én eller to ganger, på grunn av mengden innsats som spares.
Gjenbrukens effektivitet vil være langt større i enkelte programvareselskaper enn i andre. Hvis et programvareselskap eller en avdeling utelukkende utvikler én type applikasjon, for eksempel regneark, er det i selskapets interesse å bygge opplæring rundt en gjenbruksmetodikk, ettersom de raskt kan bygge et bibliotek med ofte brukte regnearkkomponenter. Her kan det forventes at prosjekter vil kunne bruke et stort antall av disse komponentene. Selskaper som ikke har spesialisering og håndterer et stort utvalg prosjekter med få felles elementer, vil ha mindre utbytte av gjenbruk.
Programvaregjenbruk kunne ikke ha skjedd for mer enn 50 år siden, da det ikke fantes programvare. Dokumentgjenbruk, derimot, har forekommet i flere hundre år. Et domene for dokumentgjenbruk er vitenskapelig forskning, der gjenbruk ved referanse er grunnleggende. En kvalitetsforskningstidsskriftartikkel inneholder vanligvis henvisninger til omtrent 20 andre tidsskriftartikler. Et lite forskerteam kan vedlikeholde sitt eget lille bibliotek.
Hvordan Utvikling og Vedlikehold av Informasjon Påvirker Programvareutvikling
I prosessen med å utvikle dokumentasjon for programvare, er det flere kritiske faktorer som påvirker både effektiviteten og bruken av den ferdige informasjonen. Det er en vanlig tilnærming at utviklere henter informasjon fra folk heller enn fra bøker, jobber som en del av et team, tester informasjonens nytteverdi, og formaterer den endelige produktet i ulike former. Prosessen kan deles opp i flere trinn: først blir utvikleren kjent med maskinvare- og programvareplanen, deretter settes mål for informasjonen som skal gis, utkast blir utviklet, og til slutt blir utkastet verifisert gjennom inspeksjon, redigering og testing. Den siste fasen handler om å vedlikeholde informasjonen basert på tilbakemeldinger.
Et godt utviklet informasjonsutviklingssystem foreslår at samarbeid er en essensiell del av prosessen. Det er viktig å se på maskinvare- og programvareeksperter som kollegaer i utviklingsprosessen, slik at tilbakemeldingene kan være toveis. En teori om dokumentasjon stammer både fra filosofiske og vitenskapelige perspektiver, og bør adressere det brede problemet med brukerstøtteteknologi, hvor manualer er en del av løsningen. Denne teorien bør klargjøre forholdet mellom intern og ekstern støtte, som for eksempel skjermdesign og manualer, og hjelpe med å definere forholdet mellom informasjonstjenester (som opplæring og konsultasjoner) og informasjonprodukter (som manualer og opplæringsdisker).
I henhold til teorien om dokumentasjon er et viktig prinsipp at "nesten alle aspekter av brukerstøtte (inkludert manualer) stammer fra brukergrensesnittets natur." Dette betyr at brukergrensesnittet må vurderes tidlig i produktutviklingen, og spesifikasjonen av dette grensesnittet bør ha like høy prioritet som spesifikasjonene for maskinvare og programvare. Manualer er ikke resultatet av individuelle forfatteres eller kunstneres arbeid, men skal skrives til en spesifisert standard og gå inn i en database hvor informasjonen vedlikeholdes og kan gjenbrukes av andre forfattere. Denne tilnærmingen innebærer at manualene utvikles gjennom modeller og prototyper som testes før de blir ferdigstilt.
Virksomheter investerer ulikt i dokumentasjon, avhengig av produktenes natur og markedsstrategi. Bedrifter som selger produkter i små opplag, er mer tilbøyelige til å stole på personlig kontakt med kjøpere for å hjelpe dem med bruken, mens store selskaper som selger masseproduserte varer investerer mer i dokumentasjon for å redusere behovet for servicehenvendelser. Spesielt er to faktorer avgjørende når det gjelder beslutninger om dokumentasjonsinvesteringer: forventet salg og produksjonskostnader. Høye salgsvolumer fører til større investeringer i dokumentasjon, da personlig kontakt med kunder blir økonomisk uholdbart. På den andre siden, med høye enhetskostnader, kan personlig kontakt være en mer effektiv løsning.
Vedlikehold av programvare har i dag blitt en av de viktigste aspektene ved programvareutvikling, ettersom de fleste programvareprosjekter krever kontinuerlig utvikling etter at de er i bruk. En betydelig del av programvareindustrien er dedikert til vedlikehold og evolusjon av eksisterende systemer, snarere enn å utvikle helt nye. Enhver endring i programvaren, enten det gjelder kode eller design, krever en tilsvarende oppdatering av dokumentasjonen, ellers vil det være vanskelig for andre utviklere å forstå og vedlikeholde programvaren i fremtiden. Uten korrekt dokumentasjon kan vedlikeholdet bli både tidkrevende og kostbart.
Standardisering spiller også en kritisk rolle i utviklingen av programvare og tilhørende dokumentasjon. Standarder er essensielle for å muliggjøre gjenbruk av programvareobjekter og sikre at beskrivelsene av disse objektene er forståelige og kompatible med andre systemer. Dette krever at en felles språkbruk utvikles, både på naturlige språk og på design- og programvarespråk. Videre er det flere organisasjoner som er involvert i utviklingen av disse standardene, fra nasjonale til internasjonale, inkludert institusjoner som ISO, IEEE, og andre kommersielle og frivillige grupper som bidrar til å sette standarder for programvareutvikling.
I vedlikeholdsprosessen bør utviklere forstå at kostnadene knyttet til vedlikehold generelt har økt betydelig i løpet av de siste tiårene, og det anslås at 40-60 % av et programvareutviklingsorganisasjons budsjett går til vedlikehold. Dette understreker viktigheten av å ha effektive og oppdaterte dokumentasjonsrutiner som en integrert del av programvareutviklingsprosessen.
For å opprettholde effektiviteten gjennom hele programvarens livssyklus er det nødvendig at utviklingsprosessen omfatter grundig testing og kontinuerlig revisjon av både selve programvaren og dokumentasjonen. Denne systematiske tilnærmingen er avgjørende for at programvaren skal kunne håndtere endringer og oppdateringer på en kostnadseffektiv måte, samtidig som den møter brukernes behov på en optimal måte.

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