Color Scheme
Key Concept
Corresponding Diagram
In-Class Discussion
In-Class Activity
Details in the Textbook
Cooperative Software Design
Chapters 9 through 12
Software Processes
What steps should we take?
In what order should we take steps?
How should we repeat steps?
How can we estimate project completion time?
What are the limitations of this model?
Spiral model by Barry Boehm
Iteration and process improvement are important
Software Processes
Awareness of the work of our teammates
Ownership of the product
Pace of the project
Remote versus local collaboration
Extreme programming framework
What are the trade-offs of XP?
Questions about software processes?
Application to the software project
Program Comprehension
Read and understand source code
Build and refine a model of program behavior
Iteratively ask and answer question about software
Reason about dependencies
Find a function and explain it!
Have you asked these questions?
Dynamic versus static languages
Dynamic versus static languages
Should we enforce tool standards?
Questions about comprehension?
Application to the software project
How do you know a program behaves as intended?
Verification versus validation
Empirical versus analytical
See the textbook for summary table
Testing terminology
Defect (or fault)
Failure
Bug (or fault or failure)
What is the most precise terminology?
Testing cannot establish correctness!
Testing cannot prove that defects don't exist!
Wait, what can software testing do?
Software testing establishes a confidence in correctness
Benefits of code coverage
Drawbacks of code coverage
What does high coverage imply?
Program Analysis
Static analysis
Dynamic analysis
Code reviews
What are the trade-offs between these methods?
Type of analysis performed by compiler?
Questions about verification?
Application to the software project
How do we know that software is working?
Performance and functionality
Security and data breaches
Questions about monitoring?
Monitoring is a big business!
Application to the software project?