CS3733-D04: Midterm Study Guide
The following guide provides some help in the type of things you are expected
to know in order to be able to pass the midterm exam. The guide is broken down
into specific topic areas containing either sample questions or a statement
of what you should know. It is assumed that you have attended class, read the
assigned sections of the book, done your homework, and have looked at the slides
from the lectures. The midterm exam I gave in CS3733-B03 is here
if you would like to see it.
Overview and Basic Principles
- What is software engineering?
- What makes software engineering different than other types of engineering?
- According to Braude, what are the four "P's" of software engineering?
- What are the major activities in software engineering?
- Of people, process, and tools, which is most important to the success of
a project? Why?
- What is UML? What are the benefits of using UML?
Process and Project Management
- What are the two major types of software process development lifecycles?
- What are the benefits of iterative (spiral) lifecycles?
- What do we mean by iterative development?
- What do we mean by incremental development?
- What are the four phases in RUP (UP)? Describe the purpose / activities
in each.
- Describe the waterfall lifecycle. What are the fundamental flaws in it?
- What is the role of risk in software engineering? That is, what is the relationship
between risk, and what software engineering is about?
- How does the rate of change (in the requirements, users, marketplace, etc.)
affect the choice of a process?
- What is the difference between iterations and phases?
- Given a project description, outline a project plan, showing iterations
and phases?
- What is project management?
- Name (n) artifacts the project manager is responsible for.
- What are the key project management activities?
- What are the values of Agile software development as described in the Agile
Manifesto?
- What is the difference between Agile software development and Extreme Programming?
- What are practices of Extreme Programming? Describe them.
- Name three agile methodologies.
- Give examples when the practice of face-to-face communication and/or on-site
customer will / will not work.
- What is pair programming?
- What is refactoring?
Requirements
- What is the purpose of a Vision?
- What is the difference between functional and non-functional requirements?
Give an example of each.
- What is a use case?
- What does FURPS mean?
- What are C-requirements and D-requirements?
- What is the concept of traceability?
- What is an Actor in a use case?
- What is the basic flow and alternate flows in a use case?
- What are user stories?
- How are user stories different from use cases?
- What is a scenario? How is it different from a use case?
- What makes a requirement a good requirement? [See lecture 4, requirements
for requirements]
- What do we mean by stakeholders? Give examples.
- Where do requirements come from?
- What is the purpose of a sequence diagram?
Quality
- What is the difference between quality and testing?
- What is the purpose of testing?
- What are the three main kinds of testing? [pyramid in lecture 12 slides]
- What is the difference between white-box and black-box testing?
- Do you use white-box or blacc-box testing for system testing? What about
integration testing? What about unit testing?
- What type of tests are programmers typically responsible for?
- What is the difference between statement coverage and path coverage?
- Why can't you test everything?
- What is test-first (or test-driven) development / design? What type of tests
do you use it for?
- What are boundary tests?
- Know how to write a JUnit test.
Modified:
10-Apr-2004
Gary Pollice