TY - BOOK AU - Martin,James AU - McClure,Carma L. AU - Martin,James TI - Structured techniques: the basis for CASE SN - 0138549362 U1 - 005.1 MAR PY - 1988/// CY - Englewood Cliffs, N.J. PB - Prentice Hall KW - Electronic data processing KW - Computer software N1 - Previously published as: Structured techniques for computing; Includes bibliographies and index; Table of Boxes xxiii (2) Preface xxv PART I PHILOSOPHY 3 (34) 1 Why Structured Techniques and CASE? 3 (12) Objectives 3 (5) Evolution 8 (3) Mathematical Rigor 11 (1) CASE: Computer-Aided Systems Engineering 12 (1) Important Characteristics 13 (1) Loyalty to Old Techniques 13 (2) 2 Philosophies of Structured Techniques 15 (22) Introduction 15 (1) Basic Principles 15 (5) Basic Principles of Software Engineering 20 (3) The Data-Base Environment 23 (1) Automation of Analysis, Design, and Coding 24 (2) Graphics 26 (1) Provably Correct Constructs 26 (1) Management of Complexity 27 (1) Changing Computer Languages 28 (1) End-User Involvement 28 (2) User-Friendly Structured Techniques 30 (1) The Design Process 30 (7) PART II PROGRAMMING METHODOLOGIES 37 (72) 3 Structured Programming 37 (8) The Shift to Software 37 (1) Introduction of Structured Programming 38 (1) GO TO-less Programming 38 (1) Objectives 39 (1) Definitions 39 (6) 4 Structured Programs 45 (22) Properties of a Structured Program 45 (1) Limited Control Constructs 45 (3) Nested IF 48 (1) Case Statement 49 (1) Escape 50 (1) Highest-Level Control Constructs 50 (1) Standardized Module Format 51 (1) Hierarchical Organization 51 (1) Program Control Structure 52 (1) Program Paths 53 (1) Documentation 54 (5) Indentation 59 (1) Structured Coding Standards 59 (8) 5 Modular Programming and Control of Complexity 67 (16) Divide and Conquer 67 (1) Program Modules 67 (1) Black Box Model 68 (1) Modularization Schemes 68 (2) Module Size 70 (1) Complexity Metrics 70 (5) Module Relationships 75 (5) Program Shape 80 (3) 6 Programming by Stepwise Refinement 83 (8) Changing Programming from Craft to Science 83 (1) Stepwise Refinement 83 (1) Levels of Abstraction 84 (1) An Example of the Refinement Process 85 (6) 7 Top-Down, Bottom-Up, and Structured Programming 91 (12) Structured Programming Methodologies 91 (1) Top-Down Programming 91 (4) Bottom-Up Versus Top-Down Programming 95 (1) Bottom-Up Programming 96 (2) Choosing a Development Approach 98 (1) Combinations 99 (4) 8 Commentary on Structured Programming Methodologies 103 (6) The Problem of Programming in the Large 103 (1) Program Complexity 103 (1) The Absence of Rigor 104 (1) Recommendation 105 (4) PART III DIAGRAMMING TECHNIQUES 109 (290) 9 Diagrams and Clear Thinking 109 (14) Introduction 109 (1) Changing Methods 110 (1) Categories of Structured Diagrams 111 (1) End-User Involvement 111 (6) Program Documentation Tools 117 (1) Utility of Documentation 118 (2) Computer-Aided Diagramming 120 (1) Functions of Structured Diagrams 120 (3) 10 Forms of Structured Diagrams 123 (26) Introduction 123 (1) Forms of Tree Structure 123 (2) Inhibition of Change 125 (1) Left-to-Right Trees 126 (5) Sequence of Operations 131 (1) Mesh-Structured Diagrams 131 (2) COW Charts 133 (1) Nested Charts 134 (4) Data-Model Charts 138 (3) Root Nodes 141 (1) Find the Trees 142 (3) Computer Magic 145 (1) Symbols with Obvious Meaning 145 (3) Summary 148 (1) 11 Data Flow Diagrams 149 (16) Introduction 149 (1) Defining Data Flow 149 (1) Components of a DFD 149 (3) Leveling a DFD 152 (2) Process Specification and Data Dictionary 154 (1) Gane and Sarson Notation 155 (3) Use of Computer Graphics 158 (5) Commentary 163 (1) Data Layering 164 (1) 12 Three Species of Functional Decomposition 165 (16) Introduction 165 (1) Levels of Thoroughness in Functional Decomposition 165 (1) Species I Functional Decomposition: Corporate Model 166 (4) Species II Functional Decomposition 170 (6) Species III Functional Decomposition 176 (1) Commentary 177 (4) 13 Structure Charts 181 (10) Hierarchical Diagram 181 (1) Components of a Structure Chart 181 (2) Control Relationships 183 (1) Common Modules 183 (1) Library Modules 184 (1) Data Transfer 184 (2) Sequence, Selection, and Iteration 186 (2) Transaction Center 188 (1) Computer Graphics 188 (3) 14 HIPO Diagrams 191 (6) Introduction 191 (1) Diagram Components 192 (2) Analysis and Design Tools 194 (1) Commentary 194 (3) 15 Warnier-Orr Diagrams 197 (10) Introduction 197 (1) Representation of Data 197 (2) Representation of Program Structure 199 (2) Critique of Warnier-Orr Diagrams 201 (6) 16 Michael Jackson Diagrams 207 (12) Introduction 207 (1) Tree-Structure Diagrams 207 (2) Data-Structure Diagrams 209 (2) Program-Structure Diagrams 211 (1) System Network Diagram 212 (1) From Data to Programs 213 (1) Critique of Jackson Diagrams 214 (5) 17 Flowcharts 219 (8) Overview Versus Detailed Structure 219 (1) Flowcharts 220 (2) Flowchart Symbols 222 (1) Critique of Flowcharts 222 (5) 18 Structured English and Pseudocode 227 (12) Introduction 227 (1) Why Should English Be Structured? 227 (1) Ambiguities 228 (1) Structured English 229 (1) Four Basic Structure Types 230 (2) Keywords from Fourth-Generation Languages 232 (1) Rules for Structured English 233 (1) Pseudocode 234 (1) Jackson's Structure Text 234 (3) Critique of Structured English 237 (2) 19 Nassi-Shneiderman Charts 239 (6) Introduction 239 (1) Control Constructs 240 (3) Critique of the Nassi-Schneiderman Chart 243 (2) 20 Action Diagrams 245 (30) Overview Versus Detailed Logic Diagramming 245 (1) Brackets 246 (1) Ultimate Decomposition 247 (1) Conditions 248 (2) Loops 250 (1) Sets of Data 250 (1) Subprocedures 251 (1) Subprocedures Not Yet Designed 251 (1) Common Procedures 251 (1) Terminations 252 (1) Fourth-Generation Languages 252 (1) Decomposition to Program Code 253 (1) Titles Versus Code Structure 254 (2) Concurrency 256 (2) Input and Output Data 258 (3) Advantages 261 (14) 21 Decision Trees and Decision Tables 275 (6) A Broadly Used Diagramming Technique 275 (1) Decision Tree 275 (1) Decision Table 276 (3) Decision Tree or Table? 279 (1) Using Decision Trees and Decision Tables 279 (1) Commentary 279 (2) 22 Data Analysis Diagrams 281 (16) Introduction 281 (1) Bubble Charts 281 (1) Associations Between Data Items 282 (1) One-to-One and One-to-Many Associations 283 (1) Types and Instances 284 (1) Reverse Associations 284 (2) Keys and Attributes 286 (1) Data-Item Groups 287 (1) Records 287 (1) Concatenated Keys 288 (2) Derived Data 290 (3) Optional Data Items 293 (4) 23 Entity-Relationship Diagrams 297 (28) Introduction 297 (1) Entities 297 (1) Entity Diagrams 298 (1) Concatenated Entity Type 299 (3) Labels and Sentences 302 (2) Subject and Predicate 304 (3) Basic Constructs 307 (1) Semantic Independence 307 (1) Inverted-L Diagrams 308 (2) Entity Subtypes 310 (1) Multiple Subtype Groupings 311 (1) Subtype Hierarchies 312 (2) Computer Representation of the Diagram 314 (1) Notation Styles 315 (10) 24 Data Navigation Diagrams 325 (14) Introduction 325 (1) Divide and Conquer 325 (1) Separating Data from Procedures 326 (1) Data Navigation Diagrams 327 (4) Procedure Design 331 (2) Physical Design 333 (1) Complexity 334 (1) Standard Procedure 335 (4) 25 Compound Data Accesses 339 (16) Introduction 339 (1) Relational Joins 340 (3) Automatic Navigation 343 (1) Simple Versus Compound Data-Base Accesses 343 (1) Intermixing Simple and Compound Actions 344 (3) Three-Way Joins 347 (1) Semantic Disintegrity 348 (2) Navigation Paths 350 (1) Fourth-Generation Languages 351 (4) 26 HOS Charts 355 (22) Introduction 355 (1) HOS 355 (1) Binary Trees 355 (2) Functions 357 (4) From Requirements Statements to Detailed Design 361 (1) Three Primitive Control Structures 361 (3) Control Maps 364 (1) Generation of Code 364 (1) Four Types of Leaf Nodes 364 (3) Static and Dynamic Testing of Programs 367 (1) Embellishments 367 (1) Other Control Structures 368 (2) Simplification 370 (1) User Functions Employed in a Defined Structure 370 (1) Extending the Power of HOS 370 (2) Discussion 372 (5) 27 A Consumer's Guide to Diagramming Techniques 377 (22) Introduction 377 (1) Criteria for Choice 378 (4) Data and Processes 382 (1) Data Flow Diagrams 382 (1) The Essential Trilogy 383 (1) Comprehensive Capabilities 383 (1) Ultimate Decomposition 384 (1) Drawing Speed 384 (2) Integrity Checking 386 (1) Code Generation 387 (1) User Friendliness 387 (1) Computer Graphics 388 (1) Summary of Properties 388 (6) Our Choice of Techniques 394 (1) Challenge 395 (4) PART IV ANALYSIS AND DESIGN 399 (118) 28 Structured Analysis and Design Techniques 399 (8) Software Analysis and Design 399 (1) The Desire to Skip Analysis 399 (1) Changing Requirements 399 (1) System Specification 400 (1) Poor Specification and Expensive Errors 400 (1) Importance of Analysis 401 (1) A Building Analogy 401 (1) Importance of Design 402 (1) A Systematic Design Approach 403 (1) Types of Software Design 403 (2) Structured Design Methodologies 405 (2) 29 Structured Analysis 407 (10) A Critical Step 407 (1) A Structured Discipline 407 (1) System Specification 408 (2) Data-Flow Diagram 410 (1) Data Dictionary 410 (1) Process Specification 411 (1) Steps of Structured Analysis 412 (2) Critique of Structured Analysis 414 (1) When to Use Structured Analysis 415 (2) 30 Top-Down Design 417 (6) Informal Design Strategy 417 (1) Design Process 417 (1) Decision Making 418 (1) Principles of Top-Down Design 419 (1) Documentation for Top-Down Design 419 (1) Top-Down Design of Data 419 (1) When to Use Top-Down Design 420 (3) 31 Structured Design 423 (18) Systematic Design Approach 423 (1) Structured Design: Step 1: Draw Data-Flow Diagram 424 (1) Step 2: Draw Structure Chart 424 (7) Step 3: Evaluate the Design 431 (4) Step 4: Prepare the Design for Implementation 435 (6) 32 An Evaluation of Structured Design 441 (14) Structured Design of the Credit Verification System 441 (1) Applying Transform Analysis 441 (2) Evaluating the Quality of the Design 443 (3) Critique of Structured Design 446 (1) Critique of Transform and Transaction Analysis 447 (4) Comparison with Top-Down Design 451 (1) Critique of Coupling and Cohesion 452 (1) Lack of Data Design 453 (2) 33 Jackson Design Methodology 455 (14) Jackson Design Versus Structured Design 455 (1) Data-Driven Program Design 455 (2) Example: Employee Skills System 457 (5) Designing Simple Programs 462 (2) Designing Complex Programs 464 (1) Structure Clash 465 (1) Program Inversion 466 (3) 34 An Evaluation of Jackson Design Methodology 469 (20) Constructive Design Method 469 (1) Designing the Subscription System 469 (6) Limitations of the Jackson Design Methodology 475 (3) Designing the Credit Verification System 478 (6) Summary 484 (5) 35 Warnier-Orr Design Methodology 489 (14) Background 489 (1) Set Theory 489 (1) Top-Down Approach 490 (1) Data-Driven Approach 491 (1) Design of the Employee Skills System 491 (12) 36 An Evaluation of the Warnier-Orr Design Methodology 503 (14) Input-Process-Output Model 503 (1) Objective of the Warnier-Orr Design Methodology 504 (1) Benefits of the Warnier-Orr Diagram 504 (2) Problems with the Warnier-Orr Diagram 506 (1) Bracketed Pseudocode 507 (1) Major Criticisms 507 (1) Design of the Subscription System 507 (1) Problems with Multiple Output Structures 508 (3) Incompatible Hierarchies 511 (1) Inadequate Input Design Guidelines 511 (1) Overemphasis on Output 511 (2) Recommendations 513 (4) PART V MORE AUTOMATED TECHNIQUES 517 (150) 37 A Higher Level of Automation 517 (16) Introduction 517 (1) Problems with Specifications 517 (1) Specification Languages 518 (1) Computer-Aided Specification Design 519 (1) Two Types of Languages 519 (1) Computable Specifications 520 (1) Automation of Design 521 (2) Integration of Definition Levels 523 (1) A Common Communication Vehicle 523 (1) Integrated Top-Down and Bottom-Up Design 524 (1) Mathematically Rigorous Languages 525 (1) User Friendliness 525 (1) Properties Needed 525 (1) Spectrum of Specification Languages 526 (7) 38 HOS Methodology 533 (24) Introduction 533 (1) USE IT 533 (2) JOIN, INCLUDE, and OR 535 (1) Generation of Code 535 (2) Four Types of Leaf Nodes 537 (1) Co-control Structures 538 (7) Local Variables 545 (1) N-way Branches 546 (1) Interactive Graphics Editor 546 (5) Simulation 551 (3) External Modules of Code 554 (1) Generation of Documentation 555 (2) 39 The Impact of Design Automation 557 (18) The Revolution 557 (1) Effect on Programming 557 (1) Effect on Specifications 558 (1) What Does "Provably Correct" Mean? 559 (1) Syntax and Semantics 559 (1) Internal and External Semantics 560 (1) Standards 561 (1) Verification and Testing 561 (1) Building Higher Levels of Trust 562 (1) Improvements in Productivity 562 (1) Cost Savings 563 (1) Effect of Program Size 564 (1) Error Statistics 565 (2) Human System Components 567 (1) Use of Other Front-End Methodologies 567 (2) Incorporation of Nonprocedural Languages 569 (1) Software Factories 569 (6) 40 Data-Base Planning 575 (10) Introduction 575 (1) Separate Developments with Incompatible Data 576 (2) Stable Foundation 578 (2) Stable Data Bases 580 (1) Logical Design of Data Bases 581 (1) The Failure of Data Administration 582 (3) 41 Third Normal Form 585 (20) Normalization of Data 585 (2) First Normal Form 587 (3) Functional Dependency 590 (1) Full Functional Dependency 591 (1) Second Normal Form 592 (2) Candidate Keys 594 (1) Third Normal Form 595 (1) Storage and Performance 596 (2) Semantic Disintegrity 598 (1) Clear Thinking About Data 598 (4) A Suggested Exercise 602 (1) An Example of Normalization 602 (3) 42 Automated Data Modeling 605 (26) Introduction 605 (1) The Synthesis Process 606 (1) Bubble Charts 607 (1) Synthesizing User Views 607 (1) Illustration of the Synthesis Process 607 (3) Levels of Primary Keys 610 (2) Canonical Data Structures 612 (1) Canonical Synthesis 613 (1) Elimination of Redundancies 614 (2) Candidate Keys 616 (1) Transitive Dependencies 617 (1) Concatenated Keys 618 (1) Intersection Data 619 (1) Many-to-Many Associations 620 (1) Mapping Between Primary Keys 620 (1) Intersecting Attributes 620 (3) Isolated Attributes 623 (1) Record Sequence 623 (1) Automating the Procedure 623 (1) Data Designer 624 (5) Conversion to HOS Notation 629 (2) 43 Computer-Aided Design 631 (20) Introduction 631 (1) Computerized Help in Design 632 (1) Developing a Data-Base Application 633 (7) Automatic Conversion 640 (3) Four Stages 643 (2) Logical and Physical Navigation Diagrams 645 (4) Physical Design 649 (1) Objectives of the Design Dialogue 649 (1) Variations 650 (1) 44 Information Engineering 651 (16) Introduction 651 (1) What Is Information Engineering? 652 (2) Building Blocks of Information Engineering 654 (7) Computerization of Information Engineering 661 (1) Essential Need for User Participation 661 (2) A House on the Sand 663 (1) Two Images 663 (4) PART VI VERIFICATION AND TESTING 667 (64) 45 Software Verification, Validation, and Testing 667 (8) The Case of the $18.5-Million Hyphen 667 (1) The Case of the Infinite Loop 667 (1) Demonstrating Software Correctness 667 (4) Verification and Validation Techniques 671 (4) 46 Testing 675 (14) The Testing Process 675 (1) Testing Heuristics 675 (3) Four-Phase Testing Procedure 678 (1) Unit Testing 679 (2) Integration Testing 681 (3) System Testing 684 (1) Acceptance Testing 685 (1) Test Data 685 (4) 47 Debugging 689 (12) The Case of the Missing Period 689 (1) The Difficulty of Debugging 689 (1) Debugging Methods 690 (1) Program Debugging Tools 691 (2) Locating Program Errors 693 (6) Predicting Error-Proneness 699 (2) 48 Automated Test Tools 701 (16) Test Tools 701 (1) General Research's RXVP 701 (5) Software Renovation Technology's RE-LEARN 706 (8) Software Environments 714 (1) Bell Labs' UNIX 715 (2) 49 An Evaluation of Verification Techniques 717 (14) Introduction 717 (1) Limitations of Testing 717 (1) Problems with Test Tools 718 (1) Lack of Theory 718 (1) Testing Fourth-Generation-Language Programs 719 (4) Improvement Through Formality 723 (1) Formal Proof-of-Correctness Techniques 724 (7) PART VII TOWARD AN ENGINEERING DISCIPLINE 731 (32) 50 Where Do Structured Techniques Go from Here? 731 (14) Patterns of Evolution 731 (1) Phases of Growth of Management Science 732 (2) Phases of Growth of Structured Techniques 734 (2) Shock 736 (2) Inadequacy 738 (1) The Automation of Automation 739 (1) Rigorous Specification 740 (1) Meat Machines 740 (1) Theoretical Principles 741 (1) Future Growth of Automated Methods 742 (3) 51 The Move Toward True Engineering 745 (12) Introduction 745 (1) Software Misengineering 745 (1) Characteristics of Engineering 746 (3) Power Tools 749 (3) Information Engineering 752 (1) Resistance to New Methods 753 (4) 52 Epilogue: The Future 757 (6) The Revolution: Its Causes and Outcome 757 (3) A Way to Think About Systems 760 (1) The Changing Computer Industry 760 (3) Index 763 N2 - The structured revolution has substantially changed systems analysis, design, and programming. There are many structured techniques, and in attending courses on the various techniques the authors discovered no survey/summary that represented the whole body of knowledge about structured techniques that analysts, designers, programmers, or DP managers should have at hand. This book addresses that body of knowledge, attempting to describe these techniques tutorially, put them into perspective, include those in common use, and present those that advance the system development methodology. This book emphasizes the philosophies of structured methodologies, compares and critiques techniques, and offers detailed tutorials of these techniques ER -