Assignments:

 

Due

 

8/28

         Send me an email from the account where you receive email regularly

         Download (from my web site) the paper “The Economic Impacts of Inadequate Infrastructure for Software Testing” by NIST, 2002. (It’s large.)

         Read by 8/30/2007 (next class) chapters 1, 2, 3.1, 3.2, 3.8, 4. Be prepared to discuss them in class. (Bring a hard copy of these pages.)

 

         In the language of your choice:

        Implement a program that holds an array of Customer objects

        Customers have names, addresses, ID numbers, credit reference numbers.

        Read the data from a file. Write it to a file. Provide a simple interface for searching by ID number and customer name. Use binary search. (You must implement the search algorithm.)

        Test this program. The test suite will be turned in.

        Explain to me why the test suite is adequate.

        Due in 1 week.

 

8/30

Find 5 examples of “notorious” software failures in history, at least 2 of which have occurred in the last 3 years.

·                    Write a brief description of each. Be sure to provide me with references.

Read the following papers:

·        Cem Kaner,  “Software Negligence and Testing Coverage”1996, http://www.kaner.com/coverage.htm

·        Steve Cornett, “Code Coverage Analysis”, 2004, http://www.bullseye.com/coverage.html

·        Write a 1 page summary of each

 

9/11

Implement a program that simulates a multi-tasking, single processor system with three processes. The system does not have pre-emptive capabilities, but instead depends on “good behavior”. Each process has the following algorithm:

 

Do forever

            try to get the processor flag

            if (got the flag)

                        do some small amount of processing

                        print out the name of this thread

                                    and the progress of the processing

            else // didn’t get the flag

                        sleep (random period of time)

 

         The flag is global

         Only one process is allowed to be processing at any given time

         You cannot use “synchronize”

         Remember to test this adequately

 

9/13

9/13

The original version (1928) of Ackermann' function may be defined

recursively on the nonnegative integers by

 

ack( x, y, z ) <== if x=0 then y+z

                   else if x<=2 and z=0 then x-1

                   else if x>2  and z=0 then y

                   else ack( x-1, y, ack(x,y,z-1) ).

 

Prove the following for all nonnegative integers x, y, and z,

 

ack( x, y, 0 ) equals if x=1 then 0

                      else if x=2 then 1

                      else y ;

 

ack( 1, y, z ) equals y*z ;

 

ack( 2, y, z ) equals y^z ;

 

ack( x, 1, z ) equals if x=0 then z+1

                      else if x=1 then z

                      else 1 .

 

9/20

·        Prove the following using natural deduction:

1.      p ® (q®r)   |- p /\ q ® r

2.      q®r  |- p\/q ® p\/r

3.      Øp \/ q  |- p®q

4.      p® q, r® s |- p\/r ®  q\/s

5.      (p \/(q® p)) /\ q |- p

6.      p® q/\r |- (p® q) /\ (p® r)

7.      p® (q\/r), q® s, r® s |- p® s

8.      Øp, p\/r |- r

 

9/20

·        Download or gain access to SPIN

·        http:// spinroot.com (also available on CS Unix machines)

9/27

Write a one-page description of liability and personal responsibility with respect to software development.

10/02

         Read the Standish Group Report Standish_Survey.htm on the course website

         Read about the Mars Pathfinder priority inversion problem

        http://research.microsoft.com/~mbj/Mars_Pathfinder/Mars_Pathfinder.html

        http://www.embedded.com/story/OEG20020321S0023

         Write pseudocode for the locking algorithm

         Draw the state diagram for the two-process problem

         Identify the sequence of executions that leads to the problem

         Identify the problem as deadlock, livelock, or starvation

 

10/02

Read chapters 1, 2, and 3 in the text

10/09

In the US, manufactures have an obligation to make products safe and reliable. Examples of product liability cases include the Ford Pinto suits from the 1980s to the Firestone tire suits a few years ago and recently lead paint on children’s toys and e-coli contamination of packaged food products. Software producers have steadfastly denied responsibility for the consequences of the use of the software they produce.

 

