Feature House, Feature Modularity, and Feature Composition

In this assignment, you will transcribe your Logic Circuit (or Gate) program that you developed incrementally, and make its features explicit in Feature House (FH), which is part of the FeatureIDE plug-in of Eclipse.
First, follow this link to get the prepackaged version of FeatureIDE with Eclipse (as FeatureIDE doesn't play well with other plug-ins) and then read the short tutorial and watch the video on how to use Feature House:

Honestly, there is not much to this project.  
  1. You create a FH project with a feature model that is appropriate for your Gate program. 
  2. FH, in turn, will create a features super-directory, whose subdirectories are features.  The contents of features will be individual Java files that encode either a base Java file or its extension, as written in FH-Java.  (The only difference that I know of FH-java and Java is the special meaning of "original", which we discussed in class).
  3. Add the files that define each feature, one feature at a time.  You build and test your Gates program exactly as before, from the ground up, feature by feature -- except that you are using FH to help you with this process.
  4. If you have regression tests that you can run after every feature, do so.

What to Submit Canvas

  1. A single zip file that unzips into <yourName>/<yourFilesAndDirectories>
  2. The contents of your FeatureIDE project
  3. A pdf that briefly explains your model (using screen snapshots of your design, which includes constraints).
In your writeup, comment on how useful or un-useful FH is to your project and where you could see it (a) being improved or (b) really useful.

A critical part of any design is clarity and understandability.   Hence, you will be graded on the clarity of your project and its ability to work correctly.  Sloppy code, documentation, or anything that makes grading or understanding your program difficult will cost you points.  Beware, some of these "beauty" points are subjective. 

Remember: No late assignments/submissions will be accepted.