CSC 395 – Software Engineering Lecture 15: Object-Oriented Design –or– Ask For Whom The Data Tolls.

Slides:



Advertisements
Similar presentations
Software Engineering-II
Advertisements

Systems Analysis Requirements structuring Process Modeling
Chapter 7 Structuring System Process Requirements
Chapter 7 Structuring System Process Requirements
© 2005 by Prentice Hall 7-1 Chapter 7 Structuring System Process Requirements Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey.
Chapter 7 Structuring System Process Requirements
Software Design Deriving a solution which satisfies software requirements.
Dataflow modelling: Context and Data Flow Diagrams
Jump to first page Chapter 2 System Analysis - Process Modeling.
Lesson-22 Process Modeling(2)
Modern Systems Analysis and Design
Structuring System Requirements: Process Modeling
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 8 Structuring.
Basic of DFD. Developing a DFD There are no FIXED rules about how a DFD should be developed… There is no such a DFD call “CORRECT DFD”… Expert SAs may.
Chapter 7 Structuring System Process Requirements
Building The Analysis Model. Object-Oriented Analysis The object oriented analysis define all classes, the relationships and behavior associated with.
Chapter 8 Structuring System Requirements: Process Modeling
Data Flow Diagrams (DFDs)
Chapter 1: Data Flow Diagram Structuring System Process Requirements
Structuring System Process Requirements. Learning Objectives Understand the logical modeling of processes by studying examples of data flow diagrams (DFDs).
Chapter 10 Architectural Design
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall 6.1.
IT323 - Software Engineering 2 Tutorial 1. 0 The system 1.0 A Function 1.1 Activity of the function Task Task Task 1.2 Another activity.
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Data Flow Diagrams.
Data Flow Diagram A method used to analyze a system in a structured way Used during: Analysis stage: to describe the current system Design stage: to describe.
Chapter 7 Structuring System Process Requirements
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Essentials of Systems Analysis and Design Fourth Edition Joseph S. Valacich Joey F.
Computer System Analysis Chapter 8 Structuring System Requirements: Process Modeling Dr. Sana’a Wafa Al-Sayegh 1 st quadmaster University of Palestine.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 8 Structuring.
Chapter 7 Structuring System Process Requirements
Data Flow Diagrams (DFD). ScenarioCriteriaTasks Data flow diagram(DFD) is a diagram of the movement of data between external entities.
An Introduction to Software Architecture
Software Design Designing the overall structure (architecture) of a software system Designing small pieces of computation Designing non-automated processes.
Chapter 9 Moving to Design
CSC 395 – Software Engineering Lecture 13: Object-Oriented Analysis –or– Let the Pain Begin (At Least I’m Honest!)
Approaching a Problem Where do we start? How do we proceed?
Systems Analysis and Design in a Changing World, 3rd Edition
CSC 395 – Software Engineering Lecture 28: Classical Analysis -or- Do You Really Want to Do That?
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
CSC 395 – Software Engineering Lecture 14: Object-Oriented Analysis –or– Ripping the Band-Aid Off Quickly.
1 CMPT 275 High Level Design Phase Modularization.
System Decomposition Overview. Data Flow Diagrams Despite the name “Data Flow Diagrams”, DFD have a process, rather than a data, focus We represent all.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Copyright 2001 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Chapter 5 Structuring.
Modern Systems Analysis and Design Fifth Edition
Chapter 7 Structuring System Process Requirements Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich.
CS223: Software Engineering
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
© 2005 by Prentice Hall Chapter 7 Structuring System Process Requirements Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F. George.
Chapter 7 Part II Structuring System Process Requirements MIS 215 System Analysis and Design.
C_ITIP211 LECTURER: E.DONDO. Unit 3 : PROCESS MODELING.
MIS 360: System Analysis and Design Dr. Qasem Al-Radaideh Department of Computer Information Systems Faculty of Information Technology Yarmouk University.
Data Flow Diagram : Developed By Larry Constantine as a way of expressing system requirements in graphical Form: Data Flow Models (DFMs) are easy to understand.
7-1 Chapter 7 Structuring System Process Requirements Modern Systems Analysis and Design Fourth Edition.
Chapter 6 Structuring System Requirements: Process Modeling
Business System Development
Chapter 8 Structuring System Requirements: Process Modeling
Process Modeling Graphically represent the processes that capture, manipulate, store, and distribute data between a system and its environment Models DFDs.
Business System Development
Lecture 9- Design Concepts and Principles
Structuring System Requirements: Process Modeling
Chapter 1: Data Flow Diagram Structuring System Process Requirements
Chapter 6 Structuring System Requirements: Process Modeling
Software Design Designing the overall structure (architecture) of a software system Designing small pieces of computation Designing non-automated processes.
Lecture 9- Design Concepts and Principles
An Introduction to Software Architecture
Requirement Analysis using
Chapter 7: Data Flow Diagram Structuring System Process Requirements
Presentation transcript:

