NO311387B1 - System for dynamisk kjöretidsfiksering for programvaremoduler i en datamaskinsammenstilling - Google Patents
System for dynamisk kjöretidsfiksering for programvaremoduler i en datamaskinsammenstilling Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 130
- 230000006870 function Effects 0.000 claims description 61
- 230000008569 process Effects 0.000 claims description 34
- 230000007246 mechanism Effects 0.000 claims description 24
- 238000004891 communication Methods 0.000 claims description 9
- 230000011664 signaling Effects 0.000 claims description 5
- 230000003213 activating effect Effects 0.000 claims 2
- 150000001768 cations Chemical class 0.000 claims 1
- 238000012360 testing method Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 11
- 230000008859 change Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002853 ongoing effect Effects 0.000 description 3
- 238000012552 review Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000008054 signal transmission Effects 0.000 description 2
- 238000001787 Wald–Wolfowitz test Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic 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.
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)
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)
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 |
-
1992
- 1992-07-01 US US07/907,307 patent/US5339430A/en not_active Expired - Lifetime
-
1993
- 1993-05-11 DK DK93915034T patent/DK0648352T3/da active
- 1993-05-11 KR KR1019940704822A patent/KR100303548B1/ko not_active IP Right Cessation
- 1993-05-11 AU AU45163/93A patent/AU664813B2/en not_active Expired
- 1993-05-11 WO PCT/SE1993/000416 patent/WO1994001818A1/en active IP Right Grant
- 1993-05-11 BR BR9306652A patent/BR9306652A/pt not_active IP Right Cessation
- 1993-05-11 DE DE69327243T patent/DE69327243T2/de not_active Expired - Lifetime
- 1993-05-11 EP EP93915034A patent/EP0648352B1/en not_active Expired - Lifetime
- 1993-05-11 ES ES93915034T patent/ES2139663T3/es not_active Expired - Lifetime
- 1993-05-26 CN CN93106449A patent/CN1047450C/zh not_active Expired - Lifetime
- 1993-06-23 MX MX9303777A patent/MX9303777A/es unknown
-
1994
- 1994-12-27 NO NO19945053A patent/NO311387B1/no not_active IP Right Cessation
- 1994-12-30 FI FI946193A patent/FI946193A0/fi unknown
-
2000
- 2000-01-27 GR GR20000400192T patent/GR3032498T3/el not_active IP Right Cessation
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 |