Group Project (see Phase 0)Project RequirementsThe overall project requirements are stated here.Project PhasesThis project will proceed in several consecutive phases:Phase 0 due 30 JanGroup formation and Linux account verification
Phase 1 due 6 FebSoftware installation and development environment setup
Phase 2a due 20 FebPreliminary requirements analysis and domain model
Phase 2b due 5 MarXHTML-based mock UI with automated testing
Phase 3a due 26 March (preliminary), 2 Apr (final)Non-persistent implementation of domain layer
Phase 3b due 9 AprDynamic model using state transition diagrams
Phase 3c due 25 AprAddition of web-based user interface using the Play framework
Phase 3d presentation 2 May, final submission due 4 MayPersistent version using MongoDB with integration testing Each phase comes with its own due date and set of deliverables constituting a project milestone. However, as a team, you should not limit yourselves to a strictly sequential work schedule: It may be beneficial to get started on the next phase while finishing up the current phase, and you may divide up the resulting tasks among the team members. Proposals for Alternate ProjectsThe project description provided here is intended as an example. You are welcome to follow this description, but you are encouraged to choose some other project of similar technical depth that your group is eager to pursue. If you choose that route, please discuss your choice with me after submitting a high-level proposal at a similar level of detail and conciseness as this description. The alternate proposal must have similar characteristics as this one (multiple user roles, persistent data, etc.), follow the similar nonfunctional requirements, and proceed in the same phases (see above).
Proposals for Alternate Technology StacksThe Scala technology stack chosen here (Scala + Play + MongoDB + Heroku) reflects modern, though not necessarily common, practice in the development of server-side applications. If you wish to explore another stack, you may submit a proposal for the technologies used in each phase at a similar level of detail as the descriptions of the phases at the top of this page. Particular technologies you may wish to consider are:
If your proposal is approved, you will be required to give a 25-minute in-class team presentation toward the end of the term to describe the various parts of your technology stack, compare it with our original stack, discuss any specific challenges, and share any other insights you had.
A useful resource for making this decision is Matt Raible's blog article Choosing a JVM Web Framework, as well as his presentation Comparing Web Frameworks, which includes marketability of skills, job count/trends, etc., as well as this more recent post. Another important consideration is that you will be much more on your own if you get stuck after choosing an alternate stack. Extra CreditRough idea: two-tier application
Same due dates as last phase of main project.
SubmissionWe will use Heroku with Git not only as our collaboration mechanism, but also as our submission mechanism. If you are using a technology stack not supported by Heroku, you will use Bitbucket for collaboration and submission. Every time you submit a deliverable, simply notify me by email that your work is ready to be reviewed. Please be sure to specify the exact repository containing the deliverable(s). |