CSC 395 – Software Engineering Lecture 15: Object-Oriented Design –or– Ask For Whom The Data Tolls

In This Lecture Analysis ends with specification document Client approves of pretty drawings. Have better, more detailed use-cases Begins with completed architectural design Designed high-level modules (e.g., class design) (Also determined hardware requirements) Determine responsibilities for each module Must develop the detailed design Determine smaller modules (e.g., fields/methods) Do everything in power to support code monkeys

“Solutions” & Solutions Software engineering is iterative Decisions always reexamined & reevaluated Nothing final until process completes In a good product, process is never complete Best result is solution to current needs Worst answer is “because that’s how it is done” Progress is impossible without change, and those who cannot change their minds cannot change anything. -- George Bernard Shaw

“Solutions” & Solutions Important to consider timelines, too Best solutions rarely make it to market Premature optimization is the root of all failure. -- Donald Knuth In a group, requires respectful honesty Honest differences are often a healthy sign of progress. -- Mahatma Gandhi

What is Architectural Design? Architectural design takes in specifications Suggests it is part of design workflow Ends with modular decomposition We did this as part of analysis workflow For classical (non-OO) software engineering Decomposes problem into functions and functional units: this is the essence of design For object-oriented software engineering Decomposes problem into classes and packages and should be done as part of analysis Books (and organizations) split on placement

Detailed Design Begins with lists of classes Each has list of responsibilities Diagrams show classes (& instances) interactions Also have use-cases and scenarios Used these to develop & test our classes Spent time at end of analysis refining use-cases Use-cases now drive detailed design Best to start “old-school” -- data flow diagrams

Why Care About Data Flow? Computers are very fast & very stupid Computers are very fast & very stupid Humans far better at all but most precise tasks Humans far better at all but most precise tasks Computers used when work is too tedious Computers used when work is too tedious Basically giant devices transforming information Basically giant devices transforming information Data flow diagrams model system’s goal well Classes, methods, fields… should be means to an end input output

Drawn using 4 different pieces: External Entity Process Data Flow Data Store Data Flow Diagram Notation

External Entity Denotes problems external to the software Should be actual cause of information Could be: user, mouse, file, database, sensor All data originates outside of program Random number generators are external entities Could be another class when looking from perspective of a class All data is ultimately sent to something If not, what is point of the program?

Process Transforms input in some manner Examples: compute taxes, read in from file, mutilate important letter beyond recognition Should process data in consistent manner Consider splitting if there is no common process Does not require everything be identical May (should) have multiple transformations Each process performs single (reasonable) step Remember to look to use-cases for these

Data Flow Shows how data should move along system Connects inputs & outputs during program Should follow where data flows Should NOT follow how system operates Provides opportunity to simplify design Eliminates processes whose outputs are not used Split processes with multiple data outputs compute triangle area base height area

Data Store Data often stored externally to allow reuse May be in file or database Could set properties of piece of hardware Could overlap with external entity Difference is in bi-directionality of information look-up sensor data sensor # report required sensor #, type, location, age sensor data sensor number type, location, age

DFD Rules Label icons with meaningful names Label data flows using descriptive name Do not represent procedural logic DFD incorporate many levels of detail Evolutionary approach that zooms-in on details Can be useful for detailed or complex flows Begin with a context level diagram (level 0) Shows external entities and high-level processes Starting point for non-OO software engineering

Using A DFD Review use-case(s) & scenarios Source of transforms needed for each datum Often need levels for adequate model Do not rush; keep diagram readable & continuous Process expansion ratio about 1:5 between levels Ultimately, each process should do exactly 1 thing Data flows may be expanded in lower levels Data dictionary provides information for expansion

Data Flow Hierarchy P x x y y a b p1 p2 p3 p4 p5 a b c d e f g level 0 level 1

Split Along Module Boundaries Find where input & output are most abstract Split into modules along those boundaries Must be done on case-by-case basis

Transactions Are Different Be wary of transaction-based flows Single input step leading to multiple processes Should be handled very differently Create single dispatcher calling abstract method Handler classes then override abstract method

In The Next Lecture Now have idea of where to place methods Still too hard for the code monkeys Not very open for testing or considering Converting detailed design into something usable Look at algorithms, patterns, and data dictionaries