Dr. Jody Paul
jody@acm.org
Software Engineering Fundamentals
Conceptual Knowledge Self-Assessment

Read each question and consider (1) if you feel confident that you could answer the question right now, completely, for test purposes; (2) if you can truly answer at least 50% of it or know precisely where you could quickly get the information (say, in under 30 minutes); and (3) if you don't know the answer or are not confident you could quickly find the information to answer it. Keep these questions for reference during the semester, they were compiled from midterms and finals given over the past twelve years in undergraduate Introduction to Software Engineering courses.


  1. Why is software engineering more complex than other types of engineering?

  2. Software costs are concentrated in _____; hardware costs are concentrated in _____.

  3. In contrast to hardware failures where parts may wear out or experience physical breakdown, every software failure indicates an error in _____ or _____.

  4. Draw the actual failure rate curve for hardware, the idealized failure rate curve for software, and the actual failure rate curve for software.
  5. What is seen as the weakest part of the entire software development process?

  6. What is the primary role of the software engineer?

  7. What is the most widely used software process model today?

  8. 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.

  9. List the two primary functions of a software process model.

  10. List the two major economic rationales for the waterfall model.

  11. Describe the meaning of each of the following terms in the context of difficulties of modern software: complexity, conformity, changeability, invisibility.

  12. List the steps of the Waterfall Model of the software life cycle in order.

  13. 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.

  14. What portion of total cost of a typical software project is consumed by maintenance activities?

  15. Which software development paradigm best supports delivering operational versions of the product at early and intermediate stages of development?

  16. In "No Silver Bullet", Brooks cites _____ as the most profound long-run trend in software engineering.

  17. Describe a method for achieving conceptual integrity.

  18. List two reasons for dissatisfaction with the code-and-fix model.

  19. 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.

  20. 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.

  21. 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?

  22. Which are more expensive to fix, errors that are detected and corrected earlier or later in the software life cycle? Why?

  23. Why is the waterfall model poorly suited for interactive end-user applications?

  24. Describe the situation that is responsible for most software product failures.

  25. Which information should be included in a feasibility report?

  26. Describe the difference between essential and accidental difficulties in software development.

  27. What is the fundamental problem of requirements definition as seen by Gause and Weinberg?

  28. What are the three steps in the naming heuristic? What is the value of using it?

  29. What is the psychological principle underlying the memorization heuristic?

  30. What are backronyms?

  31. Discuss the relative merit of using a single meeting to accomplish multiple objectives versus several single-objective meetings.

  32. What is a recommended course of action to take when an agitated customer is giving unproductive responses to your questions?

  33. Should a software requirements document characterize acceptable responses to undesired events? What does this mean?

  34. 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?

  35. What tool graphically documents the boundary between the system under consideration and the rest of the world?

  36. What is the reference number of the parent of a DFD bubble with reference number 2.1.3?

  37. What is the "context diagram" of a DFD?

  38. If you find that it is essential to know when, why or how one source or sink communicates with another, what does this suggest?

  39. Describe the content and role of the data dictionary.

  40. Which tools for process specification lend themselves to the most ambiguity? Which to the least?

  41. How many dialects of structured English are there?

  42. Which type of documentation is usually kept most up-to-date?

  43. Why should user documentation (e.g., users' manuals) be developed at an early phase of the life-cycle?

  44. The most difficult task in requirements engineering is _____.

  45. Should a software requirements document specify only external system behavior, only internal behavior, or both? Explain.

  46. Why should redundancy be minimized in a structured specification? When should redundancy be introduced?

  47. When should a specification include a State Transition Diagram?

  48. What do we call a piece of data that we choose not to partition further?

  49. Describe what is meant by each of the following three characteristics of a good requirements specification: Verifiable, Backward Traceability, Forward Traceability.

  50. List the three primary components of a structured specification.

  51. Describe two typical problems with requirements inputs.

  52. List the four elements that comprise a data flow diagram and show the graphic symbol for each.

  53. Distinguish data flow diagrams from flow charts. (How are they different?)

  54. Describe the association between data flow diagrams and process specifications (mini-specs).

  55. Why are errors or rejects often left as reject stubs in a typical data flow diagram?

  56. List the three primary mechanisms for the construction of composite data in the data dictionary.

  57. Identify four typical problems with initial versions of DFDs.

  58. How does the use of an entity-relationship language aid in carrying out the requirements engineering task?

  59. 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.

  60. Should a software requirements document specify constraints on the implementation? Explain.

  61. When should a rapid prototype be developed?

  62. Why should a rapid prototype be thrown away?

  63. 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?

  64. What does the acronym "CASE" stand for?

  65. How can the effort to learn or relearn a task be minimized?

  66. How can the effort to perform a learned task be minimized?

  67. What is a usability prototype? How is it used?

  68. What is the primary cause of computer user error?

  69. List two design principles to help reduce or alleviate the effects of user errors.

  70. Describe those characteristics of error messages issued by a program that best serve the needs of users.

  71. List two design considerations for the implementation of command abbreviations.

  72. What is the primary value for software designers of studying the seven-stage action cycle?

  73. Describe the difference between the behavioral classifications of slip and mistake in terms of the action cycle. Give two examples of each.

  74. List six types of slips and describe the nature of each.

  75. Can most of the software engineering techniques that are applicable to large software projects be applied effectively to smaller development efforts? Explain.

  76. Do the top-down design method and tools form a set of strict rules for program design that should not be violated? Explain.

  77. Can the basic philosophy behind top-down design be applied to any application? Explain.

  78. In programming language design, perhaps the greatest change that has occurred is in the role of _____ in program development.

  79. Which is generally more important: the design of algorithms or the design of data? Why?

  80. When might a combination of top-down and bottom-up design be a better alternative to top-down design alone?

  81. List two arguments in favor of top-down coding.

  82. List three advantages of top-down testing.

  83. What is the primary value of using abstraction?

  84. What, if any, is the value of prototyping the user interface only, with no true functionality behind it?

  85. What is the main purpose for a system like RCS or SCCS?

  86. Where should a maintenance programmer look first to determine which modules call module "fubar"?

  87. According to Böhm & Jacopini, what three basic building blocks are needed to construct a program?

  88. Who is recognized as responsible for the concept of structured programming?

  89. List the three basic logical constructs of structured programming.

  90. How can the readability of a structured program be enhanced?

  91. Can we take an arbitrary program which has not been written according to structured programming rules and convert it into a structured program? Explain.

  92. What characteristic of structured programming is most likely to adversely affect efficiency?

  93. How many entrances and exits should a module have?

  94. When should a module affect parameters other than its formal arguments?

  95. Should a module be allowed to access external data? Why?

  96. Should the function of a module be affected by the source of its input or the destination of its output? Explain.

  97. What are the meanings of cohesion and coupling in the context of modules? Which should be maximized or minimized?

  98. How is the concept of factoring used in creating an architecture?

  99. What is the purpose of developing a hiding assumption list?

  100. Why should you limit the size of modules?

  101. What is a good "rule of thumb" for determining the size of a module?

  102. List the criteria that should generally be used in determining the decomposition into modules.

  103. Why shouldn't a flow chart be used for determining the decomposition into modules?

  104. Describe current restrictions on the use of program certification techniques.

  105. Describe how to choose a property P for use in proving termination of a loop.

  106. What is the best choice for property P for use in proving termination of the loop:
    while (x<y) x:=x+1;

  107. Show that the following loop terminates: while (x>42) x:=x-1;

  108. 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}
    
  109. Why is the axiomatic method of program certification considered to be a weak method?

  110. Given that there are substantial restrictions on program certification, describe its usefulness for program development. Give a concrete example.

  111. What are the most time-consuming activities in computer programming?

  112. What are the two commonly prevailing goals of testing? What is a more productive goal?

  113. 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 ____.

  114. What kind of testing should be performed after making a very minor modification to a module of a working system?

  115. List three criteria that are recommended for deciding when to end software testing.

  116. Is bottom-up testing available if you use top-down design?

  117. With bottom-up testing, at what point in the life-cycle are major flaws are discovered? When are trivial bugs discovered?

  118. 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?

  119. Is testing is an extremely creative and intellectually challenging task? Explain.

  120. 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.

  121. List the two main categories of software maintenance. Explain the difference between them with respect to the functional specification of the product.

  122. _____ means determining the exact nature and location of a suspected error and fixing the error.

  123. _____ is an organized procedure that attempts to expose the presence of errors in a computer program.

  124. 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.

  125. Describe the necessary components of a test case.

  126. Describe the difference between a successful and an unsuccessful test case.

  127. What are the dangers of using top-down coding and testing exclusively?

  128. How does top-down design affect structured programming?

  129. Should a programmer attempt to test his/her own program? Why?

  130. Should test cases be written for invalid input conditions? Why?

  131. Describe the relationship between testing and debugging. What are the main objectives of each?

  132. Describe two general guidelines for the development of test data.

  133. Describe a key problem or difficulty with using white box testing.

  134. Describe a key problem or difficulty with using black box testing.

  135. 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.

  136. What type of testing locates bugs in detail modules before locating overall design flaws?

  137. Explain why adding people to a late software project makes it later.

  138. 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.

  139. Under what circumstances might adding programmers to a late project improve the situation?

  140. What is the second system effect? Why should we be concerned about it?

  141. 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?

  142. Explain why estimates are or are not negotiable.

  143. If a realistic estimate will result in losing a job, when should a shorter estimate be offered?

  144. Should a good estimator's estimates generally be somewhat under the time actually required? Why?

  145. What is best choice for protecting the ideas contained in a software program?

  146. Define the protections afforded by and major characteristics of each of the following: patent, copyright, trademark, trade secret.

  147. Protection against independent invention is afforded by _____.

  148. Form is protected by _____.

  149. Most practical protection for user of internally developed software: _____.

  150. Protects against confusion with similar products by other manufacturers: _____.

  151. Define the following terms and concepts:

  152. antibugging
  153. anticipatory documentation
  154. attribute
  155. attribute value
  156. automatic programming
  157. black-box testing
  158. Brooks Law
  159. conceptual integrity
  160. data abstraction
  161. debugging
  162. mini-spec (processing narrative)
  163. functional primitive
  164. embedded software
  165. entity
  166. entity type
  167. high level languages
  168. information hiding
  169. invariants
  170. modular programming
  171. object oriented programming
  172. parking lot effect
  173. rapid prototyping
  174. RCS commands: ci co rlog rcsdiff
  175. regression testing
  176. relationship
  177. requirement
  178. requirements leakage
  179. specification
  180. state transition diagram
  181. stepwise refinement
  182. testing
  183. unified programming environments
  184. validation
  185. verification
  186. white-box testing






©1985-1998,2006 Dr. Jody Paul