COS520: Software Engineering I
Fall 2007 Daily Progress and Assignments

Larry Latour
Associate Prof, Dept. of CS

Tuesday, 9/4 Topic 1: Introduction
Thursday, 9/6 Topic 2: Lamport "Time,Clocks" paper, part I
Tuesday, 9/11 Topic 3: Lamport, part II: Clock spec and impl., and system spec
Thursday, 9/13 Topic 4: Lamport, Part III: Resource Allocation Algorithm
Tuesday, 9/18 Topic 5: KWIC Index Modularization 2 - Parnas
Thursday, 9/20 Topic 6: KWIC Index Modularization 2 Properties - Parnas
Tuesday, 9/25 Topic 7: "Reliable Parallel Systems" paper, part I, Lamport
Thursday, 9/27 Topic 8
Tuesday, 10/2 Topic 9
Thursday, 10/4 Topic 10
Thursday, 10/11 Topic 11
Tuesday, 10/16 Topic 12
Thursday, 10/18 Topic 13
Tuesday, 10/23 Topic 14
Thursday, 10/25 Topic 15
Tuesday, 10/30 Topic 16
Thursday, 11/1 Topic 17
Tuesday, 11/6 Topic 18
Thursday, 11/8 Topic 19
Tuesday, 11/13 Topic 20
Thursday, 11/15 Topic 21
Tuesday, 11/20 Topic 22
Tuesday, 11/27 Topic 23
Thursday, 11/29 Topic 24
Tuesday, 12/4 Topic 25
Thursday, 12/6 Topic 26
Tuesday, 12/11 Topic 27
Thursday, 12/13 Topic 28


Topic 1, Introduction, Tuesday, September 4, 2007

Main topics that where discussed are as follows:

  • The Course is split into the following topics:
    1. Part I: Introduction: We will be covering the development process through two case studies, and Two introduction papers, as well as in the course text.
      • "Time, Clocks, and the Ordering of Events in a Distribted System" (Lamport, Leslie)
      • "On the Criteria to be Used in Decomposing Systems into Modules" (Parans, David)
      • "How to read an egineering paper" (Griswold, Bill) This is an introduction paper on reading other papers
      • "Programming-in-the-large Versus Programming-in-the-small" (DeRemer, F and H.H. Kron)
      • "Cultures of Prototyping" (Schrage, Michael; Winograd Text [course text])
    2. Part II: The Software Design Process and Documentation Support: This will be covered in 5 papers plus the Course Text
      • "A Software Design Manifesto" (Kapor, Mitchell; Winograd Text)
      • "Design of the Conceptual Model" (Liddle, David, Winograd Text)
      • "Managing the Development of large software systems: concepts and techniques" (Royce, W. W.)
      • "A Spiral Model of Software Development and Enhancement" (Boehm, Barry)
      • "A Rational Design Process: How and Why to Fake it" (Parnas, David and Clements, Paul C.)
      • "Embracing Change with Extreme Programming" (Beck, K)
      • "How Microsoft Builds Software" (Cusumano, Michael and Richard Selby)
      • "Using Documentation as a Software Design Medium" (Hester, S.D., Parnas, D.L., Utter, D.F.)
      • "Design Languages" (Rheinfrank, John and Evenson, Shelley; Winograd Text)
      • "Action-Centered Design" (Denning, Peter, and Durgan, Pamela; Winograd Text)
    3. Part III: Software Architectures: This section will be handled through 2 case studies, 5 papers, and the course text.
      • "The Implementation of Reliable Distributed Mulitprocess Systems" (Lamport, Leslie)
      • "The Byzantine Generals Problem" (Lamport, Leslie)
      • "Comparing Architectural Design Styles" (Shaw, Mary)
      • "Design patterns: Abstraction and reuse of object-oriented design" (Gamma, E., et. al)
      • "Architectural Mismatch: Why Reuse Is So Hard" (Garlen, David, Allen, Robert, Ockerbloom, John)
      • "Aspect-oriented Programming" (Kiczales, G., J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, et. al.)
      • "The 4+1 View Model of Architecture" (Kruchten, Phillippe P.)
      • "Foundations for the Study of Software Architecture" (Perry, Dewayne, E)
      • "Keeping it Simple" (Brown, John Seely and Duguid, Paul; Winograd Text)
    4. Part IV: Formal Specifications and Verification: This section is handled in Three papers, plus the course text.
      • "Larch: Lanuages and Tools for Formal Specification (Texts ad Monographs in Computer Science)"(Guttag, John V, et. al)
      • "Specification Case Studies" (Hayes, Ian, et al.)
      • "On the INevitable Intertwining of Specification and Implementation" (Swartout, William, Balzer, Robert)
      • "Footholds for Design" (Gal, Shahaf; Winograd Text)
    5. Part V: Formal Testing: This will covered by one paper and the course text.
      • "Toward a Theory of Test Data Selection" (Goodenough, J. B., and Gerhardt, S.L.)
      • "Design as Practiced" (Norman, Donald; Winograd Text)
  • Course Grades:
    • Take-Home Prelim 1: 15 Points
    • Take-Home Final: 15 Points
    • Class Participation: 10 Points
    • Projects: 40 Points
      • 2 Individual Projects (see sylabus)
      • 1 gourp Project (see sylabus)
  • Journal Must be Kept
    • For Readings:
      • Bibliography (standard and Annotated)
      • 1 Page description of how the paper fits in with class
    • For Topics:
      • 2 page essay describing how readings fit together (more info on sylabus)
    • For Course:
      • 2 page essay on how all readings fit together and the main points from class.
  • Final Class Team Project Objectives:
    • Working System
    • Documentaion
    • Poster

