<3/97> Software Engineering

Software Engineering

Sample Midterm


1) Why is the study of the design and analysis of software systems important? Be specific in the aims and achieved benefits of software engineering.

Discussion: the growth in size and complexity of software systems has led to continual failures in meeting cost and time requirements, and to the failures of systems after they have been delivered. In addition, software systems increasingly are used to monitor real-time processes, where failures can be catastrophic.
Thus software engineering attempts to contain cost, time overruns, and failures. Give specific examples for the above.

2) What is risk analysis? Why is it important? Give some mechanisms for the control of risk.

DISCUSSION: analysis of alternatives," risk identification, risk assessment, risk priorization, risk management strageies and resolution, and risk monitoring."
Helps you make a decision on whether or not to continue with the project.
What risks can cause the project to fail in requirements (including cost, time, and functions).
Where should you put your energies in controlling risk. Use metrics of (r, l, x) in the analysis.

3) The DoD has recently changed its software procurement process, so that its agencies are instructed to consider the purchase of COTs in preference to developing the systems, or parts of the systems, themselves. Discuss advantages and disadvantages.

DISCUSSION: in the short run it is probably cheaper, and systems that have been created for multiple users will have been tested more thoroughly.
There are many negative issues, however, in regards to maintenance of the COTs (in the long run, it may become much more expensive), what if the company goes out of business or no longer supports the product, the DoD will obviously have to eliminate a great deal of their requirements for the COTs to be suitable, etc. There are also legal issues.

4) Draw an activity graph for any of the following activities. Find the critical path.
a) Three people are cleaning a house. Include activities, such as moving furniture before vacuuming, that require two workers.
b) Three people are designing and developing a software system. Include different stages in the production and make sure you allow for feedback. You can use any software system with which you are familiar.

DISCUSSION:You must show people working concurrently. Put metrics on the arrows between activites and calculate the longest path to find the critical path.

5) For a software system that manages home alarms, draw a data flow and control flow diagram.

DISCUSSION: see text

6) Contrast the waterfall and spiral models for the software engineering process.

Describe both models and explain their differences. Note that although in theory the waterfall model does not provide for iteration, I specifically showed repeated feedback and adjustments in the waterfall model.

7) Basic COCOMO sets the following coefficients for software projects.
category a b c d
Organic 2.4 1.05 2.5.38
Semidetached 3.0 1.12 2.5 .35
Embedded 3.6 1.20 2.5 .32
The basic COCOMO equations are:
E = a (KLOC) exp (b)
D = c(E) exp (d)

Explain the above, and give an example of how it would be used.

Pick one correct answer from the following questions. You can receive credit for justifying multiple or missing answers.

8) A system is said to be correct if it

a) satisfies its requirement specification
b) performs according to the user manual
c) contains no errors
d) has a 0% failure rate during testing

9) Software errors occur because

a) the size and complexity of some systems are beyond human understanding
b) customers may not know how to specify their requirements accurately
c) programmers may not know how to interact with their customers in a way to obtain complete and consistent specifications
d) the specification cannot be effectively implemented (perhaps performance requirements cannot be met, etc.)
e) large systems usually require large numbers of people, with liveware problems such as lack of appropriate training, personnel turnover, large number of communication paths, etc.
f) all of the above

10) A system is incorrect if it

a) crashes every time a user enters an alphabetic character
b) writes into the operating system thus freezing the machine
c) does not satisfy its requirements specification
d) causes the death of a client
e) all of the above

11) A spiral model for software engineering does not require

a) prototyping
b) risk analysis
c) customer evaluation
d) automatic generation of code
e) requirements analysis

12) Pick one of the following system requirements and discuss any incompleteness, ambiguities, and/or inconsistencies you find. (I need at least five issues.)

A. An inventory system is to maintain a database for shoes. Users are to be allowed to find out if specific styles of shoes are available in a given color and given size. The client is to be allowed to update inventory values and print reports. Each is to be supplied with a menu that allows them to select the desired function and enter the parameters.

B. Create the kernel for a real-time operating system. Background processes are under the control of the scheduler, which schedules these processes according to FIFO. The CPU is not taken away from a background process unless an interrupt occurs, or unless the process voluntarily relinquishes the CPU by making a supervisor call (thus generating an interrupt). Interrupt process are scheduled by their priorities. An interrupt process runs to completion unless a higher interrupt occurs.

13)For either of the above requirements, provide:

a structure chart with parameters indicated
a data flow analysis
a control flow analysis
a data definition

14) For either of the above requirements, estimate the number of man/months required using your own LOC and FP estimates.