Austin Liang (Qiuyan) / Guancheng Ren popi528 / guanguangua
(a) (20 pts) A brief description of the project. Here, I’m looking for a short description: probably 1 sentence, 2-3 at most. Multi-level todo list application allows user to create their own todo list which can be sorted by name, date, or completion.
(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 user, I can create tasks so that I can view the tasks later.
- As a user, I can rename, edit, or delete the tasks so that I can organize them better.
- As a user, I can set date to my tasks so that I know when I should finish the tasks.
- As a user, I can mark certain tasks as completed.
- As a user, I can create lists to contain my tasks.
- As a user, I can group my tasks into lists so that I can organize them better.
- As a user, I can rename, edit, or remove my lists.
- As a user, I can give the task names colors so that they looks better.
- As a user, I can give the tasks 3 different priority levels.
- As a user, I can sort the tasks using their names, dates, priorities, and completion.
(c) (20 pts) a brief assessment of whether the software runs or not. If it runs, briefly describe what it does,
The software runs normally, it allows user to add tasks and organize them with lists. When creat the Task, there are options like choosing the priority level and color. Tasks and Lists are editable and can be sorted by name, priority, date, and completion.
(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 user, I want to be able to undo my actions so it won't be too much a trouble if I misclicked a button.
- As a user, I want to be able to see my tasks on a calendar.
- As a user, I want to set up alarms so that I can get notified when due is coming.
- As a user, I want to be able to upload my tasks onto Google Calendar so I can synchronize my tasks everywhere.
(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?
- More information about the connection of every class. Add more description of each class's functionality.
- Should include information such as where the main function is located.
- The image need a new hyperlink, the current one is dead.
(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).
- All the targets in the build.xml file have detailed 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 enough issues that we could earn 1000 poinnts by working on this project. And all issues are clearly descripted.
(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.
We decided to
- Make it a better GUI.
- Implement weekly view for TodoList.
- Implement monthly calender view for TodoList.
- Add Google Calendar sync function.
- Add Undo function.
(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 contains 4 major parts: A GUI class, a class which can deals with individual tasks, a List class that can deal with multiple Tasks, a TodoList class that can deal with multiple List.
- The main function is located in the Todo.java file.
- The relationship between classes are pretty clear and obvious.
- At the begining of each class, there is a brief comment about the purpose of and usage of the class
- Todo is the GUI class, it HAS-A TodoList, TodoList HAS-A List, List HAS-A Task. The hierarchy between each class is clear
- All the methods have self-explanatory names, but some of them lacks a comment about return types and parameter types
- Some method seems like is never to be used, not sure why such a method is there
- Overall the code is very easy to read and understand
- Some of the variable names can be confusing, such as in Todo.java, line 42 'private JCheckBox one;' 'private JCheckBox two;' 'private JCheckBox three;' The variable name is not clear
- I would add more information about how the GUI part was organized, so it would be easier if I want to add buttons to the GUI
- And also how the four classes are related to each other; In what method does one class use another, and how the method should be used to interact with the GUI
(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?
- For now, there is no JUnit test at all, so none of the project is covered by testing.
- Since there is no test at all, there is a lot of opportunities to expand test coverage.
- First, I think it would be benefitial to add a JUnit test for the data structure part. I would do it by repeatedly adding and deleting tasks, lists and check if there is unexpected behavior to make sure that the database part works.
- Then I would add tests for each button to see if the ActionListeners are working
- Finally, I think I would manually test the GUI part and see if the graphic layout behaves well