Intro to Jackson Software Engineering

Download Report

Transcript Intro to Jackson Software Engineering

Intro to Jackson Software Engineering

Oct 6, 2005

Course Preliminaries

• Course Home Page: http://pmik.petrsu.ru/pub/ourusoff • Use of Jackson Workbench (CASE tool); download JWB folder from Home Page • Exercise(s) each class – please do them and hand them at the start of the next class

Reference materials

Jackson’s Home Page http://mcs.open.ac.uk/mj665/ Steve Ferg’s Web Site http://www.ferg.org/jackson_methods/index.html

Nick Ourusoff’s on-line text http://www.nickshost.com/JSPJSDBook.zip

Book on JSP (translated into Russian) at Petrozavodsk State University Library by D. King, “Effective methods of Program Design”

Jackson’s Methods

• Jackson Structured Programming –

Principles of Program Design

(JSP) (1966 -1975) – program design method for class of simple programs (1975) • Jackson System Development – systems development method for dynamic systems –

System Development

(1983) (JSD) (early 1970’s 1984) • Problem Frames – problem analysis and decomposition –

Software Requirements and Specification

Problem Frames

(2000) (1984-present) (

1995)

Span the range of software engineering: – simple programs  information systems  and decomposition problem description Selected Papers: Bibliography

JSP

• • • A

constructive

method of design – we construct a data structure that is the composition of input and output data structures – steps are defined and at each step there are guidelines to check correctness of design so far – other methods (modular programming, stepwise refinement) do not offer a step-by-step decision procedure • modular program offers no decision procedure for choice of modules • step-wise refinement offers no decision procedure on how to decompose; moreover, the biggest decomposition is made at the start, before you know the problem Optimization – Don’t optimize; – If you have to, do it later Optimization is often unnecessary; and it distorts the underlying structure Flow charts versus structure diagrams – flow charts have been used to design programs – a flow chart shows the flow of control, “What happens next?”, a dynamic view of a program – Jackson tree diagram shows the static view of the program structure

Program Design

• Design is about structure – relation of parts to the whole • Programs consist of: – elementary components – operations (statements) in a programming language – composite components • sequence • selection • iteration

Sequence

(a) sequence – a sequence is a composite component that has two or more parts occurring once each, in order.

Jackson structure diagram Jackson structure text Pseudocode

B A C

A seq

do B; do C;

A end begin

do B; do C;

end

Selection

(b) A selection is a composite component that consists of two or more parts, only one of which is selected, once.

Jackson structure diagram Jackson structure text Pseudocode

B 0 A C 0

A sel

do B;

A alt

do C;

A end if

then

do B;

else if

then

do C;

endif

Iteration

(iv) An iteration is a composite component that consists of one part that repeats zero or more times.

Jackson structure diagram Jackson structure text Pseudocode

A

A iter

do B;

A end

w hile

do B;

endw hile

B *

A simple book

Example 1

A simple book consists of pages; a page consists of lines of text; a line consists of words.

Example 2

A more complicated book A book consists of a front and back cover with pages in between. Each page consists of lines of text; each line consists of words. At the bottom of each page is a page number.

Exercises

Draw Jackson structure diagrams for each of the following: • "For lunch you may have either soup and crackers or a salad. You may have as many servings of either as you wish." • 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. • 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 pseudo code.

(a) (b) ((a*|b*)*c)|d (a*)*|b|cd

Correctness of design

• Not every working program is correctly designed • Correct design means that – program models the real world – a correctly designed program is • easy to modify (~90% of cost in software development is maintenance) • easy to read