Problems, Programs and Information Systems
This is an upper-level undergraduate or first-year graduate-level course whose goals are to study principles of program and information systems design, and of problem analysis and decomposition using the thinking of Michael Jackson as the basis of study.
Learning Outcomes:
As a result of this course, you will learn how to:
Use Jackson Structured
Programming (JSP) to design methods
Use JSD to specify information systems
Use problem frames to analyze information system problems
Critically appraise traditional and O-O Analysis and Design
Methods
Lectures; laboratory exercises; team project and presentation; final examination
Course Readings (on CD)
1. Articles by Michael Jackson
Constructive Methods of Program Design
Problem Analysis and Structure
Other On-line Resources & Bibliographies
Michael A. Jackson’s Home Page http://dspace.dial.pipex.com/jacksonma/
Steve Ferg’s Web Sites on JSP&JSD and Problem Frames http://home.att.net/%7Estephen_ferg/jsp_and_jsd/index.html
Michael Jackson is a leading thinker in the field of information systems analysis and design. He created the JSP (Jackson Structured Programming) method of program design, which became a government standard in the U.K., and the JSD (Jackson System Development) method of system development. In his recently published Problem Frames (2001), Jackson describes a framework for classifying, describing and decomposing software problems, the analog of solution design patterns in Object-Oriented Analysis and Design.
Jackson’s insights into the structure of programs and problems – his structuralism- permeate his work. He has come to the conclusion that the task of information systems analysis is to describe the phenomena and domains involved in the problem context, the system requirement, and the specification, and to avoid specifying the solution prematurely.
Schedule of Lectures & Laboratory Work
Each morning lecture is 2 1/2 hours with a break
of 20 minutes. Students will be divided into two groups during the 1
st lecture: Group 1 & Group 2 will meet for an hour of laboratory
each afternoon.
|
# |
Lecture Topics |
Laboratory Group Work |
Reading |
|
1 |
Introduction to Jackson’s Ideas; Structure Diagrams |
|
IntroToJSPJSD: Chapter 1 |
|
2 |
Elementary Program Design Method (JSP) |
Using Jackson WorkBench: JSP Structure Editor |
IntroToJSPJSD: Chapter 2 |
|
3 |
Elementary Program Design Method (JSP) |
Lab Exercise 1 |
|
|
4 |
Read-ahead rule |
Lab Exercise 2 |
Constructive Methods of Program Design, 67-71; IntroToJSPJSD: Chapter 3 |
|
5 |
Group-id Rule |
Lab Exercise 3 |
Constructive Methods of Program Design,
71-74 |
|
6 |
Multiple Read-ahead Rule; Backtracking |
Lab Exercise 4 |
Constructive Methods of Program Design, 74-83 |
|
7 |
Error Processing |
|
IntroToJSPJSD: Chapter 5, 6 |
|
8 |
Structure Clashes |
|
Constructive Methods of Program Design,
84-85 |
|
9 |
Program Inversion |
|
IntroToJSPJSD: Chapter 8 |
|
10 |
Jackson System Development Method (JSD) |
Lab Exercise 5 |
IntroToJSPJSD: Chapter 11, 12 |
|
11 |
Jackson System Development Method (JSD) |
|
A Discipline of Description
|
|
12 |
Introduction to Problem Frames; Context Diagrams; Domain Interfaces; Problem Diagrams |
Lab Exercise 6 |
A Discipline of Description
|
|
13 |
Basic Problem Classes and Frames |
|
|
|
14 |
Frame Concerns and Development Descriptions |
Lab Exercise 7 |
Problem Analysis and Structure
|
|
15 |
Model Domains and Real Worlds |
|
Problem Analysis and Structure
|
|
16 |
Decomposition; Composite Frames |
Projects Due |
Problem Analysis and Structure
|
|
|
Project Presentations |
Project Presentations |
|
|
Laboratory Exercises: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
# |
Description |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1 |
Draw Jackson structure diagrams for each of the following: (i) "For lunch you may have either soup and crackers or a salad. You may have as many servings of either as you wish." (ii) A conversation consists of messages, alternately from the user (a "user-message") and from the system (a "system-message"). The conversation always begins with a user-message and always ends with a system-message. (iii) For each of the regular expressions below, interpret the regular expression as a program. Draw the corresponding structure diagram and give the equivalent Jackson structure text and pseudocode. (a)
((a*|b*)*c)|d |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2 |
Multiplication Problem. Use Jackson Structured Programming (JSP) to design: The original
multiplication with a title, and column and row labels. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
3 |
The upper-right triangular half of the table instead of the lower-left triangular half; that is, print:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4 |
Census Households Problem: You are given a file of census
records. Each record represents a person, and contains a household
identifier and the person's gender. Implement the design in Java, using this file , as your input. Turn in (i) Data structures of inputs/outputs with correspondences (.jsp); (ii) Data structure of basic program (.jsp); (iii) List of operations, how many times each occurs and in what component (text file) ; (iv) Elaborated program structure (.jsp); and (v) Java program |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
5 |
Design a data structure and
program to process an integer defined below: Char
Message a
integer must start with a sign or digit
Turn in (i)
data structure for error processing (.jsp); (iii) elaborated program structure
(.jsp); and (iv) Java program |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
List of Examination Questions: |
|
|
A. |
Jackson Structured Programming (JSP) |
|
1a |
What are the two types of components in simple programs? Give an example of each. |
|
1b |
Describe the three composite components in programs. |
|
2 |
What are the steps in the JSP method? |
|
3 |
State the read-ahead and group-id rules. Give an example of each. |
|
4 |
What is a state vector? Give an example. |
|
5 |
Give an example of how inversion is used to decompose a program with a structure clash. |
|
6 |
What are some applications (uses) of program inversion? |
|
7 |
What data is valid and invalid for a program? How does error data differ from invalid data? |
|
8 |
What is the multiple read-ahead rule? Give an example. |
|
9 |
What is backtracking? When is backtracking needed? Give an example of a problem requiring backtracking. |
|
10 |
What is meant by a 'constructive design' approach? How does it differ from top-down design? |
|
B. |
Jackson System Development (JSD) |
|
1 |
What is an entity structure diagram? Give an example. |
|
2 |
What are the steps in Jackson System Development? |
|
3 |
What is an entity? What are its characteristics? Give an example. |
|
4 |
What are the two ways in which data can be communicated in JSD? |
|
5 |
What is an action? What are its characteristics. Give an example. |
|
6 |
What is a system specification diagram? Give an example. |
|
7 |
How does the idea of state vector fit into JSD? |
|
8 |
What is a system implementation diagram? Give an example. |
|
C. |
Problem Frames |
|
1 |
What does Jackson mean when he says that "the problem is not at the interface"? Give an example. |
|
2 |
What kinds of description are needed to fully state a software problem to be solved? |
|
3 |
What is a requirement descrption? a world description? a specification description? a program description? |
|
4 |
What is a context diagram? Give an example. |
|
5 |
What is a domain? Distinguish between machine domain, designed domain, and given domain. |
|
6 |
What is an interface? Give an example. |
|
7 |
What is a connection domain? Give an example. |
|
8 |
Give an example of when the machine is a problem domain. |
|
8 |
What is a problem diagram? What are its parts? Give an example. |
|
9 |
Which parts of a problem’s description are optative and which indicative ? |
|
10 |
What is Jackson’s criticism of top-down functional decomposition? Of Use Case decomposition? |
|
11 |
What is a subproblem? Give an example. |
|
12 |
What is a problem frame? |
|
13 |
What are the five basic problem frames? Give an example of each. |
|
14 |
What types of phenomena are there?. Give an example of each. |
|
15 |
List the two categories of phenomena and the three types of domain. Give examples of each. |
|
16 |
What is a frame diagram? Give a frame diagram for each of the five frame types. |
|
17 |
What is a frame concern? Give the frame concern for each of the five problem frames. |
|
18 |
What three descriptions are always needed in problem analysis? Why must they be separate? |
|
19 |
What is a designation? Give an example. What is a definition? Give an example. What is the difference between a designation and a definition? |
|
20 |
Why are conceptual entities better treated as processes? Give an example. |
|
21 |
What is a model domain? In which kind of problem frame is it most useful? Give an example. |
|
22 |
Discuss the following model concerns: imperfection; time lag; incompleteness; and errors |
|
23 |
What is a variant problem frame? Give an example. |
|
24 |
What are some other concerns (besides the frame concern) that must often be addressed in analyzing a problem? |
|
25 |
Give an example of overrun; initialization; reliability; identities; and completeness concerns. |
|
26 |
Discuss the decomposition of the package router problem into three subproblems. |
|
27 |
Discuss the identities and reliability concerns in the package router problem. |
|
28 |
What are four basic heuristics used in problem decomposition? |
|
29 |
What is a composite frame? Give an example. |
|
30 |
What is meant by a composition concern? Why do composition concerns arise? |
|
31 |
What does Jackson say about formal and informal properties in relation to software development? |
|
32 |
What are Jackson's criticisms of Unified Modeling Language (UML)? |