Date |
Lecture Topics |
Readings |
Assignment Due |
Week 1 |
Tu 3/31 |
- Course introduction
- What is software engineering?
- Programming-in-the-large vs. programming-in-the-small
- Characteristics of software engineering projects
|
|
|
Th 4/2 |
- The Software Development Life Cycle (SDLC)
- Process models
- The waterfall model
- Agile models
- The distinction between maintenance and evolution
|
|
|
F 4/3 |
NO DISCUSSION TODAY |
|
|
Week 2 |
Tu 4/7 |
- Software quality
- Why directly measuring software quality is problematic
- Attributes that affect software quality
- Requirements engineering
- The four tasks that comprise requirements engineering
- Eliciting requirements
- Drawing the line between requirements and design
|
|
|
Th 4/9 |
- Requirements specifications
- Arranging and categorizing requirements
- Functional vs. non-functional requirements
- Verification and validation
- The importance of negotiation during requirements engineering
|
|
|
F 4/10 |
DISCUSSION: Requirements elicitation meeting for course project |
|
|
Week 3 |
Tu 4/14 |
- Requirements elicitation meeting for course project (with Hye Jung)
|
|
|
Th 4/16 |
- Software design
- Architectural design vs. detailed/module design
- The goals of software design
- Qualities of a good design
- Modularity and information hiding
- Cohesion and coupling
- The importance of testability
|
- Ch. 11.1 - 11.3
- Ch. 12.1.1 - 12.1.3
|
|
F 4/17 |
DISCUSSION: Requirements elicitation meeting for course project |
Discussion Slides |
|
Week 4 |
M 4/20 |
|
|
Phase 1 due 9:00pm |
Tu 4/21 |
- An architectural and module design example
- The Unified Modeling Language (UML)
- Decomposing a system into modules
- UML Class Diagrams
|
|
|
Th 4/23 |
- An architectural and module design example (continued)
- More about UML
- Use cases
|
|
|
F 4/24 |
DISCUSSION: UML Class Diagrams, revisited |
Discussion Slides |
|
Week 5 |
Tu 4/28 |
|
| |
Th 4/30 |
- Architectural styles (continued)
- Other modeling techniques
- Assessing the quality of our design
- Measuring complexity quantitatively
|
- Ch. 10.1
- Ch. 12.1.4 - 12.1.5
|
|
F 5/1 |
DISCUSSION: Architectural styles |
Discussion Slides |
|
Week 6 |
Tu 5/5 |
- MIDTERM (regular lecture time and location)
|
|
|
Th 5/7 |
- Different forms of testing (briefly)
- What is unit testing?
- Unit testing with JUnit
- Test-driven development
|
|
|
F 5/8 |
- DISCUSSION: Individual help on Phase 2
|
|
Phase 2 due 9:00pm |
Week 7 |
Tu 5/12 |
- Unit testing with JUnit (continued)
- Using factories to simplify test maintenance as constructors change
- Using mocks to test classes that depend on other classes or external resources
|
|
|
Th 5/14 |
- Control-flow graphs, revisited
- Test coverage metrics: node coverage, edge coverage, path coverage
- Serialization in Java
- Manually serializing objects
- Using Java's built-in serialization mechanism instead
| |
|
F 5/15 |
- DISCUSSION: Background on testing and more about JUnit
|
|
|
Week 8 |
Tu 5/19 |
- Quality assurance
- Verification and validation, revisited
- Testing, more broadly
- Testing terminology (error, fault, failure)
- Black box vs. white box testing
- Equivalence partitioning and test matrices
|
|
|
Th 5/21 |
- Equivalence partitioning and test matrices (continued)
- Test oracles
- Including your users in the testing process
- Staged releases (e.g., alpha, beta, release candidate)
|
|
|
F 5/22 |
- DISCUSSION: Individual help on Phase 3
|
|
|
Week 9 |
M 5/25 |
University Holiday: Memorial Day |
|
|
Tu 5/26 |
- Individual help on Phase 3
|
|
|
W 5/27 |
|
|
Phase 3 due 9:00pm |
Th 5/28 |
- Configuration management and version control
- Managing source code when working in groups
- Version control systems
- Branching and merging
|
|
|
Week 10 |
Tu 6/2 |
- A demonstration of Subversion, a version control system
- Subclipse, an Eclipse plugin for communicating with a Subversion repository
- Using version control while making changes to our TPES implementation
- Individual help on Phase 4
|
|
|
Th 6/4 |
- Issue tracking systems
- Why old, solved issues are maintained in these systems
- Integrating issue tracking systems with version control systems
- Individual help on Phase 4
|
|
|
F 6/5 |
- DISCUSSION: Individual help on Phase 4
|
|
Phase 4 due 9:00pm |
Finals Week |
Th 6/11 |
- FINAL EXAM: 4:00pm-6:00pm, ICS 174
|
|
|