COSC 3351 Software Design. Software Design Methodology. Edgar Gabriel. Spring Outline

Similar documents
4.2 ALGORITHM DESIGN METHODS

Vragen. Intra-modular complexity measures. The uses relation. System structure: inter-module complexity

Modeling Issues Modeling Enterprises. Modeling

Design Methodology. Outline

SOFTWARE ENGINEERING. Lecture 6. By: Latifa ALrashed. Networks and Communication Department

CSC 330 Object Oriented Software Design. Software Design Phase

Introduction to Software Engineering

Software Engineering Principles

Methods for requirements engineering

A l Ain University Of Science and Technology

System Design and Modular Programming

Software Architecture and Design I

A l Ain University Of Science and Technology

Rules of Writing Software Requirement Specifications

SE351a: Software Project & Process Management. 11 Oct., 2005 SE351a, ECE UWO, (c) Hamada Ghenniwa

Managing Change and Complexity

Chapter 2 Entity-Relationship Data Modeling: Tools and Techniques. Fundamentals, Design, and Implementation, 9/e

CSC Advanced Object Oriented Programming, Spring Overview

ECE264 Fall 2013 Exam 1, September 24, 2013

Software Development Chapter 1

Requirements Engineering. Establishing what the customer requires from a software system. Requirements Engineering. What is a Requirement?

Darshan Institute of Engineering & Technology for Diploma Studies

Ch 1: The Architecture Business Cycle

Conceptual Data Modeling for the Functional Decomposition of Mission Capabilities

Toward an Execution Model for Component Software

W3C Music Notation Community Group Meeting. Musikmesse Frankfurt 8 April 2016

ECE264 Fall 2013 Exam 3, November 20, 2013

What s Next. INF 117 Project in Software Engineering. Lecture Notes -Spring Quarter, Michele Rousseau Set 6 System Architecture, UML

Object-Oriented and Classical Software Engineering DESIGN 11/12/2017. CET/CSC490 Software Engineering Design CHAPTER 14. Stephen R. Schach.

Chapter 2 Entity-Relationship Data Modeling: Tools and Techniques. Fundamentals, Design, and Implementation, 9/e

FINAL TERM EXAMINATION SPRING 2010 CS304- OBJECT ORIENTED PROGRAMMING

Tutorial 1 Answers. Question 1

Chapter 4 Objectives

Parallelism in Software

Architectural Decomposition Mei Nagappan

What is a Programming Paradigm

INTRODUCTION TO ALGORITHMS

Presenter: Dong hyun Park

File IO and command line input CSE 2451

Integrating SysML and OWL

Architectural Design. Topics covered. Architectural Design. Software architecture. Recall the design process

Chapter : Analysis Modeling

Introducing MESSIA: A Methodology of Developing Software Architectures Supporting Implementation Independence

Introduction to System Design

upper and lower case English letters: A-Z and a-z digits: 0-9 common punctuation symbols special non-printing characters: e.g newline and space.

A PROPOSAL FOR MODELING THE CONTROL SYSTEM FOR THE SPANISH LIGHT SOURCE IN UML

Software Architecture

A Transformation-Based Model of Evolutionary Architecting for Embedded System Product Lines

Conceptual modeling for ETL

Module Contact: Dr Anthony J. Bagnall, CMP Copyright of the University of East Anglia Version 2

CS 470 Spring Mike Lam, Professor. OpenMP

An Introduction to Software Architecture. David Garlan & Mary Shaw 94

Software Architectures. Lecture 6 (part 1)

Architectural Patterns

THE OBJECT-ORIENTED DESIGN PROCESS AND DESIGN AXIOMS (CH -9)

1 Executive Overview The Benefits and Objectives of BPDM

CS Operating system

Specifying and Prototyping

Fundamentals of Programming Session 8

ECE264 Spring 2014 Exam 2, March 11, 2014

Requirement Analysis

WHAT IS SOFTWARE ARCHITECTURE?

CS 470 Spring Mike Lam, Professor. OpenMP

Design Patterns. Architectural Patterns. Contents of a Design Pattern. Dr. James A. Bednar. Dr. David Robertson

Chapter 4. Capturing the Requirements. 4th Edition. Shari L. Pfleeger Joanne M. Atlee

09. Component-Level Design

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

INCREMENTAL SOFTWARE CONSTRUCTION WITH REFINEMENT DIAGRAMS

Object Oriented Programming

Domain-Driven Development with Ontologies and Aspects

Database Principles: Fundamentals of Design, Implementation, and Management Tenth Edition. Chapter 7 Data Modeling with Entity Relationship Diagrams

LESSON 6 FLOW OF CONTROL

Contents. References 43

Chapter 2 Overview of the Design Methodology

Arrays and Strings. Antonio Carzaniga. February 23, Faculty of Informatics Università della Svizzera italiana Antonio Carzaniga

CS 575: Software Design

Design Concepts. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman

Utilizing a Common Language as a Generative Software Reuse Tool

Ch 1: The Architecture Business Cycle

C++ Programming Fundamentals

Lecture 4: OpenMP Open Multi-Processing

Architectural Decomposition Reid Holmes

Architectural Design. Architectural Design. Software Architecture. Architectural Models

3.4 Data-Centric workflow

Element: Relations: Topology: no constraints.

A STUDY OF OBJECT ORIENTED ANALYSIS AND DESIGN

Architectural Decomposition & Representations Reid Holmes

