| Topic | Description | Readings (Gomaa 2011) | Readings (Fowler and Kendall) | Readings (Gomaa 2000) | 
| Software Processes | Software Process models | Chapter 3 | Chapter 2 | Chapter 5 | 
| Software Prototyping | Prototyping in the software process, throw-away prototyping, evolutionary prototyping | Chapter 3 |  | Chapter 5 | 
| Object-Oriented Software Engineering with UML | Background. Unified Modeling Language (UML) notation, Object-Oriented Software Life Cycle | Chapters 2 and 5 | Chapters 1 and 2 | Chapters 2 and 6 | 
| Use case modeling | Use cases, actors, include and extend relationships, use case packages | Chapter 6 | Chapter 9 | Chapter 7 | 
| Static modeling | Classes, attributes, and relationships. Multiplicity of associations, association classes, aggregation and composition, generalization/specialization; software context class diagrams, entity modeling; object structuring criteria, stereotypes. | Chapters 7 and 8 | Chapters 3 and 5 | Chapter 8 and 9 | 
| Finite state machines and statecharts | States, events, conditions, actions and activities, entry and exit actions; hierarchical statecharts. | Chapter 10 | Chapter 10 | Chapter 10 | 
| Dynamic Modeling | Object Interaction Modeling; developing interaction models from use cases, ensuring consistency between statecharts and interaction models. | Chapters 9 and 11 | Chapters 4 and 12 | Chapter 11 | 
| Software Architectural Design | Multiple views of software architecture, Subsystem Structuring Criteria. Distributed application design. Client/server applications. | Chapters 12, 13, and 15 |  | Chapters 12 and 13 | 
| Concurrent Task Design | Concurrent Task Structuring; Task Interfaces - message communication, event synchronization. | Chapter 18 |  | Chapter 14 | 
| Class Design | Information hiding class design; designing class operations, inheritance in software design, class interface specs. | Chapter 14 |  | Chapter 15 | 
| Design Patterns | Design patterns and architectural patterns; architectural styles; architectural structure patterns, architectural communication patterns. | Chapters/sections 4.5, 12.3, 12.4, 15.2, 15.3, 16.2, and 17.6, Appendix A |  | Chapters 3 and 12 | 
| Relational Database design | Design of database wrapper classes, identifying primary keys, mapping associations to foreign keys, mapping whole/part and generalization / specialization relationships to relational databases. | Chapter 15 |  |  |