JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project...
-
Upload
samuel-eaton -
Category
Documents
-
view
217 -
download
0
Transcript of JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project...
![Page 1: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/1.jpg)
JDuck @ SIGCSE '99 -- New Orleans
1
JDuck: Building a Software Engineering Tool as a CS2 Project
Michael W. Godfrey (Univ. of Waterloo)
Daniel J. Grossman (Cornell Univ.)
![Page 2: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/2.jpg)
JDuck @ SIGCSE '99 -- New Orleans
2
Outline
• CS211 @ Cornell
• Goals for the project
• Overview of JDuck
• Results, feedback, Golden Ducks
• Conclusions: JDuck as a learning experience
![Page 3: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/3.jpg)
JDuck @ SIGCSE '99 -- New Orleans
3
CS211 @ Cornell
• One of Cornell’s two CS2 courses:– CS majors encouraged to take CS212
• Incoming students:– mostly non-majors who are required to take it– varying backgrounds (C/C++, Java, Pascal, HS)
• Goals:– Reach out to everyone.– Teach them something they will remember.
![Page 4: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/4.jpg)
JDuck @ SIGCSE '99 -- New Orleans
4
Project Goals
• Re-enforce lecture material (OOP, ADTs)
• A real chunk of work:– work in groups,– staged development,– extend an existing infrastructure,– easy enough to be doable,
hard enough to be interesting,
flexible enough to be fun, and
compelling enough to be memorable.
![Page 5: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/5.jpg)
JDuck @ SIGCSE '99 -- New Orleans
5
JDuck: A Simple Software Engineering Tool
• Java DocUmentor of Code, oK?
• Idea based on javadoc tool in Sun’s JDK.
• It grinds up code: generate an HTML summary for each Java
source class.
JDuckJava source code
HTMLsummary
![Page 6: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/6.jpg)
JDuck @ SIGCSE '99 -- New Orleans
6
JDuck: Output Specification
• Generate an HTML summary for each Java source class:– class name, its package, what it imports,
implements, extends– what variables, methods, constructors it defines
(precise syntax, visibility, static ?, final ?)– hyperlinks to other classes mentioned– inherited methods/attributes (extra credit)
![Page 7: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/7.jpg)
JDuck @ SIGCSE '99 -- New Orleans
7
JDuck: Output Specification
• Present features in this order:1. static variables
2. instance variables
3. constructors
4. static methods
5. instance methods
• “Visually pleasing” (but don’t go crazy)
![Page 8: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/8.jpg)
JDuck @ SIGCSE '99 -- New Orleans
8
JDuck: Project Structure
• We gave them:– a scanner (JLex),– a simplified grammar for Java, – a predefined top-level user interface,– an output format specification, – tutorials on HTML, scanning/parsing, and – advice on how to proceed.
Then we turned them loose!
![Page 9: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/9.jpg)
JDuck @ SIGCSE '99 -- New Orleans
9
JDuck: Architecture of a Solution
JDuck
User Interface
Scanner
ASTHTML
summary
Java class name
Parser
Java classsource code
![Page 10: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/10.jpg)
JDuck @ SIGCSE '99 -- New Orleans
10
Simplifying Assumptions
• Can safely ignore method bodies by counting curlies (i.e., “{“ and “}”)
• Ignore comments (!) , arrays, initializing expressions, etc.
• Variables and methods declared separately– special comments mark beginning of each
section: //Variables //Methods
• Code is assumed to be well formed.
![Page 11: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/11.jpg)
JDuck @ SIGCSE '99 -- New Orleans
11
Extra Credit Extensions
• Go up the inheritance hierarchy!– Parse parental information.– Indicate which features are inherited.– Watch out for private features in ancestors.– Look at parameters to see if this is overriding or
overloading!
• Several groups tried this, but it was hard to get completely correct.
![Page 12: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/12.jpg)
JDuck @ SIGCSE '99 -- New Orleans
12
Simplified Java Grammar
[import LIBRARY;]*
[package PACKAGE_NAME;]
[public] [abstract] [final] classclass CLASS_NAMECLASS_NAME
[extends SUPERCLASS_NAME]
[implements INTF_NAME [, INTF_NAME]* ]
{{
//Variables//Variables
Variable_Decl*
//Methods//Methods
Method_Decl*
}}
![Page 13: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/13.jpg)
JDuck @ SIGCSE '99 -- New Orleans
13
Preparing the Students
• CS211 had five assgts plus the project.– Assgt #3: parse simple command language
• Tutorials:– use of scanner for simple examples– parsing– HTML and simple visual layout– discussion of JDuck software architecture
![Page 14: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/14.jpg)
JDuck @ SIGCSE '99 -- New Orleans
14
Testing
• We encouraged an open exchange of test cases by students … but little response.
• We warned the students that we would be thorough.
• Mass testing went surprisingly easily due to top-level “hook” that we required they implement.
![Page 15: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/15.jpg)
JDuck @ SIGCSE '99 -- New Orleans
15
Testing
• We developed a secret test suite to check as many cases as we could think of:– normal use/absence of all features– different legal orderings– no/one/many variables, no/one/many methods– empty/full method bodies, etc.
![Page 16: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/16.jpg)
JDuck @ SIGCSE '99 -- New Orleans
16
Evaluating the Solutions
• We defined a top-level UI they had to conform to.– GUI and non-GUI versions required.
• Students handed in diskette w. code, printouts of code and one test run.
• We compiled their solutions and ran them against our nasty set of tests.
![Page 17: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/17.jpg)
JDuck @ SIGCSE '99 -- New Orleans
17
Evaluating the Solutions
• Submissions were graded in bulk by undergrad consultants:– Test case failures diagnose in code.– Look out for bad style too.
• “Visual design” worth only 5%– Many entries were quite elaborate and creative!
![Page 18: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/18.jpg)
JDuck @ SIGCSE '99 -- New Orleans
18
The Golden Duck Award
• Five Golden Ducks chosen from 145 submissions (270 students).
• Golden Duck criteria:– Pass all correctness tests.– Good use of OO programming style and design.– Compelling visual appearance.
![Page 19: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/19.jpg)
JDuck @ SIGCSE '99 -- New Orleans
19
![Page 20: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/20.jpg)
JDuck @ SIGCSE '99 -- New Orleans
20
Golden Ducks -- Creole Style
• A (new) example source file:– NewOrleans.java
• Some Golden Duck output:– George Chang – Dave Rollenhagen– Charitha Tillerkeratne and Kfir Shay
![Page 21: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/21.jpg)
JDuck @ SIGCSE '99 -- New Orleans
21
Conclusions: JDuck as a Learning Experience
Fundamental CS:– Designed and used non-trivial OO data
structures, trees, recursion.– Exposure to some advanced CS topics:
• scanning and parsing
• simple design pattern (the visitor pattern)
![Page 22: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/22.jpg)
JDuck @ SIGCSE '99 -- New Orleans
22
Conclusions: JDuck as a Learning Experience
Technology:– Exposure to a real software engineering tool.– Basics of HTML and web design.
![Page 23: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/23.jpg)
JDuck @ SIGCSE '99 -- New Orleans
23
Conclusions: JDuck as a Learning Experience
Software Engineering Education:– Built a “big” system.– Worked in a team of two.– Scale enforced some discipline.– Staged development.– Test cases design and (harsh) validation.
![Page 24: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/24.jpg)
JDuck @ SIGCSE '99 -- New Orleans
24
Student Feedback
• Some real surprises:– Task appeared daunting at first, but was
tractable if they followed our advice.– Only a few disasters.– Likely, we could have made it harder!
![Page 25: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/25.jpg)
JDuck @ SIGCSE '99 -- New Orleans
25
Student Feedback
• Many said they enjoyed being led by the hand through the development of a big piece of software.– Too often, we give little advice on how to
proceed.
• Web design was fun but time consuming.
![Page 26: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/26.jpg)
JDuck @ SIGCSE '99 -- New Orleans
26
JDuck: The Next Generation
• Worked well, students enjoyed it,
I really oughtta try it again someday ...
• Make it harder by adding new requirements.– Easy to find new requirements, tweak the old
ones to make the project different.
• Release one nasty test suite ahead of time to encourage paranoia and test suite exchange.
![Page 27: JDuck @ SIGCSE '99 -- New Orleans1 JDuck : Building a Software Engineering Tool as a CS2 Project Michael W. Godfrey (Univ. of Waterloo) Daniel J. Grossman.](https://reader031.fdocuments.net/reader031/viewer/2022013004/56649eb75503460f94bc0de0/html5/thumbnails/27.jpg)
JDuck @ SIGCSE '99 -- New Orleans
27
JDuck: Renewable Resources
• Many, many thanks to the TAs:– Dan Grossman, Max Khavin, Kristen Summers,
Linda Lee, Evan Gridley, Martin Handwerker.
• All resources (except the example solution) available on the JDuck homepage:
http://plg.uwaterloo.ca/~migod/jduck/