![]() |
以作者查詢圖書館館藏 、以作者查詢臺灣博碩士 、以作者查詢全國書目 、勘誤回報 、線上人數:22 、訪客IP:18.117.132.49
姓名 鄧祥允(Hsiang-Yun Teng) 查詢紙本館藏 畢業系所 資訊工程學系 論文名稱 無原始碼的軟體擴充技術:Parasite Programming 相關論文 檔案 [Endnote RIS 格式]
[Bibtex 格式]
[相關文章]
[文章引用]
[完整記錄]
[館藏目錄]
至系統瀏覽論文 (2029-7-16以後開放)
摘要(中) 在軟體開發中,擴充軟體功能需要修改其原始程式碼。為了讓第三方開發者也能擴充軟體,軟體業者通常會提供開源程式碼、API、Extension / Plugin 等解決方案。然而,這些擴充方法終究只屬於少數知名軟體,大部分軟體尚未達到這個規模,軟體在開發過程中也不會優先考慮第三方開發者的擴充需求,而要取得大受歡迎的軟體原始程式碼更是一件難事。
為了解決上述問題,本論文介紹了一種名為 Parasite Programming 的創新擴充方式,專注於擴充 Windows 作業系統的桌面應用程式。論文中將需要擴充的軟體稱為宿主(以下稱為 Host),而擴充 Host 的軟體稱為寄生蟲(以下稱為 Parasite)。Parasite 會透明地覆蓋在 Host應用程式上,讓使用者看似原始 Host 增加新功能。Parasite 運行時,其背後的 Backend 利用作業系統提供的 Accessibility API 來監控 Host的 UI,並根據 UI 變化顯示所需的擴充功能。
此外,本論文還進一步開發了 Parasite Programming SDK,使開發者在沒有 Host 原始碼的情況下,快速開發 Parasite,並能夠擴展軟體功能,突破了傳統上無法擴充軟體的限制。摘要(英) In software development, extending software functionality typically requires modifying its source code. To enable third-party developers to extend software, software vendors usually provide solutions such as open-source code, APIs, and extensions/plugins. However, these extension methods are mainly applicable to a few well-known software products. Most software has not reached this scale, and third-party extension needs are not prioritized during development. Moreover, obtaining the source code of widely popular software can be a challenging task.
To address these issues, this paper introduces an innovative extension method called Parasite Programming, which focuses on extending desktop applications on the Windows operating system. In this paper, the software that needs extension is referred to as the Host, while the software extending the Host is called the Parasite. The parasite transparently overlays the host application, making it appear as though the original host has added new features. When the Parasite runs, its backend utilizes the Accessibility API provided by the operating system to monitor the Host′s user interface (UI) and display the required
extension features according to UI changes.
Additionally, this paper further develops the Parasite Programming SDK, enabling developers to swiftly create Parasites and expand software functionality without requiring access to the Host′s source code. This breakthrough overcomes the traditional limitations that previously impeded software expansion.關鍵字(中) ★ 軟體擴充
★ 寄生蟲關鍵字(英) ★ Microsoft Accessibility API
★ SDK
★ Programming論文目次 目錄
摘要............................................................................................................. i
Abstract...................................................................................................... ii
目錄........................................................................................................... iii
圖目錄....................................................................................................... vi
表目錄..................................................................................................... viii
一、 緒論.............................................................................................1
二、 研究背景與相關技術 ..............................................................11
2-1 API 與 Extension / Plugin .......................................................11
2-2 RPA..........................................................................................12
2-3 Microsoft Accessibility API.....................................................13
2-4 Electron....................................................................................14
2-5 GeekyNote ...............................................................................14
三、 構思 Parasite.............................................................................17
3-1 Parasite 的挑戰........................................................................17
3-1-1 獲取原始碼的困難.......................................................18
3-1-2 第三方擴充需求的忽視...............................................18
3-1-3 開發成本.......................................................................19
3-1-4 市場規模.......................................................................19
3-2 Parasite 與 Host 概念的發想..................................................20
iv
3-3 Parasite 與 Host 如何溝通......................................................20
3-3-1 如何識別 UI..................................................................20
3-3-2 如何操作 UI..................................................................21
3-4 實作 Parasite 的流程...............................................................22
3-4-1 生成 UI Descriptor........................................................23
3-4-2 UI Descriptor.................................................................23
3-4-3 UI Descriptor Extractor.................................................25
3-5 開發 Parasite............................................................................26
3-5-1 Electron Renderer..........................................................28
四、 Parasite SDK 架構....................................................................31
4-1 Front End 介紹........................................................................32
4-1-1 前端框架 Electron ........................................................32
4-1-2 Web 通用語言 TypeScript............................................33
4-1-3 Host Object Model(Hom)........................................34
4-2 Back End 介紹.........................................................................35
4-2-1 使用 Microsoft Accessibility API 存取 UI..................36
4-2-2 Event Driven – SignalR.................................................36
五、 Parasite SDK 的階段性驗證....................................................38
5-1 Parasite Programming 與傳統擴充的差異 ............................38
5-2 評估 GeekyNote Parasite 跨應用程式的無縫體驗...............40
v
5-3 Parasite SDK 的實用性...........................................................42
六、 結論與未來展望 ......................................................................45
七、 參考資料 ..................................................................................47參考文獻 [1] Joshua, B. “How to design a good API and why it matters” OOPSLA
′06: Companion to the 21st ACM SIGPLAN symposium on
Object-oriented programming systems, languages, and applications,
22 October 2006
[2] Mohamed, B; Anis, C; Mira, M. “Building extensions for
applications: Towards the understanding of extension possibilities” in
2013 21st International Conference on Program Comprehension
(ICPC) 20-21 May 2013
[3] Visual Studio Code Extension Capabilities Overview [Online].
https://code.visualstudio.com/api/extension-capabilities/overview
[4] Marcus, N. “PLUGINS AS A PLATFORMFOR SYSTEM
EXTENSION” in Master’s Thesis in Computing Science, 30 credits
March 5, 2008
[5] D.A. da Silva Costa. “Robotic Process Automation (RPA) adoption: a
systematic literature review” in s published under the Creative
Commons BY-NC-ND 4.0 License 5 May 2022
[6] UiPath [Online]. https://www.uipath.com/
[7] Johnson M. Hart. “Win32 Systems Programming” in ACM Browse
Digital Library 01 August 1997
[8] J. Carter; M. Markel. “Web accessibility for people with disabilities:
an introduction for Web developers” in IEEE Transactions on
Professional Communication December 2001
[9] Rob,H. “New accessibility model for Microsoft Windows and cross
platform development” in ACM SIGACCESS Accessibility and
Computing June 2005
[10]Muhammed,J. “Building Cross-Platform Desktop Applications with
Electron” in ACM Browse Digital Library 28 April 2017
[11]Brucker, AD; Herzberg, M. “A formal model of the Document Object
Model” in Archive of Formal Proofs 26 December 2018
[12]ASP.NET Core SignalR 概 觀 [Online].
https://learn.microsoft.com/zh-tw/aspnet/core/signalr/introduction?vi
ew=aspnetcore-8.0
[13]Nishant,S ; Rekha, A. “HTTP, WebSocket, and SignalR: A
Comparison of Real-Time Online Communication Protocols” in
48
Conference paper 24 September 2023
[14]Yung-Pin, Cheng, Wei-Nien, Hsiung, Yu-Shan, Wu, Li-Hsuan Chen.
“GeekyNote: a technical documentation tool with coverage,
backtracking, traces, and couplings” in: 2020 IEEE/ACM 42nd
International Conference on Software Engineering: Companion
Proceedings (ICSE-Companion) 05-11 October 2020
[15]Martin, B; Arthur, C; Daniele, F; Philippa, G; Sergio, M; Daiva, N;
Alan, S; Gareth, S; “A trusted mechanised JavaScript specification”
in POPL ′14: Proceedings of the 41st ACM SIGPLAN-SIGACT
Symposium on Principles of Programming Languages January 2017指導教授 鄭永斌(Yung-Pin Cheng) 審核日期 2024-7-23 推文 plurk
funp
live
udn
HD
myshare
netvibes
friend
youpush
delicious
baidu
網路書籤 Google bookmarks
del.icio.us
hemidemi
myshare