簡易檢索 / 詳目顯示

研究生: 郭禹鴻
Guo, Yu-Hung
論文名稱: 支持元件式軟體開發之嵌入式系統中介軟體與開發環境
An Embedded Middleware for Component-Based Software Development and the Development Environment
指導教授: 蘇文鈺
Su, W. Y. Alvin
學位類別: 碩士
Master
系所名稱: 電機資訊學院 - 資訊工程學系
Department of Computer Science and Information Engineering
論文出版年: 2007
畢業學年度: 95
語文別: 英文
論文頁數: 208
中文關鍵詞: 元件式軟體開發軟體再用開發平台嵌入式中介軟體
外文關鍵詞: embedded middleware, component­-based software development, software reuse, development environment
相關次數: 點閱:182下載:2
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 元件式軟體開發(component-based software development)是一種軟體開發方式,主要概念是將軟體依其架構與功能性分為多個獨立元件,在軟體開發過程中獨立開發這些元件,其後將各元件連接組合起來,完成最終應用程式的一種軟體開發方式。元件導向式軟體開發之目的在於加強軟體的可重複利用性與彈性,並提供軟體開發者一個更方便、快速且容易使用的軟體開發方式。本論文在嵌入式系統上提出一套符合元件導向式軟體設計的方法,實作其中的元件中介軟體以及該中介軟體的整合軟體開發平台。該中介軟體可運行於 Linux 個人電腦或各種基於 Unix 之嵌入式系統之上,中介軟體本身並提供多個預設的元件與組合而成的應用程式,建立一個預設的元件資料庫。本論文之中介軟體核心設計考量嵌入式系統之有限資源與有限計算能力,提供最小的記憶體需求,縮小與各種函式庫的依賴性。對於嵌入式軟體開發人員而言,本中介軟體提供簡單易用的元件模組化設計,並利用各種現有開放源碼軟體,如 GNU Toolchain 平台,提供開發環境支援,其與中介軟體的核心設計概念組合,成為一個完整的嵌入式軟體開發平台,首重概念為模組化的設計、軟體重用、易於使用與除錯。

    Component-based software development(CBSD) is a branch of software engineering discipline, with emphasis on the decomposition of the software system into various functional or logical components according to its software architecture. In the software development process the components are individually implemented and later assembled or composed into the final software application. CBSD is an approach to software development that relies on software reuse and flexibility. CSBD is aimed to provide developers with a more convenient and easier to use development procedure. In this paper we proposed a way to realize CBSD and implemented the component middleware on which software components cooperate and run. We also implemented software development toolkits for the middleware to construct a software development environment. The middle-ware is targeted for embedded Unix-like operating systems, but it can also be applied to desktop computers. The middleware comes with default component repository with which one can easily build an embedded application with the composer tool of our middleware. The kernel of our system is designed with efficiency in mind, so as to provide maximal flexibility with minimal computing power and library dependencies. For embedded software developers, our middleware allows for simpler modular component design. With the support of open source softwares such as GNU toolchain, we have built a complete embedded software development platform with its concept being component-oriented design, software reuse, and easier development.

    Acknowledgment iv List of Tables vii List of Figures viii Chapter 1. Introduction 1 1.1. Introduction to Components and CBSD 1 1.2. Current Technologies on CBSD 3 1.2.1. CORBA 3 1.2.2. COM 5 1.2.3. EJB 7 1.3. Motivation 8 Chapter 2. SLIM Component Model 10 2.1. Overview 10 2.2. Glossary 11 2.3. Component Model 12 2.3.1.Software Components in SLIM 12 2.3.2.Component Interfaces for Component-level Invocations 16 2.3.3.Component Interfaces for Middleware-level Invocations 17 2.4. Component Bindings 19 2.4.1.Synchronous Component Binding 19 2.4.2.Asynchronous Component Binding 20 2.4.3.Binding Method in SLIM 21 2.5.Interface Description Language and XML 23 2.6. SLIM Building Blocks 25 Chapter 3. Middleware Design 27 3.1. The Middleware Kernel 27 3.2. Thread and Memory Monitors 30 3.2.1. SCREAM Watchdogs 31 3.2.2. SCREAM Threads 32 3.2.3. SCREAM Pointers 36 3.2.4. SCREAM Networks 39 3.3. Graphical User Interface Engine 40 3.3.1. Automating Graphical UI Design 40 3.3.2. MiniGUI Introduction 43 3.3.3. Integration of GUI Engine in SLIM 44 3.4. Efficiency and Testing Results 47 3.4.1. Overview of Code Size and Efficiency 47 3.4.2. SLIM Kernel Overhead in SLIM Applications 49 3.4.3. Memory Usages of SLIM on Embedded Systems 54 Chapter 4. SLIM Development Environment 57 4.1. Overview 57 4.2. Component Template Tool of SLIM 59 4.3. Interactive Shell of SLIM 60 4.4. Code Generation and Releasing Tool of SLIM 63 4.5. Embedded Software Development on SLIM 65 4.6. JACK Bindings: Case Study of Component Development on SLIM 66 4.6.1. Introduction to JACK 66 4.6.2. Differences between SLIM and JACK Frameworks 69 4.6.3.Constructing the Gateway to JACK 70 4.7. MP3 Player: Case Study of Software Development on SLIM 75 4.7.1. Planing for The Software 75 4.7.2. Designing the Component Specifications and Its Architecture 75 4.7.3. Composing and Testing 77 4.7.4. Releasing 78 Chapter 5. Conclusion and Future Work 79 5.1. Status and Conclusion 79 5.2. Future Works 80 References 83 Appendix A: SLIM User's Manual 86 Appendix B: Callgrind and KCachegrind 87 Biographical Note 90

    [1]: Ivica Crnkovic, "Component-based Software Engineering-New Challenges in Software Development", In Information Technology Interfaces, 2003
    [2]: D Urting, S Van Baelen, T Holvoet, Y Berbers, Embedded Software Development: Components and Contracts , In Proceedings of the IASTED International Conference Parallel, 2001
    [3]: P Bresciani, A Perini, P Giorgini, F Giunchiglia, J Mylopoulos, "Tropos: An Agent-Oriented Software Development Methodology ", In Autonomous Agents and Multi-Agent Systems, 2003
    [4]: G.T. Heineman and W.T. Councill, "Component-Based Software Engineering: Putting the Pieces Together", Addison-Wesley, 2001
    [5]: "Component Based Software Engineering", http://www.smb.uklinux.net/reusability
    [6]: Mei Hong, Chen Feng, Feng Yao-Dong, Yang Jie, "ABC: An Architecture Based, Component Oriented Approach to Software Development", In Journal of Software 軟體學報, 2003
    [7]: Xia Cai, Michael R. Lyu, Kam-Fai Wong, Roy Ko, "Component-Based Software Engineering: Technologies, Development Frameworks, and Quality Assurance Schemes", In Proceedings of the Seventh Asia-Pacific Software Engineering, 2000
    [8]: Brown A., "Large-Scale Component-Based Development", Prentice Hall, 2000
    [9]: Roger S. Pressman., "Software Engineering - A Practitioner's Approach", McGraw-Hill Professional, 2005
    [10]: "Common Object Request Broker Architecture - Wikipedia", http://en.wikipedia.org/wiki/CORBA
    [11]: Robert Orfali, Jeri Edwards, Dan Harkey, Jeri Edwards, "The Essential Distributed Objects Survival Guide", John Wiley & Sons, 1996
    [12]: "CORBA Product Profiles", http://www.puder.org/corba/matrix/
    [13]: Michi Henning, ZeroC, "The Rise and Fall of CORBA", In ACM Queue vol. 4, no. 5, 2006
    [14]: "Component Object Model - Wikipedia", http://en.wikipedia.org/wiki/Component_object_model
    [15]: "Microsoft COM Technologies", http://www.microsoft.com/com/
    [16]: Don Box, "Essential COM", Addison-WesleyProfessional, 1998
    [17]: "Sun's Enterprise JavaBeans Technology", http://java.sun.com/products/ejb/index.jsp
    [18]: "Enterprise JavaBean - Wikipedia", http://en.wikipedia.org/wiki/Ejb
    [19]: "NetBeans Official Site", http://www.netbeans.org/
    [20]: "Eclipse Official Site", http://www.eclipse.org/
    [21]: "Ruby on Rails", http://www.rubyonrails.org/
    [22]: "Spring Framework.org", http://www.springframework.org/
    [23]: "Hibernate.org", http://www.hibernate.org/
    [24]: "Rolling with Ruby on Rails", http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html
    [25]: Clemens Szyperski, "Component Software: Beyond Object-Oriented Programming 2nd ed.", Addison-Wesley Professional, 2002
    [26]: "Inter-process Communication - Wikipedia", http://en.wikipedia.org/wiki/Inter-process_communication
    [27]: "Interface Description Language - Wikipedia", http://en.wikipedia.org/wiki/Interface_description_language
    [28]: Jean-Philippe Fassino, Jean-Bernard Stefani,Julia Lawall, Gilles Muller, "THINK: A Software Framework for Component-based Operating System Kernels", In USENIX Annual Technical Conference, 2002
    [29]: Geoff Coulson, Gordon S. Blair, Michael Clarke, Nikos Parlavantzas, "The design of a configurable and reconfigurable middleware platform", In Distributed Computing, 2002
    [30]: Szyperski C., "Component Software: Beyond Object-Oriented Programming", Addison-Wesley, 1998
    [31]: Andrei Alexandrescu, "Modern C++ Design - Generic Programming and Design Patterns Applied", Addison-WesleyProfessional, 2001
    [32]: "Resource Acquisition Is Initialization - Wikipedia", http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
    [33]: Fabio Paterno, "Model-Based Design and Evaluation of Interactive Applications", Springer, 2000
    [34]: "UIML: An Appliance-Independent XML User Interface Language", http://www8.org/w8-papers/5b-hypertext-media/uiml/uiml.html
    [35]: Kris Luyten and Karin Coninx, "An XML-based runtime user interface description language for mobile computing devices", In Proceedings of the Eight Workshop of Design, Specification and Verification of Interactive Systems, 2001
    [36]: "MiniGUI Organization Website", http://www.minigui.org/
    [37]: "Beijing Feynman Software Technology Co., Ltd.", http://www.minigui.com
    [38]: "EXMAP Documentation", http://www.berthels.co.uk/exmap/doc.html
    [39]: "KCachegrind", http://kcachegrind.sourceforge.net/cgi-bin/show.cgi
    [40]: "Valgrind Home", http://valgrind.org/
    [41]: "KCacheGrind Glossary", http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindGlossary
    [42]: "Institute for Information Industry", http://www.iii.org.tw/
    [43]: Barry Boehm, TRW Defense Systems Group, "A Spiral Model of Software Development and Enhancement", In ACM SIGSOFT Software Engineering Notes, 1986
    [44]: "Advanced Linux Sound Architecture - ALSA", http://www.alsa-project.org/
    [45]: "GDB: The GNU Debugger", http://sourceware.org/gdb/
    [46]: Tien-Ming Wang, "Reconfigurable Multimedia Software Development Platform", 2006
    [47]: "QEMU-Open Source Processor Emulator", http://fabrice.bellard.free.fr/qemu/

    下載圖示
    2008-09-11公開
    QR CODE