When implemented with existing mainstream programming languages, the code of interacting features will inevitably entangle in the same... Show moreWhen implemented with existing mainstream programming languages, the code of interacting features will inevitably entangle in the same reusable program unit of the programming language such as a method. Interacting features are very common in software applications. Program entanglement destroys separation of concern, making the software difficult to develop, maintain and reuse. The Feature Language Extensions (FLX) is a set of programming language constructs that allow the programmer to develop interacting features as independently reusable program modules. This thesis addresses two questions: how to design software with FLX and whether programs that can be written in a procedural language such as Java can also be written in FLX. We illustrate our results with examples from a computer blackjack game that is implemented using FLX. For the first question, we introduce a set of seven design guidelines. Some of these guidelines are introduced for good programming practices: so that there is better separation of concern and so that FLX is complementary to object oriented design. Some of them are developed so that features written following them will be reusable, and when the features are integrated with other features, they do not need to be changed. A procedural programming language such as Java has constructs that allows a programmer to specify program units to be executed in sequence, conditionally, iteratively and recursively. Previous papers had given examples on how to implement the first two types of execution flows with FLX. In this thesis, we show how to implement the other two types of execution flows. M.S. in Computer Science, May 2013 Show less