CS / SWE
421 - Final Review Topics
The
following things are what I expect you to know for the CS / SWE 421
Final
- Everything
from the midterm review (the final will be comprehensive approximately
15-30% from the first half of class and 70-85% from the second half).
Generally though, you can concentrate on the "big things" like the
software process and concepts from the midterm and project.
- Functional Requirements
- Know the characteristics of a good requirement
- Testable
- Describes one thing
- Has a source
- Are things your system shall do
(not an external system)
- Design Engineering
- Difference between analysis and design phase
- What goes into a design spec
- architecture design
- component design
- UI design
- data design
- Explain what a design principle is
- Explain what a design pattern is
- Explain what a design metric is
- Design principles you should know
- Single Responsability Principle
- Law of Demeter (Principle of Least Knowledge)
- Interface segregation principle
- Given a situation you should know which of these apply
or are being violated
- Design patterns you should know
- Singleton pattern
- Command
- Visitor
- Know the definition of cohesion
- Know the definition of coupling
- CRC Modeling
- What is the goal of CRC modeling (what does it help make
better?)
- Project Management
- Why is it necessary to quantify your plans
- Define
stakeholders and be able to give examples
- Scheduling
- Know how to create a schedule
- Definitions to know: critical path, slack, milestone,
dependency, resource leveling
- Know the dependency types: FS, FF
- Given a small schedule, be able to manually level your
resources
- How to read a Gantt chart
- Know how to determine the critical path given a list of
tasks
- Draw the network
- Determine the critical path
- Be able to briefly
describe Earned Value Analysis
- Know the
definition of scope creep and some stratgies to deal with it
- Know the
concept of a Risk Management plan and the 4 things that should be
documented for each risk:
- Description
of the risk
- Liklihood
of occurance
- Impact
- Mitigation
strategy
- Give
three things that can motivate people other than money
- Explain
why you need to manage expectations and what that means
- Explain
the concept of problem decomposition and how it relates to scheduling
- Know the
jobs of a project manager
- Risk
management
- Defect
tracking
- Managing
and motivating your people
- Verification and Validation
- Know
definition of verification
- Know
definition of validation
- Know
definition of independant V&V and why it is used
- Know the
definitions of static and dynamic verification and what each can and
cannot do
- Know how
to verify non-functional requirements
- Know how
inspections can and cannot be used and what they may find
- Be able to provide one example of a static analysis tool
- Know a
definition of Formal Methods
- Know the
V-Model of software development
- Define a
successful test
- Testing Techniques
- Why do we need new testing
techniques? (Why is the "old" view of testing a problem?)
- Why is it important to have
testers involved at all stages of the software lifecycle?
- Know definition of software
fault, software error, software failure
- Know the definition of testing
and debugging using the fault/failure terminology
- Be able to explain
observability and controllability and their impact on testing
- Know the definition of white
box and black box testing
- Understand how test criteria
are used to create test requirements
- Given a structure, if I ask you
to create test cases or requirements from the criteria, be able to do
it for each structure
- Graphs
- Cover every node
- Cover every path
- Cover every edge
- Logical expressions
- predicate, clause,
combinatorial (active clause coverage)
- Input domain characterization
- A test case for each possible
input partition.
- Understand how to create
partitions given code or pseudo-code
- Syntactic structures
- Explain the basic steps in
mutation testing
- Explain what a coverage
analysis tool does
- Know the advantages of using
test coverage criteria (slide 43 in Testing Techniques slides)
- Cyclomatic Complexity
- What does it measure?
- Is it an example of static or dynamic analysis?
- Know how to compute it given a small program or graph
- Software
Metrics
- Explain what is meant by an actionable metric
- What every project should measure -- inputs, outputs,
results. Be able to give examples and how they are actionable
- Explain what a function point is and how they are used
- Know the definition and an example of measuring quality:
- Correctness
- Maintainability
- Integrity
- Usability
- Define and calculate Defect Removal Efficiency
- Refactoring
- What is a basic definition of refactoring?
- What is a danger in refactoring and how to you lessen the
risk?
Check
back for updates! Last updated: 4/22/2008