Assessment by: Brian Lim (githubID: BLimmie) Christopher Alsheikh (githubID: christopheralsheikh)
(a) (20 pts) A brief description of the project. Here, I’m looking for a short description: probably 1 sentence, 2-3 at most.
The project is a knockoff of Quizlet. You have a set of flashcards that you can make and use to study with and quiz yourself.
(b) (20 pts) a set of user stories (as a X I can Y so that Z) that describe what the current software in its current state can do.
As a teacher, I can make flashcard sets for students to use so that they can study. As a student, I can use flashcard sets so that I can quiz myself for finals.
(c) (20 pts) a brief assessment of whether the software runs or not. If it runs, briefly describe what it does.
The software does indeed run, and its current functionality is that you can make flashcard sets and use them to memorize the stuff on the flashcards or quiz yourself on the stuff on the flashcards
(d) (20 pts) a set of user stories (at least 2, but you are encouraged to write up to 4 or more if you can, as many as you think is reasonable) about features that COULD be added to the software to make it more useful, fun, better, etc.
As a student studying for midterms, I wish in the quiz function that I could mark an answer right even if I made a typo.
As a student, I wish I could edit the decks that were previously created, in case I made a mistake when creating it.
As a student, I wish I could add images to a card and use them as identification questions.
(e) (20 pts) An assessment of the current quality of the README.md. What information could be added to make it easier for the next generation of folks maintaining this code to use the software, and/or maintain the software?
The README.md is really bare, and includes only the most basic of information. Listing some warnings or things to look out for when updating the code would be nice for people working on it in the future.
(f) (20 pts) An assessment of the current state of the build.xml file. Are there targets that need descriptions? Is there old legacy JWS stuff that needs to be removed? (More on this below).
The repo notes an issue in which many many of the targets are missing descriptions.
(g) (20 pts) An assessment of the current “issues”. Are there enough issues that you could earn 1000 points by working on this project? Are the issues clear in terms of what the expectations are?
There are several issues that have to do with the build.xml file, certain features that are associated with the menu, functionality, and commenting/documenting in general. There are enough issues to cover 1000 points.
(h) (20 pts) A list of additional issues that you may have added, if any. For each, a link to the issue is good enough.
(i) (100 pts) Most important: an assessment of the actual code. Write a bit about how the code is organized. Are the purposes of the classes, and their methods clear? Is it obvious how the classes relate to one another? Is the code easy to read and understand? If you had to give someone else that was going to work on the code just “one screenful of text” to help that programmer get up to speed quickly, what information would you convey?
The code is generally well modulated and each class has a pretty obvious and reasonable purpose. The main 2 features, quiz and study, are separated with 3 classes each: a controller class, a UI class and a frame class. If someone were to work on the code, the best information to give that person would be how all the different classes are related. For example, the Deck class has an ArrayList of FlashCards.
(j) (40 pts) Related to code quality, but factored out into a separate issue because it is so important: how is the test coverage? Are there JUnit tests at all? If so, how much of the project is covered by testing? Are there opportunities to expand test coverage, and if so, how would you go about it?
There are JUnitTests for the Deck and FlashCard classes, and none for all the other classes. There are a couple places to expand the amount of tests. The other classes could use some tests, as well as expanding the amount of tests for those classes that have tests, since those tests have one per function. We could add edge cases for those tests.