Embedded Systems: hardware simulator
GUI's: separate into model, presenter, view
Benefits of TDD:
- Coverage
- Repeatable
- Tests describe how the code should behave (essentially documentation)
Quality Assurance
- Verification: That you built it right
- Validation: That you built the right thing
- Static Verification: System is not running. Eg., code review
- Dynamic Verification: System *is* running. Could use simulated or real data taken from an earlier running copy of the program.
- Regression Test: Test that is re-run to see if the system has not become broken since the last time run
- Mutation Test: After establishing the test suite (and they pass), change some aspect of the code and witness a failure of the tests.
- Black box: cannot see the code
- White box: have access to the code
UI Design
- Life-Critical Systems
- Industrial & Commercial User
- Office, Home & Entertainment
Gulf of Execution: Difference between the users's goals and the means of achieving them
Gulf of Evaluation: Amount of effort required to determine the system's state
4 Principles of Good Design:
- State of the system and alternative actions should be visible
- System should have a good conceptual model with consistent system image
- Interface should have good mappings
- Users should receive continuous feedback
4 Points where user failures can occur:
- Users can form inadequate goal
- Users might not find the correct interface object (wrong label)
- Users may not know how to specify or execute desired action
- Users may receive inappropriate or misleading feedback
Patterns
Creational, Structural, Behavioral
Creational: