專利名稱:優(yōu)化模塊性的軟件結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件組件的設(shè)計(jì)和再利用,并且,更具體而言,涉及包含易于再利用的組件的軟件結(jié)構(gòu)。本發(fā)明還涉及根據(jù)現(xiàn)存的軟件結(jié)構(gòu)產(chǎn)生一個(gè)新的、基于模塊的軟件結(jié)構(gòu)的方法。
不通過(guò)畫草圖書寫某個(gè)程序而通過(guò)改變或者再利用多個(gè)現(xiàn)存程序組件來(lái)生成新軟件的方法已很普遍。但是,假定在某個(gè)軟件結(jié)構(gòu)中的多個(gè)模塊之間相互發(fā)生作用,則現(xiàn)存程序中某個(gè)模塊被去除或者被替代可以對(duì)該結(jié)構(gòu)其余部分有著非常顯著的影響。更具體而言,由于調(diào)用另一個(gè)模塊(例如,某個(gè)過(guò)程)的多個(gè)模塊存儲(chǔ)了此將被調(diào)用的模塊的引用,所以在該程序中的多個(gè)改變可使得這些被存儲(chǔ)的引用作廢。
已提出了各種各樣的建議使得在新程序中的現(xiàn)存軟件模塊再利用更簡(jiǎn)單化。在這些建議之中,在美國(guó)專利5,771,386中已有采納了適于對(duì)這些組件模塊進(jìn)行再利用的、基于模塊的某個(gè)軟件結(jié)構(gòu)的一項(xiàng)建議。
尤其是,美國(guó)專利5,771,386描述了由相應(yīng)于被編譯的和單個(gè)鏈接的程序單元的多個(gè)模塊構(gòu)成的某一個(gè)軟件結(jié)構(gòu),這些程序單元選自它們的某個(gè)庫(kù)。每個(gè)程序單元都有具備預(yù)定義結(jié)構(gòu)的一個(gè)文件頭,該文件頭包括,在其中這些預(yù)定位置,與那個(gè)程序單元數(shù)據(jù)或者過(guò)程相關(guān)的地址數(shù)據(jù)。希望調(diào)用數(shù)據(jù)的某個(gè)過(guò)程或者在某個(gè)給定程序單元中的某個(gè)過(guò)程不需要知道正被討論的數(shù)據(jù)的或者過(guò)程的地址,這是由于它通過(guò)編程來(lái)知道在其中將找到所希望的數(shù)據(jù)或過(guò)程的地址的該程序單元文件頭之中的位置。此被描述的軟件結(jié)構(gòu)還包含了存儲(chǔ)有這些各種各樣程序單元文件頭的存儲(chǔ)器位置的一份目錄。
美國(guó)專利5,771,386的該軟件結(jié)構(gòu)能夠再利用多個(gè)軟件模塊而只對(duì)其進(jìn)行最少的改變,以及能夠從這樣的模塊中匯編某個(gè)程序而不必編譯該匯編過(guò)的程序。然而,此軟件結(jié)構(gòu)的這些組件模塊為已被編譯的和單個(gè)鏈接的程序單元,并且對(duì)軟件的多個(gè)改變常??赡軤砍兜侥硞€(gè)程序多個(gè)更為基本組件。此外,此已知的軟件結(jié)構(gòu)要求某個(gè)預(yù)定的文件頭結(jié)構(gòu)來(lái)用于這些軟件模塊,該預(yù)定的文件頭結(jié)構(gòu)強(qiáng)加了某種程度的不靈活性于此設(shè)計(jì)。
本發(fā)明的一個(gè)目的是提供一種軟件結(jié)構(gòu),使它的更低層組件能夠被修改(例如,被去除或者被替代)而減少對(duì)該結(jié)構(gòu)其它那些組件的影響。
本發(fā)明進(jìn)一步的目的是提供一種方法,該方法根據(jù)某個(gè)現(xiàn)存結(jié)構(gòu)產(chǎn)生一個(gè)新的、基于模塊的軟件結(jié)構(gòu)并投入相對(duì)少的時(shí)間和成本來(lái)實(shí)現(xiàn)這些改變。
在本文檔中,對(duì)軟件“組件”或者軟件“多個(gè)模塊”的多個(gè)引用是指任何軟件實(shí)體,可以直接地或者間接地接收輸入?yún)?shù)以及可以直接地或者間接地提供輸出參數(shù),因此,這些引用包括例如,函數(shù)/過(guò)程,操作系統(tǒng)任務(wù),或者更多通用的概念,諸如某一層。
本發(fā)明考慮了以下方面。在某個(gè)軟件結(jié)構(gòu)中的多個(gè)模塊之間的交互作用可以被認(rèn)為是某一種客戶/服務(wù)器關(guān)系的概念。某個(gè)“服務(wù)器”模塊被某個(gè)“客戶”模塊所調(diào)用。某一個(gè)給定模塊既可以調(diào)用其它那些模塊而其自身又可以被其它那些模塊所調(diào)用,因此,該給定模塊既可是一個(gè)客戶又可是一個(gè)服務(wù)器。每個(gè)客戶模塊接受它各自的多個(gè)服務(wù)器模塊的這個(gè)(些)引用做為一個(gè)輸入而不必預(yù)先與它可調(diào)用的這些模塊引用一起編程。換言之,使用了間接調(diào)用的某一種形式。更一般來(lái)講,需要它的某個(gè)(些)服務(wù)器模塊的這個(gè)(些)引用的任何模塊將從它自己的某個(gè)(些)客戶模塊得到。
本發(fā)明的軟件結(jié)構(gòu)能夠使多個(gè)模塊被互換或被取消而對(duì)相應(yīng)編碼進(jìn)行較少的修改,而同時(shí)維護(hù)這些模塊的完整性。因此,在軟件開發(fā)期間就節(jié)省了時(shí)間和成本??刹杉{此結(jié)構(gòu)用于任何結(jié)構(gòu)化模塊的軟件。
在根據(jù)本發(fā)明的優(yōu)選實(shí)施方案的該軟件結(jié)構(gòu)中,該結(jié)構(gòu)中一個(gè)模塊的替代是直接的-對(duì)該新模塊的引用,而不是對(duì)舊(被替代的)模塊的引用,被簡(jiǎn)單做為某一個(gè)輸入傳送到這個(gè)(些)相關(guān)客戶模塊。因此,僅僅在到該系統(tǒng)的某個(gè)輸入的層次上需要改變,而不需要在調(diào)用該被替代的服務(wù)器模塊的客戶模塊中的每一個(gè)里的改變。
在根據(jù)本發(fā)明的優(yōu)選實(shí)施方案的該軟件結(jié)構(gòu)中,去除某個(gè)模塊是通過(guò)由某個(gè)空引用替代對(duì)舊(被去除的)模塊的引用來(lái)實(shí)現(xiàn)的,即,常量引用采用所有模塊被預(yù)先編程以辨別為不對(duì)應(yīng)于該結(jié)構(gòu)中的任何模塊的值。接收了該空引用的客戶模塊識(shí)別出此空引用對(duì)應(yīng)于某一個(gè)并不存在的模塊,因此,客戶模塊不對(duì)其做調(diào)用。
由于根據(jù)本發(fā)明的該軟件結(jié)構(gòu)的模塊不再存儲(chǔ)引用至潛在的服務(wù)器模塊,去除或者替代這些服務(wù)器模塊對(duì)那些潛在的調(diào)用模塊幾乎沒有影響。
本發(fā)明根據(jù)現(xiàn)存的、基于模塊的結(jié)構(gòu)提供了產(chǎn)生新的軟件結(jié)構(gòu)的一種方法。
本發(fā)明及其附加特征——它們可被有選擇的使用以實(shí)現(xiàn)此有益的發(fā)明,參照來(lái)自下列所描述并被闡明的多個(gè)附圖來(lái)看是顯而易見的。
圖1是在軟件結(jié)構(gòu)中兩個(gè)交互作用模塊的示意表示;圖2是包含五個(gè)交互作用模塊的常規(guī)軟件結(jié)構(gòu)的示意表示;圖3是包含五個(gè)交互的模塊根據(jù)本發(fā)明的軟件結(jié)構(gòu)的示意表示;圖4示出了在圖2的該常規(guī)軟件結(jié)構(gòu)中的模塊替代;圖5示出了根據(jù)本發(fā)明的,圖3的該軟件結(jié)構(gòu)中的模塊替代;圖6示出了在圖2的該常規(guī)軟件結(jié)構(gòu)中的模塊去除;圖7示出了根據(jù)本發(fā)明的圖3的該軟件結(jié)構(gòu)中的模塊去除;以及圖8表示了在移動(dòng)電話中的一個(gè)無(wú)線電通信驅(qū)動(dòng)程序,它實(shí)施根據(jù)本發(fā)明的軟件結(jié)構(gòu)。
首先對(duì)多個(gè)引用標(biāo)識(shí)的使用將作出一些注釋。附圖中相同的實(shí)體由相同的字母編碼表示。各種各樣類同實(shí)體可在某一單個(gè)附圖中示出。在那種情形,某個(gè)數(shù)值被加到該字母編碼以便相互區(qū)分類似實(shí)體。應(yīng)注意到,多個(gè)模塊被指示為“Mx”,其中x是指示每個(gè)模塊的某個(gè)數(shù)字,并且某個(gè)模塊的引用通過(guò)使用“&”符號(hào)來(lái)表示。因此,模塊Mx的引用寫成“&Mx”。在此描述和權(quán)利要求中,某個(gè)引用標(biāo)識(shí)中的任何數(shù)值如果適宜的話都可以被省略。
從圖1來(lái)思考,將更好理解在本發(fā)明中使用的圖形約定,圖1示出了兩個(gè)交互作用模塊M1和M2。在此附圖(及其它所有圖)中,某個(gè)指向一個(gè)模塊的指針代表了對(duì)此模塊的一個(gè)調(diào)用,對(duì)比之下,從一個(gè)模塊出來(lái)的某個(gè)指針代表了此模塊對(duì)另一個(gè)模塊所做的一個(gè)調(diào)用。標(biāo)識(shí)在某個(gè)指針旁的文字是與正在討論中的調(diào)用有關(guān)的輸入/輸出。因此,在圖1中所示的例子,對(duì)模塊M1做某個(gè)調(diào)用而該模塊接受標(biāo)識(shí)為“M1的輸入”的某個(gè)參數(shù)作為一個(gè)輸入。該模塊M1對(duì)模塊M2做一個(gè)調(diào)用,它傳送給M2標(biāo)識(shí)為“M1的輸出”和“M2的輸入”的某個(gè)參數(shù)。該模塊M2依次對(duì)某一個(gè)按順序的模塊(未圖示)做一個(gè)調(diào)用,傳送給其標(biāo)識(shí)為“M2的輸出”的某一個(gè)參數(shù)。
為幫助理解本發(fā)明,下列描述用根據(jù)本發(fā)明的某一個(gè)實(shí)施方案實(shí)現(xiàn)的某個(gè)對(duì)應(yīng)的結(jié)構(gòu)來(lái)比較包含了五個(gè)交互作用模塊的某個(gè)常規(guī)軟件結(jié)構(gòu)的例子??梢岳斫猓景l(fā)明可被擴(kuò)展到多個(gè)更復(fù)雜的系統(tǒng),并且,總的來(lái)說(shuō),本發(fā)明適用于包含模塊的任何數(shù)目的多個(gè)結(jié)構(gòu)。
圖2代表某個(gè)常規(guī)軟件結(jié)構(gòu)的情形,該軟件結(jié)構(gòu)由可調(diào)用其它四個(gè)模塊M1,M2,M3和M4中任何一個(gè)的某一個(gè)模塊M0。該模塊M1自身可調(diào)用模塊M3。模塊M0存儲(chǔ)了它可調(diào)用的這四個(gè)模塊的引用&M1,&M2,&M3和M4。類似地,模塊M1存儲(chǔ)了它可調(diào)用的模塊引用&M3。在調(diào)用期間以及在這些模塊之間,不傳送模塊引用參數(shù)。
圖3表示根據(jù)本發(fā)明由相同模塊M0到M4組成的軟件結(jié)構(gòu),其中M0可調(diào)用其它四個(gè)模塊M1到M4中的任何一個(gè),并且模塊M1自身可調(diào)用模塊M3。然而,在此情形中不存在被存儲(chǔ)的引用。恰恰相反,模塊M0接收它可調(diào)用的四個(gè)模塊的引用&M1、&M2、&M3和&M4做為輸入?yún)?shù)。相似的,模塊M1從M0接收它可調(diào)用的模塊的引用&M3。進(jìn)一步講,在此結(jié)構(gòu)中的所有模塊被設(shè)計(jì)成識(shí)別一個(gè)引用對(duì)應(yīng)一個(gè)并不存在模塊的常量值(空引用),從而不需要對(duì)該模塊做一個(gè)調(diào)用。
更具體而言,每個(gè)模塊能適于比較被接收模塊的引用和該空引用,并且,僅僅如果該比較的結(jié)果為負(fù)值,則調(diào)用對(duì)應(yīng)于接收的引用的模塊。“調(diào)用”所采取的形式將根據(jù)實(shí)現(xiàn)——例如,它可包含到相應(yīng)于被接收的模塊引用的某個(gè)地址的跳轉(zhuǎn)。
將能理解到,這些模塊可以接收對(duì)應(yīng)于不是模塊引用的參數(shù)的輸入(未在圖3示出)。而對(duì)應(yīng)于模塊引用的輸入與其它輸入的區(qū)分是通過(guò)根據(jù)用來(lái)實(shí)現(xiàn)該結(jié)構(gòu)的程序設(shè)計(jì)語(yǔ)言而變化的已知的手段來(lái)實(shí)現(xiàn)的。例如,對(duì)應(yīng)于模塊引用的某個(gè)消息的文件頭或者格式可以不同于其它多個(gè)輸入的文件頭或者格式。
圖2和圖3中的軟件結(jié)構(gòu)之間差異的重要性將從替代和去除來(lái)自該最初結(jié)構(gòu)的某個(gè)模塊作用的下列描述中得以體會(huì)。
圖4和圖5示出了模塊M3分別在圖2的常規(guī)結(jié)構(gòu)中以及根據(jù)本發(fā)明的圖3的結(jié)構(gòu)中被某個(gè)新模塊M5所替代的情形。
從圖4中將看到,在常規(guī)軟件結(jié)構(gòu)的情形中,模塊M3被模塊M5所替代使模塊M0和M1的修改成為必要,以便用該新引用&M5替代作廢的引用&M3。因此在此情形中某個(gè)模塊的替代要求對(duì)其它兩個(gè)模塊所進(jìn)行的改變。
與此對(duì)照,從圖5中將看到,在實(shí)施了本發(fā)明的結(jié)構(gòu)的情形中,由新模塊M5所替代的模塊M3不需要對(duì)模塊M0和M1做任何改變。僅僅是做為輸入被傳送到模塊M0的引用發(fā)生改變(從&M3到&M5)。模塊M0將正確調(diào)用新模塊M5這是因?yàn)槟KM0已被安排調(diào)用四個(gè)模塊,它們的引用做為輸入被它所接收。因?yàn)?,模塊M0已被安排把它的第三個(gè)輸入?yún)?shù)傳送到模塊M1,以及模塊M1已被安排調(diào)用其引用做為從M0的輸入所接收的,所以由模塊M1對(duì)M5的調(diào)用也將自動(dòng)正確進(jìn)行。通過(guò)使用本發(fā)明的間接調(diào)用技術(shù),當(dāng)模塊M3被模塊M5所替代時(shí),僅僅M0的一個(gè)輸入?yún)?shù)必須被修改。模塊M0和M1不被改變。
圖6和圖7模塊M5分別從圖4的常規(guī)結(jié)構(gòu)中以及從根據(jù)本發(fā)明的圖5的結(jié)構(gòu)中被去除的情形。
從圖6中將看到,在常規(guī)軟件結(jié)構(gòu)的情形中,模塊M5的去除再次使模塊M0和M1的修改成為必要。在此情形,必須改變模塊M0和M1以便它們不對(duì)該被去除的模塊M5進(jìn)行調(diào)用。因此,在此情形中某一個(gè)模塊的去除要求對(duì)其它兩個(gè)模塊進(jìn)行改變。
與此相對(duì)照,從圖7中將看到,在實(shí)施本發(fā)明的該結(jié)構(gòu)的情形中,模塊M5的去除不需要對(duì)模塊M0和M1的改變。再一次,僅僅是做為輸入被傳送到模塊M0的引用發(fā)生改變(從&M5到空引用)。模塊M0被安排成把此空引用做為一個(gè)輸入傳送到模塊M1,并且模塊M0和M1被安排成識(shí)別對(duì)由空引用所指示的某個(gè)模塊不需要進(jìn)行調(diào)用。因此自動(dòng)取消對(duì)被去除的模塊M5的這些調(diào)用。
以上所給出的比較性例子強(qiáng)調(diào)這樣的事實(shí)本發(fā)明使在一個(gè)基于模塊軟件結(jié)構(gòu)中的模塊的改變對(duì)該結(jié)構(gòu)其余部分的影響減小。
在根據(jù)本發(fā)明的該軟件結(jié)構(gòu)中,客戶機(jī)/服務(wù)器鏈的第一個(gè)模塊(例如,圖3、圖5和圖7例子中的M0)從存儲(chǔ)器導(dǎo)出,或者從內(nèi)部參數(shù)導(dǎo)出,即需要它本身或者傳送給其它模塊的模塊引用中導(dǎo)出。在這些模塊引用從存儲(chǔ)器中提供的情形中,當(dāng)替代/去除在該鏈中某一模塊“向下裝入”的時(shí)候有必要進(jìn)行少量重新編程。在這些模塊引用起源于多個(gè)內(nèi)部參數(shù)的情形中,則當(dāng)替代/去除某一個(gè)“向下裝入”的模塊的時(shí)候需要對(duì)此第一個(gè)模塊進(jìn)行少量重新編程。但是,所要求的該重新編程僅涉及到此被替代的/被去除的模塊的模塊引用的起源而不涉及到在常規(guī)情形中所可能要求的、此被替代的/被去除的模塊的所有潛在客戶模塊的那種重新編程。
圖8示出了在移動(dòng)電話技術(shù)領(lǐng)域中,本發(fā)明具體應(yīng)用的一個(gè)例子,特別涉及到在一個(gè)移動(dòng)電話之中的無(wú)線電通信驅(qū)動(dòng)程序。在本例中,模塊對(duì)應(yīng)于函數(shù)。
正如圖8所示,在某個(gè)移動(dòng)電話中的該無(wú)線電通信驅(qū)動(dòng)程序包括一個(gè)函數(shù),本文指示為“Radio_init”,即初始化無(wú)線電。該Radio_init函數(shù)調(diào)用其它兩個(gè)函數(shù)一個(gè)本文指示為“PLL-init”,即初始化在該無(wú)線電中的鎖相環(huán),而另一個(gè)本文指示為“PLL-load”,即對(duì)該P(yáng)LL進(jìn)行編程。函數(shù)PLL-init和PLL-load根據(jù)在該移動(dòng)電話里所使用的特殊無(wú)線電類型而變化。函數(shù)Radio_init更通用,而且特別根據(jù)所使用的無(wú)線電類型而不變化。通過(guò)根據(jù)本發(fā)明采納某種結(jié)構(gòu),其中該Radio_init函數(shù)不存儲(chǔ)PLL-init函數(shù)和PLL-load函數(shù)的引用但是接收這些引用做為一個(gè)輸入,PLL-init函數(shù)及PLL-load函數(shù)的不同集合可以和某個(gè)給定的Radio_init函數(shù)相配合而不需要對(duì)該Radio_init模塊進(jìn)行任何重新編程。在對(duì)使用不同類型無(wú)線電通信的移動(dòng)電話的無(wú)線電通信驅(qū)動(dòng)程序軟件的開發(fā)期間,這就節(jié)省了時(shí)間和成本。
這些附圖及其本文此前所述,示出了而不是限制了本發(fā)明。明顯有非常多的選擇落在此附加的權(quán)利要求的范圍之內(nèi)。
在某一個(gè)權(quán)利要求中的任何引用標(biāo)記都不應(yīng)該僅按字面意思對(duì)該權(quán)利要求加以限制。
權(quán)利要求
1.一種包含多個(gè)模塊(M0-M4)的軟件結(jié)構(gòu),所述多個(gè)模塊中的至少一個(gè)是適于調(diào)用使用所述被調(diào)用模塊的引用(&M3)的所述多個(gè)模塊中的另一個(gè)(M3)的某一個(gè)模塊(M1),其中將被調(diào)用的該模塊的該引用(&M3)做為輸入被提供到所述調(diào)用模塊(M1)。
2.如權(quán)利要求1的軟件結(jié)構(gòu),其中所述多個(gè)模塊(M0-M4)中的每一個(gè)都適于識(shí)別具有一個(gè)預(yù)定值的某一個(gè)輸入?yún)?shù)為一個(gè)空引用,以及當(dāng)將被調(diào)用的模塊被該空引用所指示時(shí)不進(jìn)行調(diào)用。
3.如權(quán)利要求1的軟件結(jié)構(gòu),其中每一個(gè)模塊(Mx)對(duì)應(yīng)從包含函數(shù)、過(guò)程、操作系統(tǒng)任務(wù)和多個(gè)層的組中選擇的一個(gè)軟件實(shí)體。
4.根據(jù)包含多個(gè)模塊(M0-M4)的、現(xiàn)有的和基于模塊的一個(gè)結(jié)構(gòu)所產(chǎn)生新的、基于模塊的一個(gè)軟件結(jié)構(gòu)的一種方法,所述多個(gè)模塊中的至少一個(gè)是適于調(diào)用使用所述被調(diào)用模塊的引用(&M3)的所述多個(gè)模塊中的另一個(gè)(M3)的某一個(gè)模塊(M1),其中將被調(diào)用的該模塊的該引用(&M3)做為輸入被提供到所述調(diào)用模塊(M1),該方法包含這些步驟消除所述多個(gè)模塊(M3)中的至少一個(gè),以及改變對(duì)應(yīng)于被消除的模塊的該引用(&M3)的輸入值。
5.如權(quán)利要求4的結(jié)構(gòu)生成方法,其中所述多個(gè)模塊(M0-M4)中的每一個(gè)都適于識(shí)別具有一個(gè)預(yù)定值的某一個(gè)輸入?yún)?shù)作為一個(gè)空引用,并且都適于當(dāng)將被調(diào)用的該模塊被該空引用所指示的時(shí)候不進(jìn)行某一個(gè)調(diào)用,以及其中改變的步驟包含用某一個(gè)空引用替代對(duì)應(yīng)于被去除的模塊的該引用(&M3)的輸入。
6.如權(quán)利要求4的結(jié)構(gòu)生成方法,并且該方法包含用具有一個(gè)不同引用(&M5)的替代模塊(M5)來(lái)替代被去除的模塊的步驟,其中改變的步驟包含用對(duì)應(yīng)于替代模塊的該引用(&M5)的輸入來(lái)替代對(duì)應(yīng)于此被改變的模塊的該引用(&M3)。
7.如權(quán)利要求4的結(jié)構(gòu)生成方法,其中每一個(gè)模塊(Mx)都對(duì)應(yīng)于從包含函數(shù)、過(guò)程、操作系統(tǒng)任務(wù)和層組成的組中選擇的某一個(gè)軟件實(shí)體。
8.一種包含鎖相環(huán)的無(wú)線電通信電話,該鎖相環(huán)由具有根據(jù)權(quán)利要求1的結(jié)構(gòu)的通過(guò)無(wú)線電通信驅(qū)動(dòng)程序軟件所控制。
全文摘要
在某一個(gè)基于模塊的軟件結(jié)構(gòu)中,通過(guò)使用某種間接調(diào)用技術(shù)使得模塊替代或者模塊去除所帶來(lái)的影響最小化。多個(gè)模塊(M0-M4)之間的多個(gè)交互作用被認(rèn)為是某一種客戶/服務(wù)器關(guān)系的概念,某個(gè)服務(wù)器模塊(例如M3)被某個(gè)客戶模塊(例如M1)利用該服務(wù)器模塊的引用(&M3)所調(diào)用。將被調(diào)用的該模塊(M3)的引用(&M3)做為某一個(gè)輸入被供應(yīng)到該客戶模塊(M1)。每一個(gè)模塊都適于把采取一個(gè)預(yù)定值的某個(gè)輸入?yún)?shù)識(shí)別為某個(gè)空引用。當(dāng)將被調(diào)用的模塊被標(biāo)志為某個(gè)空引用時(shí),就不對(duì)該模塊進(jìn)行調(diào)用。
文檔編號(hào)G06F9/44GK1535416SQ02800737
公開日2004年10月6日 申請(qǐng)日期2002年3月8日 優(yōu)先權(quán)日2001年3月20日
發(fā)明者S·麥凱, S 麥凱 申請(qǐng)人:皇家菲利浦電子有限公司