Software Engineering, Exam, March 18, 2005.

Duration 15:00 - 20:00.

  1. During the course we discussed some software engineering processes (waterfall, V-model, etc.). They all have advantages and disadvantages. What are desirable properties for a process? (5 points, 2 pages)

  2. Consider the Cleanroom process.
    1. What is its philosophy (goal, slogan)?
    2. What are its 5 ingredients (principles, methods)?
    (3 points, 1 page)

  3. If a change is made to a requirements specification, then what about this change should be traceably, and why? (3 points, 1 page)

  4. Explain by concrete examples how the reliability metrics MTTF (Mean Time To Failure) and ROCOF (Rate of  OCcurrence Of Failure) are used for different purposes. (3 points, 1 page)

  5. Describe how different forms of prototyping can reduce different risks for a starting project. Give at least 3 examples. (6 points, 2 pages)

  6. System design:
    1. What are the steps of designing a system?
    2. Why is there no hard border between requirements specification and design?
    3. How is the design process altered if many reusable components are available?
    (10 points, 3 pages)

  7. Suppose that you want to offer a ray tracer over the Internet (operations are: adding a world to the shared database, and ray tracing a world in the database with certain parameters). What kind of requirements influence the choice between a fat client and a thin client architecture? (5 points, 2 pages)

  8. It is sometimes a requirement for a safety critical system that certain features of the programming language are not used. Give 5 examples of such features and motivate for each feature why it can cause a hazard. (5 points, 2 pages)

  9. Describe (at least) five different test methods. For each method, mention
    (10 points, 4 pages)

  10. The following lines of code compute the sum of the positive elements of the array A.

    i = A.length();
    sum = 0;
    while i > 0 do
        if A[i] > 0 then sum = sum+A[i] fi;
        i = i-1;
    return sum;

    1. Give an example of a single test input (an array A) that gives full branch coverage. Explain clearly how you found this test. (5 points, 2 pages)
    2. This code is correct if the programming language indexes an array of length n from 1 to n, but it is incorrect if it indexes from 0 to n-1 (or in any other way). Give two methods of verification that you would expect to catch errors of this kind. Motivate your answer. (2 points, 1 page)

  11. Describe three different methods to estimate the cost of a project. What input does each method need (i.e., what do you need in order to apply each method)? (3 points, 1 page)