1. Format. The exam will consist of short answer questions and two or three problem-solving, short essay questions.
2. Scope. The exam will focus on the lecture notes and in-class discussion. This is backed-up by your readings in Schach and by the first two assignments and Homework 1.
NOTE: this review sheet is not a substitute for looking at the notes!
1. Lecture Notes, including articles, through Topic 5 and parts of Topic 6.
2. Assignments One and Two, Homework 1.
3. Schach. Chapters One, Two, Three, Five, Nine.
Rigor and FormalityWell-defined, precisely-stated, sound steps, which may be written out in a mathematical notation.
Separation of ConcernsIndividual aspects are identified, especially to divide responsibility.
ModularityDecomposition of a problem into individual components.
AbstractionHow important aspects of a problem are identified and details are ignored.
Anticipation of ChangeAssumption that some modification must be planned for.
GeneralityIdentification of more than the immediate problem.
IncrementalityPlan for delivering subsets of a software system.
Productivity performance of the development process
Timeliness ability to deliver software on time
Visibility all steps and current status are documented clearly and can be easily accessed
Correctness the software behaves according to requirements
Reliability users feel they can depend on the software
Robustness the software behaves ÒreasonablyÓ even in unanticipated circumstances
Performance the software uses available resources economically
Usability the software is well suited to the circumstances of the end users
Understandabilitythe software can by easily analyzed by people who didnÕt write it
Verifiability the satisfaction of particular properties of the software can be easily determined
Maintainability the software is easy to change to fix faults or add new functionality
Reparability faults in the software can be corrected with minimal effort
Evolvability new functionality can be added easily
Reusability the software can serve as part of a new system
Portability the software can run in new environments with little or no effort.
Interoperability the software can coexist and cooperate with other systems
1. What is software engineering?
2. What is the goal of software engineering?
3. Name four phases of the software production lifecycle.
4. In general, which phase or activity in the software lifecycle requires the greatest cost and effort?
5. What is the difference between a client and a user in software development.
6. In BrooksÕ article, ÒNo Silver Bullet,Ó what is meant by ÒessenceÓ?
7. A client provides you, the software developer, with a vague problem statement. What do you do first?
8. Your client has trouble understanding what type of software system solution you propose to meet his or her problem. What might you try to facilitate communication?
9. ÒUnitÓ or ÒmoduleÓ testing refers to the verification of individual modules in specification or implementation. What type of testing refers to the verification of combinations of modules?
10. For interactive software used at an information booth in a shopping mall, which software quality would be the most important?
11. Name four attributes specified for a module in a REBUS design document.
1. Read the following excerpt from an article about a blood bank software fiasco. Assuming you have a chance as a software developer to redo the project, how would you proceed?
EXCERPT: Computer software used by more than 200 hospital blood banks nationwide has been quietly recalled after the U.S. Food and Drug Administration (FDA) discovered programming defects that could have allowed the accidental release of contaminated blood. The rare action came three years after FDA officials first cited Western Star for problems with blood bank software. Over that period in a series of regulatory inquiries, the FDA has alleged that Western Star: a) Failed to adequately test software before distribution to its 219 clients; b) Failed to specify to its customers that problems with older versions of the software required that it be replaced with newer versions; c) shipped ÒcorrectedÓ software with uncorrected defects that had already been identified, or with new programming errors.
(Hint: think about software process (production and lifecycle models), think about software qualities that should have been emphasized, think about verification and validation).
2. Why should so much emphasis be placed on written, intermediate products at each phase or activity of the software production lifecycle?
(Hint: think about management of software, think about participants in specification review process).