CS401 Midterm Exam Topics
The CS401 midterm exam is open book and open
notes. You can use a computer if you like (e.g. to view PDF or PPT files), but aren't allowed to search the web for answers, chat online with others, etc.
Be prepared for short-answer questions, creating or analyzing user stories, requirements, designs,
or development methodologies. The topics that will be covered are listed
below:
Software Lifecycle Models
Fundamental differences between the following models:
- Simple model
- Waterfall
- Throway prototyping
- Evolutionary prototyping
- Agile Development
Agile Development
- Philosphy behind Agile, why proponents believe it is better than Big Design Up Front
- Collecting User Stories
- Collecting good user stories (INVEST)
- Estimating time for tasks, idea of NUTS/relative estimation
- Units and planning
- Activities and Documents that go into an Iteration
- Calculating Project Velocity
- Burn-up/down chart
- Planning for the next iteration
- Rationale and challenges behind test-first
- Importance of test suites
- Unit tests vs. acceptance tests
- Writing unit tests
- Writing acceptance tests
- Refactoring
- Why it is important in Agile
Software Testing (In General)
- Overview of the testing process
- Component, usability, unit, integration, system testing (acceptance testing, installation testing)
- Static vs. Dynamic testing; profiling
- Components of a software test plan and test document
- Testing Phase vs. Integrated Testing across each phase
- Black vs. White box testing
- Manual test techniques
- Reading
- Walkthroughs
- Inspections
- Scenario Based Evaluation
- Correctness Proofs
- Stepwise Abstraction
- Control flow and data flow coverage
- You should be able to generate test cases that give
the desired coverage
- Fault-based testing
- Fault seeding
- Mutation testing
- Integration strategies
- Bottom-up, Top-down, sandwich
Refactoring
- Small code rearrangements to make code easier to maintain and understand
- Common "smells"
- Be prepared to refactor some chunk of code