A Brief Introduction to Structured Design Errol Pelchat CSCI 360 2-14-2004.

Slides:



Advertisements
Similar presentations
Lecture 6: Software Design (Part I)
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
CSCI 330: Programming Language Concepts Instructor: Pranava K. Jha Control Flow-II: Execution Order.
1 OBJECT-ORIENTED CONCEPTS. 2 What is an object?  An object is a software entity that mirrors the real world in some way.  A software object in OOP.
Computers Are Your Future
Programming Techniques Lecture-1 2 nd class Introduction Assistant lecturer: Alza A. Mahmood.
Software Design Deriving a solution which satisfies software requirements.
© Janice Regan Problem-Solving Process 1. State the Problem (Problem Specification) 2. Analyze the problem: outline solution requirements and design.
Object-Oriented Metrics. Characteristics of OO ● Localization ● Encapsulation ● Information hiding ● Inheritence ● Object abstraction.
Programming Language Paradigms: summary. Object-oriented programming Objects are the fundamental building blocks of a program. Interaction is structured.
1 CMSC 132: Object-Oriented Programming II Software Development II Department of Computer Science University of Maryland, College Park.
Object Oriented Programming A brief review of what you should know about OOP.
Concepts of Systems Theory
Structured Programming structured programming: A technique for organizing and coding computer programs in which a hierarchy of modules is used, each having.
Department of Computer Science University of Maryland, College Park
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Visual Basic Introduction IDS 306 from Shelly, Cashman & Repede Microsoft Visual Basic 5: Complete Concepts and Techniques.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
Chapter 1 Program Design
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
System Analysis & Design
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
Dr. Ken Hoganson, © August 2014 Programming in R STAT8030 Programming in R COURSE NOTES 1: Hoganson Programming Languages.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
HW/SW/FW Allocation – Page 1 of 14CSCI 4717 – Computer Architecture CSCI 4717/5717 Computer Architecture Allocation of Hardware, Software, and Firmware.
Top-Down Design and Modular Development
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
Intro to Architecture – Page 1 of 22CSCI 4717 – Computer Architecture CSCI 4717/5717 Computer Architecture Topic: Introduction Reading: Chapter 1.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
SOFTWARE DESIGN.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Elements of Software Analysis and Design - Structured Approaches - Structured Analysis - Functional Oriented Design 10/24/2015ICS 413 – Software Engineering1.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
CSE 303 – Software Design and Architecture LECTURE 4.
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
Chapter 1 Program design Objectives To describe the steps in the program development process To introduce the current program design methodology To introduce.
Chapter 12 Object Oriented Design.  Complements top-down design  Data-centered view of design  Reliable  Cost-effective.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Design Process
CS 3050 Object-Oriented Analysis and Design. Objectives What is “Object-Oriented?” Object-Oriented Approach Vs. Structured Approach How Has the Object-Oriented.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
1 5.4 Modular Design Top-Down Design Structured Programming Advantages of Structured Programming.
Thanks for Coming l WEB. Principles of Good Design SEI, SJTU WEB APPS and SERVICES.
Data Structures Using C++ 2E
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Introduction to Design. 2 Outline Basics of design Design approaches.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
1 Data Structures CSCI 132, Spring 2014 Lecture 1 Big Ideas in Data Structures Course website:
Introduction to OOP CPS235: Introduction.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
04 - OOD Intro.CSC4071 Software Design ‘Requirements’ defines –The goals the system needs to satisfy. ‘Specification’ defines –The externally-observable.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 4: Introduction to C: Control Flow.
Testing OO Software Encapsulation means modeling and storing with an object the parts and the operations. Interactions become implicit in code. Makes difficult.
Chapter 2 Principles of Programming and Software Engineering.
Chapter 1 Software Development Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2008.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Welcome to OBJECT ORIENTED PROGRAMMING Prepared By Prepared By : VINAY ALEXANDER PGT(CS) KV jhagrakhand.
Programming paradigms
Lecture 2 of Computer Science II
Object oriented analysis and design
What Is Good Software(Program)?
Top-Down Design & JSP Skill Area Part D
Principles of Good Design
Presentation transcript:

A Brief Introduction to Structured Design Errol Pelchat CSCI

Structured Design is A programming Paradigm A programming Paradigm The opposite of Unstructured Design The opposite of Unstructured Design A method to help plan your program before you code it. A method to help plan your program before you code it. A top-down approach to design A top-down approach to design A way to design your program to make it easier to code, change, maintain and understand. A way to design your program to make it easier to code, change, maintain and understand. General Description

