Your functional specification provides good background, but the use cases could be much more specific. Remember the ATM example I talked about in class. It specified the details of interactions between the user and the system. You need to do something similar for your project. You do have some code, which is great. But I'd recommend strongly that you start focusing on the UI, connecting it with the use case, so that you can more precisely drive what low level code is required to manage data.
One more thing. The component specification makes references to components that sound like GUI widgets. A Visualization Manager is a great component. But subtype selector and year selector sound like GUI widgets. How about something related to data management? How about something related to transforming data?
Your functional specification provides good background, but the use cases could be much more specific. Remember the ATM example I talked about in class. It specified the details of interactions between the user and the system. You need to do something similar for your project. You do have some code, which is great. But I'd recommend strongly that you start focusing on the UI, connecting it with the use case, so that you can more precisely drive what low level code is required to manage data.
One more thing. The component specification makes references to components that sound like GUI widgets. A Visualization Manager is a great component. But subtype selector and year selector sound like GUI widgets. How about something related to data management? How about something related to transforming data?