Using the five software disasters you wrote about earlier this semester as background, write a paper that takes a stand on the responsibility of software manufacturers and individual software engineers for the software they produce. Explain if, how, and when corporations or individual software developers should be held liable for software failures. Explain the difficulty in adequately verifying and validating software and how this is either similar to or different from other manufactured goods.

 

The purpose of this assignment is for you to understand the technical issues related to software assurance, understand in general terms product liability as it applies to software, and to formulate and articulate a well-reasoned argument for taking a stance with respect to responsibility.

 

The paper should be approximately 5000 words in length. Papers should be double-spaced with 1” margins. Page numbers should appear at the bottom center of each page. Use either 10 or 11 point font. The title should be 14 point bold centered. Papers should be submitted in pdf format, and should not contain the author’s name or identification. 

 

The evaluation rubric for this assignment can be found on the course website.

10/21

Each of you has been assigned 2 papers to review. Your job as a reviewer is to evaluate the paper with respect to the criteria posted on the web page. You will provide a written evaluation of the paper to me, and I will forward the comments to the author. Your job is to help the author make a better paper. You are being graded on the quality of the review. The criteria are posted on the course web page.

10/30

Each of you has been given your two peer reviews. You must grade each review by using the rubric posted on the web page and return an electronic meta-review to me.

11/7

You have been given reviews of your papers. You must rewrite your papers taking into account the reviews. You must include with your paper a response to the comments of the reviewers. It is possible that you disagree with your reviewer. You must support your reasons for not taking the comments into account. Your reviewers will see the new paper and your previous reviews.

 

As before, you must send me a pdf with the author name in the file name, but no identification in the file itself.

11/15

Show me SPIN models that answers the following questions:

 

 

  1. What if 2 timeouts are enabled at the same time? Does SPIN pick between them randomly?
  2. Write a model (or pair of models) that demonstrates the difference between ATOMIC and D_STEP.
  3. Try the following automaton:

x = 1;

do

:: x++

:: break

od;

assert (x != 128)

 

how many process states? Is the assert always true? What if the break is removed?

 

  1. Show me models that use assertions, end-state labels, accept-state labels, progress state labels, never claims, and trace assertions.
  2. Show me an example model that uses fairness. Does SPIN differentiate between weak and strong fairness?
  3. Run the example. Are there non-progress cycles? Are there fair non-progress cycles? What if the progress statement in B is removed?

 

active proctype A()

{ do

   :: x = 3-x

   ;; y = 3 – y; progress: skip

   od

}

active proctype B()

{ do

   :: x = 3-x: progress: skip

   ;; y = 3 – y

   od

}

 

  1. Implement and test this algorithm

 

program me;

var p1inside, p2inside: boolean

procedure one;

  begin

     while true do

         begin

             while p2inside do;

              p1inside := true;

              criticalsectionone();

              p1inside := false;

               otherstuffone();

          end;

     end;

procedure two;

  begin

     while true do

         begin

             while p1inside do;

              p2inside := true;

              criticalsectiontwo();

              p2inside := false;

               otherstufftwo();

          end;

     end;

begin

    p1inside := false; p2inside := false;

    parallel_begin

         one();

         two();

    parallel_end;

end.

 

11/26

Peer review 2: devil’s advocate

You will review two papers. You have been given the revised copies of the papers and the original peer reviews. Your job is two-fold. First, you must ensure that the paper has adequately responded to the reviews. Second, you must play “devil’s advocate” and challenge the author’s assertions and claims in every reasonable manner. If there are logical fallacies, it is your job to point them out. If the argument can be discredited, you must do so. Again, your job is to help the author make a better paper. You are being graded on the quality of the review. The criteria are posted on the course web page.

12/5

Congratulations! Due to the high quality of your work, your paper has been accepted in the prestigious Roach Journal, pending your ability to address the issues raised by the reviewers. However, to keep publishing costs down, there is a strict 2000 word limit. You must rewrite the paper keeping all of the content and addressing the reviewers’ comments, but reducing the size of the paper to meet the 2000 word constraint.