140 likes | 308 Views
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.
E N D
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 (JSP) (1966 -1975) • program design method for class of simple programs • Principles of Program Design (1975) • Jackson System Development (JSD) (early 1970’s 1984) • systems development method for dynamic systems • System Development (1983) • Problem Frames(1984-present) • problem analysis and decomposition • Software Requirements and Specification (1995) • Problem Frames (2000) Span the range of software engineering: • simple programs information systems problem description and decomposition 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.
Selection (b) A selection is a composite component that consists of two or more parts, only one of which is selected, once.
Iteration (iv) An iteration is a composite component that consists of one part that repeats zero or more times.
Example 1 A simple book 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) ((a*|b*)*c)|d (b) (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