Gregory M. Kapfhammer
Key Concept
Corresponding Diagram
In-Class Discussion
In-Class Activity
Details in the Textbook
Chapters 4 through 7
Precise definition is difficult
Numerous factors affect productivity
Picking appropriate tools in helpful
Primary bottleneck is communication with teammates
Design
Selection
Use
Coordination
Comprehension
Individuals
Team
Architecture
Design
Code
Management
Culture
Correctness
Reliability
Robustness
Performance
Learnability ...
Interoperability
Security
Explicit goals that must be satisfied for a complete product
Requirements engineering gathers requirements from people
Requirements should be clear and explicit
Requirements, architecture, design, implementation
Requirements and software testing
Complete
Precise
Non-conflicting
Verifiable
todo.txt
Functions
Classes
Modules
Packages
Scoping
Client/Server
Pipe and filter
Model-view-controller
Peer-to-peer
Event-driven
"Every design problem has multiple, if not infinite, ways of solving it. Experts strongly prefer simpler solutions over complex ones, for they know that such solutions are easier to understand and change in the future." Petre et al. 2016