- Why is software engineering more complex than other types of
engineering?
- Software costs are concentrated in _____; hardware costs are
concentrated in _____.
- In contrast to hardware failures where parts may wear out or
experience physical breakdown, every software failure indicates an error
in _____ or _____.
- Draw the actual failure rate curve for hardware, the idealized
failure rate curve for software, and the actual failure rate curve for
software.
- What is seen as the weakest part of the entire software
development process?
- What is the primary role of the software engineer?
- What is the most widely used software process model today?
- The major distinguishing feature of the _____ model is that it
creates a risk-driven approach to the software process rather than a
primarily document-driven or code-driven process.
- List the two primary functions of a software process model.
- List the two major economic rationales for the waterfall model.
- Describe the meaning of each of the following terms in the
context of difficulties of modern software: complexity, conformity,
changeability, invisibility.
- List the steps of the Waterfall Model of the software life cycle
in order.
- The basic goal of software development tools is to replace _____
activities with _____ activities, giving software developers tools to do
their jobs more effectively in shorter cycles.
- What portion of total cost of a typical software project is
consumed by maintenance activities?
- Which software development paradigm best supports delivering
operational versions of the product at early and intermediate stages of
development?
- In "No Silver Bullet", Brooks cites _____ as the most profound
long-run trend in software engineering.
- Describe a method for achieving conceptual integrity.
- List two reasons for dissatisfaction with the code-and-fix
model.
- When using a risk-management software process model it is
important to evaluate the risks associated with identified areas of
uncertainty. List two mechanisms for evaluating such risks.
- List six of the recent developments mentioned in Brooks' article
"No Silver Bullet" and indicate whether each addresses an accidental or
essential difficulty in software development.
- Are typical user requirements are constantly changing? If so,
should we seek to prevent late requirements by fixing the requirements
specification at an early stage of development? If not, what is the most
effective requirements specification method?
- Which are more expensive to fix, errors that are detected and
corrected earlier or later in the software life cycle? Why?
- Why is the waterfall model poorly suited for interactive end-user
applications?
- Describe the situation that is responsible for most software product
failures.
- Which information should be included in a feasibility report?
- Describe the difference between essential and accidental
difficulties in software development.
- What is the fundamental problem of requirements definition as
seen by Gause and Weinberg?
- What are the three steps in the naming heuristic? What is the
value of using it?
- What is the psychological principle underlying the memorization
heuristic?
- What are backronyms?
- Discuss the relative merit of using a single meeting to accomplish
multiple objectives versus several single-objective meetings.
- What is a recommended course of action to take when an agitated customer
is giving unproductive responses to your questions?
- Should a software requirements document characterize acceptable
responses to undesired events? What does this mean?
- If a client asks your opinion about a new feature that reflects
design ideas that are not consistent with the current architecture, what
advice should you give to the client?
- What tool graphically documents the boundary between the system
under consideration and the rest of the world?
- What is the reference number of the parent of a DFD bubble with
reference number 2.1.3?
- What is the "context diagram" of a DFD?
- If you find that it is essential to know when, why or how one
source or sink communicates with another, what does this suggest?
- Describe the content and role of the data dictionary.
- Which tools for process specification lend themselves to the most
ambiguity? Which to the least?
- How many dialects of structured English are there?
- Which type of documentation is usually kept most up-to-date?
- Why should user documentation (e.g., users' manuals) be developed
at an early phase of the life-cycle?
- The most difficult task in requirements engineering is _____.
- Should a software requirements document specify only external
system behavior, only internal behavior, or both? Explain.
- Why should redundancy be minimized in a structured
specification? When should redundancy be introduced?
- When should a specification include a State Transition Diagram?
- What do we call a piece of data that we choose not to partition
further?
- Describe what is meant by each of the following three
characteristics of a good requirements specification: Verifiable,
Backward Traceability, Forward Traceability.
- List the three primary components of a structured
specification.
- Describe two typical problems with requirements inputs.
- List the four elements that comprise a data flow diagram and show
the graphic symbol for each.
- Distinguish data flow diagrams from flow charts. (How are they
different?)
- Describe the association between data flow diagrams and
process specifications (mini-specs).
- Why are errors or rejects often left as reject stubs in a typical
data flow diagram?
- List the three primary mechanisms for the construction of
composite data in the data dictionary.
- Identify four typical problems with initial versions of DFDs.
- How does the use of an entity-relationship language aid in
carrying out the requirements engineering task?
- Generate an entity-relationship diagram that represents a partial
view of the conceptual model for a veterinary hospital application. The
analyst's notes on the operation of the facility show that during the hour
she was there three owners each brought a dog in for examination. The
first dog (dog1), was a 2 lb. Poodle named Fru-Fru. The second dog (dog2)
was a black Labrador Retriever named Lem brought in by a Mr. Rush
(client2). The third dog (dog3) was a 45 lb. puppy of indistinguishable
breed. Classify each of the following as either an entity, relationship,
entity type, attribute, or attribute value: Client, client2, Animal,
Name, Lem, Owner, 2 lb., Weight, dog1, Dog.
- Should a software requirements document specify constraints on
the implementation? Explain.
- When should a rapid prototype be developed?
- Why should a rapid prototype be thrown away?
- Distinguish the use of data flow diagrams and structure charts.
That is, what are the main objectives for which each of these tools is
used?
- What does the acronym "CASE" stand for?
- How can the effort to learn or relearn a task be minimized?
- How can the effort to perform a learned task be minimized?
- What is a usability prototype? How is it used?
- What is the primary cause of computer user error?
- List two design principles to help reduce or alleviate the
effects of user errors.
- Describe those characteristics of error messages issued by a
program that best serve the needs of users.
- List two design considerations for the implementation of command
abbreviations.
- What is the primary value for software designers of studying the
seven-stage action cycle?
- Describe the difference between the behavioral classifications of
slip and mistake in terms of the action cycle. Give two examples of
each.
- List six types of slips and describe the nature of each.
- Can most of the software engineering techniques that are
applicable to large software projects be applied effectively to smaller
development efforts? Explain.
- Do the top-down design method and tools form a set of strict
rules for program design that should not be violated? Explain.
- Can the basic philosophy behind top-down design be applied to any
application? Explain.
- In programming language design, perhaps the greatest change that
has occurred is in the role of _____ in program development.
- Which is generally more important: the design of algorithms or
the design of data? Why?
- When might a combination of top-down and bottom-up design be a
better alternative to top-down design alone?
- List two arguments in favor of top-down coding.
- List three advantages of top-down testing.
- What is the primary value of using abstraction?
- What, if any, is the value of prototyping the user interface only,
with no true functionality behind it?
- What is the main purpose for a system like RCS or SCCS?
- Where should a maintenance programmer look first to determine
which modules call module "fubar"?
- According to Böhm & Jacopini, what three basic building
blocks are needed to construct a program?
- Who is recognized as responsible for the concept of structured
programming?
- List the three basic logical constructs of structured
programming.
- How can the readability of a structured program be enhanced?
- Can we take an arbitrary program which has not been written
according to structured programming rules and convert it into a structured
program? Explain.
- What characteristic of structured programming is most likely to
adversely affect efficiency?
- How many entrances and exits should a module have?
- When should a module affect parameters other than its formal
arguments?
- Should a module be allowed to access external data? Why?
- Should the function of a module be affected by the source of its
input or the destination of its output? Explain.
- What are the meanings of cohesion and coupling in the context of
modules? Which should be maximized or minimized?
- How is the concept of factoring used in creating an
architecture?
- What is the purpose of developing a hiding assumption list?
- Why should you limit the size of modules?
- What is a good "rule of thumb" for determining the size of a
module?
- List the criteria that should generally be used in determining
the decomposition into modules.
- Why shouldn't a flow chart be used for determining the
decomposition into modules?
- Describe current restrictions on the use of program certification
techniques.
- Describe how to choose a property P for use in proving
termination of a loop.
- What is the best choice for property P for use in proving
termination of the loop:
while (x<y) x:=x+1;
- Show that the following loop terminates:
while (x>42)
x:=x-1;
- Prove the following program statement correct with respect to the
given specifications (i.e., show {P}S{Q} is true). Indicate what axiom or
theorem is applied at each line of your proof.
{P}: {A>0, B>0}
S: A:=A+B;
{Q}: {A>B}
- Why is the axiomatic method of program certification
considered to be a weak method?
- Given that there are substantial restrictions on program
certification, describe its usefulness for program development. Give a
concrete example.
- What are the most time-consuming activities in computer
programming?
- What are the two commonly prevailing goals of testing? What is a
more productive goal?
- The most common and least effective method of program debugging
is _____. Greater speed and accuracy in finding errors is exhibited by
people who depend most on ____.
- What kind of testing should be performed after making a very
minor modification to a module of a working system?
- List three criteria that are recommended for deciding when to end
software testing.
- Is bottom-up testing available if you use top-down design?
- With bottom-up testing, at what point in the life-cycle are major
flaws are discovered? When are trivial bugs discovered?
- Is the probability of the existence of more errors in a section
of a program proportional to, inversely proportional to, or independent of
the number of errors already found in that section?
- Is testing is an extremely creative and intellectually
challenging task? Explain.
- The classic approach to testing, now referred to as _____
testing, often requires programmers to build _____ for testing lower-level
modules. A more effective approach, known as _____ testing, requires the
use of _____ for testing higher-level modules.
- List the two main categories of software maintenance. Explain
the difference between them with respect to the functional specification
of the product.
- _____ means determining the exact nature and location of a
suspected error and fixing the error.
- _____ is an organized procedure that attempts to expose the
presence of errors in a computer program.
- The principle of _____ is to build in as many error-checks as
possible, under the assumption that the program is going to do something
incorrectly.
- Describe the necessary components of a test case.
- Describe the difference between a successful and an unsuccessful
test case.
- What are the dangers of using top-down coding and testing
exclusively?
- How does top-down design affect structured programming?
- Should a programmer attempt to test his/her own program? Why?
- Should test cases be written for invalid input conditions?
Why?
- Describe the relationship between testing and debugging. What
are the main objectives of each?
- Describe two general guidelines for the development of test
data.
- Describe a key problem or difficulty with using white box
testing.
- Describe a key problem or difficulty with using black box
testing.
- During initial testing of a large system with 7 major components
(A through G), errors were located and fixed in components A, E, and G.
There is a strict delivery deadline and only a short time remaining for
further testing. Give an argument for focusing further testing on those
modules that exhibited errors (A, E, G). Give an argument for focusing
further testing on those modules that did not show any errors in initial
testing (B, C, D, F). Resolve these two arguments.
- What type of testing locates bugs in detail modules before
locating overall design flaws?
- Explain why adding people to a late software project makes it
later.
- In accordance with the "surgical team" or "chief programmer" view
of Harlan Mills and Fred Brooks, what is the role of the surgeon? List
each of the tasks that is performed by the surgeon.
- Under what circumstances might adding programmers to a late
project improve the situation?
- What is the second system effect? Why should we be concerned
about it?
- Brooks discusses the management question of whether or not to
build a pilot system and throw it away. What is the reasoning behind his
response to this question?
- Explain why estimates are or are not negotiable.
- If a realistic estimate will result in losing a job, when should
a shorter estimate be offered?
- Should a good estimator's estimates generally be somewhat under
the time actually required? Why?
- What is best choice for protecting the ideas contained in a software
program?
- Define the protections afforded by and major characteristics of
each of the following: patent, copyright, trademark, trade secret.
- Protection against independent invention is afforded by _____.
- Form is protected by _____.
- Most practical protection for user of internally developed
software: _____.
- Protects against confusion with similar products by other
manufacturers: _____.
Define the following terms and concepts:
- antibugging
- anticipatory documentation
- attribute
- attribute value
- automatic programming
- black-box testing
- Brooks Law
- conceptual integrity
- data abstraction
- debugging
- mini-spec (processing narrative)
- functional primitive
- embedded software
- entity
- entity type
- high level languages
- information hiding
- invariants
- modular programming
- object oriented programming
- parking lot effect
- rapid prototyping
- RCS commands:
ci co rlog rcsdiff
- regression testing
- relationship
- requirement
- requirements leakage
- specification
- state transition diagram
- stepwise refinement
- testing
- unified programming environments
- validation
- verification
- white-box testing
|