CSC407 OOA/D/P Example Requirements

A customer speaking:

"We need a program that helps us to plan new releases of our software. We currently have a big XML file that lists all the new feature requests together with who (from within our company) champions it, the names of any outside clients that want the feature, and how badly they want it (on a scale of 1 (least) to 10 (most)). The feature requests have a numerical id, a short description, a long description, and the software product to which each applies. There is also a sizing in person-days attached to each request that is supplied by our developers, and an assigned priority attached by our product managers of high, medium, or low.

"The program should get the name of this file and from the command line, and also the name of a product and the number of person-days of development resource we have available to work on the next release of that product. e.g.,

    java Plan features.xml Planetaria 340

"The program should provide a suggestion for a good list of features for the next release, the sum of whose sizings are less than or equal to the available resourcing. Allocate as many of the higher priority features as you can. Favour features that are more highly desired by customers. With any room left over, choose lower priority features if you must in order to pack the plan.

"For the output, echo back the input and summarize the total number of all features in the file (for that product) together with the sums of their feature sizings broken out by priority (also providing the grand-total). Similarly, summarize the same things for the chosen in-plan features. Then output the list of in-plan features for the product, in priority order, giving id, short description, priority, sizing, champion, and how badly customers want the feature. Finally, clearly separated from the above, output the highest priority features that didn't quite make it in-plan, up to available resourcing * 1.5.

"If this project works out, we can see many more different types of applications all dealing with the same file. Be sure to design it to be easily extensible. Oh, and use Java. It's our corporate standard for this kind of thing.