Looking Forward:

  • Start Reading the Clocks Paper, and read the How to read a paper paper.
 

Back to Table of Contents


Topic 2, Lamport "Time,Clocks" paper, part I, Thursday, September 6, 2007

Main topics that where discussed are as follows:

  • The Partial Order definition given in the paper -- The relation "→" on the set of events of a system is the smallest relation satisfying the following three conditions:
    1. If a and b are events in the same process, and a comes before b, then ab.
    2. If a is the sending of a message by one process and b is the receipt of the same message by another process, then ab.
    3. If ab and bc then ac (Transitivity). Two distinct events a and b are said to be concurrent if ¬ (ab) and ¬ (ba).
  • Concurrency described in the following three ways:
    1. Occurs when two or more events take place during the same time in multiple processes.
    2. Formal definition given in the paper, the last part of the partial ordering definition.
    3. The following diagram that visually depicts concurrency. In the diagram we have: time moving forward from the bottom to the top, two process, P1 and P2 drawn as vertical lines, and clock ticks shown partitioned by wavy lines.
      Processing events diagram
  • The "Happened before" relation, which is defined using the partial ordering definition from above. Notice that restricting concurrent events as defined above results in extending the typical notion of a partial ordering so that the notion of "happened before" is an irreflexive partial ordering.

Looking Forward

  • Look closely at the specification of logical clocks in the paper.
  • Additionally, when looking at the logical specification of clocks, look for reasoning about its correctness.

Back to Table of Contents


Topic 3, Topic 3: Lamport, part II: Clock spec and impl., and system spec, Tuesday, September 11, 2007

Topic 3, Logical clocks specification and implementation rules

Back to Table of Contents


Topic 4, Lamport, Part III: Resource Allocation Algorithm, Thursday, September 13, 2007

Main topics that where discussed are as follows:

  • Conditions to be satisfied for Implementation:
    1. Any Process That has been granted a resource must release it before it can be granted to another process.
    2. Different requests for a resource must be granted in the order in which they are recieved (Logical Order).
    3. If Every Process that has been granted a resource eventually releases it, every request is eventualy granted.
  • Implementaion Details
    1. Pi sends resource request to ALL processes, and puts its request on the request queue (timestamped Tm:Pi).

    2. Pj receives Tm:Pi request for resource, and places ther request (in time-stamp order) on its request queue. Acknowledgement is sent to Pi.

    3. Pi sends (Tm:Pi) release resource messege to every other process and removes it from its own (Pi) request queue.

    4. Pj recieves Tm:Pi release resource message and removes the related resource request from its request queue. (should be at the front of the queue)

    5. Process Pi is granted the resource when the following conditions are TRUE:
      1. There is a Tm:Pi in its request queue which is before any other according to "⇒"
      2. Pi has recieved a message from every other process, and all other processes time stamps are > Tm

  • Looking at these requirements, we make the following connections:
    • Implimentation Detail (ID) 1 and 2 satisfy Implimentation Condition (IC) 2.
    • ID 3 and 4 satisfy IC 1
    • ID 5 handles actually taking control of a resource, and combined with all other IDs, we satisfy IC 3.

 

Looking Forward

  • Start reading Parallel paper.
  • Implement this algorithm as a group (applet?). UPDATE: (Due 27 Sep 2007)

Back to Table of Contents


Topic 5, KWIC Index Modularization 2, Parnas, Tuesday, September 18, 2007

Discussed the paper On the Criteria To Be Used in Decomposing Systems into Modules by D.L. Parnas

  • Modularization of KWIK index
    1. Module:
      int CHAR(int line, int word, int character);
      int SETCHAR(int line, int word, int character, int data_character);
      void DELINE(int line, int word);
    2. Module:
      Reads original lines and call Module 1 to store them.
    3. Module: Circular Shifter
      Same set of methods as Module 1, but for all of the circular shifts of lines.
      CSSETUP, must be called first.
    4. Module: Alphabetizer
      ALPH, prepares
      int ITH(int index) // index of the circular index which comes ith in alphabetical order
    5. Module: Output
      The desired printing of set of lines or circular shifts.
    6. Module: Master Control
      Coordinates the sequence of calls.
  • A diagram showing one representation of the KWIK index modularization is shown below.
    Modularization of KWIK index.
  • Questions discussed
    • Why are we implementing the clocks?
    • How can we visualize the difference between modularization 1 & 2?
    • Given a layer, what is the abstraction that it gives the layer above? What about the layer below?

