SE537794C2 - Förfaranden för att distribuera en dataprogramprodukt och ett datorsystem - Google Patents

Förfaranden för att distribuera en dataprogramprodukt och ett datorsystem Download PDF

Info

Publication number
SE537794C2
SE537794C2 SE1250267A SE1250267A SE537794C2 SE 537794 C2 SE537794 C2 SE 537794C2 SE 1250267 A SE1250267 A SE 1250267A SE 1250267 A SE1250267 A SE 1250267A SE 537794 C2 SE537794 C2 SE 537794C2
Authority
SE
Sweden
Prior art keywords
module
code
add
program
end user
Prior art date
Application number
SE1250267A
Other languages
English (en)
Other versions
SE1250267A1 (sv
Inventor
Marcus Zetterquist
Original Assignee
Propellerhead Software Aktiebolag
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Propellerhead Software Aktiebolag filed Critical Propellerhead Software Aktiebolag
Priority to SE1250267A priority Critical patent/SE537794C2/sv
Priority to US14/386,985 priority patent/US20150052514A1/en
Priority to EP13717583.2A priority patent/EP2828746A1/en
Priority to PCT/SE2013/050265 priority patent/WO2013141786A1/en
Publication of SE1250267A1 publication Critical patent/SE1250267A1/sv
Publication of SE537794C2 publication Critical patent/SE537794C2/sv

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

SAMMANDRAG Forfarande for att distribuera en tillaggsmodul for ett varddataprogram, vilken till5ggsmodul är anordnad att samverka med och utvidga funktionaliteten hos varddataprogrammet, varvid forfarandet innefattar foljande steg: kallkod for tillaggsmodulen tillhandahalls, varvid kallkoden är anordnad att kompileras till exekverbar kod och namnda kallkod är oberoende av plattformen pa vilken den exekverbara koden ska koras, ett fOrsta kompileringssteg utfors pa kallkoden fOr att tillhandahalla tillaggsmodulen i ett mellanformat, vilket mellanformat är oberoende av plattformen pa vilken den exekverbara koden ska koras, en leverantor sparar tillaggsmodulen i mellanformatet sa att den kan kompileras till maskinexekverbart format vid ett senare tillfalle. Detta mojliggor kompilering vid ett senare tillfálle for att tillhandahalla versioner som är kompatibla med nya eller andrade datormiljoer.

Description

Forfaranden for att distribuera en dataprogramprodukt och ett datorsystem Teknikomrade Foreliggande uppfinning hanfor sig till ett forfarande for att distribuera en datorprogramprodukt.
Bakgrund och relevant teknik Datorprogram skrivs som kallkod och kompileras till exekverbar kod (maskinkod eller objektkod). Nar ett program distribueras levereras typiskt sett den exekverbara koden sa att kunden far en fungerande produkt utan att fâ nagon kunskap om programmets struktur eller design. I andra fall, i synnerhet nar det Oiler open source-program, Ors alien kallkoden tillganglig.
En del program anvander ytterligare tillaggsmoduler for att utvidga vardprogrammets funktionalitet. En typ av sadana tillaggsmoduler kallas plugin-moduler. Till exempel finns ett antal plugin-moduler for Adobe Photoshop, for att ge ytterligare bildeffekter eller utfora uppgifter som är omojliga eller svara att utfora med anvandning av enbart funktionaliteten som tillhandahalls av sjalva programmet. I detta dokument kommer uttrycket "tillaggsmodul for vardprogram" eller "tillaggsmodul" att anvandas for att beteckna programmoduler som tillhandahalls for att forbattra eller utvidga funktionaliteten hos ett vardprogram.
Typiskt sett är tillaggsmoduler sasom plugin-moduler ocksa, ett salt for tredjepartsutvecklare att lagga till funktioner till ett vardprogram. For detta andamal tillhandahaller vardprogrammet tjanster som tillaggsmodulen kan anvanda, innefattande ett satt for plugin-moduler att registrera sig hos vardprogrammet och ett protokoll for utvaxling av data med tillaggsmoduler. Det är mojligt att skapa tillaggsmoduler i manga programmeringssprak, till exempel, C, C++, Delphi, Java och andra. 1 Tilldggsmoduler levereras till slutanvandaren sasom maskinkod, anpassade och kompilerade till den speciella miljo som de ska koras i. Till exempel behovs olika versioner for olika operativsystem, eller for olika versioner av ett operativsystem och for olika mikroprocessorarkitekturer.
Med C++ som exempel levereras pluginmoduler skrivna i C++ ofta sasom dynamiskt ldnkade bibliotek. I Windows kallas de .d11-filer. I Mac OS X kallas de dylib. Dessa filer erhalls genom att kompilera C++-kod och Ors typiskt sett tillgangliga i olika format, vardera anpassat till en speciell miljo, sasom operativsystem och mikroprocessorarkitektur.
Ett antal maskinkodfiler behover darfor tillhandahallas, och dessa filer kan inte anpassas vid ett senare tillfdlle. De kan darfor inte alltid anvandas med nya versioner av operativsystem och fungerar inte pa en annan mikroprocessorarkitektur.
Sammanfattning av uppfinningen Uppfinningen har till mal att Ora tilldggsmoduler for vardprogram framtidssakra.
Detta syfte uppnas genom ett forfarande for att distribuera en tillaggsmodul for ett varddataprogram, vilken tillaggsmodul är anordnad att samverka med och utvidga funktionaliteten hos varddataprogrammet, varvid forfarandet innefattar foljande steg: En kallkod for tillaggsmodulen tillhandahalls, varvid kdllkoden dr anordnad att kompileras till exekverbar kod och namnda kallkod är oberoende av plattformen pa vilken den exekverbara koden ska koras, Ett forsta kompileringssteg utfors pa kallkoden for att tillhandahalla tilldggsmodulen i ett mellanformat, vilket mellanformat är oberoende av plattformen pa vilken den exekverbara koden ska koras, En leverantor sparar tillaggsmodulen i mellanformatet sa att den kan kompileras till maskinexekverbart format vid ett senare tillfdlle. 2 Uppfinningen hanfor sig ocksa, till ett datorsystem innefattande en forsta minnesenhet, anordnad att lagra datorprogram i formen av tillaggsmoduler som ska distribueras vid behov. Datorprogrammen finns sparade i minnesenheten i ett mellanformat, varvid mellanformatet är kompilerat frail kallkod och ar oberoende av plattformen pa vilken den exekverbara koden ska koras, och datorsystemet innefattar aven kompileringsmjukvara for att kompilera tillaggsmodulerna frail mellanformat till maskinexekverbar kod.
Genom att spara tillaggsmodulerna i det plattformsoberoende mellanformatet kan de kompileras till exekverbar kod när som heist efter att de levererats till leverantoren, aven langt efter att koden skrevs. Darfor kan de anpassas till nya datormiljoer langt efter det att koden skrevs. Nya datormiljoer kan vara datormiljoer som har utvecklats eller andrats vid en senare tidpunkt, eller som fanns tidigare, men utan att tillaggsmodulerna var anpassade for dem. I samband med uppfinningen kan en dator vara en standarddator eller vilken som heist annan typ av datoranordning sasom en dataspelsterminal, en mobiltelefon, Ipad etc. Det kan ocksa vara en dedikerat apparat, sasom en synthesizer for ljud.
Uppfinningen är baserad pa insikten att vid en punkt i kompileringskedjan finns ett generellt format tillgangligt. Sasom namnet antyder är detta endast avsett sasom ett mellanstadium i kompileringen, som vanligtvis bara behandlas vidare och inte lagras. Till exempel for C++, och for vissa andra sprak, kan LLVM-kompilatorn anvandas. Denna kompilator kompilerar i ett antal steg, dar ett mellansteg är IR eller "intermediate representation". For C++-program kan alltsâ det plattformsoberoende mellanformatet vara IR-formatet.
Losningen enligt uppfinningen är baserad pa insikten att detta mellanformat kan sparas for framtiden och den sista delen av kompileringskedjan kan utforas vid ett senare tillfalle for att ge maskinkod. Pa detta sat kan maskinkod kompileras automatiskt till vilken som helst framtida eller ytterligare miljo, aven till typer av datorer eller operativsystem som inte hade utvecklats nar ursprungskoden utvecklades. 3 Vardprogrammet kan vara vilken som heist typ av program och tillaggsmodulerna kan vara vilken som heist typ av tillaggsmoduler anordnade att tillhandahalla tillaggsfunktionalitet till vardprogrammet. I en foredragen utforingsform är tillaggsmodulen anordnad att tillhandahalla realtidsfunktioner, sasom att alstra eller manipulera en ljud- eller bildstrom.
I en foredragen utforingsform ir tillaggsmodulerna forhindrade att interagera direkt med operativsystemet. I stallet tillhandahaller vardprogrammet en verktygslada for anvandning av tillaggsmodulerna. Tillaggsmodulerna stoppas frail att anvanda nagra funktioner i miljon, endast funktionerna som tillhandahalls av verktygsladan är Detta innebar att tillaggsmodulen blir oberoende av operativssystemet och mikroprocessorns arkitektur (x86 32bit, X86 64-bit, PowerPC, ARM etc.). Det har ocksa funktionen att skydda anvandaren och vardprogrammet frail skadliga tillaggsmoduler.
Under kompilering kontrolleras tillaggsmodulen ocksa, for kommandon som kan vara skadliga, till exempel kommandon som forsoker fâ atkomst till milj on genom att ga, forbi verktygsladan som tillhandahalls av vardprogrammet. Detta uppnar den ytterligare fordelen att de olika programmodulerna isoleras Mare frail varandra, vilket kallas "sandboxing". Detta innebar att en tillaggsmodul endast kan anvanda funktioner som tillhandahalls av vardprogrammet. Till exempel kan tillaggsmodulen sjalv inte beordra att en flu ska oppnas, den kan bara begara att vardprogrammet ska oppna filen. Sandboxing bidrar ocksa, till att Ora tillaggsmodulen framtidssaker, eftersom de begransade mojligheterna for interaktion med miijOn gOr det lattare att anpassa den till nya miljoer.
Kallkoden for tillaggsmodulen tillhandahalls vanligtvis av en tredjepartsutvecklare som är atskild frail leverantoren. Typiskt sett, men inte nodvandigtvis, utfors det forsta kompileringssteget hos samma part som tillhandahaller kallkoden. Det kan givetvis aven utforas av leverantoren, eller av nagon annan. Forfarandet innefattar foretradesvis 4 steget att utfora ett andra kompileringssteg pa tillaggsmodulen i mellanformatet for att tillhandahalla tillaggsmodulen som exekverbar kod for atminstone en speciell plattform.
I en foredragen utforingsform innefattar forfarandet ett antal sakerhetskontroller for att sakerstalla att tillaggsmodulen inte innefattar nagon skadlig kod. Dessa sakerhetskontroller kan innefatta en eller flera av foljande: Statisk validering av att tillaggsmodulen inte anropar nagon kod utover kod som tillhandahalls av vardprogrammet for att kommunicera med tillaggsmodulen.
Kontroll under korning av varje tillaggsmoduls CPU-klockcykelanvandning for att sakerstalla att den inte overskrider en viss grans. Detta forhindrar att programmer stannar i en oandlig loop och forhindrar ocksa, ondsinnad eller daligt skriven kod.
Kontroll innan varje minne lases eller skrivs for att sakerstalla att tillaggsmodulen kommunicerar endast genom vardprogrammet.
Verktygsladan har stranga kontrakt med alla tillaggsmoduler, och kontrakten handhaves vid korning genom omsorgsfull validering av tillaggsmodulens anvandning av verktygsladan.
Det viktiga tillstandet sparas i vardprogrammet och alla fors& av tillaggsmodulen att Ora andringar valideras omsorgsfullt via verktygsladan.
Vardprogrammet anvander funktioner i operativsystemet for att upptacka problem vid korning, sasom fors& att dela med noll, hardvaruundantag etc.
Den forsta minnesenheten ar anordnad att innefatta tillaggsmoduler skrivna i ett programmeringssprak sasom C++ och kompilerat till mellanformatet (IR-format). Datorsystemet innefattar foretradesvis aven en andra minnesenhet anordnad att halla tillaggsmoduler som kompilerats till maskinexekverbar kod.
Uppfinningen hanfor sig ocksa, till ett forfarande for att distribuera atminstone en tillaggsmodul for ett vardprogram fran en leverantor till en slutanvandare, varvid leverantoren är anordnad att spara den atminstone ena tillaggsmodulen i ett plattformsoberoende format som är ett mellanformat mellan kallkod och maskinsxekverbar kod, innefattande stegen att Pa begaran fran slutanyandaren tillhandahalls till slutanvandaren en version av vardprogrammet anpassat till datormiljon som anvands av slutanvandaren.
Foretradesvis undersoker vardprogrammet datorn och operativsystemet etc. och kommunicerar denna information till leverantoren (servem) for att lata leverantoren valja eller kompilera den basta versionen av tillaggsmodulen.
Alternativt tillhandahalls denna information frail anvandaren.
Den atminstone ena tillaggsmodulen tillhandahalls till slutanvandaren i det bestamda lampliga maskinexekverbara formatet.
Denna aspekt av uppfinningen mojliggor att tillaggsmoduler automatisk levereras i passande format till vilken som helst slutanvandare vid vilken som helst given tidpunkt. Samma slutanvandare kan anvanda vardprogrammet och tillaggsmoduler fran ett antal olika datormiljoer och anda alltid ha rat version for den datormiljo som anvands for tillfdllet.
Versionen av vardprogrammet kan valjas utifran indata som tillhandahallits frail slutanvandaren, eller automatiskt utifran data som hamtats fran slutanvandarens dator.
I detta dokument ska uttrycket "leverant8r" tolkas som den part som tillhandahaller tillaggsmodulen eller —modulema till en slutanvandare. Detta är typiskt sett samma part som tillhandahaller vardprogrammet, men det kan ocksa vara en oberoende part. Slutanvandaren är parten som faktiskt anyander vardprogrammet med en eller flera tillaggsmoduler. Tredje part är parten som utvecklar kallkoden for tillaggsmodulen, vanligtvis en part som är fristaende fran leverantoren. Typiskt sett har leverantoren en internetserver som utfor arbetet automatiskt. 6 Kortfattad beskrivning av ritningarna Uppfinningen kommer i det foljande att beskrivas i mer detalj, med hanvisning till de bifogade ritningarna, pd vilka Figur 1 är en oversiktsvy over platser som är involverade i olika faser av forfarandet enligt uppfinningen.
Figur 2 är ett flodesschema Over utvecklingen av program enligt en utforingsform av uppfinningen.
Figur 3 är ett flodesschema over distributionen av program till slutanvandaren enligt en utforingsform av uppfinningen.
Figur 4 visar schematiskt ett granssnittet mellan ett vardprogram och en tillaggsmodul.
Detaljerad beskrivning av uppfinningen Figur 1 visar en oversikt Over parterna som kan vara involverade i olika faser enligt en foredragen utforingsform av uppfinningen. I mitten finns leverantoren 1 av vardprogrammet, representerad av en server la och en databas lb. Typiskt sett innefattar dock denna plats ett eller flera minnen anordnade att lagra datorprogram i olika stadier av kompilering, sasom kommer att diskuteras i det foljande. Ett minne innefattar vardprogrammet, som är vilken som heist typ av program som kan utvidgas med anvdndning av tilldggsmoduler for vdrdprogram, till exempel ett musikalstringsprogram, ett bildbehandlingsprogram eller en internetldsare.
Till vanster finns en eller flera utvecklare 2 av tillaggsmoduler eller plugin-moduler som ska anvandas for att utvidga vardprogrammets funktionalitet. Utvecklarna är representerade av en enkel dator. I verkligheten kan de givetvis ha vilken som helst lämplig datorutrustning Utvecklarna kan arbeta oberoende av varandra eller i samarbete, men de mdste arbeta i enlighet med riktlinjerna som tillhandahalls av leverantoren av vardprogrammet for att sakerstalla att tillaggsmodulerna kan fungera tillsammans med vardprogrammet. Dessa tillaggsmoduler levereras fran utvecklarna till leverantoren i formen av kallkod eller i ett mellanformat som inte kompilerats sa langt att det är exekverbart, och som fortfarande är plattformsoberoende. Om 7 tillaggsmodulerna levereras i kallkod kommer de att kompileras till mellanformatet hos leverantoren. Programfilerna i mellanformatet sparas i ett minne hos leverantoren.
Till hoger finns ett antal slutanvandare 3 som anvander vardprogrammet. Slutanvandarna kan ha olika typer av utrustning pa vilken vardprogrammet kors, aven om figur 1 schematiskt visar en dator for vaije anvandare. Programmet kan koras pa vilken som helst typ av dator eller processorenhet, innefattande anordningar som inte vanligtvis anses vara datorer, sasom synthesizers for ljud. Enligt uppfinningen kan varje slutanvandare ocksa, kora vardprogrammet pa ett antal olika datorplattformar, olika operativsystem etc. Varje slutanvandare kan vid nagot tillfálle anskaffa en eller flera tillaggsmoduler for vardprogrammet och bor kunna kora tillaggsmodulerna i de olika datormiljorena.
Leverantoren gör vardprogrammet, och vanligtvis ett antal tillaggsmoduler, tillgangliga for slutanvandarna. Leverantoren kan vara firman som utvecklar vardprogrammet eller en annan part. Det kan finnas flera leverantorer som tillhandahaller samma vardprogram och/eller tillaggsmoduler. En leverantor kan ocksa, tillhandahalla flera vardprogram, som vardera kan ha tillhorande tillagsmoduler.
Enligt uppfinningen uppnas detta genom att alla eller nagra av tillaggsmodulerna hamtas frail leverantoren nar de behovs. Typiskt sett hamtas de om de inte finns tillgangliga for slutanvandaren, eller om versionerna som finns i slutanvandarens dator är gamla eller har fel format. Ett flodesschema over detta forfarande visas i figur 3. I en utforingsform tillhandahaller leverantorens utrustning automatisk raft version for anvandarens datormiljo nar anvandaren hamtar programmet och/eller tillaggsmodulerna. For att Ora detta maste leverantoren antingen ha eller fa information om anvandarens datormiljo. Mjukvarulogik hos leverantoren valjer sâ lamplig version av varje mjukvarumodul och tillhandahaller den till slutanvandaren. Detta kan innefatta steget att kompilera mellanversionen av varje modul till exekverbar kod anpassad for anvandarens miljo. Alternativt kan ett antal olika format 8 finnas lagrade pa leverantorens sida frail borjan. I detta fall valjer mjukvarulogiken helt enkelt rat version och tillhandahaller den till slutanvandaren.
Pa detta satt kan varje slutanvandare fâ mjukvaran levererad pa ett format som är anpassat till den datorhardvara och det operativsystem etc de anvander. En slutanvandare som anvander mjukvaran pa olika datormiljoer kan fa versionen som är anpassad till den datormiljo som anvands for tillfallet. Till exempel om slutanvandaren anvander en speciell datormiljo, sag en Windows-baserad miljo, hemma och en anna miljo, sasom en Apple-dator pa jobbet, sa kommer Windows-anpassade versioner att hamtas nar han loggar in fran hemdatom och MAC-anpassade versioner kommer att hamtas ndr han loggar in fran arbetet. Pa samma sat, om anvandaren uppgraderar sin Windows-dator, kommer nya versioner anpassade for det nya Windowsoperativsystemet att hamtas.
Ndr nya versioner av en datormiljo, eller helt nya datormiljoer, utvecklas kan motsvarande kompilatorer och versioner av vardprogrammet tillhandahallas hos leverantoren sa att tillaggsmodulerna kan tillhandahallas i versioner som passar for de nya miljoerna, aven for miljoer som inte var tillgdngliga eller ens patankta ndr programvaran utvecklades. Detta uppnas eftersom mellankoden finns lagrad hos leverantoren. Givetvis kan den ocksa anvandas for att Ora tillaggsmodulerna tillgangliga for datormiljoer for vilka de inte tidigare funnits tillgangliga aven om datormiljoerna i sig inte är nya.
Figur 2 är ett flodesschema som visar utvecklingen och distributionen av program sa, som tillaggsmoduler enligt uppfinningen.
I steg Sll tillhandahalls en kallkod for ett program, vanligtvis frail en tredjepartsleverant8r. Programmet är foretradesvis en tillaggsmodul sasom en pluginmodul, sasom diskuterats ovan. Kallkoden kan till exempel vara skriven i C++ eller i nagot annat program som kan kompileras till ett mellanformat som inte är exekverbart men som dr plattformsoberoende och kan kompileras vidare for att ge exekverbar kod. 9 I steg S12 kompileras kallkoden till ett mellanformat sasom definerat i Sl.
I steg S13 levereras tilldggsmodulen i mellanformatet till en leverantor av program. Vanligtvis kommer i tillagg till den faktiska koden att finnas ytterligare filer sasom grafik, script och/eller listor, sasom är vanligt inom teknikomradet. Om programmet är en tillaggsmodul for anvandning med ett vardprogram kan den mottagande leverantoren vara leverantoren av vardprogrammet. Det kan ocksa vara en separat part, som tillhandahaller en eller flera tillaggsmoduler for vardprogrammet.
I steg S14 sparas tillaggsmodulen i mellanformatet i ett filminne frail vilket den kan hamtas ndr som helst, aven flera manader eller ár senare, och kompileras vidare till ett maskinexekverbart format. Foretradesvis tillh8r detta filminne leverant8ren, sasom diskuterats i steg S13.
I steg S15 kompileras tilldggsmodulen fran mellanformatet till maskinkodsformatet.
I steg S16 distribueras det maskinexekverbara formatet till atminstone en kund. Alternativt eller i tillägg kan det sparas i ett andra filminne, for lagring av maskinexekverbara program.
Pa detta satt kan ett minne med maskinkodsversioner av tilldggsmoduler motsvarande de vanligast anvanda datormiljoerna finnas, sa att kompileringen till maskinkod inte behover utforas varje gang. Detta kan goras forsta gangen som en anvandare begar tilldggsmodulen for en viss datormiljo, eller pa forhand.
I stallet for att kompilera kallkoden till mellanformatet innan den levereras till leverantoren skulle det vara mojligt att leverera kallkoden till leverantoren och kompilera till mellanformat efterat. Det innebar att stegen S12 och S13 skulle kunna byta ordning. Det skulle ocksa vara mojligt att leverera mellankoden till slutanvandaren och kompilera till maskinkod darefter, dvs att byta ordning pa stegen S15 och S16. Teoretiskt skulle givetvis mellankoden eller sjalva kallkoden kunna levereras direkt fran tredjepartsleverantoren till slutanvandaren som dâ kunde kompilera den till en version som passar hans datormiljo. Detta skulle dock begransa mojligheterna att Ora sakerhetskontroller av tillaggsmodulerna och kan darfor vara mindre Figur 3 är ett flodesschema som visar distributionen av en tillaggsmodul fran leverantoren till slutanvandaren.
I steg S21 startar slutanvandaren vardprogrammet, till exempel ett fotoredigeringsprogram, pa sin dator. Datorn kan vara vilken som heist typ av datoranordning som har mojlighet att kora programmet, inklusive persondatorer, smarta telefoner och anordningar sasom synthesizers for musik, som inte vanligtvis anses vara datorer men som innefattar processorer och minnen som later dem fungera.
I steg S22 kontaktar datoranordningen leverantoren for att hamta programmet och till5ggsmodulerna. Datoranordningen lagger in den nodvandiga informationen om sin hardvaru- och mjukvarumiljo for att mojliggora for leverantoren att valja lamplig version av programmet och tillaggsmodulerna. Informationen kan tillhandahallas automatiskt av datorn eller kan laggas in automatiskt, t ex genom att anvandaren valjer en version for ett operativsystem for Mac eller Windows, eller for onskad mobilplattform.
I steg S23, som är ett valfritt steg, bestammer leverantoren om versioner av programmodulerna som är lampade for slutanvandarens datormiljo finns Om sâ inte är fallet fortsatter proceduren med steg S24. Om de finns tillgangliga fortsatter proceduren med steg S25.
Steg S24: mellanversionerna av de onskade programmodulerna som finns lagrade hos leverantoren kompileras med anvandning av den lampliga versionen av kompilatorn 11 for att tillhandahalla versioner av de onskade programmodulerna som är anpassade till slutanvandarens datormiljo.
Steg S25: lampliga versioner av programmodulerna tillhandahalls till slutanvandarens dator sa at slutanvandaren kan kora programmet.
Det inses att denna procedur mojliggor for slutanvandaren att byta datormiljö sâ ofta som onskas.
Figur 4 visar schematiskt granssnittet mellan vardprogrammet 10 och en tillaggsmodul 12. Givetvis kan det finnas hur manga tillaggsmoduler som heist som samverkar med vardprogrammet, aven om endast en visas i figur 4.
Vardprogrammet har ett programmeringsgranssnitt, application programming interface, API 18, till vilket en tillaggsmodul är ansluten. Programmeringsgranssnittet är kontraktet mellan de tva foretagen och de tva mjukvarudelarna. Det maste vara mycket omsorgsfullt dokumenterat och maskinverifierat i sâ hog grad som mojligt, bade vid kompilering och nar programmet kors. Programmeringsgranssnittet innefattar tva huvuddelar. Den forsta delen är den ovan namnda verktygsladan 16, som kan anropas av en tillaggsmodul och tillhandahaller till tillaggsmodulen 12 de verktyg den behover for att kommunicera med vardprogrammet 10. Detta är angett i figur 4 med en pil 17 som pekar frail tillaggsmodulen 12 till verktygsladan 16, som visas nara kopplad till vardprogrammet 10. Foretradesvis är tillaggsmodulen 12 mycket begransad i hur den kan samverka med miljön, sasom kommer att diskuteras i det foljande. Den andra delen bestar av de exporterade funktionerna 19, dvs funktionerna som maste exporteras av en tillaggsmodul, som kan anropas frail vardprogrammet. Detta anges i figur 4 genom en pil 20 som pekar frail vardprogrammet 10 till de exporterade funktionerna 19.
Olika versioner av programmeringsgranssnittet kan finnas. Ett vardprogram kan stodj a blandning av tillaggsmoduler med anvandning av olika versioner av 12 programmeringsgranssnittet vid samma tid. Vardens verktygslada tillater tillaggsmodulen att begara operationer fran vardprogrammet som den inte sjalv kan utfora. Exempel kan vara: begaran om att tilldggsmodulen ska fâ itkomst till anvandarinstallningar i vdrdprogrammet eller att modifiera anvandarens dokument som ett resultat av tillaggsmodulens arbete.
Tilldggsmodulens exporterade funktioner anropas av vardprogrammet for att fâ tillaggsmodulen att utfora de unika operationerna som den är utformad for att tillhandahalla. Detta visas i figur 4 genom en pil 20 som pekar fran vardprogrammet till tillaggsmodulen 12. Exempel skulle kunna vara start av tilldggsmodul, stangning av tilldggsmodul, eller att be tillaggsmodulen utfora arbeta pa en del av vardprogrammets data.
For att sakerstalla att en tillaggsmodul inte skadar vardprogrammet, eller andra tilldggsmoduler, ldggs foretradesvis flera restriktioner pa vad tilldggsmodulerna finals Ora.
Tillaggsmodulkoden far inte anropa nagon extern kod, endast verktygsladan som tillhandahalls av vdrdapplikationen.
Tilldggsmodulen far inte ga in i nagon odndlig loop.
Antalet resurser, sasom minne eller CPU-cykler, som tillaggsmodulen far ta upp är begransat. Tilldggsmodulen far inte lasa eller skriva direkt till slutanvandarens dator.
Tillaggsmodulen far inte direkt atkomst till miljon.
Tillaggsmodulen far inte pa nagot sat andra vardprogrammets tillstand. Av sakerhetshansyn kontrolleras foretradesvis alla tilldggsmoduler som sparas i filminnet i steg S14 ovan for kod som kan vara skadlig for vardprogrammet och/eller andra tillaggsmoduler, eller for datormiljon ddr den kors. Foretradesvis kontrolleras detta under tidiga tester, sasom ndr tilldggsmodulen levereras till leverantoren, for att undvika tidsodande tester medan slutanvandaren vantar. Denna kontroll innefattar ett eller flera av foljande steg, foretradesvis alla: 13 Serververktyg validerar statiskt, i automatiska eller scriptstyrda tester av tillaggsmodulen, att tillaggsmodulens kod inte anropar flagon extern kod, endast verktygsladan som tillhandahalls av vardapplikationen.
Nar programmet kors kontrollerar systemet antalet CPU-cykler som anvands av varje tillaggsmodul for att sakerstalla att det inte 8verskrider en viss grans. Detta forhindrar att programmet stannar i en oandlig loop och skyddar ocksa mot ondsinnad eller daligt skriven kod.
Tillaggsmodulkod kan konfigureras att sakerstalla innan varje lasning eller skrivning av minnet att tillaggsmodulen inte gar forbi verktygsladan och kon-imunicerar direkt med datoms minne eller miljö.
Verktygsladan har strikta kontrakt med alla tillaggsmoduler.
Det viktiga tillstandet halls i vardprogrammet och alla fors& av tillaggsmodulen att Ora andringar valideras omsorgsfullt via verktygsladan.
Vardapplikationen anvander funktioner i operativsystemet for att upptacka problem nar programmet kors, sasom delning med noll, hardvaruundantag etc.
Om en tillaggsmodul bryter mot nagot av ovan namnda krav kan vardprogrammet vara anordnat att stanga av tillaggsmodulen. Alternativt kan vardprogrammet vara anordnat att stanga av sig sjalvt och alla tillaggsmoduler i detta fall. Foretradesvis Ors detta utan att skapa problem for slutanvandaren. Viktigast är att slutanvandaren inte forlorar viktigt arbete eller skadas pa andra sat. 14

Claims (13)

Patentkrav 1. Forfarande for att distribuera en tillaggsmodul (12) for ett varddataprogram (10), vilken tillaggsmodul (12) är anordnad att samverka med och utvidga funktionaliteten hos varddataprogrammet (10), varvid forfarandet innefattar foljande steg:
1. kallkod for tillaggsmodulen tillhandahalls, varvid kallkoden är anordnad att kompileras till exekverbar kod och namnda kallkod är oberoende av plattformen pa vilken den exekverbara koden ska koras, 2. ett fOrsta kompileringssteg utfors pa kallkoden fOr att tillhandahalla tillaggsmodulen i ett mellanformat, vilket mellanformat är icke exekverbart och oberoende av plattformen pa vilken den exekverbara koden ska koras, 3. en leverantor sparar tillaggsmodulen i mellanformatet sâ att den kan kompileras till maskinexekverbart format vid ett senare tillfdlle.
2. Forfarande enligt krav 1, vidare innefattande steget att ett andra kompileringssteg utfors pa tillaggsmodulen i mellanformatet for att tillhandahalla tillaggsmodulen sasom exekverbar kod for atminstone en speciell plattform.
3. Forfarande enligt nagot av foregaende krav, varvid steget att tillhandahalla kallkoden utfors av en tredjepartsutvecklare atskild fran leverantoren.
4. Forfarande enligt nagot av foregaende krav, varvid det forsta kompileringssteget utfors av samma part som tillhandahaller kallkoden.
5. Forfarande enligt nagot av foregaende krav, varvid leverantoren ocksa är leverantoren av varddataprogrammet.
6. Forfarande enligt nagot av foregaende krav, vidare innefattande kontroll av att tillaggsmodulen inte innefattar flagon skadlig kod, dar kontrollen innefattar att en eller flera av foljande tester kors: 1. Statisk validering av att tillaggsmodulen inte anropar nagon kod utover kod som tillhandahalls av vardprogrammet for att kommunicera med tilldggsmodulen. 2. Kontroll medan programmet kors av varje tilldggsmoduls CPU- klockcykelanvandning for att sakerstalla att den inte overskrider en viss grans. Detta forhindrar att programmer stannar i en andlos loop och fOrhindrar ocksa ondsinnad eller daligt skriven kod. 3. Kontroll innan varje minne lases eller skrivs for att sakerstalla att tilldggsmodulen kommunicerar endast genom vardprogrammet. 4. Alla fors& av tilldggsmodulen att Ora andringar valideras via en verktygslada. 5. Vardprogrammet anvander funktioner i operativsystemet for att upptacka problem vid korning, sasom forsok att dela med noll eller hardvaruundantag.
7. Datorsystem (1) innefattande en forsta minnesenhet (lb), anordnad att lagra datorprogram i formen av tilldggsmoduler som ska distribueras vid behov, kannetecknat av att datorprogrammen är sparade i minnesenheten i ett mellanformat varvid mellanformatet kompileras fran kallkod och är icke exekverbart och oberoende av plattformen pa vilken den exekverbara koden ska koras, och att datorsystemet alien innefattar kompileringsmjukvara for att kompilera tillaggsmodulerna till mellanformat till maskinexekverbar kod.
8. Datorsystem enligt det ovanstaende kravet, varvid den forsta minnesenheten är anordnad att halla tilldggsmoduler som skrivits i C++ och kompilerats till formatet Intermediate Representation, IR.
9. Datorsystem enligt krav 7, vidare innefattande en andra minnesenhet (lc) anordnad att halla tillaggsmoduler som kompilerats till maskinkod.
10. Datorsystem enligt nagot av kraven 7 — 9, varvid tilldggsmodulerna är anordnade att utfora en realtidsfunktion sasom en en ljud- eller bildfunktion. 16
11. Forfarande for att distribuera atminstone en tillaggsmodul for ett vardprogram fran en leverantor (1) till en slutanvandare (3), varvid leverantoren är anordnad att spara den kminstone ena tillaggsmodulen i ett icke exekverbart, plattformsoberoende format som är ett mellanformat mellan kallkod och maskinsxekverbar kod, innefattande stegen att 1. Pa begaran fran slutanvandaren tillhandahalls till slutanvandaren en version av vardprogrammet anpassad till datormilj on som anvands av slutanvandaren. 2. Ett ldmpligt format for tilldggsmodulen bestams baserat pa versionen av vardprogrammet som tillhandahallits till slutanvandaren. 3. Den atminstone ena tilldggsmodulen tillhandahalls till slutanvandaren i det bestamdalampliga maskinexekverbara formatet.
12. Forfarande enligt krav 11, innefattande steget att valja versionen av vardprogrammet baserat pa indata som tillhandahalls av slutanvandaren.
13. Forfarande enligt krav 11, innefattande steget att valja versionen av vardprogrammet automatiskt baserat pa data som hamtats fran slutanvandarens dator. 17
SE1250267A 2012-03-20 2012-03-20 Förfaranden för att distribuera en dataprogramprodukt och ett datorsystem SE537794C2 (sv)

Priority Applications (4)

Application Number Priority Date Filing Date Title
SE1250267A SE537794C2 (sv) 2012-03-20 2012-03-20 Förfaranden för att distribuera en dataprogramprodukt och ett datorsystem
US14/386,985 US20150052514A1 (en) 2012-03-20 2013-03-15 Method and computer system of distributing a computer program product
EP13717583.2A EP2828746A1 (en) 2012-03-20 2013-03-15 Methods of distributing a computer program product, and a computer system
PCT/SE2013/050265 WO2013141786A1 (en) 2012-03-20 2013-03-15 Methods of distributing a computer program product, and a computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE1250267A SE537794C2 (sv) 2012-03-20 2012-03-20 Förfaranden för att distribuera en dataprogramprodukt och ett datorsystem

Publications (2)

Publication Number Publication Date
SE1250267A1 SE1250267A1 (sv) 2013-09-21
SE537794C2 true SE537794C2 (sv) 2015-10-20

Family

ID=49223960

Family Applications (1)

Application Number Title Priority Date Filing Date
SE1250267A SE537794C2 (sv) 2012-03-20 2012-03-20 Förfaranden för att distribuera en dataprogramprodukt och ett datorsystem

Country Status (4)

Country Link
US (1) US20150052514A1 (sv)
EP (1) EP2828746A1 (sv)
SE (1) SE537794C2 (sv)
WO (1) WO2013141786A1 (sv)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559134A (zh) * 2013-11-11 2014-02-05 曙光信息产业(北京)有限公司 基准测试组件的配置方法和装置
US20230214235A1 (en) * 2022-01-04 2023-07-06 Citrix Systems, Inc. Control over application plugins

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030063120A1 (en) * 2001-09-28 2003-04-03 Wong Hoi Lee Candy Scalable graphical user interface architecture
US8484643B2 (en) * 2003-03-31 2013-07-09 Fujitsu Limited CPU usage time counting method and job control system using this CPU usage time
US20050160409A1 (en) * 2003-05-15 2005-07-21 Veronika Schmid-Lutz Systems and methods for providing software and a corresponding pricing model
US8433664B2 (en) * 2008-08-28 2013-04-30 Sap Ag Method and system for enhancing and merging computer object rules
CN106131178A (zh) * 2008-12-05 2016-11-16 社会传播公司 实时内核
US20130159122A1 (en) * 2011-12-15 2013-06-20 Microsoft Corporation Optimizer as an appstore service
US9569184B2 (en) * 2012-09-05 2017-02-14 Microsoft Technology Licensing, Llc Generating native code from intermediate language code for an application

Also Published As

Publication number Publication date
EP2828746A1 (en) 2015-01-28
WO2013141786A1 (en) 2013-09-26
SE1250267A1 (sv) 2013-09-21
US20150052514A1 (en) 2015-02-19

Similar Documents

Publication Publication Date Title
Schubert et al. Phasar: An inter-procedural static analysis framework for c/c++
JP5090169B2 (ja) プラットホーム独立の動的リンキング
US8291375B2 (en) Attribute-based component programming system and methodology for object-oriented languages
US8453128B2 (en) Method and system for implementing a just-in-time compiler
US9547511B2 (en) Language-based model for asynchronous operations
US7350198B2 (en) Creating and checking runtime data types
US20040268301A1 (en) Adding new compiler methods to an integrated development environment
US9459986B2 (en) Automatic generation of analysis-equivalent application constructs
KR20070067207A (ko) 런타임 동적 링킹
US20060080681A1 (en) Mechanism to extend functionality in a restricted computing environment
Troshina et al. Reconstruction of composite types for decompilation
Factor et al. Instrumentation of standard libraries in object-oriented languages: the twin class hierarchy approach
SE537794C2 (sv) Förfaranden för att distribuera en dataprogramprodukt och ett datorsystem
US20110173595A1 (en) Language-based model for asynchronous operations
Kats et al. Mixing source and bytecode: a case for compilation by normalization
Jezek et al. Magic with Dynamo--Flexible Cross-Component Linking for Java with Invokedynamic
Sharp et al. Static analysis of object references in RMI-based Java software
Eshkabilov MEX Files, C/C, and Stand-Alone Applications
Lee et al. Rapid prototyping of IoT applications with Esperanto compiler
Lutteroth et al. A type system for reflective program generators
Rura et al. A basis for AspectJ refactoring
van Rossum Python Setup and Usage
Swann Software for parallel computing: The LAM implementation of MPI
Fumero et al. Experiences in Building a Composable and Functional API for Runtime SPIR-V Code Generation
Draschbacher A2P2-An Android Application Patching Pipeline Based On Generic Changesets

Legal Events

Date Code Title Description
NUG Patent has lapsed