You may do this assignment as an individual or in groups of two students.
Consider the task of assigning blocks of adjacent seats in an auditorium to groups of people. An auditorium consists of rows of seats with the following characteristics:
Consider the task of building a seat assignment subsystem to manage the seats in the auditorium for an event. Upon request, the subsystem can find a block of adjacent seats that can be assigned to a group of people and remove the seats in the block from those available. Similarly, the subsystem can release a block of assigned seats and make the seats available for reassignment.
Hint: Consider the memory allocation example in the Parnas paper on Program Families.
Design the seat assignment subsystem as a software family. In this design, you need to determine what aspects of the seat assignment subsystem can independently vary from one family member to another. In particular, you should enable variations in the implementation of the "list" of available seats and in the policy for selecting a block of adjacent seats to assign to a group of people. You may also want to enable other aspects such as the number of rows and seats, the labeling scheme for rows and seats, the meaning of adjacency, etc.
Implement the common parts of the software family in an appropriate programming language. The subsystem should have a programmatic interface; it should not have a user interface. (You may want to implement some kind of user interface as a part of your testing.)
Design and implement at least one version of each variable part of your family design. Implement at least two different versions of the data structure for managing the list of available seats and of the policy for selecting blocks of adjacent seats to assign to a group of people.
Test your software family and combinations of the various versions of the components thoroughly.
When complete, turn in appropriate documentation of your design and your documented source code. Submit these materials via BlackBoard by the due date. Also turn in a paper copy to the instructor.
UP to ENGR 691 assignments document?