Introduction to Languages for Scientific Computing, winter semester 14/15: Final Exam

Vocabulary-Driven Enterprise Architecture Development Guidelines for DoDAF AV-2: Design and Development of the Integrated Dictionary

Object-Oriented Systems Development: Using the Unified Modeling Language

CSE 1320 INTERMEDIATE PROGRAMMING - OVERVIEW AND DATA TYPES

CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too)

Practical Database Design Methodology and Use of UML Diagrams Design & Analysis of Database Systems

Benefits and Challenges of Architecture Frameworks

HTTP. EC512 Spring /15/2015 EC512 - Prof. Thomas Skinner 1

Design Concepts and Principles

C BOOTCAMP DAY 2. CS3600, Northeastern University. Alan Mislove. Slides adapted from Anandha Gopalan s CS132 course at Univ.

Comparative Analysis of Architectural Views Based on UML

Architectural Patterns. Architectural Patterns. Layers: Pattern. Architectural Pattern Examples. Layer 3. Component 3.1. Layer 2

Architectural Patterns

Transcription:

COSC 3351 Software Design Software Design Methodology Spring 2008 Outline Causes of difficulties in software design Vehicles to overcome difficulties Various strategies to solve software design problems Understand the basic structure of software design methodologies 1

Causes for difficulties Complexity Number of internal states of large software projects orders of magnitude higher than hardware products Complex interactions between elements Basically no identical/repetitive elements Abstracted to function/classes -> high probability for errors in requirements and specifications -> high probability for mis-communication among team members Causes for difficulties Conformity Software expected to conform to standards imposed by others, e.g. Hardware, Existing software (e.g. Operating System, Database), Legislators Changeability No other complex product encounter such frequent changes as software Invisibility Did you know that the source code of your microwave is > 200,000 lines? 2

Type of design errors Incorrectness: the design does not meet the requirements Inconsistency: e.g. two design statements make conflicting assumptions about the functionality of a component Ambiguity: e.g. the design specification can be interpreted multiple ways Inferiority: the design does not address quality requirements adequately. Examples: inefficiencies, inflexibilities. Vehicles to overcome difficulties Axioms for good design Separation of Concerns: A complex problem can best be solved by devising intermediate solutions expressed in terms of simpler, independent problems Comprehension: the mind cannot manipulate more than seven [+- two] things at a time Translation: A correct design that meets its interface and behavior specifications in one environment will continue to meet its specifications in another environment, provided that the new environment provides equivalent services Transformation: design correctness is unaffected by replacement of equivalent components 3

Basic rules for software design Modular design: create units with loose inter-unit coupling Portable design: employ abstract context interfaces Malleable design: malleability can be achieved by modeling the end-users view of the external environment Conceptual integrity: uniform application of a limited number of design forms Intellectual control: recording design as increasingly detailed abstractions Visualization: representing design in visual notations such as diagrams and figures The context of design E.g. in the V model: Input: functional specification and non-functional requirements as the result of the requirements analysis and functional specification phases Output: design specification that describes software architecture and module design of the software components Similar steps for all other models 4

Stages of software design Architectural design Organization of the system as a composition of components Assignment of functionality to components Global control structures Protocols for communication, synchronization and data access Physical distribution Scaling and performance Dimensions of evaluation Selection among alternatives Detailed design Design strategies (I) Decompositional methods Top-down approach Starts with the original description of the problem or model Decompose the problem into sub-problems Solve the sub-problems separately Compositional methods Starts by identifying a set of particular entities and objects involved in the problem Each entities/objects are described and grouped Define relationship between entities -> create larger components 5

Design strategies (II) Design templates Many problems have a great deal of similarities Abstract similarities into templates Reuse proven design templates Incremental and evolutionary strategies Trial-and-error a design solution for a carefully chosen subset of requirements Evaluate against other requirements Make modifications to meet other requirements while preserving the required properties that it already has satisfied Popular Design Methods Jackson structured Programming (JSP) and Jackson System Development (JSD) Structured Methods, e.g. SADT and SSADM Object oriented methods, e.g. UML Various formal methods 6

Jackson Structured Programming Structured programming based on correspondence between data stream structure and program structure JSP structures programs and data in terms of fundamental operations, sequences, iterations and Selections Each program input and output is modelled as a separate Datsa Structure Diagram (DSD) Input and Output Structures are merged into a Program Structure Diagram (PSD) Jackson Structured Programming A simple operation is drawn as a box A sequence of operations is represented by boxes connected with lines (e.g. A consists of B, C, D) 7

Jackson Structured Programming An iteration is represented with joined boxes. In addition, the iterated operation has a star in the top right corner A selection is similar to a sequence but with a circle in the top right corner (e.g. A consists of either B, C or D) JSP example: a run-length encoder Input: a byte stream Output: stream of pairs consisting of a byte along with a count of the byte s consecutive occurrences. First step: model input Stream of bytes which can be viewed as zero or more runs. Each run consists of one or more bytes of the same value 8

JSP example: a run-length encoder Model output Zero or more pairs each pair consisting of a byte and its count JSP example: a run-length encoder Describe the correspondence between the input and the output 9

JSP example: a run-length encoder Merge the structures JSP example: a run-length encoder #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int c; c = getchar(); while (c!= EOF) { int count = 1; int first_byte = c; c = getchar(); while (c!= EOF && c == first_byte && count < 255) { count++; c = getchar(); } putchar(first_byte); putchar(count); } } return EXIT_SUCCESS; 10