Boxscript: a language for teaching component-oriented programming
H. Conrad Cunningham, Yi Liu · 2005
As component-oriented approaches become more commonly applied to the development of complex software systems, it becomes increasingly important to introduce computing science and software engineering students to appropriate programming concepts, languages, and techniques. This dissertation presents the design for a new language BoxScript, which seeks to address this need. BoxScript is a Java-based, component-oriented programming language. The components in BoxScript, called boxes, are blackbox entities that are strongly encapsulated and only expose their provided and required interfaces. BoxScript supports two key properties of component-oriented programming: compositionality and flexibility. It introduces a composition strategy and the compound box construct to support compositionality and introduces a box type structure consisting of abstract and concrete boxes, box variants, and an interface satisfaction policy to support flexibility. The syntactic structure of BoxScript is based on Java, a language with which most students are familiar. This dissertation presents the BoxScript language and associated design methods and demonstrates and evaluates their usage. It specifies the syntax of the BoxScript notation and describes preliminary formal specification techniques for BoxScript components and their compositions. It presents a methodology, from a software engineering perspective, for building a component software system and applies the methodology and the language to a case study---KeyWord In Context (KWIC). It also illustrates the design of the language's compiler BoxCompiler and its deployment tool BoxShipper, both of which are implemented in BoxScript itself. The dissertation evaluates the BoxScript language design by comparing it systematically with several other component-oriented programming languages and evaluates the language usage by analyzing the feedback from the test users. Some possible future work is identified that should improve and enhance BoxScript.