Looking Forward

  • Implement the KWIK index modularization:
    1. storage
    2. circular shifting
    3. alphabetizing
  • Start looking at case study 3 - Multi process paper
  • Demo the clocks program next Thursday. Think about the processes as state machines.

Back to Table of Contents


Topic 6, KWIC Index Modularization 2 Properties, Thursday, September 20, 2007

Back to Table of Contents


Topic 7, "Reliable Parallel Systems" paper, part I, Lamport, Tuesday, September 25, 2007

Main topics that where discussed are as follows:

  • Global Knowledge:
    • The system as a whole has a global knowledge (or consciousness)
    • The "Amoeba" of the system cannot blindly change state -- knowledge must be transferred.
      • Changes that do not foward knowledge can destroy the system.
    • When the "Amoeba" changes shape, it must "stretch" to encompass the new, and transfer its data before disconnecting old.
    • (graphic here)

  • Majority Graphs
    • For this type of system to work, the idea of a "Majority Graph" must be maintained.
      • Ex: If a network consists of 5 interconnected nodes, the majority graph would have to consist of at minimum 3 interconnected nodes.
    • (graphic here)

  • Reliable Parallel Systems (part I)
    • Goals:
      • To enable the system to continue functioning despite the failure of one or more processes or communications lines
      • To enable the system to continue functioning despite the malfunctioning of one or more processes or communications lines

    • Definitions:
      • Failure: Process or Communcation line stops working completely (removed from system)
      • Malfunction: Process or Communication line provides inaccurate or inconsistant data.

    • Difficulties:
      • Continue work with enough (info/processes)
        • Also need to know what a majority consist of.
      • Consistent information - how do we handle it?? (not for this paper...)
        • Byzantine General's Problem

    • Questions on paper:
      • What happens with a double point failure that separates a network into two??
        • Case 1: If no majority graph exists, requests will be queued until such time as a majority is present
        • Case 2: If one section is a majority graph, and the other is not, majority graph will continue to handle requests.
          Non-majority Graph will queue requests until such time as it can contact majority


          Break in System

      Does Ameba collapse instantly on two node failure.

      Yes, we think so. We only have to assure a majority graph still exists to remain functioning.

      Are users an alternate path for data-flow

      We are as yet undecided, leaning towards no.

      Who's perspective is a failure from?

      Does the system (in this paper) assume the recieved message is the same as the message sent?

      yes

      It is important to note that decisions are only made within the "Amoeba" area.

.

Looking Forward

  • Get together and decide on plan for next class. Read the parallel paper carefully.
  • Time Clocks Applet will be demonstarted in the next class.
  • Think about implementation of the reliable parallel system utilizing 5 + nodes.
  • Look at proof with a fine tooth comb. Work through it very carefully.

Back to Table of Contents


Topic 8, Thursday, September 27, 2007

Back to Table of Contents


Topic 9, Tuesday, October 2, 2007

Back to Table of Contents


Topic 10, Thursday, October 4, 2007

Back to Table of Contents


Topic 11, Thursday, October 11, 2007

Back to Table of Contents


Topic 12, Tuesday, October 16, 2007

Back to Table of Contents


Topic 13, Thursday, October 18, 2007

Back to Table of Contents


Topic 14, Tuesday, October 23, 2007

Back to Table of Contents


Topic 15, Thursday, October 25, 2007

Back to Table of Contents


Topic 16, Tuesday, October 30, 2007

Back to Table of Contents


Topic 17, Thursday, November 1, 2007

Back to Table of Contents


Topic 18, Tuesday, November 6, 2007

Back to Table of Contents


Topic 19, Thursday, November 8, 2007

Back to Table of Contents


Topic 20, Tuesday, November 13, 2007

Back to Table of Contents


Topic 21, Thursday, November 15, 2007

Back to Table of Contents


Topic 22, Tuesday, November 20, 2007

Back to Table of Contents


Topic 23, Tuesday, November 27, 2007

Back to Table of Contents


Topic 24, Thursday, November 29, 2007

Back to Table of Contents


Topic 25, Tuesday, December 4, 2007

Back to Table of Contents


Topic 26, Thursday, December 6, 2007

Back to Table of Contents


Topic 27, Tuesday, December 11, 2007

Back to Table of Contents


Topic 28, Thursday, December 13, 2007

Back to Table of Contents


Last Updated: 10/1/07