CS2852
Schedule
- User Stories and Use Cases
- Please see Quiz 1, Quiz 2, Half-Exam 1, or Half-Exam 2.
- Testing, Verification, and Validation
- Please see Quiz 1, Quiz 2, Half-Exam 1, or Half-Exam 2.
- Designing UML class diagrams
- Please see Quiz 1, Quiz 2, Half-Exam 1, or Half-Exam 2.
- Writing Unit Tests
- Describe the differences in who writes and performs unit tests and acceptance tests
- Describe the differences in size of the software components tested with unit tests and acceptance tests
- Describe the difference between the assertEquals and assertSame tests
- Provide an example of when the assertThrows test would be useful
- User Acceptance Tests
- List the key elements of a user acceptance test
- Explain the importance of a user being involved in writing use cases and acceptance tests
- Write acceptance criteria including specific values for input provided by the user and output expected from the program
- Version Control
- Describe the advantages of using a version control system (VCS) when developing code in a team environment
- Describe the advantages of a VCS system over a shared hard-drive / usb drive / network drive or Google Docs, Office 365, etc.
- Describe the lock-modify-unlock procedure
- Describe the copy-modify-merge procedure
- Describe the situations in which the lock-modify-unlock procedure may still be useful
- Describe why modern VC systems prefer the copy-modify-merge procedure
- Describe where repositories are stored in centralized and distributed control systems
- Git
- Use the basic Git commands (status, add, commit, and push) to check in a change you made to the code and share it with your peers
- Explain how distributed version control impacts the standard git workflow.
- Describe the purpose of the stage in making a commit
- Describe the purpose of a commit — a repository history entry
- Explain why performing the pull command frequently makes development easier in the long run
- Describe what causes merge conflicts to occur
- Use a text editor and the basic Git commands to resolve a merge conflict
- Review your work with the git status and git diff commands before staging and committing your code
- Use the xkcd approach to resolving a Git mess. (The Git equivalent of turn it off and turn it back on :-))
- Advanced Git Topics (branching, merge requests, Git Flow)
- Explain the motivation for keeping the master branch separate from the dev branch
- Describe the advantages and disadvantages of creating a feature branch
- Describe how a Git tag can be used within Git Flow
- Describe the advantages and disadvantages of a hotfix or a release branch. (These are also illustrated within Git Flow)
- Sequence diagrams
- Draw a sequence diagram including objects, lifelines, messages, return values, and method boxes
- Tell a single story with a sequence diagram by avoiding if-else blocks and loops and including return values to show information flow
- Include data structures in a sequence diagram as objects to illustrate implementation details within the sequence diagram narrative
- Defect Tracking
- Explain why the term "defect" leads to better root-cause analysis than the term "bug"
- Explain the advantage of detecting defects early in the development process
- Explain how a defect would flow between the New, Valid, Disputed, WIP, Fixed, and Closed states.
- Explain why, when tracking the rate that defects are fixed, we look at the rate of defects going from Fixed to Closed rather than from WIP to Fixed.
- Describe how the known to unknown defect ratio may be estimated in practice
- Describe how the known to unknown defect ratio may change as QA (testers) and coders are added to a project.
- Define "Technical Debt"
- Expound upon the similarities between technical and financial debt and the impact this has on project planning
- (optional) Describe how technical debt can be addressed while continuing to develop other forms of value for the customer and the company
- Give examples of avoidable and unavoidable technical debt
- Give examples of strategic and irresponsible technical debt