Lecture Slides |
Links |
Current Projects |
Project Opportunities |
Past Projects
Software Development
What this course is about
This course deals with the processes involved in software development, from
requirements specification and analysis, on through design, implementation,
and verification.
We discuss ways to organize and manage work processes
as well as technical design models.
A major portion of the course activity is the development of real software
products in teams of about four students each.
Instructor
Bob Keller, 1242 Olin (office hours 2-4 TuTh, or whenever I'm in, which is a lot),
keller@cs.hmc.edu, x 18483
Graders
- Ed Miller, x72032, edmiller@cs.hmc.edu
- Hang Tang, x74866, htang@cs.hmc.edu
Catalog Description
Rigorous introduction to the technological and managerial discipline concerned
with the design and implementation of large software systems. Techniques for
software specification, design, verification, and validation. Formal methods
for proving the correctness of programs. Students working in teams are required
to design, implement, and present a substantial software project.
Prerequisites: Computer Science 70 and 80.
Requirements and Grading
Class participation (15%), Homework and quizzes(30%),
Oral midterm exam (15%),
Team software development project (40%)
Participation will include making a presentation on a current software
development topic.
Failure to show up for class means that your participation component takes
a major hit, enough to bring you down a letter grade or more.
The oral exam will be conducted one-on-one and will be based on presentation and
assigned reading topics.
Textbook
The required text is:
Outline
Backets [...] denote assigned reading of pages in Larman.
UML = "Unified Modeling Language".
- Overview of software development activities [3-31]
- Life Cycle Models and Standards
- Waterfall model
- Unified process
- Scrum model
- Other models
- Inception phase of UP, Requirements elicitation [35-106]
- Use cases and diagrams
- Goals
- Pre- and post-conditions
- UML Sequence diagrams and collaboration diagrams
- Functional vs. non-functional requirements
- Elaboration phase of UP, Requirements to Design [107-191]
- Domain modeling, using UML
- Design class diagrams
- UML Package diagrams
- UML Activity diagrams
- CRC cards [245-246]
- Design Patterns
- GRASP patterns [215-278]
- Determining Visibility [279-299]
- Implementation, Designs to Code [301-316]
- Elaboration Iteration 2 [319-380]
- Elaboration Iteration 3 [383-483]
- GoF patterns
- Contracts
- State charts
- Architectural Patterns
- Architectural Analysis and the SAD (Software Architecture Document) [485-564]
- Design Tools [567-601]
- Project Management
- Revision control, configuration management
- Work breakdown structure
- Pert charts
- Gant charts
- Testing
- Software metrics
- Software inspections, walkthroughs
- Formal Methods
- Inductive Assertions Method
- Structural Induction Method
- Design by Contract
- Anti-Patterns
- Software cost analysis
- Function points
- COCOMO, COCOMO II
- Project presentations (multiple phases, lasting several weeks)
Note: Instructor will attend some non-presentation group project meetings.
Other Useful References:
- Daryl Kulak, Eamonn Guiney,
Use cases: Requirements in context,
Reading, MA : Addison-Wesley, 2000.
- Alistair Cockburn,
Writing Effective Use Cases,
Addison-Wesley, 2001.
- Ivar Jacobson, Grady Booch, James Rumbaugh,
The unified software development process,
Reading, Mass : Addison-Wesley, 1999.
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,
Design patterns: Elements of reusable object-oriented software
Reading, Mass : Addison-Wesley, 1995.
- Dean Leffingwell, Don Widrig,
Managing software requirements : a unified approach,
Reading, MA : Addison-Wesley, 2000.
- James Rumbaugh, Ivar Jacobson, Grady Booch,
The unified modeling language reference manual,
Reading, Mass : Addison-Wesley, 1998.
- Grady Booch, Ivar Jacobson, James Rumbaugh,
The unified modeling language user guide,
Reading, Mass : Addison-Wesley, 1998.
- Phillipe Kruchten,
The Rational Unified Process, an Introduction, Second Edition
Addison-Wesley, 2000, ISBN: 0201707101.
- Barry W. Boehm, et al.
Software Cost Estimation with COCOMO II
, Prentice-Hall, 2001.