Title: The LAST Recitation
1The LAST Recitation
2Only a few things left to do in this class!
- Quiz 2 Review Sunday
- Quiz 2 Wednesday April 10
- Project
- TA assignments and scheduled weekly meetings
(coming up soon) - Spec coming out by Friday night
3Go home and get some sleep
4PS 6 Review
LoadButton(JFrame f) // Creates a new instance
of Load Button void actions(JFrame f) //
requires f instanceof JFrame // effects
Adds an action to create // a
LoadFrame when this // button is
clicked.
5PS 6 Review
public void actionPerformed(ActionEvent e) //
modifies this, tracker representation //
effects traps toolbar button clicks //
traps clicks on the toolbar button // and
dispatches methods accordingly. // updates
the UI where necessary. // Signals the
FolioRunner class to // spawn/destroy folio
windows as // necessary. // sets the
modified flag if the tracker // is modified.
6Questions
- Changes made to PS5?
- Turned in PS5 code?
- Gizmoball or Anitchess?
- Does 6.170 meet your expectations?
7Decentralized Organization
- Jointly make key decisions
- e.g. spec and Java interfaces
- Checkpoint meetings with a leader and an agenda
- e.g. resolve problems, track progress, code review
8Preliminary Design
- Specify requirements, design document
- Schedule work, sleep
- Say NO to caffeine
- Divide up the work into well-defined parts
- Use Java interfaces!!!
- Plan to redistribute work when something bad
happens - Backup often!
- Use CVS (6.170/www/info/tools.html)
9What you should have
- Turn vague requirements in project handout into a
concrete requirement list - Design overview and rationale
- Flexibility is important plan for your project
amendments! - Explain your ADTs and the algorithms you plan to
use - MDD of main modules
- Partial specifications of all public methods in
each module. Complete spec for final report.
10What you should have
- Validation strategy e.g.
- chkRepInv() at beginning and end of public
methods - Costly checks should be done in unit tests
- checked vs unchecked Exceptions
- Messages should explain why exception was thrown
- Use abstraction function when a class is
implemented by more than one person - Use stubs/state machines
11Incremental Model
- Design and redesign
- Implement
- Validate (Unit Test and Integration)
- Go back to 1
- Start with depth-first implementation of basic
functionalities, then add more complex ones.
12Development Stage
- Choose common platform and environment
- Athena, Forte, etc.
- Stick to the API specified in the design stage
- Document your amendments (what and why)
- Inform your partner of any major changes
immediately - Unit testing
- Code review
- Integration testing
13When program crashes
- Find the bug keep in mind that there could be
more than one bug - Do NOT point fingers especially when bugs are
found during integration testing - Its teamwork help fix the bugs
- Help each other LEARN
14Debugging
- Reproduce the bug
- Form hypotheses and try to isolate the code that
has the bug - Use binary search to pin-point the bug
- Be optimistic that you will eventually find the
bug - Ask help from your partner and eventually your TA
- Remember to take frequent snapshots of your
project so you can roll back when all else fails!
15When schedule slips
- Isolate the problem
- Find ways to adjust the rest of the schedule by
- cutting features or sleep
- Tell your TAs about un-cooperative partners
- But keep in mind, your partners are all youve
got
16Final words
- Remember- your goal is to build the software that
works - Everything you have learned in 6.170 is to help
you achieve that - Best way to learn programming is by programming
- When you are getting better at it, you receive
more satisfaction and might actually enjoy being
a programmer/engineer
17Good luck!
- May the force be with you!