\contentsline {chapter}{List of Tables}{vii} \contentsline {chapter}{List of Figures}{viii} \contentsline {chapter}{Abstract}{ix} \contentsline {chapter}{\numberline {1}Introduction}{1} \contentsline {section}{\numberline {1.1}Background Information}{1} \contentsline {section}{\numberline {1.2}Research Questions}{3} \contentsline {section}{\numberline {1.3}Methodology}{3} \contentsline {section}{\numberline {1.4}Overview of Thesis}{4} \contentsline {chapter}{\numberline {2}Distributed Object Technology}{6} \contentsline {section}{\numberline {2.1}Object Oriented Concepts}{6} \contentsline {subsection}{\numberline {2.1.1}Abstraction}{6} \contentsline {subsection}{\numberline {2.1.2}Encapsulation}{7} \contentsline {subsection}{\numberline {2.1.3}Identity}{8} \contentsline {subsection}{\numberline {2.1.4}Inheritance}{8} \contentsline {subsection}{\numberline {2.1.5}Polymorphism}{9} \contentsline {section}{\numberline {2.2}Distributed Computing}{9} \contentsline {subsection}{\numberline {2.2.1}Distributed Systems}{9} \contentsline {subsection}{\numberline {2.2.2}Distributed System vs Centralised System}{10} \contentsline {subsubsection}{\numberline {2.2.2.1}Economics}{10} \contentsline {subsubsection}{\numberline {2.2.2.2}Reliability}{10} \contentsline {subsubsection}{\numberline {2.2.2.3}Software}{10} \contentsline {subsubsection}{\numberline {2.2.2.4}Security}{11} \contentsline {subsection}{\numberline {2.2.3}Features of Distributed Systems}{11} \contentsline {subsubsection}{\numberline {2.2.3.1}Loosely Coupled System}{12} \contentsline {subsubsection}{\numberline {2.2.3.2}Highly Coupled System}{12} \contentsline {subsection}{\numberline {2.2.4}Design Issues of Distributed Systems}{12} \contentsline {subsubsection}{\numberline {2.2.4.1}Transparency}{12} \contentsline {subsubsection}{\numberline {2.2.4.2}Flexibility}{13} \contentsline {subsubsection}{\numberline {2.2.4.3}Reliability}{13} \contentsline {subsubsection}{\numberline {2.2.4.4}Performance}{14} \contentsline {subsubsection}{\numberline {2.2.4.5}Scalability}{14} \contentsline {section}{\numberline {2.3}Distributed Object-Oriented Computing}{14} \contentsline {chapter}{\numberline {3}CORBA}{16} \contentsline {section}{\numberline {3.1}Object Model}{16} \contentsline {section}{\numberline {3.2}Reference Model}{17} \contentsline {subsection}{\numberline {3.2.1}Object Request Broker}{17} \contentsline {subsection}{\numberline {3.2.2}Object Services}{18} \contentsline {subsection}{\numberline {3.2.3}Common Facilities}{20} \contentsline {subsection}{\numberline {3.2.4}Vertical Domain Interfaces}{20} \contentsline {subsection}{\numberline {3.2.5}Applications Interfaces}{20} \contentsline {section}{\numberline {3.3}CORBA}{20} \contentsline {subsection}{\numberline {3.3.1}ORB}{21} \contentsline {subsection}{\numberline {3.3.2}OMG Interface Definition Language (OMG IDL)}{22} \contentsline {subsection}{\numberline {3.3.3}Language Mappings}{23} \contentsline {subsection}{\numberline {3.3.4}Interface Repository}{23} \contentsline {subsection}{\numberline {3.3.5}Stubs and Skeletons}{23} \contentsline {subsection}{\numberline {3.3.6}Static Invocation and Dispatch}{24} \contentsline {subsection}{\numberline {3.3.7}Dynamic Invocation and Dispatch}{24} \contentsline {subsection}{\numberline {3.3.8}Object Adapters}{25} \contentsline {subsection}{\numberline {3.3.9}ORB Interface}{25} \contentsline {chapter}{\numberline {4}Interface Definition Language}{26} \contentsline {section}{\numberline {4.1}Interface Definition Language}{26} \contentsline {subsection}{\numberline {4.1.1}Primitive Types}{27} \contentsline {subsection}{\numberline {4.1.2}Structures}{28} \contentsline {subsection}{\numberline {4.1.3}Operations}{28} \contentsline {subsubsection}{\numberline {4.1.3.1}Oneway Operations}{28} \contentsline {subsubsection}{\numberline {4.1.3.2}Return Value}{29} \contentsline {subsubsection}{\numberline {4.1.3.3}Parameters}{29} \contentsline {subsubsection}{\numberline {4.1.3.4}Exceptions}{29} \contentsline {subsection}{\numberline {4.1.4}Interface Inheritance}{30} \contentsline {section}{\numberline {4.2}IDL Extensions and Interface Semantics}{30} \contentsline {subsection}{\numberline {4.2.1}Object Definition Language (ODL)}{30} \contentsline {subsection}{\numberline {4.2.2}Assertion Definition Language (ADL)}{31} \contentsline {subsection}{\numberline {4.2.3}Real-Time Interface Definition Language (RIDL)}{33} \contentsline {subsection}{\numberline {4.2.4}Larch}{33} \contentsline {section}{\numberline {4.3}Extended Interface Definition Language (XIDL)}{34} \contentsline {subsection}{\numberline {4.3.1}Path Expressions}{34} \contentsline {subsection}{\numberline {4.3.2}Modified Path Expressions}{36} \contentsline {subsection}{\numberline {4.3.3}XIDL specification}{36} \contentsline {subsubsection}{\numberline {4.3.3.1}XIDL keywords}{37} \contentsline {subsection}{\numberline {4.3.4}Programming by Contract}{38} \contentsline {chapter}{\numberline {5}eXtended Interface Definition Language}{40} \contentsline {section}{\numberline {5.1}XIDL summary}{40} \contentsline {subsection}{\numberline {5.1.1}List of Available States}{41} \contentsline {section}{\numberline {5.2}XIDL examples}{41} \contentsline {subsection}{\numberline {5.2.1}\textbf {File} Interface}{41} \contentsline {subsubsection}{\numberline {5.2.1.1}\textbf {File} Interface in XIDL - Advantages}{42} \contentsline {chapter}{\numberline {6}XIDLtojava Compiler Implementation}{44} \contentsline {section}{\numberline {6.1}\textbf {idltojava} Compiler - Limitation}{44} \contentsline {chapter}{\numberline {7}Research Conclusion}{46} \contentsline {chapter}{Appendix\ A\ xidltojava Compiler Source Code}{47}