M16_lab02.md instructions
These are the instructions for the M16_lab02.md file that you will add to the forked copy of the legacy code repo to which you were assigned during M16 lab02.
Your next set of steps will be, in general, to learn about the project, and write about the current state of the project Your goal is to understand what the project is about, identifying things that are good, and things that could be improved.
For each repo, there is a list of known “issues”. * These are found on github.com on the ORIGINAL repo that you forked from, the one under https://github.com/UCSB-CS56-Projects * They will not be on your forked copy. * IMPORTANT: When adding new issues, you will add them directly on the UCSB-CS56-Projects version of the repo, not on the forked copy.
You’ll be trying to understand those issues, as well as determine additional issues that could be added.
In the end, you are doing the steps you’d need to do to “get ready” to take on this as your legacy code project.
Is this the project we’ll be working on the rest of the quarter
Maybe yes, maybe no. Its partially up to you.
You will be given that option—but you’ll also have the option to switch to another project. So part of this exercise is also to see whether you think this project is interesting enough that you want to stick with it, or whether you want to trade away for some other project.
If you trade away, then you’ll contribute your project into a “pool” of available projects. Once that pool is established, you’ll be invited to rank the projects in that pool by your preferences. Then, based on preferences plus an element of random chance to break ties, we’ll make a second project assignment. You are not guaranteed to get your first choice, but historically, most folks have gotten their first, second, or third choice in that second round.
If we find things that need to be fixed, should we fix them?
Note that ACTUALLY making code changes is NOT part of this lab. You MAY do that, but it isn’t necessary at this stage.
Why it might be a good idea to go ahead:
- If you DO decide, together with your pair partner, that you WANT to take this project on as your legacy code project for the course, then you MAY go ahead and start making those changes.
- If you do, you’ll be a little bit “ahead” of the work you need to do later in the quarter.
- You might need to fix a few small things just to be able to compile and run. Feel free to do that.
Why it might be a good idea to wait:
- If you are NOT going to be taking on this project as YOUR legacy code project, but instead, are planning to take your chances on the second round selection process, you might be doing extra work by starting now.
Ok, got it. We’re ready to get started. What should we do?
Together with your pair partner, take turns driving/navigating through these steps.
You can use regular or strong-style pairing, as you see fit.
The main tasks are this:
Add a file to the repo called M16_lab02.md in the root directory of the project. In that file, write a short assessment of your findings.
It should include the following.
- (a) (20 pts) A brief description of the project. Here, I’m looking for a short description: probably 1 sentence, 2-3 at most.
- (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.
- (c) (20 pts) a brief assessment of whether the software runs or not. If it runs, briefly describe what it does,
- (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.
- (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?
- (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).
- (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?
- (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?
- (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?
How to get started
- Put your name, your partner’s name, and each of your github ids in the file.
- Read the README.md file and try to understand what the project is about.
- Read the “issues” on github.com (these will be on the ORIGINAL repo that you forked from) and try to understand what each one is asking the programmer to do.
- Run the ant build.xml file with
ant -p
and see what the ant targets are. Then also look into the build.xml file directly—if there are some targets that don’t have description elements but SHOULD, that’s something to notice. - Try compiling and running the code and see if the code actually works or not.
Once you’ve done all of that, show it to your mentor. Then, along with your mentor, come up with a plan for some things you can do in about 2-3 hours time that can improve the code somewhat. These may include:
- Writing proposals for improving the README (perhaps with screenshots, developer documentation, and build/usage instructions)
- Identifying bugs with the project
- Looking at test coverage (and noting which portions of the project have no test coverage)
- Suggesting additional features and adding them as issues
- Identify portions of codebase that can be cleaned up and refactored and create corresponding issues
- Commenting on existing issues to ask clarifying questions, or point out any parts of the issues that are unclear. Ask yourself—if I were assigned to work on this, would I know what to do and where to start? Or would I be confused and have questions? If its the latter, ask the questions in the comments.
Code related stuff:
- Identify uncommented portions of codebase, add normal and Javadoc comments to that portion of codebase, and/or change variable and method names to ones that make comments unnecessary/superfluous.
- Read build.xml and attempt to identify unnecessary/obsolete/confusing portions of build script and make corresponding issues.
- Checking package names to see whether they correspond to the preferred naming convention for legacy code projects.
- Check public, private, “package private” for attributes and methods.
- If there are objects that have too much functionality bundled into them, but they should be refactored into multiple smaller objects, make this observation.
Write all of your observations in the M16_lab02.md file.
Low Hanging Fruit
Low Hanging Fruit means some specific easy things you can do to improve the code!
We may add some hints as to what those things might be here, so refresh and revisit this page often.
If/when we do add new material, we’ll post on Piazza.
When you are done… do a pull request
When you are finished, do a pull request back to original repo that you forked from. The pull request will typically only be the change of adding your M16_lab02.md, unless you went ahead and made some changes to improve the project. If you did, those changes will count towards your future lab07 grade (which is the lab where we do the next round of legacy code work by actually working on the issues identified in the project.)
Your mentor will comment on the pull request, and then your TA will “accept” the pull request when your submission is graded. The grade will put into Gauchospace, and your feedback will be added to your feedback repo.