Structured Design is Specific Description A methodology for breaking down a problem (goal/task/system) into smaller problems and solving the smaller problems (divide). Sub-problems are then arranged into a hierarchy that forms a sequence of procedures (conquer). “Structured design is the art of designing the components of a system and the interrelationship between those components in the best possible way. “ ”Successful design is based on a principle known since the days of Julius Caesar: Divide and conquer.” - Edward Yourdon

Why structured design? Good design makes for good programs Good design makes for good programs It makes code easier to understand It makes code easier to understand Helps to make programs modular Helps to make programs modular It is easier to trouble shoot It is easier to trouble shoot It makes programming more systematic and less ambiguous It makes programming more systematic and less ambiguous

Basic Steps Identify Major Components of task/problem/goal/system Identify Major Components of task/problem/goal/system Decompose it into these components (the components represent procedures) Decompose it into these components (the components represent procedures) Group related components Group related components Repeat the process as needed on individual components. Repeat the process as needed on individual components. Organize components in a way that makes sense (such as a hierarchy, with and a consideration for data flow) Organize components in a way that makes sense (such as a hierarchy, with and a consideration for data flow)

The Big Idea Concern about the quality of programming code, and ways of making it easier to demonstrate the correctness of a program was needed. Structured Design/Structured Programming was purposed in the 1960s to promote a more organized approach to programming, and reduce bad coding habits that can cost excessive time and effort ($$$). The Structured approach purposed a methodology that would allow us to better demonstrate correctness and improve quality of program code for long term use.

Structured Programming Structured Programming is the implementation of a Structured design. Structured Programming is the implementation of a Structured design.

1960s Structured Programming 1960s Structured Programming 1970s Structured Design 1970s Structured Design 1980s Structured Analysis 1980s Structured Analysis Structured Analysis Structured Design Structured Programming

Structured versus Unstructured

Structured Design Heuristics Design should be as modular as possible where it makes sense. Design should be as modular as possible where it makes sense. Parts that are related to one another should be grouped together, and unrelated parts should be distanced. Parts that are related to one another should be grouped together, and unrelated parts should be distanced. Black boxes should be used when possible “rule of black boxes” Black boxes should be used when possible “rule of black boxes” “Whenever a function or capability is seen as being required during the design of a system, define it as a black box and make use of it in the system without concern for its structural or methodological realization. “ -Edward Yourdon

Implementation The is no one philosophy for implementing a structured design. The is no one philosophy for implementing a structured design. –Use of the goto statement ( Edsger Dijkstra ) ( Donald Knuth vs. Edsger Dijkstra ) –The invention of abstract data types –Object Orientated Programming

The Goto Statement Edsger Dijkstra suggested that it be banned from higher level programming languages Edsger Dijkstra suggested that it be banned from higher level programming languages It can break the hierarchy or sequence of a program reducing modularity It can break the hierarchy or sequence of a program reducing modularity Does not need an interface to execute Does not need an interface to execute

Structured Design & OOD Similarly suggests breaking down problems into smaller pieces (procedures, objects) Similarly suggests breaking down problems into smaller pieces (procedures, objects) OOD designs in terms of objects, Structured Design in terms of procedures. OOD designs in terms of objects, Structured Design in terms of procedures. Object Orientated Design has a greater focus on encapsulation, and information hiding. Structured design tends (but not always) focus on separating data from the procedures. Object Orientated Design has a greater focus on encapsulation, and information hiding. Structured design tends (but not always) focus on separating data from the procedures.

Sources Web Yourdon, Edward and Constantine, Larry, Structured Design: Fundamentals of a Discipline of Computer Program and System Design, Selected quotes compiled by Tom Verhoeff Yourdon, Edward and Constantine, Larry, Structured Design: Fundamentals of a Discipline of Computer Program and System Design, Selected quotes compiled by Tom Verhoeff Wikipedia, Structured Programming, Wikipedia, Structured Programming, Dijkstra, Edgar W., Go To Statement Consider Harmful, Dijkstra, Edgar W., Go To Statement Consider Harmful, Developer.com, Object Lessons: The Future of OO Design Developer.com, Object Lessons: The Future of OO Design Fichman, Robert G. and Kemerer, Chris F., Object-Oriented and Conventional Analysis and Design Methodologies Comparison and Critique Books Yourdon, Edward, Modern Structure Analysis, Yourdon Press, 1989 Klerer, Melvin, Design of Very High-Level Computer Languages, Magraw Hill Inc., 1991

Questions ?