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
A alt
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
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