Workflows

Steven Zeil

Last modified: Jul 21, 2015

Contents:
1. What Happens In Each Workflow?
2. Iterative Application of the Workflows
3. Examples
3.1 Example: Class Discovery
3.2 Example: ADT Interface
3.3 Example: Test Design
3.4 Example: ADT Implementation
3.5 Example: Training Manuals

Certain activities seem to occur almost continuously. The workflows describe the “daily work” of a software designer. The four workflows are

1. What Happens In Each Workflow?


The Topic of Interest

The topic of interest (TOI) is the part of the system that you are working with at the moment.

All the workflows have to be viewed in terms of the TOI.

All the workflows have to be viewed in terms of a part of the system that you are working with at the moment. That “part” might be the entire system or a single ADT or even a single function, depending upon where you are in the overall process. (More on that idea shortly when we look at software development process models.) We’ll call that part of the system the topic of interest (TOI). The TOI could be the entire system or a single ADT or even a single function within an ADT. For example, in the early stages of design you are concerned with the entire system, so the TOI is the entire system. As you begin to decompose the system into smaller parts, you begin to focus your attention on those parts one at a time. Each time you do this, your TOI becomes progressively more narrow. On the other hand, when you are testing the system, you may start with unit testing where your TOI is the development of tests for a single ADT. Later your focus will broaden, as during integration testing your TOI will be a subsystem, and during system testing the TOI expands to comprise (testing of) the entire system.

Whatever the TOI is, at any moment in time, software developers can expect to engage in the following 4 generic activities:


What Happens in Each Workflow?

2. Iterative Application of the Workflows

At the low level, we should consider the total process of developing a software system as a continuous cycle through the four workflows, analysis, design, implementation, and validation. The TOI changes, but the daily activities represented by the 4 workflows remains the same.

3. Examples

A few examples of a possible single “turn” through the ADIV cycle follow.

3.1 Example: Class Discovery

Topic of interest:

What are the basic characteristics of a book in the library?


Analysis:


Design:


Implementation:

The team draws a simple UML class relationship diagram (these diagrams are introduced in a later lesson) describing the Book, BookCopy, and Author classes:


Validation:

3.2 Example: ADT Interface

Topic of interest: Developing the ADT interface for a Book.


Analysis:

The developer looks at the previous diagram and notes that each book can have multiple authors, so the interface must provide some way to access an unknown number of author objects.


Design:

The developer suggests using an iterator for this purpose, knowing this to be a common idiom in C++ for accessing an unknown number of “contained” objects.


Implementation:

The developer adds the lines

typedef ... AuthorIterator;

and

AuthorIterator begin() const;
AuthorIterator end() const;

to the class declaration for Book.


Validation:

The developer looks at some of the proposed algorithms that will work with books and authors, checking to see if those algorithms could be coded using an iterator style.

Satisfied that it will do so, the developer distributes the new class declaration to the rest of the development team for their approval.

3.3 Example: Test Design

Topic of interest:

Developing a unit test for the Book ADT


Analysis:

The tester reviews the required attributes and behaviors of the book class and concludes that it is reasonably self-contained and should be testable using a self-checking test.


Design:

The tester examines the Book interface and divides the member functions into

The tester writes a test driver that


Implementation:

The tester codes the unit test driver, using the team’s chosen test framework.

Validation:

The tester checks the unit test code against the Book interface to verify that each Book function is being invoked during the test.

3.4 Example: ADT Implementation

Topic of interest:

Implementing the Book ADT


Analysis:


Design:

The programmer decides that the std::list would provide appropriate performance and would make for a simple implementation as well.


Implementation:

The programmer writes the std list into the private section of the class declaration and codes the accompanying function bodies.


Validation:

The programmer runs the previously developed unit test on the new Book implementation.

3.5 Example: Training Manuals

Topic of interest:

Preparing training documents for the new automated check-in system


Analysis:


Design:

The author decides which scenario variants and interactions are important and common enough to be needed in the initial training, and which can be relegated to reference documentation.


Implementation:

The author writes the relevant chapters and sections.


Validation:

The sections are submitted to one of the system designers to be checked for accuracy and to one or more domain experts to be checked for understandability.

.