NO311387B1 - System for dynamisk kjöretidsfiksering for programvaremoduler i en datamaskinsammenstilling - Google Patents

System for dynamisk kjöretidsfiksering for programvaremoduler i en datamaskinsammenstilling Download PDF

Info

Publication number
NO311387B1
NO311387B1 NO19945053A NO945053A NO311387B1 NO 311387 B1 NO311387 B1 NO 311387B1 NO 19945053 A NO19945053 A NO 19945053A NO 945053 A NO945053 A NO 945053A NO 311387 B1 NO311387 B1 NO 311387B1
Authority
NO
Norway
Prior art keywords
interface
server
software module
client
software
Prior art date
Application number
NO19945053A
Other languages
English (en)
Other versions
NO945053D0 (no
NO945053L (no
Inventor
Ulf Kurt Haakan Markstroem
Lars Kenneth Lundin
Original Assignee
Ericsson Telefon Ab L M
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Publication of NO945053D0 publication Critical patent/NO945053D0/no
Publication of NO945053L publication Critical patent/NO945053L/no
Publication of NO311387B1 publication Critical patent/NO311387B1/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Exchange Systems With Centralized Control (AREA)

Description

Oppfinnelsens bakgrunn
En del av beskrivelsen i dette patentdokument inneholder materiale som er opphavsrettbeskyttet. Innehaveren av opp-havsretten har ingen innvendinger mot faksimilereproduksjon av patentdokumentet eller patentbeskrivelsen, som det fore-ligger hos patent- og varemerkemyndighetene, som patent eller registreringer, men reserverer seg ellers alle opphavs-rettigheter overhodet.
Oppfinnelsens område
Oppfinnelsen vedrører modifikasjon av programvare, og særlig utskifting av programvare i et opererende datamaskinsystem hvor det eksisterer både gamle og nye versjoner av modifisert programvare samtidig i datamaskinen og som er samtidig eksekverbare deri.
Beskrivelse av lignende teknikk
Systemet ifølge foreliggende oppfinnelse, en linket prosedyreanropsmekanisme for dynamisk å binde separate og samtidig eksekverbare versjoner av programvare under drift (operasjon) av et datamaskinsystem, for å tillate transparent, bruddfri oppdatering av programvare, kan best forstås ved henvisning til det større problem å inkorporere modifisert programvare i et opererende datamaskinsystem. Et aspekt ved programvare for datamaskiner er at den periodisk må oppda-teres med revisjoner, tillegg og/eller strykninger for å fortsette å gi tilstrekkelig funksjonalitet til brukeren, for å optimisere programvaren og for å rette feil og ulik-heter som oppstår gjennom programvarens livsløp. Ettersom nye ferdigheter adderes til programvare, er det ønskelig å bytte ut den gamle programvaren med den nye versjonen så tidlig og så lettvint som mulig for å forsyne brukeren med ferdighetene til den nye programvaren.
I visse typer datamaskinsystemer, slik som frittstående systemer eller systemer for batch-prosessering, er det få hindringer forbundet med å endre programvare fra en versjon til en annen. Typisk tas datamaskinsystemet bare ned under en periode av dagen hvor det er liten aktivitet og vedlike-holdspersonell er lett tilgjengelig. Den gamle programvare blir da enkelt fjernet og erstattet med den nyere versjon av programvaren. Deretter startes datamaskinsystemet opp igjen og all fremtidig dataprosessering utføres med den nye versjon av programvaren. Denne prosedyre forutsetter selv-følgelig at den nye programvare har blitt tilstrekkelig testet og avluset (debugged) på et frakoblet system slik at programvarepersonellet og de driftsansvarlige stoler på at den adekvat vil utføre de funksjoner den er påtenkt uten utidige brudd som kan kreve stopp av, og så ny start av hele datamaskinsystemet.
I andre typer datamaskinsystemer, slik som moderne lagret programkontroll (SPC, for "stored program control") systemer for telekommunikasjonssentraler (i fagmiljøet vanligvis kalt "svitsjer"), er verken testing av nye versjoner av programvare eller endring av programvare i systemet så enkelt som i frittstående batch-prosesserende systemer. For eksempel kan ikke nye versjoner av programvare effektivt testes uten å settes inn i virkelig drift med å prosessere samtaler. Programvaren må testes i drift for å bestemme om programvaren vil virke adekvat under virkelige driftsfor-hold og om de nye deler vil tilpasses (interface) godt alle de andre programvareblokker som danner en del av et opera-sjonelt SPC-svitsjende system. I tillegg er telekommunika-sjonssvitsjesystemer praktisk talt aldri ute av drift. Ide-elt vil disse systemer gå evig uten avbrekk, på grunn av det kontinuerlige behov for kommunikasjonsservice innen et samfunn. Det vil si at det er en kontinuerlig strøm av te-lekommunikas j onstrafikk som prosesseres gjennom systemet selv ved perioder med lav trafikk på dagen eller natten, og ethvert brudd i driften av svitsjen resulterer i et avbrudd i denne telekommunikasjonstrafikken. Et slikt avbrudd kan være ekstremt ødeleggende for systemets drift og dets ef-fektivitet, så vel som dets aksept blant brukere eller kun-der av systemet.
Disse sanntidskrav på telekommunikasjonssvitsjesentraler setter strenge begrensninger på både testingen av videreut-viklede versjoner av programvaren, eller deler derav, som inneholder ny eller forbedret funksjonalitet, så vel som utbyttingen av programvare som inneholder feilkorreksjoner eller "bug fixes" i en svitsj uten å avbryte eksisterende telekommunikasjonstrafikk som prosesseres av svitsjen. Derfor er det ikke ønskelig å integrere nye versjoner av pro-gramvarekomponenter eller enheter inn i systemet ved bruk av den tradisjonelle fremgangsmåte "edit-compile-link-load-run". Det som foretrekkes er en fremgangsmåte som gir evnen til å modifisere eller utbygge programvaren mens systemet er i drift, uten behov for noe unyttbar tid (downtime) .
Det er gjort forsøk på å løse problemene forbundet med å inkorporere ny programvare i fungerende datamaskinsystemer. For eksempel er det noen avanserte direktekoblede (on-line) , fungerende systemer i bruk i dag som ikke fungerer i frittstående eller batch funksjon, som løser problemet med å bytte ut gammel programvare på en måte som klart er forskjellig fra metoden brukt med frittstående eller batch systemer. Imidlertid bytter slike systemer fremdeles ut programvare manuelt, selv om mer transparent enn i frittstående systemer, ved å kreve at individuelle brukere eller brukergrupper aktivt velger å prosessere ved å benytte den nye eller reviderte versjon av programvaren eller ikke. Dette valg kan utføres av brukere ved å modifisere sammensetningen av programvare som skal benyttes av prosesser som opererer under deres individuelle brukeridenta. Valget forblir tilgjengelig for brukere under en fiksert tidsperiode, vanligvis målt i uker eller måneder, i hvilken tidsperiode programvaren migrerer opp flere nivåer i sammensetnings-strukturen etter vellykket drift på hvert foregående nivå uten motsetninger. Når toppnivået i sammensetningen nås, erklæres programvaren "i drift" og eldre versjoner er ikke lenger tilgjengelige for brukere av systemet. Innsetting av ny programvare i systemet, så vel som dens migrasjon opp de forskjellige nivåer, kontrolleres av en prosess med konfi-gurasjonsstyring - en manuell prosess med rapportering, ak-septering, ettersporing av programvareversjoner på hvert nivå og implementering av aksepterte endringer.
Som med fremgangsmåtene som brukes til å oppgradere programvare på batch- eller frittstående systemer, er det vel-kjente ulemper med å inkorporere ny eller modifisert programvare i et system på denne måte. Det er hovedsakelig et manuelt, arbeidsintensivt system som er komplekst og tid-krevende. Det gir kontrollen over om og i hvilke tilfelle systemet vil operere med visse nye programvarer til brukeren uten noe midler for å utføre gradvis, begrenset, direk-tekoblet bruk slik at feil ikke sprer seg eller umiddelbart påvirker alle pågående operasjoner. Fremgangsmåten for å kontrollere tilgang for ny eller revidert programvare er direkte forbundet og begrenset til den enkelte bruker som eksekverer programmet.
I det typiske kommunikasjonssystem i bruk i dag, er problemet med å bytte programvare eller deler av programvare enda vanskeligere. Selv om slike systemer ikke rett kan kalles
batch- eller frittstående systemer, må driften også stanses når det gjøres en programvareforandring. Den nye programvare blir så lastet opp og dataene, sammen med den gamle programvare, overføres til den nye programvaren. Mens denne
overføring skjer, er systemet fullstendig ute av drift. Denne perioden kan vare så lenge som en time, hvilket gjør det nødvendig å legge programvareendringer til tider med
lav driftstrafikk. Selv da er en time nedtid i et kommuni-kasjonssvitsjesystem en meget lang og kostbar periode fordi ingen samtaler kan prosesseres i denne tiden og ingen behov for nødkommunikasjon i denne perioden kan betjenes.
Problemet med å forandre programvare under eksekvering innen et datamaskinsystem, blir mer komplisert når hele eller en del av programvaren krever linking. Vanligvis må separate deler av programvaren i slike systemer utvikles og re-kompileres separat. Så må alle delene som interopererer re-linkes for eksekvering. Det er også nødvendig å frembringe og opprettholde symboltabeller som tilveiebringer informasjon om alle eksterne symboler brukt av programvaren. Lin-keprosessen frembringer informasjonen for lagring i tabellen og identifiserer uløste henvisninger. Når en del av programvaren av en eller annen årsak modifiseres, må sannsynligvis symbolinformasjonen også endres. Derfor må enhver symbolinformasjon fjernes, eller den vil bringe med seg prosessorfeil forårsaket av ukorrekt symbolhenvisning.
En teknikk, beskrevet i US-patentsøknad nr. 5,410,703 & 5,555,418, innlevert 1. juli 1992 i navnet Nilson et al., med tittel "Changing Software During Computer Operations", og overdratt til Telefonaktiebolaget L M Ericsson, herved tatt inn som referanse, beskriver et system og en fremgangsmåte for å vinne over noen av begrensningene ved å endre programvare "på direkten". Dette system tilveiebringer installasjon av ny programvare i lagrene til telekommu-nikas j onssystemet sammen med, og i tillegg til, den gamle programvare. I dette system blir eksisterende trafikk i datamaskinsystemet til å begynne med prosessert av den gamle programvare, og testtrafikk rutes gjennom svitsjen for prosessering av den nye programvare. Deretter, hvis testtrafikken behandles med hell av den nye programvare, blir en del av den virkelige trafikk selektivt rutet gjennom den nye programvare med resten av den virkelige trafikk fremdeles behandlet av den gamle programvare. Skulle den utvalgte trafikk behandles tilfredsstillende av den nye programvare, blir all trafikk svitsjet over til den nye programvare. Så snart prosesseringen av alle samtaler som behandles av den gamle programvare har blitt fullført, blir den gamle programvare ikke lenger benyttet av systemet og kan fjernes.
Dette beskrevne system sørger for velsmurt verifisering av ny og modifisert programvare. Det tillater data å flyte gjennom den nye programvare på en gradvis og kontrollert måte, likevel som en del av det arbeidende operasjonssys-tem. Systemet gir tidlig deteksjon av feil og uoverensstem-melser med liten eller ingen påvirkning av den virkelige drift av et telekommunikasjonssvitsjesystem, fordi dataene som til å begynne med rutes til den nye programvare bare er testdata generert av systemet. Hvis telekommunikasjonssys-temet, ved prosessering av testdata, detekterer en feil, blir det ikke dirigert ytterligere trafikk til den nye programvare, slik at forstyrrelsene til det samlede systems trafikk blir minimalisert, til og med hvis den nye programvare har prosessert virkelige data.
Dette beskrevne system flytter også over trafikk fra den gamle programvare til den nye programvare på en gradvis måte. Det beskrevne system har evnen til å tillate transaksjoner som begynte prosessering med den gamle programvare å fullføre sin prosessering bare med bruk av den gamle programvare. Bare transaksjoner som tok til etter installasjo-nen av den nye programvare, vil bli prosessert av den nye programvare. Dette aspekt ved det beskrevne system resulterer i bare minimal forstyrrelse for brukere under en over-gangsfase fra en viss gammel programvare til dens utbytting eller utbygging med ny programvare. Ytterligere minimalise-rer dette aspekt mengden av data som krever konvertering for og/eller overføring til et annet sett med programvare enn den som den opprinnelig ble prosessert med.
Andre forsøk på å løse i det minste noen av problemene forbundet med å oppdatere programvare i datamaskinsystemer i drift har fokusert på forskjellige aspekter som bare repre-senterer en del av problemet som hele, særlig emnet linking. For eksempel er det i US-patentsøknad nr. 5,297,285 innlevert 19. juli 1991, med tittel "System for Dynamically Linking Modular Portions of Computer Software" inneholdende en oppfinnelse av Anders Abrahamson og Lars Holmqvist og overdratt Telefonaktiebolaget L M Ericsson, beskrevet et system for dynamisk linking av programvare i kjøretid (run-time). Dette system involverer imidlertid et komplekst system av indirekte adressering som krever bruk av enten et spesialisert eller utvidet operativsystem og/eller en spe-sialkompilator. Dette system har flere andre begrensninger, inkludert behovet for et ikke-standard operativsystem. Videre vil dette system ikke arbeide med standard applika-sj onsprogramvare.
Annen lignende teknikk har blitt diskutert i forskjellige publikasjoner. For eksempel en artikkel med tittel "Future Documents" publisert i BYTE MAGAZINE vedrørende objektlin-king og innbygging (embedding), mens US-patent 4.791.550 til Stevenson et al. vedrører linkpekere og US-patent 4.667.54 6 til Freeman et al. behandler inntrengning i ube-skyttede minneområder. Ingen av disse referanser beskriver løsninger på problemene diskutert over.
Det vil derfor være høyst nyttig for telekommunikasjonsin-dustrien å effektivt kunne utføre dynamisk kjøretidslinking mellom separate opplastede programenheter i et datamaskinsystem. Systemet ifølge foreliggende oppfinnelse tilveiebringer en slik fremgangsmåte.
Oppfinnelsen i sammendrag
Systemet og fremgangsmåten i henhold til den foreliggende oppfinnelse kjennetegnes av de trekk som er nevnt i de ka-rakteriserende deler av de uavhengige krav.
Systemet ifølge foreliggende oppfinnelse omfatter et system for dynamisk å binde programvaremoduler mellom to eller flere separate opplastbare programvareapplikasjoner. Dette aspektet ved systemet ifølge foreliggende oppfinnelse omfatter den oppfinneriske kombinasjon av en linket prosedyrekallmekanisme med evnen til å utføre dynamisk kjøretids-binding mellom separat opplastbare programenheter i et datamaskinsystem.
I et aspekt omfatter systemet ifølge foreliggende oppfinnelse en linket prosedyrekallmekanisme som omfatter en trader innen operativsystemkjernen for å tillate et grensesnitt mellom forskjellige programvareenheter. Denne linkede prosedyrekallmekanisme brukes også til å utføre mellomkob-lingen (inter linking) og bindingen av gamle og nye programvareenheter i kjøretid. Ved benyttelse av denne linkede prosedyrekallmekanisme i systemet ifølge foreliggende oppfinnelse, frembringes den nødvendige grensesnittspesifikasjon ved bruk av et annet aspekt ved systemet ifølge foreliggende oppfinnelse, et spesialisert språk referert til som et objektorientert grensesnittbeskrivelsesspråk (ELIN) som beskrevet i ELIN Reference Manual, opphavsrettslig be-skyttet 6. november 1991 av Ellemtel Utvecklings Aktiebo-lag, og i US-patentsøknad nr. 5,546,584, med tittel "System & Method for Establishing Communications Protocols between Application Programs" innlevert 1. juli 1992 i navnet Lun-din et al. og overdratt til Telefonaktiebolaget L M Ericsson, heri inntatt som referanse. Dette språk inneholder spesielle konstruksjoner spesielt laget for utvikling av grensesnitt for det linkede prosedyrekallaspekt ved systemet ifølge foreliggende oppfinnelse. Fordi disse grense-snittspesif ikasj oner inneholder attributter understøttet av et objektorientert paradigma, kan det lett oppnås polymorfisme og dynamisk binding av objekter med en felles basal grensesnittspesifikasjon.
I et annet aspekt omfatter systemet ifølge foreliggende oppfinnelse en mekanisme ved hvilken programenheter kan konstrueres og senere modifiseres separat i et fungerende (running) system uten å forårsake noen forstyrrelse for de pågående operasjoner i datamaskin- eller telekommunika-sjonssystemet som det opererer i. Ifølge dette aspekt konstrueres og kompileres programenhetene separat ved bruk av en språkuavhengig grensesnittspesifikasjon. Dette aspekt tillater programenheter å modifiseres og endres uavhengig så lenge grensesnittene forblir uforandret. Dette aspekt ved systemet ifølge foreliggende oppfinnelse gir den ytterligere fordel av å eliminere behovet for å lagre symbolinformasjon for bruk ved linking siden bindingen skjer i kjø-retid.
Ved enda et aspekt ved systemet ifølge foreliggende oppfinnelse, blir linkede prosedyrekall (LPC) objekter frembrakt og manipulert på en måte som ligner den for objekter av lokale klasser i en objektorientert paradigma. Dette aspekt ved den linkede prosedyrekallmekanisme er transparent for programmererne i systemet. Transparensen oppnås, i dette aspekt av systemet ifølge foreliggende oppfinnelse, gjennom automatisk generering av kode som utfører kjøretidsbinding-en i samsvar med grensesnittspesifikasjonen. Dette aspekt ved foreliggende oppfinnelse gir den fordel at det kan brukes standard språkkompilatorer, uten å kreve noen utvidel-ser, og uten behov for å modifisere LPC-modellen.
Ifølge enda et aspekt, omfatter systemet ifølge foreliggende oppfinnelse et sett av dirigeringspunkter som brukes til dynamisk å dirigere transaksjoner (også kalt "tråder" eller "hendelsesrekker") innen det opererende system til enten
nye eller gamle versjoner av en modifisert programvareenhet. Systemet gjennomfører den dynamiske dirigeringen ved et antall midler, inkludert analyse av meldinger adressert ved funksjonstittel, hvilket gjør det mulig å dirigere meldinger til enten en prosess som eksekverer en ny versjon av en programvareenhet eller til en prosess som eksekverer en gammel versjon. En annen type dirigeringspunkt er dynamisk kjørebinding (f.eks. linkede prosedyrekall) mellom programvareenheter som gjør det mulig innen en prosess å eksekvere en ny eller en gammel versjon av en programvareenhet.
Slik det lett vil forstås av fagfolk på området, vil prinsippene og aspektene ved den foreliggende oppfinnelse kunne . utnyttes til å forbedre kjøretidskonverteringen av programvare ved et antall datamaskinanvendelser forskjellige fra telekommunikasj onssvitsj esysterner.
Kort beskrivelse av tegningene
For forståelse av foreliggende oppfinnelse og ytterligere trekk og fordeler derved, kan det nå vises til den følgende beskrivelse, satt i sammenheng med de medfølgende tegninger hvor: Fig. IA - IB er skjematiske illustrasjoner av et tidligere kjent system for å kontrollere introduksjonen av ny eller modifisert programvare i et programvaresystem i drift, Fig. 2 er en skjematisk representasjon av måten programvareblokker dynamisk kan linkes ifølge oppfinnelsen i en pa-tentsøknad nevnt ovenfor som er under behandling, Fig. 3 er et flytskjema som illustrerer prosessen med å endre programvare i kjøretid i samsvar med oppfinnelsen i den ovenfor nevnte patentsøknad under behandling, med tit-telen "Changing Software During Computer Operations", Fig. 4 er et blokkdiagram som illustrerer den måte objekt-operasjoner adresseres på i programvaren til systemet iføl-ge foreliggende oppfinnelse, Fig. 5 er et blokkdiagram som illustrerer på hvilken måte programvaren adresseres i systemet ifølge foreliggende oppfinnelse, Fig. 6 er et blokkdiagram som illustrerer den måten programvaren kan adresseres på ved hjelp av traderen i systemet ifølge foreliggende oppfinnelse, Fig. 7 er et illustrativt diagram av den måten et objektorientert grensesnittbeskrivningsspråk brukes til å implementere systemet ifølge foreliggende oppfinnelse, og Fig. 8 er et skjema som illustrerer visse aspekter ved systemet ifølge foreliggende oppfinnelse.
Detaljert beskrivelse
Systemet ifølge foreliggende oppfinnelse benytter i noen aspekter prinsipper fra objektorientert programmering. Objektorientert programmering involverer essensielt fire elementer: Klasser, objekter, eksempelvariabler (eller data-elementer som gjennomført i C++) og metoder (eller elementfunksjoner i C++). En klasse er enkelt en sjablon brukt til å definere objekter, som er eksempler på klassen som de er frembrakt fra. Klasser har to typer komponenter: Eksempelvariabler og metoder. Eksempelvariabler tjener som dataele-menter og metoder tjener som funksjoner, dvs. de definerer et objekts oppførsel. Eksempelvariabler og metoder kan kom-bineres i et enkelt felles objekt ved tiden for eksekvering. Det vil si at et objekt innkapsler et eksempel på va-riablene som kan manipuleres ved å bruke de kombinerte metoder. Slik utføres programmering med fokus på objekter, heller enn på funksjonene eller oppgavene som skal utføres.
Visse teknikker ved objektorientert programmering, vel
kjente på området, er innebygget i systemet ifølge foreliggende oppfinnelse i den foretrukne implementering av systemet ifølge foreliggende oppfinnelse i programmeringsspråket C++. Slike teknikker omfatter arv, polymorfisme og innkapsling. Arv tillater en ny klasse å utvikles fra en eksisterende klasse slik at kode lett kan brukes på nytt, slik at data og kode kan adderes til en klasse eller at oppførselen til en klasse kan forandres, uten å måtte forandre den eksisterende klasse. Polymorfisme er den egenskap som tilveiebringer evnen til å bruke forskjellige typer objekter på samme måte fordi de forskjellige objekttyper deler et felles grensesnitt. Arv av grensesnitt er en egenskap som gjør det mulig å utvikle andre objekttyper fra en felles-nevner. Til slutt, innkapsling er en teknikk for å kombinere dataene og operasjonene som trengs for å prosessere dataene under et "tak". Videre tillater det evnen til å be-skytte dataene fra overhåndtagende eller unødvendig tilgang (access) og til å skjule detaljene ved dataorganiseringen.
Det vises først til Fig. IA, hvor det er illustrert et pro-gramvarekontrollopplegg benyttet i et tidligere kjent system for å bestyre introduksjonen av ny eller modifisert programvare i et programvaresystem i drift. Fig. IA illustrerer et hierarkisk sett av programvarenivåer, hvor innholdet av hvert nivå kontrolleres av medlemmer av et bedømmel-sesråd. Alle endringer av programvaren må godkjennes av dette råd før slike endringer implementeres i systemet. Ingen programvare vil bli integrert i systemet før bedøm-melsesrådet tar en formell avgjørelse om at programvaren behøves, at den har blitt tilstrekkelig testet og at den sannsynligvis ikke vil forårsake skade eller brudd i systemet .
Hierarkiet av nivåer kan bestå av flere separate hierarkier koblet sammen av en individuell bruker som har tilgang til og behov for disse nivåer eller "biblioteker" av programvare for å utfører sin funksjon. På toppen av hierarki 1 er den sanntids driftsprogramvare som typisk er mest utbredt brukt og strengest kontrollert ("AB.D"). Under dette nivå er et endringsbibliotek 2, betegnet med tilleggsbokstaven C i suffikset ("AB.DC"). Lavere nivåer av driftsprogramvare innen hierarkiet kan tilhøre forskjellige grupper av brukere innen systemet og vil bli kontrollert av bedømmelsesråd ved disse nivåer. Ny eller modifisert sanntids programvare entrer systemet, etter godkjenning, ved det laveste passende endringsnivå, dvs. et nivå som ender med bokstaven C som ved 2 og 3.
Når ny eller modifisert programvare entrer systemet, forblir den på inngangsnivået inntil en spesifisert periode har gått og programvaren ikke har produsert noen merkbare feil. Den vil så migrere til det neste, høyere, nivå. I noen tilfeller vil dette kreve forhåndsgodkjennelse av et spesifikt bedømmelsesråd, mens migrasjonen i andre tilfeller vil skje automatisk, som del av en regulær planlagt systemaktivitet. Migrasjonene er transparente for brukerne og programvaren vil være tilgjengelig øyeblikkelig ved migrasjon eller inngang i hierarkiet for brukere som har strukturert deres programvarelinking til å aksessere programvare i bibliotekene inneholdende den nye eller forand-rede programvare.
Som det også er vist i Fig. IA, kan den samme prosess repeteres og oppstå samtidig for ikke-sanntid konstruksjonstype programvare som ligger i det samme system. Den eneste for-skjell i dette tilfelle er at kontrollprosessen bestyres av et annet sett av folk og prosessen behøver ikke være så streng som for driftsprogramvare brukt generelt gjennom systemet for kritiske prosesser. Integrasjonen av programvaren skjer imidlertid på samme måte for denne konstruk-sjonsprogramvare som for driftsprogramvare. Den nye eller modifiserte programvare entrer hierarkiet ved det laveste passende endringsnivå som betegnet med en C som den siste bokstav i suffikset, som ved 4. Den migrerer så i retning oppover med tiden, med de nødvendige godkjennelser, inntil den når toppen 5 av sin del av hierarkiet. Med enten konst-ruksjons- eller driftsprogramvare, når den har migrert til det neste nivå, ligger den ikke lenger på det lavere nivå.
Avgjørelsen om å bruke den nye eller modifiserte programvare som har entret systemets hierarkistiske biblioteker er gitt til den individuelle bruker eller brukergruppe. Brukeren (e) kan velge hvilke nivåer av bibliotekene systemet skal bruke for å sammenkjede programvare for deres bruk. De kan velge å hoppe over lavere nivåer av programvaren fullstendig eller de kan helt enkelt velge å unngå det laveste endringsnivå som inneholder den nyeste og minst testede programvare. Det høyeste nivå av hver del av hierarkiet inneholder selvfølgelig hoveddelen av driftsprogramvaren i bruk.
Fig. IB illustrerer den menneskelige prosess med konfigura-sjonskontroll som pålegges programvarebibliotekshierarkiet illustrert i Fig. IA for å opprettholde kontroll over både grunnlinjen og den nye eller modifiserte programvare som introduseres i systemet daglig. Som nevnt ovenfor, entrer den nye programvare hierarkiet på det laveste passende endringsnivå etter godkjenning av bedømmelsesrådet. Hvis den nye programvaren resulterer i feil eller uoverensstemmel-ser, fjernes programvaren fra hierarkiet og returneres for ytterligere programvedlikeholdsarbeid som ved 6. Når problemene er blitt rettet opp og programvaren har blitt testet på nytt, kan den igjen, ved rådsgodkjenning, integreres i systemet på det laveste endringsnivå. Hvis ingen problemer merkes innen den tillatte faste periode, vil programvaren automatisk migrere til det neste nivå, med mindre det neste nivå krever en annen rådsgodkjenning som ved 7. Ellers vil den migrere etter en fast timeplan etter å ha blitt skikke-lig godkjent. Denne prosess vil fortsette å repeteres inntil programvaren når det høyeste nivå i denne del av hierarkiet, på hvilket tidspunkt den vil bli erklært fullt operasjonell programvare.
Det vises så til Fig. 2, hvor det er vist en skjematisk representasjon av overføringen av programvaresignalinforma-sjon innen et modulært programvaresystem i samsvar med en tidligere beskrevet oppfinnelse. En blokk av modulær programvare 11, referert til som blokk A, omfatter rekken av seksjoner inkludert programkodelistedel 12, en signalfordelingstabell 13 og en programvaresignalsendingstabell 14. I tillegg omfatter en jobbuffer 15 en rekke registre 16 i hvilke det temporært lagres programvaresignaler som venter på prosessering av den sentrale prosessor, som er nødvendig for å fremme disse signaler til en forespørrende blokk av programvare, for eksempel. En annen programvareblokk, blokk B 17, inkluderer også en programkodelistedel 18 og en signalfordelingstabell 19. Den representerte utførelse av oppfinnelsen inkluderer også en global signalfordelingstabell 20 i hvilken det opprettholdes en listing av alle lokale signalnummer for de bestemte signaler inneholdt i hver blokk av programvare lastet inn i systemet.
Som kort diskutert ovenfor, er den globale signalfordelingstabell 20 et essensielt element for å opprettholde linkingsadressene blant forskjellige moduler av programvare. Den globale signalfordelingstabell 20 opprettholder kryssreferansene mellom de globale signalnummer korresponderende til bestemte signaler som sendes fra en modul eller blokk til en annen, og de lokale signalnummer korresponderende til hvert av disse signaler innen hver individuell blokk i systemet. Når en blokk av programvare lastes inn i systemet, blir den del av den globale signalfordelingstabell 20 som korresponderer til denne blokk skrevet på nytt for å inkludere et lokalt signalnummer for hvert signal som er inkludert i blokken av programvare. Dette gjøres konven-sjonelt ved kombinere det globale signalnummer for dette spesielle signal med blokknummeret til programvareblokken som inneholder dette signal gjennom en eksklusiv-eller-prosess eller en annen teknikk for å kombinere. Når så en programvareblokk fjernes fra systemet, modifiseres eller utvikles på en eller annen måte som resulterer i endringer på de individuelle signaler innen blokken, må denne del av programvaresignalfordelingstabellen skrives på nytt for å reflektere det nye innhold av signaler innen blokken, og en ny beregning av lokale signalnummer for hver av disse signaler innen blokken.
Som videre illustrert i Fig. 2, sendes et programvaresignal Sl fra blokk A 1 til blokk B 17. Blokk B 17 refereres til som den mottagende blokk, mens blokk A 11 vises til som den sendende blokk. Blokknummeret til den mottagende blokk er også vist til som BNR. Systemet skal sende det ønskede signal Sl til den mottagende blokk og først oppnå det globale signalnummer for signal Sl ved å aksessere signalsendings-tabellen 14 av blokk A 11 ved hjelp av dens adresse omfat-tende programstartadressen til blokk A 11 (PSAA) pluss ver-dien til signalsendingspekeren (SSP). Når det globale signalnummer for Sl er funnet, lastes det direkte inn i et re-gister 16 innen jobbuffer 15 og venter på overføring til blokk B i samsvar med prioriteringsprotokollene til den sentrale prosesseringsenhet og prioriteten gitt det bestemte signal som overføres. Under dette tidsrommet ble informasjonen beholdt i form av det globale signalnummer til Sl og blokknummeret til den mottagende blokk. Så snart signal-overføringsoperasjonen har steget til et tilstrekkelig pri-oritetsnivå til at overføringen blir utført, aksesserer systemet den globale signalfordelingstabellen 20 for å hen-te det lokale signalnummer av Sl i blokk B 17. Dette oppnås ved å entre den globale signalfordelingstabell 20 med adressen funnet ved å ta det globale signalnummer og eksklu-siv-eller'ere denne verdi med blokknummeret BNR. I denne tabellen ved denne adresse finnes det lokale signalnummer for Sl i blokk B 17, den mottagende blokk.
Når det lokale signalnummer for Sl i blokk B 17 er funnet, vil så systemet entre blokk B 17 ved å lokalisere instruksjonsadressen, IA 21, i blokk B 17 hvor signalet skal entres. Dette gjøres ved å finne fra signalfordelingstabellen 19 av blokk B 17, ved å ta programstartadressen av blokk B 17, (PSAB) minus det lokale signalnummer i blokk B 17, for å lese instruksjonsadressen 21. Når instruksjonsadressen 21 er funnet, entres signalet Sl inn i blokk B 17 og overfø-ringen er fullført. Deretter begynner instruksjonen lokalisert ved IA 21 å eksekveres.
Et punkt må holdes i mente i forbindelse med bruken av dette beskrevne system. Ved modifisering av kode som påvirker et signalentringspunkt i en blokk, må det holdes i mente at dersom datastrukturene modifiseres, må kall på denne nye eller modifiserte kode nå gamle parameterverdier, f.eks. signaldata medfølgende signalet i jobbufferen som inneholder adresser og/eller data i formatet til datastrukturen som ble benyttet før modifisering. På den annen side, hvis blokken ved tidspunktet for ny opplasting av den nylig modifiserte programvareblokk har returadresser, blir de lokale signalnumre på returadressestakken som har blitt modifisert som mellom den gamle og nye' versjon oppdatert av driftssystemet.
Det vises så til Fig. 3, hvor det er vist et flytskjema som illustrerer den glatte modifiseringsmetode for overføring fra en gammel programvareversjon til en ny programvareversjon. Særlig gjelder det at systemet på forhånd antar at eksisterende programvare aktivt kjører i systemet og begynner ved blokk 30, med innlastingen av en ny versjon av programvaren inn i minnet. Ved 32 kopierer systemet dataene med deres endringer i den nye versjon, og linker dem til den nye programvaren. Ved 34 begynner systemet å kjøre testkall med den nye programvaren, og normal trafikk fortsetter å kjøre i systemet med den gamle programvare og de gamle data. Ved 36 spør systemet "fungerer den nye programvare på testtrafikken?". Hvis ikke, går systemet videre til 38, ved hvilket punkt den nye programvaren og databasen fjernes fra systemet og prosedyren ender ved 40. Hvis den nye programvare fungerer på testtrafikken ved 36, går systemet videre til 42, ved hvilket punkt det kjører prøver på virkelig trafikk med den nye programvare, mens resten av den normale trafikken holdes i gang med den gamle programvare og gamle data. Så, ved 44, spør systemet igjen om den nye programvare fungerer på prøvetrafikken eller ikke. Hvis ikke, går systemet videre til 38 og den nye programvare og database fjernes for å avslutte prosessen. Hvis imidlertid den nye programvaren prosesserer prøvetrafikk vellykket ved 44, går systemet videre til å kjøre alle fremtidige samtaler med den nye programvare og dataene ved 46. Deretter, ved 48, spør systemet igjen om den nye programvaren fungerer eller ikke, og hvis ikke, går det videre til 38 for å fjerne den nye programvare og stopper ved 40. Hvis den nye programvare fungerer ved å kjøre den normale trafikk i systemet ved 48, spør systemet om alle gamle samtaler har blitt fullført eller ikke innen systemet ved 50, og hvis ikke, spør det om tidsbegrensningen for utskiftingen er ut-løpt ved 54, og, hvis ikke, fortsetter å: (1) kjøre alle nye samtaler med den nye programvare og (2) kjøre alle gamle samtaler med den gamle programvare ved 4 6 inntil et ja mottas ved 50 eller tiden har løpt ut ved 54. Hvis tiden har løpt ut ved 54, vil systemet avslutte eller overføre alle gjenværende samtaler til den nye programvare ved 56 og gå videre til 52. Deretter går systemet videre til 52 og den gamle programvare fjernes sammen med de gamle data, og systemet har utført en svitsj under kjøretid fra gammel programvare til ny programvare uten å sette i urimelig fare eller forsinke eksisterende trafikk innen telekommuni-kas j onssvitsj en .
Ved effektueringen av knyttingen av individuelle samtaler til forskjellige blokker av programvare, slik som i eksemplet hvor ny telekommunikasjonsprosesseringsprogramvare, hvis først testet med testsamtaler før normale samtaler re-direktes fra den gamle programvare til den nye, kan systemet ifølge foreliggende oppfinnelse visualiseres som inneholdende en samtaleidentifikasjonskategori (ID for Cali Identification category) og en peker ID kategori. For hver samtaleadresse innen systemet som er en testsamtale, gis det en peker til ny programvare, mens for alle samtale-ID'er inneholdende en normal identifikasjon, gis pekeren til den gamle programvare. Bruken av slike pekere illustrerer metoden ved hvilken systemet ifølge foreliggende oppfinnelse er i stand til korrekt å dirigere både ordinær, virkelig trafikk og testtrafikk til den korrekte versjon av programvaren.
Mens dette er den generelle forenklede fortolkning av hvordan den nye og gamle programvare adresseres innen systemet ifølge foreliggende oppfinnelse, brukes det i virkeligheten detaljerte linkede prosedyrekallmekanismer for å frembringe dynamisk binding under kjøring mellom separat opplastede programenheter. Det vil si at når en programenhet byttes ut i eksemplet diskutert ovenfor, vil gammel og ny versjon av programvaren eksistere sammen i en tid inntil den nye versjon kan verifiseres som korrekt og aktiviteter som eksekveres i den gamle versjon kan avsluttes som beskrevet ovenfor. Systemet ifølge foreliggende oppfinnelse benytter handling (dvs. byttehandel, engelsk trading. OA) som et middel til å aksessere programvaren gjennom et grensesnitt via det linkede prosedyrekall. Ved opplasting offentliggjø-res alle grensesnitt som er tilgjengelige for det linkede prosedyrekall til en traderfunksjon i kjernen. Hvert grensesnitt offentliggjøres med sin identitet og en adresse som refererer til en metode som frembringer et objekt fra grensesnittet. Bindingen mellom programvareversjonene gjøres under kjøring, og hver gang et objekt frembringes for et bestemt grensesnitt, rettes det en anmodning til traderen for adressen til frembringelsesmetoden som så kalles og returnerer en objektpeker til det frembrakte objekt.
Det vises så til Fig. 4 hvori det er vist at hver operasjon på et objekt av klasse X 60 kalles indirekte gjennom objek-tet ved de følgende trinn: (1) objektpekeren 66 adresserer objektets dataområde, (2) på et forhåndsbestemt offset fra begynnelsen av objektområdet, kan adressen til en opera-sjonstabell 68 finnes 62 (denne tabell 68 er felles for alle objekter av én type), og (3) adressen hvor programkoden til operasjonen starter kan finnes i operasjonstabellen 68 på et offset korresponderende til den valgte operasjon. Fordi plasseringen av adressene i operasjonstabellene innen objektdataene og rekkefølgen ved hvilken adressen i operasjonstabellene lagres er fast og kjent, kan operasjoner kalles uten assistanse fra traderen. En slik operasjon på et grensesnitt som kan kalles uten traderen, er en operasjon for å slette et frembrakt objekt.
Bruk av disse operasjonstabeller gir muligheten til å oppnå polymorfisme, et konsept som kan implementeres ved bruk av, for eksempel, programmeringsspråket C++ og dets konstruksjon av virtuelle tabeller. Polymorfisme, som betyr "med mange former", er en teknikk med hvilken oppførselen til en komponent som deles av forskjellige objekter kan endres. Med andre ord, en komponent kan se ut som den samme i alle tilfeller, men kan ha evnen til å opptre på noe forskjellig måte i forbindelse med forskjellige objekter som den er as-sosiert med. Polymorfisme er nyttig ved at det tillater frembringelse av familier av objekter som er beslektet, dvs. de har et felles opphav eller basis, men de kan opptre forskjellig i forskjellige situasjoner. Dette tillater hvert objekt innen en familie å ha metoder eller funksjoner med identiske navn selv om den reelle kode for hvert objekts metoder kan være vidt forskjellig. Systemet ifølge foreliggende oppfinnelse benytter polymorfisme, så vel som andre prinsipper ved objektorientert programmering. Systemet ifølge foreliggende oppfinnelse iverksetter og utvider imidlertid prinsippene på en ny og meget nyttig måte, for å oppnå dynamisk, transparent mellomkobling av forskjellige versjoner av programvare under eksekvering.
Det vises så til Fig. 5, hvori det er illustrert det faktum at den linkede prosedyrekallmekanisme benyttet i foreliggende oppfinnelse uttrykker konseptet av en trader 80 inneholdt innen en kjerne 82 som gir muligheten til et grense-snittforhold mellom et par programvareenheter 84 og 86, som respektivt inneholder en klientklasse 88 og en serverklasse av objekter 90. Fig. 5 illustrerer i detalj de trinn som kreves for å frembringe objekter innen systemet som også vist i Fig. 4 .
Objekter er eksempler i kjøretid på klasser som inneholder definisjoner av både data og funksjoner innen en enkelt pakke eller enhet. Fordi de er i stand til å inneholde både data og kode, kan de fungere som miniatyr, uavhengige programmer. De kan derfor brukes som byggeblokker til å frembringe mer komplekse programmer uten å måtte utvikle på nytt den nødvendige kode for disse funksjoner. Fordi de kan vedlikeholdes og modifiseres uavhengig, blir vedlikehold og revisjon forenklet.
En klasse er en sjablon som brukes til å definere et objekt, og et objekt er et eksempel i en klasse. En klasse inneholder to komponenttyper, eksempelvariabler, dataele-menter og -metoder eller elementfunksjoner. For å under-støtte programmerere som utvikler programmer som spiller klientrollen i datamaskinsystemet, blir en klientklasse au-tornatisk generert gjennom bruk av en grensesnittspesifikasjon. Den genererte klientklasse virker som en type agent for serverklassen. Klienten i systemet kaller operasjoner fra klientklasse objekter for å sikre at kall overføres til programvareimplementeringen som befinner seg i serverklassen. Derfor finnes all kode vedrørende den dynamiske bin-dingsfunksjon i klientklassen.
Klassedeklarasjoner kontrollerer hvordan kompilatoren lag-rer adressene i objektdataene og i hvilken rekkefølge adressene i operasjonstabellene legges frem. Noen klassedek-laras joner genereres automatisk av systemet. Når et objekt skapes innen systemet, kan dets "skapelsesmetode" lokalise-res gjennom en anmodning til traderfunksjonen 8 0 av opera-sjonssystemet lokalisert innen kjernen 82. Traderen 80 inneholder all grensesnittinformasjon for alle klasser innen systemet som er tilgjengelige ved linkede prosedyrekall, dvs. den inneholder informasjon for hvert objekt om hvilke andre objekter det er tilgjengelig for eller til.
Diagrammet i Fig. 6 illustrerer måten en prosess kan linkes under kjøring ved linket prosedyrekall til ved å bruke en
ny eller gammel programvareenhet. Traderen 80 innen kjernen 82 kan rette eksekveringen av programvareenhet 100 mot enten den gamle programvareenhet 102 eller den nye programvareenhet 104. Under utførelsen av utskiftingen, får serverklassene fra både den gamle og den nye versjon hver sitt
grensesnitt offentliggjort i traderen 80. Traderen 80 inneholder to adresseposter for hvert element, en for den gamle programvareenhet 102 og en for den nye programvareenhet 104. Prosesser frembrakt før utskiftingen vil fortsette å bruke den gamle programvareenhet 102 og dens serverklasser, mens prosesser frembrakt under og etter utskiftingen kan dirigeres til å bruke den nye programvareenhet 104 og dens serverklasser.
Etter at utskiftingen er fullført og aktiviteter innen den gamle programvareenhet 102 har opphørt, kan den gamle programvareenhet 102 fjernes fra minnet og grensesnittene offentliggjort av serverklassene i den gamle programvareenhet 102 kan trekkes tilbake. Hvis et forsøk på å trekke tilbake disse serverklasser fra minnet gjøres før alle prosesser innen den gamle programvareenhet er fullført, genererer systemet et unntakskall fra kjernen 82. En unntakshand-lingsprosess i systemet gir så den ikke fullførte prosess anledning til å innrette seg og benytte den nye programvareenhet 104 eller ellers å avslutte.
Oppfinnelsen benytter delt (shared) minne for å lagre den eksekverbare programkode inneholdt i programvareenhetene som gjør det mulig for alle prosesser i prosessorene å eksekvere programkoden i dette delte minne. Dette betyr at aktiviteter innen forskjellige prosesser innen en prosessor ikke må kopiere og relokere programkode når de utfører binding under kjøring. Den dynamiske kjørebinding (eller linket prosedyrekall) er derfor en meget rask og sanntids effektiv mekanisme siden det ikke kreves relokering eller ko-piering i kjøretid.
En av fordelene ved å bruke tradermekanismen for dynamisk binding i kjøretid er at programvaremodulene som inneholder en klientdel av et grensesnitt, ikke må modifiseres når serverdelen inneholdt i en annen programvaremodul blir end-ret. Det vil si at ingen referanser til serverdelen må endres så lenge grensesnittspesifikasjonen er uendret.
Ved definisjon av en unik grensesnittspesifikasjon i gren-sesnittbeskrivelsespråket ELIN, som beskrives nedenfor, blir et unikt nummer generert frakoblet (off-line) det grensesnitt som separerer det fra alle andre grensesnitt. Dette nummeret brukes i sann tid av serverdelen for å of-fentliggjøre et grensesnitt i traderen og av klientdelen ved den dynamiske kjøretidsbinding gjennom tradermekanismen. Bruk av dette nummer istedenfor en streng som inneholder det unike grensesnittnavn gjør algoritmen for å finne serverdelen av et grensesnitt mer effektiv i sann tid. Algoritmen for å finne serverdelen i tradermekanismen kan for eksempel bruke nøkkeltransformering (hash technic) eller oppslagstabell (index table), hvilket gjør den nesten så effektiv som statisk binding av kode, men har den fordel at programvaremoduler kan endres på en enkel måte uten å forstyrre pågående aktiviteter som bruker gammel programvare.
Ved benyttelse av den linkede prosedyrekallmekanisme ifølge foreliggende oppfinnelse, skrives grensesnittspesifikasjonen i et objektorientert grensesnittbeskrivelsesspråk (ELIN). I dette språk er det en spesiell konstruksjon (ADT) som er særlig rettet mot spesifikasjon av linkede prosedyrekallgrensesnitt. En ADT i ELIN-språket er en spesifikasjon av grensesnittet tilveiebrakt av objekter av bestemte typer. Disse objekter er vel egnet til å implementeres som eksempler av en klasse hvis det benyttes et objektorientert programmeringsspråk. Spesifikasjonen av et linket prosedyrekallgrensesnitt i ELIN-språk omfatter den følgende informasjon:
(a) et navn på spesifikasjonen,
(b) andre grensesnitt brukt som basis for dette navn, (c) en eller flere konstruktører (brukt til å skape
dette navn), og
(d) null eller flere metodespesifikasjoner, som hver består av et metodenavn, argumenter, returtype og unntak.
Angitt nedenfor, i kode, er et eksempel på en grensesnitt-spesif ikasj on som kunne brukes som del av denne linkede prosedyrekallmekanisme og som beskriver et grensesnitt til objekter av en type kalt Stack:
ADT Stack IS
BASE
TelecomObj ect;
METHODS
CONSTRUCTOR (IN size Int) ;
push (IN data Int);
pop () RETURNS Int;
END ADT Staes-
te) 1992 Telefonaktiebolaget L M Ericcson
Denne grensesnittspesifikasjon definerer en ADT kalt stack, idet basis-ADT'en kalles "TelecomObject". Objekter av denne ADT kan akseptere prosesser eller meldingskall fra de lis-tede funksjonselementer. Å ha en basis identifisert for denne ADT indikerer at det er en annen spesifikasjon av denne type ADT som kalles TelecomObject. Denne basis-ADT har også visse spesifikke metoder som den aktuelle ADT, som et eksempel på basis-ADT'en, vil arve. Funksjonselementene eller metodene spesifisert i ADT-definisjonen over er i tillegg til de spesifisert i basis-ADT'en. I sum omfatter ovenstående kode en ADT-spesifikasjon som er en type gren-sesnittspesif ikasj on som kan skapes innen systemet.
Et grensesnitt kan utledes fra et annet grensesnitt som da kalles basisgrensesnittet til det utledete grensesnitt. Grensesnitt kan utledes fra mer enn ett annet grensesnitt, hvor det utledede grensesnitt arver fra operasjonene av hvert av dets basisgrensesnitt. Det utledede grensesnitt kan i tillegg deklarere sine egne tilleggsoperasjoner, selv om det ikke kan definere operasjoner som har samme navn som de som er arvet fra basisgrensesnittene. Det understrekes at arv bare påvirker grensesnittnivået, ikke gjennomfø-ringsnivået.
Som vist i Fig. 7 inkluderer systemet ifølge foreliggende oppfinnelse også et stubbkodegenereringsverktøy 112 som benyttes til å sertifisere koordineringen mellom klienten og serveren som er sammenkoblet dynamisk under kjøring gjennom et grensesnitt. Grensesnittet er spesifisert på en språkuavhengig måte, men med bruk av det objektorienterte paradigma. Stubbkodegenereringsprosessen sikrer at det oppnås en kartlegging til et av flere programmeringsspråk og i de følgende seksjoner er det en kort beskrivelse av hvordan en slik kartlegging i C++ kan utføres. Det vises til Fig. 7 hvor det er illustrert en måte som en grensesnittspesifika-sj on 110 benytter stubbgenereringsverktøyet 112 på i sammenheng med et sett av genererte filer 114 i systemet iføl-ge foreliggende oppfinnelse. Fig. 7 illustrerer spesielt den overordnede struktur av C++ kartleggingen som iverksatt i det språket. En grensesnittspesifikasjon, skrevet i språket (ELIN) som benyttes i systemet ifølge foreliggende oppfinnelse, ligner en klassedefinisjon som brukes i programmeringsspråket C++. Likeledes er mekanismen for å aksessere operasjoner gjennom objekter lignende måten som programmeringsspråket C++ behandler virtuelle funksjoner på. Derfor er kartleggingen på C++ illustrert i Fig. 7 instruktiv for operasjonen av dette aspekt av systemet ifølge foreliggende oppfinnelse.
Stubbgeneringsverktøyet 112 genererer to filer for både klientsiden og serversiden, en med suffikset ".h" (header) og en med suffiks ".cc" (code). For klienten inneholder ".h" eller "header"-filen to klassedefinisjoner. Én klasse er en eksakt kopi av den korresponderende klasse i serve-rens ".h"- eller "header"-fil. Dette sikrer kompatibilitet mellom klient og server og gjør det mulig for klienten å kalle objekter frembrakt av serveren. Denne klassekonstruk-tøren er imidlertid privat, så klassen kan ikke brukes til å frembringe automatiske objekter på stakken. Den andre klasse er den som skal brukes ved klienten som fungerer som en agent gjennom hvilken objekter frembrakt av serveren kan aksesseres.
For serversiden blir de korresponderende to ".h" (header) og ".cc" (code) filer generert av stubbgenereringsverktøyet 112. Innholdet av ".h"-filen består av en klassedefinisjon som vil sikre kompatibilitet med klienten. Dette er klassen som brukes for en basis for implementeringen. Implementeringen kan være basert direkte på den genererte klasse, eller den genererte klasse kan brukes som en basis til å utvikle andre klasser fra. ".cc"-filen inneholder et skjelett for "skapelsesmetoden" og en generert tabell med en post for hvert linkede prosedyrekallgrensesnitt hvis skapelses-metodeadresse bør registreres i traderen. Kroppen til skapelsesmetoden er ansvarlig for å skape et objekt som er kompatibelt med den genererte klasse og returnerer en peker til det nylig skapte objekt som også illustrert i Fig. 4.
Det er flere årsaker for å generere forskjellige men kompa-tible klassedefinisjoner for klient- og serversidene heller enn én delt klassedefinisjon. For det første gir det forskjellige nivåer av synliggjøring for elementer i klienten og serveren. For eksempel må en konstruktør være offentlig i serveren, men bør ikke nødvendigvis være offentlig hvis han befinner seg i klienten. For det andre kan klient- og serverprogrammer linkes sammen for testformål uten å møte problemet med navnekollisjoner hvis forskjellige klasser benyttes.
Det vises så til Fig. 8 hvor det er vist et bestemt arrang-ement av skjemaer som illustrerer visse eksemplifiserende kodeblokker og deres forhold til hverandre som benyttet i systemet ifølge foreliggende oppfinnelse. Fig. 8 illustrerer den logiske struktur av visse genererte filer og skrev-ne spesifikasjoner slik de kan implementeres i systemet ifølge foreliggende oppfinnelse. På høyeste nivå definerer felles grensesnitt spesifikasjon 120 (Common Interface Spe-cification) en ADT "X", og metodene eller operasjonene som er mulig å aksessere for objekter av denne ADT. Logisk un-derordnet denne ADT, på neste definisjonsnivå, er en spesifikasjon for en brukerenhet 122 av grensesnittspesifikasjonen 120 og en spesifikasjon for en bidragsenhet 124 av felles grensesnittspesifikasjon 120. Brukerenhetspesifikasjo-
nen 122 definerer en klient av det felles grensesnitt, ADT X. Bidragsenhetsspesifikasjon 126 definerer en server av
ADT X.
På neste logiske nivå under enhetsspesifikasjonene 122 og 124 er de genererte klassedefinisjoner respektivt for brukere og bidragsytere. Den genererte klassedefinisjon for XUser 126 illustrerer visse brukerklasser som er definert for både offentlig og privat bruk. Den genererte klassedefinisjon for XProvider 128 illustrerer visse offentlige og private definisjoner for bidragsyterdata og
-funksj oner.
Som illustrert over, gjør systemet ifølge foreliggende oppfinnelse det mulig med inkludering eller linking under kjø-ring innen en prosess til enten ny programvare eller gammel programvare på en måte som gjør det mulig for programvaren både å testes effektivt i sann tid, så vel som å erstattes glatt og transparent i et telekommunikasjonsnettverk og svitsjesystem uten oppbrudd av telekommunikasjonstrafikken innen nettverket.
Det antas følgelig at driften og konstruksjonen av foreliggende oppfinnelse vil være åpenlys fra den foregående beskrivelse. Mens den viste og beskrevne fremgangsmåte, appa-rat og system har blitt karakterisert som foretrukket, vil det fremgå klart at forskjellige endringer og modifikasjo-ner kan gjøres derpå uten å fravike ånden og hensikten med oppfinnelsen som definert i de følgende krav.

Claims (32)

1. Fremgangsmåte for dynamisk å binde en første programvaremodul (84) til en andre programvaremodul (86) i et datamaskinsystem som har et felles dataminne, en kjerne (82), den første programvaremodul og den andre programvaremodul er inkludert i henholdsvis et første programvareapplikasjonsprogram og et andre programvareapplikasjonsprogram, karakterisert ved følgende trinn: - å implementere en linket prosedyreanropsmekanisme for å rute signaler eller meldinger mellom nevnte første og andre programvaremodul, nevnte linkede prosedyreanropsmekanisme er knyttet til en traderfunksjon (80) som inkluderer en informasjonsdatabase vedrørende alle grensesnitt som er tilgjengelig for nevnte linkede prosedyreanropsmekanisme ved lasttid (loadtime), nevnte traderfunksjon er videre en del av datamaskinsystemets kjerne, - å tilveiebringe et klientgrensesnitt, nevnte klientgrensesnitt er i stand til å aksessere nevnte traderfunksjon for å skaffe til veie bindingsinformasjonen som er nødven-dig for operativ kommunikasjon med andre moduler, - å tilveiebringe et servergrensesnitt, nevnte servergrensesnitt er i stand til å aksessere nevnte traderfunksjon for å skaffe til veie bindingsinformasjon som er nødvendig for operativ kommunikasjon med andre moduler, - å sette nevnte klientgrensesnitt inn i nevnte første programvaremodul , - å sette nevnte servergrensesnitt inn i nevnte andre programvaremodul , - å laste nevnte første programvaremodul inn i nevnte felles dataminne til nevnte datamaskinsystem, nevnte første programvaremodul inneholder nevnte klientgrensesnitt, - å laste nevnte andre programvaremodul inn i nevnte felles dataminne til nevnte datamaskinsystem, nevnte andre programvaremodul inneholder nevnte servergrensesnitt, og nevnte andre programvaremodul blir lastet asynkront og uavhengig av nevnte første programvaremodul, - å sette minneadressen til nevnte servergrensesnitt inn i nevnte traderfunksjon, - å aktivere nevnte klientgrensesnitt ved å eksekvere nevnte første programvaremodul, - å aktivere nevnte servergrensesnitt ved å skaffe til veie en bestemt implementering av en signalprotokoll fra nevnte traderfunksjon ved å bruke nevnte isolerte grensesnitt, og - å substituere nevnte servergrensesnitt i nevnte første programvaremodul som erstatning for nevnte aktiverte klientgrensesnitt i løpet av eksekveringen av nevnte første programvarevaremodul, for derved dynamisk å binde sammen nevnte første og andre programvaremoduler.
2. Fremgangsmåte ifølge krav 1, karakterisert ved at den videre omfatter-følgende trinn: - å generere nevnte klientgrensesnitt og nevnte servergrensesnitt fra en felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden.
3. Fremgangsmåte ifølge krav 2, karakterisert ved at den videre omfatter følgende trinn: - å opprette nevnte felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden ved å bruke et objektorientert grensesnittbeskrivelsesspråk.
4. Fremgangsmåte ifølge krav 3, karakterisert ved at nevnte trinn med å generere nevnte klientgrensesnitt og nevnte servergrensesnitt fra en felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden videre omfatter følgende trinn: - å generere med et frakoblet stubbgenereringsverktøy, en eller flere klientobjekter og en eller flere serverobjekter fra nevnte felles grensesnittspesifikasjon, nevnte frakoblede stubbgenereringsverktøy er i stand til å bruke nevnte felles grensesnittspesifikasjon for automatisk å generere en kode for å tilveiebringe koordinasjon mellom nevnte en eller flere klientobjekter og nevnte en eller flere serverobjekter.
5. Fremgangsmåte ifølge krav 4, karakterisert ved at nevnte trinn med å generere, med et frakoblet stubbgenereringsverktøy, et eller flere klientobjekter og et eller flere serverobjekter fra nevnte felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden videre omfatter følgende trinn: - å generere en klientfil som inneholder i det minste et klientobjekt, og - å generere en serverfil som inneholder i det minste et serverobj ekt.
6. Fremgangsmåte ifølge krav 5, karakterisert ved at nevnte trinn for å generere en klientfil som inneholder i det minste et klientobjekt videre omfatter følgende trinn: - å generere en klientfil som inneholder et klientobjekt som kan kommunisere i overensstemmelse med nevnte felles grensesnittspesifikasjon med et tilknyttet serverobjekt i nevnte genererte serverfil som inneholder i det minste et serverobj ekt.
7. Fremgangsmåte ifølge krav 3, karakterisert ved at nevnte trinn med å opprette en felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden ved å bruke et objektorientert grensesnittbeskrivelsesspråk videre omfatter følgende trinn: - å opprette nevnte felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden fra nevnte basisgrensesnitt, nevnte felles grensesnittspesifikasjon overtar en eller flere bestemte fremgangsmåter for nevnte basisgrensesnitt.
8. Fremgangsmåte ifølge krav 3, karakterisert ved at trinnet med å opprette nevnte felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden ved å benytte et objektorientert grensesnittbeskrivelsesspråk videre omfatter følgende trinn: - å navngi nevnte felles grensesnittspesifikasjon, - å identifisere et eller flere grensesnitt som benyttes som baser for nevnte navngitte felles grensesnittspesifika-sj on, - å opprette i det minste en konstruktør, nevnte konstruk-tør spesifiserer den foretrukne teknikk for å opprette eksempler på objekter som forespør andre objekter ved å bruke nevnte navngitte felles grensesnittspesifikasjon, og - å opprette i det minste en fremgangsmåtespesifikasjon for å utføre funksjoner i nevnte navngitte felles grensesnitt-spesif ikas j on, nevnte fremgangsmåtespesifikasjon inneholder et fremgangsmåtenavn, argumenter, returtype og unntagelser.
9. Fremgangsmåte ifølge krav 3, karakterisert ved at trinnet med å tilveiebringe et klientgrensesnitt videre omfatter følgende trinn: - å tilveiebringe et klientobjekt, nevnte klientobjekt er i stand til å aksessere nevnte traderfunksjon.
10. Fremgangsmåte ifølge krav 3, karakterisert ved at nevnte trinn med å tilveiebringe et servergrensesnitt videre omfatter følgende trinn: - å tilveiebringe et serverobjekt, nevnte serverobjekt er i stand til å aksessere nevnte traderfunksjon.
11. Fremgangsmåte ifølge krav 10, karakterisert ved at det videre omfatter følgende trinn: - å laste, inn i nevnte datamaskinsystem, en tredje programvareapplikasjon som inneholder en tredje programvaremodul, nevnte tredje programvaremodul inneholder serverobjekter som alternerende kan kommunisere med nevnte serverobjekter satt inn i nevnte andre programvaremodul, og - å sette lokasjonen til nevnte serverobjekter som er med i nevnte tredje programvaremodul inn i nevnte traderfunksjon.
12. Fremgangsmåte ifølge krav 11, karakterisert ved at den videre omfatter følgende trinn: - å rute signaler eller meldinger originert fra en prosess som ble opprettet før lasting av nevnte tredje programvaremodul, til nevnte andre programvaremodul ved å skaffe til veie en bestemt implementering av en signaleringsprotokoll basert på nevnte felles grensesnittspesifikasjon fra nevnte traderfunksjon i nevnte kjerne.
13. Fremgangsmåte ifølge krav 11, karakterisert ved at den videre omfatter følgende trinn: - å rute signaler eller meldinger originert fra en prosess som ble opprettet i etterkant av lasting av nevnte tredje programvaremodul, til nevnte tredje programvaremodul ved å skaffe til veie en bestemt implementering av en signaleringsprotokoll basert på nevnte felles grensesnittspesifikasjon av nevnte traderfunksjon i nevnte kjerne.
14. Fremgangsmåte ifølge krav 1, karakterisert ved at nevnte informasjonsdatabase vedrørende alle grensesnitt tilgjengelig for nevnte linkede prosedyreanropsmekanisme som er inkludert i nevnte traderfunksjon videre inkluderer lastadressene til hver av nevnte grensesnitt.
15. Fremgangsmåte ifølge krav 14, karakterisert ved at den videre omfatter følgende trinn: - å generere et unikt tall som identifiserer både nevnte klientgrensesnitt og nevnte servergrensesnitt.
16. Fremgangsmåte ifølge krav 15, karakterisert ved at den videre omfatter følgende trinn: - å sette nevnte genererte unike tall i nevnte traderfunksjon, og - å sette minneadressen til nevnte servergrensesnitt inn i nevnte traderfunksjon.
17 . System for dynamisk å binde en første programvaremodul (84) med en andre programvaremodul (86) i et datamaskinsystem som har et felles dataminne, en kjerne (82), den første programvaremodulen og den andre programvaremodulen befinner seg henholdsvis i et første programvareapplikasjonsprogram og et andre programvareapplikasjonsprogram, karakterisert ved: - middel for å implementere en linket prosedyreanropsmekanisme for å rute signaler eller meldinger mellom nevnte første og andre programvaremoduler, nevnte linkede prosedyreanropsmekanisme er knyttet til en traderfunksjon (80) som inkluderer en informasjonsdatabase vedrørende alle grensesnitt som er tilgjengelig for nevnte linkede prosedyreanropsmekanisme ved lasttid, nevnte traderfunksjon er videre en del av datamaskinsystemets kjerne, - middel for å tilveiebringe et klientgrensesnitt, nevnte klientgrensesnitt er i stand til å aksessere nevnte traderfunksjon for å skaffe til veie bindingsinformasjon som er nødvendig for operativ kommunikasjon med andre moduler, - middel for å tilveiebringe et servergrensesnitt, nevnte servergrensesnitt er i stand til å aksessere nevnte traderfunksjon for å skaffe til veie bindingsinformasjon som er nødvendig for operativ kommunikasjon med andre moduler, - middel for å sette nevnte klientgrensesnitt inn i nevnte første programvaremodul, - middel for å sette nevnte servergrensesnitt inn i nevnte andre programvaremodul, - middel for å laste nevnte første programvaremodul inn i nevnte felles dataminne til nevnte datamaskinsystem, nevnte første programvaremodul inkluderer nevnte klientgrensesnitt, - middel for å laste nevnte andre programvaremodul inn i nevnte felles dataminne til nevnte datamaskinsystem, nevnte andre programvaremodul inkluderer nevnte servergrensesnitt, og nevnte andre programvaremodul blir lastet asynkront og uavhengig av nevnte første programvaremodul, - middel for å sette minneadressen til nevnte servergrensesnitt inn i nevnte traderfunksjon, - middel for å aktivere nevnte klientgrensesnitt ved å eksekvere nevnte første programvaremodul, - middel for å aktivere nevnte servergrensesnitt ved å skaffe til veie en bestemt implementering av en signalprotokoll fra nevnte traderfunksjon ved å bruke nevnte isolerte klientgrensesnitt, og - middel for å substituere nevnte servergrensesnitt i nevnte første programvaremodul som erstatning for nevnte aktiverte klientgrensesnitt, i løpet av eksekveringen av nevnte første programvaremodul, for dermed dynamisk å binde nevnte første og andre programvaremoduler.
18. System ifølge krav 17, karakterisert ved at det videre omfatter: - middel for å generere nevnte klientgrensesnitt og nevnte servergrensesnitt fra en felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden.
19. System ifølge krav 18, karakterisert ved at den videre omfatter: - middel for å opprette nevnte felles grensesnittspesifika-sj on som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden ved å bruke et objektorientert grensesnittbeskrivelsesspråk.
20. System ifølge krav 19, karakterisert ved at nevnte middel for å generere nevnte klientgrensesnitt og nevnte servergrensesnitt fra en felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden videre omfatter: - middel for å generere, med et frakoblet stubbgenererings-verktøy, et eller flere klientobjekter og et eller flere serverobjekter fra nevnte felles grensesnittspesifikasjon, nevnte frakoblede stubbgenereringsverktøy er i stand til å bruke nevnte felles grensesnittspesifikasjon til automatisk å generere en kode for å tilveiebringe koordinering mellom nevnte et eller flere klientobjekter og nevnte et eller flere serverobjekter.
21. System ifølge krav 20, karakterisert ved at nevnte middel for å generere, med et frakoblet stubbgenereringsverktøy, et eller flere klientobjekter og et eller flere serverobjekter fra nevnte felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden videre omfatter: - middel for å generere en klientfil som inneholder i det minste et klientobjekt, og - middel for å generere en serverfil som inneholder i det minste et serverobjekt.
22. System ifølge krav 21, karakterisert ved at nevnte middel for å generere en klientfil som inneholder i det minste et klientobjekt videre omfatter: - middel for å generere en klientfil som inneholder et klientobjekt som kan kommunisere i overensstemmelse med nevnte felles grensesnittspesifikasjon med et tilknyttet serverobjekt i nevnte genererte serverfil som inneholder i det minste et serverobjekt.
23. System ifølge krav 19, karakterisert ved at nevnte middel for å opprette en felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttiden ved å bruke et objektorientert grensesnittbeskrivelsesspråk videre omfatter: - middel for å opprette nevnte felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttid fra nevnte basisgrensesnitt, nevnte felles grensesnittspesifikasjon tar over en eller flere bestemte fremgangsmåter i nevnte basisgrensesnitt.
24. System ifølge krav 19, karakterisert ved at nevnte middel for å opprette nevnte felles grensesnittspesifikasjon som kommuniseres til nevnte traderfunksjon ved eller i forkant av lasttid ved å bruke et objektorientert grensesnittbeskrivelsesspråk videre omfatter: - et navn for nevnte felles grensesnittspesifikasjon, - middel for å identifisere et eller flere grensesnitt som brukes som baser for nevnte navngitte felles grensesnitt-spesif ikas j on, - middel for å opprette i det minste en konstruktør, nevnte konstruktør spesifiserer den foretrukne teknikk for å opprette eksempler på objekter som forespør andre objekter ved å bruke nevnte navngitte felles grensesnittspesifikasjon, og - middel for å opprette i det minste en fremgangsmåtespesifikasjon for å gjennomføre funksjoner i nevnte navngitte felles grensesnittspesifikasjon, nevnte fremgangsmåtespesifikasjon inkluderer et fremgangsmåtenavn, argumenter, returtype og unntagelser.
25. System ifølge krav 19, karakterisert ved at nevnte middel for å tilveiebringe et klientgrensesnitt videre omfatter: - middel for å tilveiebringe et klientobjekt, nevnte klientobjekt er i stand til å aksessere nevnte traderfunksjon.
26. System ifølge krav 19, karakterisert ved at nevnte middel for å tilveiebringe et servergrensesnitt videre omfatter: - middel for å tilveiebringe et serverobjekt, nevnte serverobjekt er i stand til å aksessere nevnte traderfunksjon.
27. System ifølge krav 26, karakterisert ved at det videre omfatter: - middel for å laste, inn i nevnte datamaskinsystem, en tredje programvareapplikasjon inneholdende en tredje programvaremodul, nevnte tredje programvaremodul inneholder serverobjekter satt inn i nevnte andre programvaremodul, og - middel for å sette lokasjonen til nevnte serverobjekter som er med i nevnte tredje programvaremodul i nevnte traderfunksjon.
28. System ifølge krav 27, karakterisert ved at det videre omfatter: - middel for å rute signaler eller meldinger som er originert fra en prosess som ble opprettet i forkant av lasting av nevnte tredje programvaremodul, til nevnte andre programvaremodul ved å skaffe til veie en bestemt implementering av en signaleringsprotokoll basert på nevnte felles grensesnittspesifikasjon fra nevnte traderfunksjon i nevnte kj erne.
29. System ifølge krav 27, karakterisert ved at det videre omfatter: - middel for å rute signaler eller meldinger som er originert fra en prosess som ble opprettet i etterkant av lasting av nevnte tredje programvaremodul, i nevnte andre programvaremodul ved å skaffe til veie en bestemt implementering av en signaleringsprotokoll basert på nevnte felles grensesnittspesifikasjon fra nevnte traderfunksjon i nevnte, kj erne.
30. System ifølge krav 17, karakterisert ved at nevnte informasjonsdatabase vedrørende alle grensesnitt tilgjengelig for nevnte linkede prosedyreanropsmekanisme som er inkludert i nevnte traderfunksjon videre inkluderer lastadressene til hver av nevnte grensesnitt.
31. System ifølge krav 30, karakterisert ved at det videre omfatter: - å generere et unikt tall som identifiserer både nevnte klientgrensesnitt og nevnte servergrensesnitt.
32. System ifølge krav 31, karakterisert ved at det videre omfatter: - å sette nevnte genererte unike tall inn i nevnte traderfunksjon, og - å sette minneadressen til nevnte servergrensesnitt inn i nevnte traderfunksjon.
NO19945053A 1992-07-01 1994-12-27 System for dynamisk kjöretidsfiksering for programvaremoduler i en datamaskinsammenstilling NO311387B1 (no)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/907,307 US5339430A (en) 1992-07-01 1992-07-01 System for dynamic run-time binding of software modules in a computer system
PCT/SE1993/000416 WO1994001818A1 (en) 1992-07-01 1993-05-11 System for dynamic run-time binding of software modules in a computer system

Publications (3)

Publication Number Publication Date
NO945053D0 NO945053D0 (no) 1994-12-27
NO945053L NO945053L (no) 1995-02-28
NO311387B1 true NO311387B1 (no) 2001-11-19

Family

ID=25423875

Family Applications (1)

Application Number Title Priority Date Filing Date
NO19945053A NO311387B1 (no) 1992-07-01 1994-12-27 System for dynamisk kjöretidsfiksering for programvaremoduler i en datamaskinsammenstilling

Country Status (14)

Country Link
US (1) US5339430A (no)
EP (1) EP0648352B1 (no)
KR (1) KR100303548B1 (no)
CN (1) CN1047450C (no)
AU (1) AU664813B2 (no)
BR (1) BR9306652A (no)
DE (1) DE69327243T2 (no)
DK (1) DK0648352T3 (no)
ES (1) ES2139663T3 (no)
FI (1) FI946193A0 (no)
GR (1) GR3032498T3 (no)
MX (1) MX9303777A (no)
NO (1) NO311387B1 (no)
WO (1) WO1994001818A1 (no)

Families Citing this family (232)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479614A (en) * 1989-09-14 1995-12-26 Fujitsu Limited Object sensor processing method and processor
JP2741994B2 (ja) * 1992-08-28 1998-04-22 富士通株式会社 ジョブ環境動的変更機能を持つ処理装置および処理方法
US5404525A (en) * 1992-09-30 1995-04-04 International Business Machines Corporation Efficient method router that supports multiple simultaneous object versions
US6209040B1 (en) * 1992-10-09 2001-03-27 Microsoft Corporation Method and system for interfacing to a type library
US5625845A (en) * 1992-10-13 1997-04-29 International Business Machines Corporation System for facilitating continuous, real-time, unidirectional, and asynchronous intertask and end-device communication in a multimedia data processing system using open architecture data communication modules
US5590347A (en) * 1992-12-07 1996-12-31 Microsoft Corporation Method and system for specifying alternate behavior of a software system using alternate behavior indicia
US5390325A (en) * 1992-12-23 1995-02-14 Taligent, Inc. Automated testing system
US5459837A (en) * 1993-04-21 1995-10-17 Digital Equipment Corporation System to facilitate efficient utilization of network resources in a computer network
US5664106A (en) * 1993-06-04 1997-09-02 Digital Equipment Corporation Phase-space surface representation of server computer performance in a computer network
JP3365576B2 (ja) * 1993-06-14 2003-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトの実行方法および装置
US5615400A (en) * 1993-06-30 1997-03-25 Apple Computer, Inc. System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers
US6430738B1 (en) * 1993-07-01 2002-08-06 International Business Machines Corporation Method and system for reversible installation of software applications in a data processing system utilizing an automated archival process
US5603031A (en) * 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US6684261B1 (en) 1993-07-19 2004-01-27 Object Technology Licensing Corporation Object-oriented operating system
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
GB9316948D0 (en) * 1993-08-14 1993-09-29 Ibm Programming aid for distributed computing systems
JPH0773050A (ja) * 1993-09-01 1995-03-17 Fujitsu Ltd プログラム間のデータ授受制御方式
US5742848A (en) * 1993-11-16 1998-04-21 Microsoft Corp. System for passing messages between source object and target object utilizing generic code in source object to invoke any member function of target object by executing the same instructions
US5548779A (en) * 1993-12-21 1996-08-20 Taligent System for providing system services for a device to a client using stack definition and stack description of a stack having top, intermediate, and bottom service objects
US5548718A (en) * 1994-01-07 1996-08-20 Microsoft Corporation Method and system for determining software reliability
US5537542A (en) * 1994-04-04 1996-07-16 International Business Machines Corporation Apparatus and method for managing a server workload according to client performance goals in a client/server data processing system
US5754855A (en) * 1994-04-21 1998-05-19 International Business Machines Corporation System and method for managing control flow of computer programs executing in a computer system
US6243765B1 (en) * 1994-04-28 2001-06-05 Nortel Networks Limited Method and apparatus for data communication
JP2580536B2 (ja) * 1994-06-02 1997-02-12 工業技術院長 オブジェクト指向言語における動的オブジェクトの管理方式
US5903754A (en) * 1994-06-21 1999-05-11 Microsoft Corporation Dynamic layered protocol stack
DE4429969A1 (de) * 1994-08-24 1996-02-29 Sel Alcatel Ag Verfahren für einen Programmpaketeaustausch in einem Mehrrechnersystem und Rechner dafür
US5682533A (en) * 1994-09-27 1997-10-28 Telefonaktiebolaget Lm Ericsson (Publ) Updating software within a telecommunications switch without interrupting existing communication and neither moving nor converting data
SE504943C2 (sv) * 1994-12-09 1997-06-02 Ericsson Telefon Ab L M Synkroniseringsförfarande som tillåter tillståndsöverföring
US5764985A (en) * 1994-12-13 1998-06-09 Microsoft Corp Notification mechanism for coordinating software extensions
US5819091A (en) * 1994-12-22 1998-10-06 Arendt; James Wendell User level control of degree of client-side processing
US6202098B1 (en) * 1995-01-04 2001-03-13 International Business Machines Corporation Method and system for object oriented notification
DE19502728A1 (de) * 1995-01-28 1996-08-01 Philips Patentverwaltung Telekommunikationsvorrichtung
CA2143488C (en) * 1995-02-27 2000-01-11 Robert Paul Duncan Dynamic link libraries without linker or loader support
US5802291A (en) * 1995-03-30 1998-09-01 Sun Microsystems, Inc. System and method to control and administer distributed object servers using first class distributed objects
EP0735472A3 (en) * 1995-03-31 2000-01-19 Sun Microsystems, Inc. Method and apparatus for conspiracy among objects
US6715148B1 (en) 1995-04-03 2004-03-30 International Business Machines Corporation Efficient method router that supports multiple simultaneous object versions
US5867713A (en) * 1995-04-05 1999-02-02 International Business Machines Corporation Committing an install plan object for the network installation of application programs
JP3590688B2 (ja) * 1995-04-05 2004-11-17 インターナショナル・ビジネス・マシーンズ・コーポレーション アプリケーションを導入するための導入計画オブジェクトを構築する方法、及びそのシステム
WO1996031823A1 (en) 1995-04-07 1996-10-10 Sofmap Future Design Co., Ltd. Data processing system and method, and computer program architecture
US5799181A (en) * 1995-04-07 1998-08-25 Sofmap Future Design, Inc. Bossless architecture and digital cell technology for computer programs
US5727212A (en) * 1995-04-12 1998-03-10 International Business Machines Corporation Object oriented device driver system for procedural device drivers
US5625804A (en) * 1995-04-17 1997-04-29 International Business Machines Corporation Data conversion in a multiprocessing system usable while maintaining system operations
US5727154A (en) * 1995-04-28 1998-03-10 Fry; Shawn C. Program synchronization on first and second computers by determining whether information transmitted by first computer is an acceptable or unacceptable input to second computer program
US5987505A (en) * 1995-04-28 1999-11-16 Fry; Shawn C. Method for emulation of terminal-resident GUI application by transmitting macros having information and command instructing the terminal how to process the information
US6212575B1 (en) * 1995-05-05 2001-04-03 Apple Computer, Inc. Extensible, replaceable network component system
US5802531A (en) * 1995-05-08 1998-09-01 Apple Computer, Inc. Method and system for embedding parts of documents and synchronizing multiple views thereof
US5664208A (en) * 1995-05-16 1997-09-02 Apple Computer, Inc. Methods and apparatuses for seamless compound document processing
US5740455A (en) * 1995-05-16 1998-04-14 Apple Computer, Inc. Enhanced compound document processing architectures and methods therefor
US5805891A (en) * 1995-07-26 1998-09-08 International Business Machines Corporation System and method for managing maintenance of computer software
WO1997008623A1 (en) * 1995-08-23 1997-03-06 Symantec Corporation Coherent file system access during defragmentation operations on a storage media
DE19533961A1 (de) * 1995-09-13 1997-03-20 Siemens Ag Verfahren zum Laden von Software in Kommunikationssystemen mit nichtredundanten, dezentralen Einrichtungen
US6332168B1 (en) * 1995-09-28 2001-12-18 International Business Machines Corporation Method of, system for, and computer program product for providing a run time subsystem for run time libraries
US6226691B1 (en) * 1995-10-02 2001-05-01 International Business Machines Corporation System, method, and article of manufacture for adding object services to a binary class in an object oriented server
US5732263A (en) * 1995-10-03 1998-03-24 International Business Machines Corporation Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time
US6684259B1 (en) 1995-10-11 2004-01-27 Citrix Systems, Inc. Method for providing user global object name space in a multi-user operating system
US6112253A (en) * 1995-10-12 2000-08-29 International Business Machines Corporation Object-oriented method maintenance mechanism that does not require cessation of the computer system or its programs
US5864862A (en) * 1996-09-30 1999-01-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for creating reusable components in an object-oriented programming environment
US6467085B2 (en) 1995-10-17 2002-10-15 Telefonaktiebolaget L M Ericsson (Publ) System and method for reducing coupling in an object-oriented programming environment
US6389483B1 (en) * 1995-10-17 2002-05-14 Telefonaktiebolaget L M Ericsson (Publ) System and method for reducing coupling between modules in a telecommunications environment
US5872973A (en) * 1995-10-26 1999-02-16 Viewsoft, Inc. Method for managing dynamic relations between objects in dynamic object-oriented languages
US6421679B1 (en) * 1995-10-27 2002-07-16 International Business Machines Corporation Concurrent patch to logical partition manager of a logically partitioned system
US5787245A (en) * 1995-11-13 1998-07-28 Object Technology Licensing Corporation Portable debugging service utilizing a client debugger object and a server debugger object
US5815653A (en) * 1995-11-13 1998-09-29 You; Lawrence L. Debugging system with portable debug environment-independent client and non-portable platform-specific server
US5956479A (en) * 1995-11-13 1999-09-21 Object Technology Licensing Corporation Demand based generation of symbolic information
US5812850A (en) * 1995-11-13 1998-09-22 Object Technology Licensing Corp. Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution
US6158045A (en) * 1995-11-13 2000-12-05 Object Technology Licensing Corporation Portable debugging services utilizing a client debugger object and a server debugger object with flexible addressing support
US5778230A (en) * 1995-11-13 1998-07-07 Object Technology Licensing Corp. Goal directed object-oriented debugging system
US5793982A (en) * 1995-12-07 1998-08-11 International Business Machine Corporation Validating an installation plan containing multiple transports and redirectors by adding data structure of the modules to the plan if the indicated transport and redirector modules are unavailable
US5790132A (en) * 1995-12-07 1998-08-04 Object Technology Licensing Corp. Image rendering system with extensible mechanism for providing visual user feedback when an image graphic is selected
US5742823A (en) * 1996-01-17 1998-04-21 Nathen P. Edwards Total object processing system and method with assembly line features and certification of results
US5822580A (en) * 1996-01-19 1998-10-13 Object Technology Licensing Corp. Object oriented programming based global registry system, method, and article of manufacture
US5838972A (en) * 1996-02-09 1998-11-17 Sun Microsystems, Inc. Method and apparatus for dynamically loading an input run-time module and an output run-time module
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6466947B2 (en) * 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6138238A (en) * 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6272559B1 (en) * 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6421704B1 (en) * 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6074434A (en) 1996-06-07 2000-06-13 International Business Machines Corporation Selection of code updates, data updates or new data for client
US5752042A (en) * 1996-06-07 1998-05-12 International Business Machines Corporation Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer
US5877768A (en) * 1996-06-19 1999-03-02 Object Technology Licensing Corp. Method and system using a sorting table to order 2D shapes and 2D projections of 3D shapes for rendering a composite drawing
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5960204A (en) * 1996-10-28 1999-09-28 J.D. Edwards World Source Company System and method for installing applications on a computer on an as needed basis
US5797016A (en) * 1996-10-29 1998-08-18 Cheyenne Software Inc. Regeneration agent for back-up software
US6003095A (en) * 1996-10-31 1999-12-14 International Business Machines Corporation Apparatus and method for demand loading a dynamic link library
US5946486A (en) * 1996-12-10 1999-08-31 International Business Machines Corporation Apparatus and method for tracing entries to or exits from a dynamic link library
US6769126B1 (en) 1996-12-10 2004-07-27 International Business Machines Corporation Apparatus and method for demand load analysis
GB2323944A (en) * 1997-04-01 1998-10-07 Ibm Parallel data processing system
US6058396A (en) * 1997-02-06 2000-05-02 Sterling Software, Inc. Product interface method and system which allow class evolution
US6263376B1 (en) 1997-02-24 2001-07-17 Novell, Inc. Generic run-time binding interpreter
US5822748A (en) * 1997-02-28 1998-10-13 Oracle Corporation Group by and distinct sort elimination using cost-based optimization
US6366581B1 (en) 1997-04-02 2002-04-02 Fujitsu Network Communications, Inc. Method and apparatus for generating permanent virtual connections using graphical user interface
US6324411B1 (en) * 1997-05-20 2001-11-27 Telefonaktiebolaget Lm Ericsson (Publ) Background software loading in cellular telecommunication systems
US6189145B1 (en) * 1997-05-28 2001-02-13 International Business Machines Corporation Concurrent patch to logical partition manager of a logically partitioned system
US20090043907A1 (en) * 1997-09-11 2009-02-12 Digital Delivery Networks, Inc. Local portal
US6072953A (en) * 1997-09-30 2000-06-06 International Business Machines Corporation Apparatus and method for dynamically modifying class files during loading for execution
JPH11110194A (ja) * 1997-10-06 1999-04-23 Toshiba Corp 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
WO1999030232A1 (de) * 1997-12-09 1999-06-17 Siemens Aktiengesellschaft Verfahren zur überprüfung der pfadüberdeckung bei software-tests
US6031623A (en) * 1997-12-11 2000-02-29 Hewlett-Packard Company Computer system with evolving printer
US6151708A (en) * 1997-12-19 2000-11-21 Microsoft Corporation Determining program update availability via set intersection over a sub-optical pathway
US5911073A (en) * 1997-12-23 1999-06-08 Hewlett-Packard Company Method and apparatus for dynamic process monitoring through an ancillary control code system
US5953534A (en) * 1997-12-23 1999-09-14 University Of Washington Environment manipulation for executing modified executable and dynamically-loaded library files
WO1999034600A1 (en) * 1997-12-24 1999-07-08 I-See-You Corporation Portable, stand-alone video telephone system
US6345382B1 (en) 1998-02-12 2002-02-05 International Business Machines Corporation Run-time customization in object-oriented design
US6151709A (en) * 1998-02-13 2000-11-21 Novell, Inc. Processes and apparatuses for uploading instructions to a computer
JP2002505467A (ja) * 1998-02-26 2002-02-19 サン・マイクロシステムズ・インコーポレーテッド 分散システムにおける動的参照サービス
JP2002505491A (ja) * 1998-02-26 2002-02-19 サンマイクロシステムズ インコーポレーテッド 分散形システムにおける動的情報証明のための装置及び方法
SE9800696D0 (sv) * 1998-03-05 1998-03-05 Nokia Satellite Systems Ab Sätt vid datorsystem
US6484214B1 (en) * 1998-03-05 2002-11-19 Mcdonnell Douglas Helicopter Company Method for distributed object communications based on dynamically acquired and assembled software components
US20020046228A1 (en) * 1998-03-20 2002-04-18 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6681266B2 (en) 1998-04-14 2004-01-20 Dell Usa, L.P. Late binding dynamic software configuration information
US6345387B1 (en) * 1998-04-30 2002-02-05 Cosa Technologies, Inc. Coherent object system architecture
US6222916B1 (en) 1998-05-22 2001-04-24 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for introducing and modifying telecommunications services
US6070012A (en) * 1998-05-22 2000-05-30 Nortel Networks Corporation Method and apparatus for upgrading software subsystems without interrupting service
US5983021A (en) * 1998-05-27 1999-11-09 Sun Microsystems Dynamically switching statically bound function calls to dynamically bound function calls without recompilation
US6351843B1 (en) * 1998-08-31 2002-02-26 International Business Machines Corporation Dynamically inserting a function into an application executable at runtime
US8434099B2 (en) 1998-09-09 2013-04-30 Microsoft Corporation Efficient linking and loading for late binding and platform retargeting
US7159222B1 (en) * 1998-09-09 2007-01-02 Microsoft Corporation Highly componentized system architecture with object mutation
US7127701B2 (en) * 1998-09-18 2006-10-24 Wylci Fables Computer processing and programming method using autonomous data handlers
US6651080B1 (en) * 1998-10-16 2003-11-18 Sun Microsystems, Inc. Techniques for implementing pluggable virtual machines
US6163794A (en) 1998-10-23 2000-12-19 General Magic Network system extensible by users
WO2000036506A1 (en) 1998-12-16 2000-06-22 Kent Ridge Digital Labs Process oriented computing environment
US6249783B1 (en) 1998-12-17 2001-06-19 International Business Machines Corporation Method and apparatus for efficiently executing built-in functions
US6397384B1 (en) * 1998-12-18 2002-05-28 Adobe Systems Incorporated Run-time addition of interfaces
US6510551B1 (en) * 1998-12-22 2003-01-21 Channelpoint, Inc. System for expressing complex data relationships using simple language constructs
JP4809968B2 (ja) * 1999-04-09 2011-11-09 キヤノン株式会社 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体
DE19917165C2 (de) * 1999-04-16 2001-02-08 Karlsruhe Forschzent Verfahren zum Abreinigen von rohrförmigen Filterelementen und Vorrichtung zur Ausübung des Verfahrens
US6931440B1 (en) * 1999-04-21 2005-08-16 Emc Corporation Method and apparatus for dynamically determining whether access to a resource connected to a computer has changed and determining how to access the resource with a new identifier
US6842903B1 (en) * 1999-05-19 2005-01-11 Sun Microsystems, Inc. System and method for providing dynamic references between services in a computer system
US7107329B1 (en) * 1999-05-21 2006-09-12 Lucent Technologies Inc. In networks of interconnected router nodes for routing data traffic, a method of and system for imperceptibly upgrading router node software and the like without traffic interruption
US6698017B1 (en) * 1999-07-16 2004-02-24 Nortel Networks Limited Software migration on an active processing element
JP2001043070A (ja) * 1999-07-29 2001-02-16 Nec Corp 設定情報自動復帰方法及び装置並びに設定情報自動復帰プログラムを記録した記録媒体
EP1079302A1 (de) * 1999-08-23 2001-02-28 Siemens Aktiengesellschaft Verfahren zum Betreiben einer Datenverarbeitungsanlage, Baueinheit und Vermittlungsstelle sowie zugehöriges Computerprogramm
JP3671759B2 (ja) * 1999-08-26 2005-07-13 株式会社日立製作所 ソフトウェア配布方法およびシステム
US6356933B2 (en) * 1999-09-07 2002-03-12 Citrix Systems, Inc. Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language
US6622170B1 (en) 1999-09-10 2003-09-16 International Business Machines Corporation System and method for DEN/LDAP client database access with a backoff capability
US6330560B1 (en) 1999-09-10 2001-12-11 International Business Machines Corporation Multiple manager to multiple server IP locking mechanism in a directory-enabled network
US7146608B1 (en) * 1999-09-28 2006-12-05 Cisco Technology, Inc. Method and system for a software release process
US6751658B1 (en) * 1999-10-18 2004-06-15 Apple Computer, Inc. Providing a reliable operating system for clients of a net-booted environment
US7089300B1 (en) * 1999-10-18 2006-08-08 Apple Computer, Inc. Method and apparatus for administering the operating system of a net-booted environment
JP3655152B2 (ja) * 1999-11-29 2005-06-02 富士通株式会社 ソフトウェア編集装置及び記憶媒体
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US7287259B2 (en) 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs
EP1160952A3 (en) * 2000-05-29 2004-05-26 Omron Corporation Power supply module and power supply unit using the same
US6941353B1 (en) * 2000-06-29 2005-09-06 Auran Holdings Pty Ltd E-commerce system and method relating to program objects
US7346842B1 (en) 2000-11-02 2008-03-18 Citrix Systems, Inc. Methods and apparatus for incorporating a partial page on a client
US7194743B2 (en) * 2000-12-12 2007-03-20 Citrix Systems, Inc. Methods and apparatus for communicating changes between a user interface and an executing application using property paths
US7296275B2 (en) * 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20020100034A1 (en) * 2001-01-22 2002-07-25 Croix John F. Application personality
US7076496B1 (en) * 2001-02-23 2006-07-11 3Com Corporation Method and system for server based software product release version tracking
US7389515B1 (en) * 2001-05-21 2008-06-17 Microsoft Corporation Application deflation system and method
US7243346B1 (en) 2001-05-21 2007-07-10 Microsoft Corporation Customized library management system
JP2002373077A (ja) * 2001-06-14 2002-12-26 Nec Corp 実行時ライブラリ検索方法及び装置、動的リンカ並びにプログラム
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US20030051030A1 (en) * 2001-09-07 2003-03-13 Clarke James B. Distributed metric discovery and collection in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US20030131347A1 (en) * 2001-10-12 2003-07-10 Allison David S. Method and apparatus for runtime binding of object members
US7210145B2 (en) * 2001-10-15 2007-04-24 Edss, Inc. Technology for integrated computation and communication; TICC
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US6981268B2 (en) * 2001-12-05 2005-12-27 Microsoft Corporation System and method for persisting and resolving application assembly binds
KR100462860B1 (ko) * 2002-01-11 2004-12-17 삼성전자주식회사 개방형 교환시스템에서 새 버전 소프트웨어 패키지 설치방법
US7657616B1 (en) 2002-06-10 2010-02-02 Quest Software, Inc. Automatic discovery of users associated with screen names
US20080196099A1 (en) * 2002-06-10 2008-08-14 Akonix Systems, Inc. Systems and methods for detecting and blocking malicious content in instant messages
US7818565B2 (en) * 2002-06-10 2010-10-19 Quest Software, Inc. Systems and methods for implementing protocol enforcement rules
US7428590B2 (en) * 2002-06-10 2008-09-23 Akonix Systems, Inc. Systems and methods for reflecting messages associated with a target protocol within a network
EP1552414A4 (en) 2002-06-10 2010-11-24 Akonix Systems Inc SYSTEM AND METHOD FOR A PROTOCOL GATEWAY
US7707401B2 (en) * 2002-06-10 2010-04-27 Quest Software, Inc. Systems and methods for a protocol gateway
US7774832B2 (en) * 2002-06-10 2010-08-10 Quest Software, Inc. Systems and methods for implementing protocol enforcement rules
US7076312B2 (en) * 2002-08-02 2006-07-11 Fisher-Rosemount Systems, Inc. Integrated electronic signatures for approval of process control and safety system software objects
US7185331B2 (en) * 2002-08-27 2007-02-27 Inrange Technologies Corporation Method and apparatus for downloading executable code in a non-disruptive manner
US7234056B2 (en) * 2002-09-24 2007-06-19 Inrange Technologies Corp. Method and apparatus for downloading executable code in a non-disruptive manner
US7730155B1 (en) * 2002-10-01 2010-06-01 Apple Inc. Method and apparatus for dynamically locating resources
US7213123B2 (en) * 2002-10-24 2007-05-01 International Business Machines Corporation Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture
US7200840B2 (en) * 2002-10-24 2007-04-03 International Business Machines Corporation Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture
US7225431B2 (en) * 2002-10-24 2007-05-29 International Business Machines Corporation Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture
US7243333B2 (en) * 2002-10-24 2007-07-10 International Business Machines Corporation Method and apparatus for creating and executing integrated executables in a heterogeneous architecture
US7222332B2 (en) * 2002-10-24 2007-05-22 International Business Machines Corporation Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture
US7313267B2 (en) * 2002-11-13 2007-12-25 Lockheed Martin Corporation Automatic encoding of a complex system architecture in a pattern recognition classifier
US7243336B2 (en) * 2002-12-17 2007-07-10 International Business Machines Corporation System and method of extending application types in a centrally managed desktop environment
US7865251B2 (en) * 2003-01-28 2011-01-04 Fisher-Rosemount Systems, Inc. Method for intercontroller communications in a safety instrumented system or a process control system
US20050039196A1 (en) * 2003-08-13 2005-02-17 Sasidharan Prasanth Nalini Method and system for using a library
WO2005026915A2 (en) * 2003-09-11 2005-03-24 Akonix Systems, Inc. Systems and methods for dynamically updating software in a protocol gateway
GB2406663B (en) * 2003-10-01 2006-03-22 Toshiba Res Europ Ltd Flexible protocol stack
US7774774B1 (en) * 2003-10-22 2010-08-10 Apple Inc. Software setup system
US20050091259A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Redmond Wa. Framework to build, deploy, service, and manage customizable and configurable re-usable applications
US8381207B2 (en) * 2003-12-02 2013-02-19 International Business Machines Corporation Script generation engine and mapping semantic models for target platform
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
EP2408126A1 (en) 2004-02-19 2012-01-18 Landmark Digital Services LLC Method and apparatus for identification of broadcast source
US7516459B2 (en) * 2004-02-20 2009-04-07 Intel Corporation Methods and apparatus to optimize managed application program interfaces
US7831838B2 (en) * 2004-03-05 2010-11-09 Microsoft Corporation Portion-level in-memory module authentication
US7444197B2 (en) 2004-05-06 2008-10-28 Smp Logic Systems Llc Methods, systems, and software program for validation and monitoring of pharmaceutical manufacturing processes
US7644287B2 (en) * 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication
US7594217B2 (en) * 2004-12-07 2009-09-22 International Business Machines Corporation Matching client interfaces with service interfaces
US7739656B2 (en) * 2004-12-15 2010-06-15 International Business Machines Corporation Generating asynchronous interfaces and methods from synchronous interfaces and methods
US7779430B2 (en) * 2004-12-15 2010-08-17 International Business Machines Corporation Method, system, and article of manufacture for providing service components
US20060179421A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation Dynamic interface binding using XML transformations
US9063725B2 (en) * 2005-06-24 2015-06-23 Oracle International Corporation Portable management
US9542175B2 (en) * 2005-06-24 2017-01-10 Oracle International Corporation Continuous deployment
US9075596B2 (en) * 2005-06-24 2015-07-07 Oracle International Corporation Deployment
EP1746499A1 (de) * 2005-07-05 2007-01-24 Siemens Aktiengesellschaft System und Verfahren zur Entwicklung einer Software oder einer Softwarekomponente sowie Verfahren zum Betrieb einer solchen Software
US7844957B2 (en) * 2005-08-19 2010-11-30 Sybase, Inc. Development system with methodology providing optimized message parsing and handling
US7756981B2 (en) 2005-11-03 2010-07-13 Quest Software, Inc. Systems and methods for remote rogue protocol enforcement
US20070250828A1 (en) * 2005-11-16 2007-10-25 Tseitlin Ariel D Portable libraries
US20070226731A1 (en) * 2005-11-16 2007-09-27 Tseitlin Ariel D Modularity
WO2007123527A1 (en) * 2006-04-20 2007-11-01 Srinivasan Chitoor V Technology for integrated computation and communication; ticc
EP1850260A1 (en) * 2006-04-26 2007-10-31 Macrovision Corporation A computer-implemented method and system for binding digital rights management executable code to a software application
US8458673B2 (en) * 2006-04-26 2013-06-04 Flexera Software Llc Computer-implemented method and system for binding digital rights management executable code to a software application
US20070277170A1 (en) * 2006-05-25 2007-11-29 International Business Machines Corporation Merger driven application installation
CN100464522C (zh) * 2007-05-17 2009-02-25 华为技术有限公司 一种进程升级的方法及进程升级系统
US7996347B2 (en) * 2008-04-04 2011-08-09 International Business Machines Corporation Adaptive information technology solution design and deployment
US8627306B2 (en) * 2008-08-06 2014-01-07 Caterpillar Inc. Method and system for updating an information management system configuration
US10410117B2 (en) 2008-09-21 2019-09-10 Brainchip, Inc. Method and a system for creating dynamic neural function libraries
KR101255685B1 (ko) * 2008-12-22 2013-04-24 한국전자통신연구원 로봇 응용 프로그램 실행 장치 및 방법
US8645936B2 (en) * 2009-09-30 2014-02-04 Zynga Inc. Apparatuses, methods and systems for an a API call abstractor
US8954929B2 (en) * 2010-03-29 2015-02-10 Microsoft Corporation Automatically redirecting method calls for unit testing
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
EP2469407A1 (en) * 2010-12-21 2012-06-27 Robert Bosch GmbH Method of bypassing an AUTOSAR software component of an AUTOSAR software system
US8468507B2 (en) 2011-06-10 2013-06-18 Microsoft Corporation Binding executable code at runtime
US8990515B2 (en) 2011-06-14 2015-03-24 Microsoft Technology Licensing, Llc Aliasing buffers
US9141356B2 (en) 2011-12-14 2015-09-22 Microsoft Technology Licensing, Llc Process for generating dynamic type
US9160653B2 (en) * 2012-06-07 2015-10-13 International Business Machines Corporation Dynamic redirection of network traffic within a system under test
US9152410B2 (en) * 2012-06-21 2015-10-06 Vaibhav KHANDELWAL Auto-update while running client interface with handshake
US8997047B2 (en) * 2012-12-13 2015-03-31 International Business Machines Corporation Dynamically updating code without requiring processes to restart
US9542172B2 (en) 2013-02-05 2017-01-10 Apple Inc. Automatic updating of applications
US9720651B2 (en) * 2015-07-15 2017-08-01 Bank Of America Corporation Strategy maintenance system
US10594555B2 (en) 2016-12-16 2020-03-17 Intelligent Platforms, Llc Cloud-enabled testing of control systems
US11424865B2 (en) 2020-12-10 2022-08-23 Fisher-Rosemount Systems, Inc. Variable-level integrity checks for communications in process control environments

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4369983A (en) * 1980-10-27 1983-01-25 The Firestone Tire & Rubber Company Trailer with mass restraint
US4688170A (en) * 1983-09-22 1987-08-18 Tau Systems Corporation Communications network for communicating with computers provided with disparate protocols
US4649473A (en) * 1985-06-17 1987-03-10 International Business Machines Corporation Flexible data transmission for message based protocols
US4787028A (en) * 1985-09-03 1988-11-22 Ncr Corporation Multicommunication protocol controller
JPH01239633A (ja) * 1988-03-22 1989-09-25 Nec Corp 動的リンク構造ロードモジュール作成方式
US5093916A (en) * 1988-05-20 1992-03-03 International Business Machines Corporation System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks
JPH01307825A (ja) * 1988-06-06 1989-12-12 Nec Corp インターフェイスモジュールを介する動的リンク実行方式
US5175828A (en) * 1989-02-13 1992-12-29 Hewlett-Packard Company Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5185742A (en) * 1990-12-31 1993-02-09 At&T Bell Laboratories Transparent signaling for remote terminals
US5182751A (en) * 1990-12-31 1993-01-26 At&T Bell Laboratories Switching system using identical switching nodes
US5182750A (en) * 1990-12-31 1993-01-26 At&T Bell Laboratories Transparent remoting of switching network control over a standard interface link
US5212787A (en) * 1991-03-12 1993-05-18 International Business Machines Corporation Method and apparatus for accessing a relational database without exiting an object-oriented environment
JPH0778775B2 (ja) * 1991-06-12 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション アプリケーション・プログラム間における情報交換システム及び方法
US5297285A (en) * 1991-07-23 1994-03-22 Telefonaktiebolaget L M Ericsson System for dynamically linking modular portions of computer software

Also Published As

Publication number Publication date
AU4516393A (en) 1994-01-31
NO945053D0 (no) 1994-12-27
KR100303548B1 (ko) 2001-11-22
AU664813B2 (en) 1995-11-30
ES2139663T3 (es) 2000-02-16
EP0648352B1 (en) 1999-12-08
CN1081006A (zh) 1994-01-19
WO1994001818A1 (en) 1994-01-20
US5339430A (en) 1994-08-16
BR9306652A (pt) 1998-12-08
MX9303777A (es) 1994-01-31
CN1047450C (zh) 1999-12-15
DE69327243D1 (de) 2000-01-13
NO945053L (no) 1995-02-28
DK0648352T3 (da) 2000-05-29
DE69327243T2 (de) 2000-04-06
FI946193A (fi) 1994-12-30
EP0648352A1 (en) 1995-04-19
FI946193A0 (fi) 1994-12-30
GR3032498T3 (en) 2000-05-31

Similar Documents

Publication Publication Date Title
NO311387B1 (no) System for dynamisk kjöretidsfiksering for programvaremoduler i en datamaskinsammenstilling
EP0648353B1 (en) System for changing software during computer operation
US6378127B1 (en) Software installation and validation using custom actions
US7784044B2 (en) Patching of in-use functions on a running computer system
TWI521428B (zh) 用於可延伸韌體抽取之方法及相關計算平台
JP3423220B2 (ja) 情報処理システムのアーキテクチャ
US20120005660A1 (en) Type Inference of Partially-Specified Parameterized Types
US5495612A (en) System for dynamically changing an execution program and method for doing the same
US20020073398A1 (en) Method and system for modifying executable code to add additional functionality
JPH11509654A (ja) アプリケーションプログラムにおけるビフェイビアの自動的実施
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
US7290252B2 (en) Method and apparatus for building executable computer programs using compiled program libraries
US20120304154A1 (en) Software application fine-tuning method, system, and corresponding computer program product
US20160048441A1 (en) Localized representation of stack traces
US6957367B2 (en) System and method for controlling activity of temporary files in a computer system
Barr et al. Safe upgrading without restarting
US8146109B2 (en) Version resiliency for a host application and custom code
Lyu et al. A procedure-based dynamic software update
WO2022120640A1 (zh) 基于electron的更新方法及系统
US11442708B2 (en) Compiler-generated alternate memory-mapped data access operations
US8347310B1 (en) System and method for representing and managing a multi-architecure co-processor application program
AU651682B2 (en) Improved system and method for detecting cross-domain instruction calls and data references especiallly adapted for code interface jacketing in a multi-code execution and debugging system within a multi-architecture environment
Holliday System calls and interrupt vectors in an operating systems course
CN113448825A (zh) 新增软件缺陷的确定方法、装置、设备及存储介质
Green Jr et al. Software Implemented Fault-Tolerant (SIFT) User's Guide

Legal Events

Date Code Title Description
MM1K Lapsed by not paying the annual fees

Free format text: LAPSED IN NOVEMBER 2002