ICS52 - Introduction To Software Engineering
Final Exam – Winter, 2002
Name: ______Student ID: ______
- (24 points, 4 points each) Define the following terms, as used in software engineering:
- Testing Oracle
A mechanism for determining whether the outcome of a test is correct.
- Edge coverage criterion
Selecting a test set such that, after each test case in the test set has been executed, each edge in the program's control flow graph has be executed at least once.
- Configuration management
Standards, procedures, and/or tools for controlling and tracking an evolving system product.
- CASE
Computer Aided Software Engineering. A program or computerized tool that aids in any part of the software development or management process.
- Stress testing
A series of tests where the load is steadily increased until the system performance becomes unacceptible or the system fails.
- Equivalence partition
A subset of set of all possible inputs that have common characteristics. A subdomain (just this alone is 2 points).
- (7 points) Define “architectural evolution” and explain one major reason why it occurs.
Architectural evolution is change made to a system which effects the way in which modules and sub-systems communicate with and rely on each other. Typically centralized mainframe systems are transformed into client-server systems. The book notes three main drivers of architectural evolution:
- Hardware costs of distibuted (desktop) computers is going down.
- Users are expecting graphical user interfaces associated with PCs.
- People want distributed access to their systems.
- (12 points.) The textbook describes, in Chapter 19 “Verification and Validation,” several approaches to verifying a software system without relying on testing. Name one of those approaches, and briefly describe it.
Software or program inspections. A team systematically examines the code (or possibly a specification or design) and points out possible defects. The team may consist of an author (owner), reader, tester or inspector, moderator, and or scribe.
Automated static analysis. A software tool scans the source text of a program and detects possible errors, faults, and anomolies. Steps may include Control flow analysis, data use analysis, interface analysis, information flow analysis, and path analysis. Lint is such a software tool.
Cleanroom software development. This approach has the objective of creating zero-defect software. There are five key characteristics: formal specifications, incremental development, structured programming, static verification, and statistical testing of the system. Three teams involved are the specification team, the development team, and the certification team.
- (20 points) You have been assigned to design test cases for black box testing of a Coinstar coin-counting machine. Here’s a description of that machine from “Got a jar of coins at home? Tired of wrapping and rolling your coins? The Coinstar® Network consists of self-service coin counting machines located at the front entrances of leading supermarkets nationwide. The Coinstar machines count shoppers' accumulated coins and dispense a voucher that can be exchanged in the store for cash or groceries.”
- What is the input domain?
The (possibly empty) set of coins deposited in the coin receiving basket; the roll of paper upon which the voucher is printed; ink to print on the paper; pressing the “Print Voucher” button; electric power.
- For the input domain you defined in (a), name a specific basis for dividing the domain into subdomains.
The sum of the coins deposited. Assume there is electricity, sufficient paper and ink to print the voucher, and that the user presses “Print Voucher” afterwards.
- Using the basis from (b), name three or four subdomains.
- Less than five cents.
- Five cents to 99 cents.
- One dollar to ten dollars.
- More than ten dollars.
- For each subdomain from (c), give a test case input and the expected output.
- Input: 3 pennies. Output: voucher for $0.03.
- Input: 2 quarters. Output: voucher for $0.50.
- Input: 21 dimes. Output: voucher for $2.10.
- Input: 100 quarters. Output: voucher for $25.00.
- (12 points) Draw and label a diagram representing the “spiral” software process model.
See page 54.
Grading rubric:
Upper left quadrant: 3 pts. for mentioning at least two of ``objectives,'' ``alternatives,'' ``constraints.''
Upper right quadrant: 1 point each for “evaluate alternatives,” “identify, resolve risks,” “risk analysis,” “prototype” (to a max of 3 pts)
Lower right quadrant: 1 point each for ``develop,” “verify,” “concept of operation,” “requirements,” “design,” “test,” “code” (to a max of 3 pts)
Lower left quadrant: 3 pts. for “plan.”
1 pt. for drawing a spiral.
This adds up to 13, but the max was 12.
- (15 points) Recall the Scientific American article “Command and Control.”
What was a problem with the existing system, before ATAMS was started in April, 1995? Answer by describing one specific problem and a software quality or principal discussed in lecture that was lacking in the existing system because of that problem.
Users had to scan multiple monitors for alerts that were hard to see. This violates the quality of user-friendliness.
ATAMS was installed on time, within budget. This success was “no fluke,” according to the article: “several techniques were used that produce better software faster.” Describe one specific technique used in ATAMS, name one software quality or principal discussed in lecture (it can be the same one you described above, or a different one), and explain how the technique ensured the software quality or followed the principle.
The system was split into small segments, which follows the principle of modularity.
Did the development of ATAMS follow the “bazaar” model described by Eric Raymond in “The Cathedral and the Bazaar”? Answer by describing a particular aspect of the bazaar model that was present or missing in ATAMS.
Yes: ATAMS was developed with constant communication with users, and was designed to undergo constant change.
No: ATAMS source was not open to a wide community of developers who each contributed their own modifications and bug-fixes.
- (10 points) Explain why interface testing (also called integration testing) is necessary given that individual units have been extensively validated through unit testing.
See p. 456.
The calling component may pass the wrong parameters to the interface.
The calling component may pass parameters of the wrong type (e.g. int instead of double) to the interface.
The called component may not behave as expected by the caller.
There may be timing errors in real-time systems.