squeak-and-se.ppt: uploaded 1 April 2016 at 4:01 pm
Download
Report
Transcript squeak-and-se.ppt: uploaded 1 April 2016 at 4:01 pm
Software Engineering and
Squeak
Rick Zaccone
Bucknell University
Outline
Past Efforts
Turning Point
Current course design
Conclusions
CS Curriculum in Late 80s
Pascal in CS1 and CS2
Sun Workstations
First Attempt
Standard Software Engineering text
– Waterfall model
– Structured Programming
Sun Workstations
– X Windows
–C
Frustrations
Students spent most of their efforts
fighting with X Windows.
Project didn’t work
Text has much too much material
Next Attempt (1990)
Material from Software
Engineering Institute
Macintosh Computers
C
Results
Projects worked!
Not much design though
Process not effective
Curricular Changes
Pascal in CS1
C++ in CS2
What is Software Engineering?
From a standard SE text: SE is an
engineering discipline which is
concerned with all aspects of
software production from the early
stages of system specification
through to maintaining the system
after it has gone into use.
Another Attempt (1993)
Booch’s Object-Oriented Design With
Applications
THINK Class Library
Results
Students produced working
programs
Not much understanding of OOD
Similar Attempt 1995
Wirfs-Brock Designing Object
Oriented Software
Frustrations
Students didn’t get it.
Couldn’t talk about design patterns
in a meaningful way
More Curriculum Changes
C++ in CS1 and CS2
OOPSLA ‘97 in Atlanta
Alan Kay’s talk
Java Version (1998)
Booch’s OOA-OOD text
Rational Rose
Frustrations
Java didn’t deliver
– Still couldn’t talk about design patterns
Steep learning curve for Rational
Rose
Turning Point
Birth of my son
1998-1999 Sabbatical
– More Java, learn Smalltalk
– Smalltalk, Objects, and Design, by
Chamond Liu
Kent Beck’s XP manifesto
Most software projects are small
SE and Squeak! (Spring 2000)
Mark Guzdial’s text: Squeak: ObjectOriented Design with Multimedia
Applications
Kent Beck: Extreme Programming
Explained.
Course Content
Lecture material from Mark’s book,
Smalltalk, Objects, and Design, and
The Smalltalk Report, and other
sources.
Used weekly labs for the XP portion
of the course. One week iterations.
Focus on Design
Not just getting it to work
Students re-evaluated their designs
weekly
Students refactored often
Project Was Fun
Squeak’s multimedia capabilities
made it easy to find a fun project
Students wrote an MP3 player
Course Outline
1.5 weeks - Intro to Squeak
1.5 weeks - Extreme Programming
1 week - Refactoring
1 week - Abstract Classes
1 week - Collections
1 week - Design and implement
1 week - MVC
Outline Continued
2 weeks - Polymorphism
2 weeks - Design Patterns
1 weeks - Type vs. Class
Refactoring
Fowler’s Refactoring
Kent Beck’s Smalltalk Best Practice
Patterns
Abstract Classes
Why?
Pure virtual methods
Design Example
Collections
What are they?
Lab examples
Design Example
•
•
•
CRC Cards
Design a program using CRC Cards
Implement it
MVC
Easy to explain
Structure is in place
Polymorphism
Finite State Machine
Counter
Unit Testing
Hard
Not the concept, just doing it!
Design Patterns
Easy
Selected examples from GOF book
Good News
Students had a lot of fun
Ask me to adjust their accounts so
they could continue working on it
after the semester was over.
Bad News
They didn’t do it!
Conclusions
Squeak allowed me to focus on
design and not syntax
Squeak’s multimedia capabilities
permit more interesting projects
XP fits neatly into the course