Software Design Derived from Dr. Fawcett’s slides CSE784 – Software Studio Fall 2009.

Slides:



Advertisements
Similar presentations
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Advertisements

Object-Oriented Software Development CS 3331 Fall 2009.
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
Design Concepts and Principles
Conversation Form l One path through a use case that emphasizes interactions between an actor and the system l Can show optional and repeated actions l.
Software Quality Metrics
Systems Analysis and Design in a Changing World, 6th Edition
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
OHT 9.1 Galin, SQA from theory to implementation © Pearson Education Limited 2004 Chapter 9.3 Software Testing Strategies.
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
Software System Integration
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Requirements Elicitation. Requirement: a feature or constraint that the system must satisfy Requirements Elicitation: specification of the system that.
12.
1 Shawlands Academy Higher Computing Software Development Unit.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
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.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph.
 Explain the role of a system analyst.  Identify the important parts of SRS document.  Identify the important problems that an organization would face.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
University of Sunderland CIFM03Lecture 4 1 Software Measurement and Reliability CIFM03 Lecture 4.
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
CERN – European Organization for Nuclear Research Administrative Support - Internet Development Services CET and the quest for optimal implementation and.
Testing Techniques Software Testing Module ( ) Dr. Samer Hanna.
Sylnovie Merchant, Ph.D. MIS 161 Spring 2005 MIS 161 Systems Development Life Cycle II Lecture 5: Testing User Documentation.
1 Program Testing (Lecture 14) Prof. R. Mall Dept. of CSE, IIT, Kharagpur.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
The Software Development Process
Lecture 2 Quality as the motivation for Software Design References:Braude, Chapters 0 and 1 My 2001 lecture notes on Quality Budgen Software Design Meyer.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
1 Object-Oriented Analysis and Design with the Unified Process Figure 13-1 Implementation discipline activities.
Dynamic Testing.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
CSE784 – Software Studio Jim Fawcett Fall 2002.
Appendix 1 - Packages Jim Fawcett copyright (c)
CSE 219 Final exam review.
System Design, Implementation and Review
Dependency Analysis Use Cases
Software Testing.
The Development Process of Web Applications
Chapter ? Quality Assessment
Architecture Concept Documents
Chapter 9 - Programming to Interfaces
CSE784 – Software Studio Jim Fawcett Fall 2006.
Dependency Analysis Use Cases
Applied Software Implementation & Testing
مقدمه اي بر مهندسي نيازمنديها
Unit Test: Functions, Procedures, Classes, and Methods as Units
Software Testing (Lecture 11-a)
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Testing and Test-Driven Development CSC 4700 Software Engineering
Chapter 10 – Software Testing
An Introduction to Software Architecture
Baisc Of Software Testing
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Executable Specifications
Message Passing Systems Version 2
Integration Testing.
Message Passing Systems
Presentation transcript:

Software Design Derived from Dr. Fawcett’s slides CSE784 – Software Studio Fall 2009

Software Design 2 Software Development Strategy: Organizing ideas and structure Strategy: Organizing ideas and structure –Uses –Partitions and responsibilities –Critical issues Tactics Implementing ideas and structure Tactics Implementing ideas and structure –Activities –Classes and relationships –Algorithms –Data management StrategyTactics ArchitectureDesignImplementation

Software Design 3 Design Goals Make each software Component: Design Goals Make each software Component: Simple Simple Understandable Understandable Maintainable Maintainable Selectable Selectable Reusable Reusable Reliable Reliable Robust Robust Flexible Flexible Extendable Extendable

Software Design 4 Design Goals: Simplicity Small functions Small functions –Lines of code ≤ 50 Low cyclomatic complexity Low cyclomatic complexity –All functions CC ≤ 10 –Average much lower Small number of functions Small number of functions –Functions per module ≤ 20 –Average much lower

Software Design 5 Design Goals: Understandable Self documented Self documented –Manual page read about operations and interface read about operations and interface –Maintenance page see how to build see how to build –Test stub see how it works see how it works Descriptive names Descriptive names –Name describes operation or result Simple Simple

Software Design 6 Design Goals: Maintainable Maintenance consists of Maintenance consists of –Fixing latent errors –Modifying existing functionality –Adding new functionality Is maintainable if: Is maintainable if: –Needs no maintenance So simple it obviously has no defects So simple it obviously has no defects Additions made by composing with new components Additions made by composing with new components –Or easy to fix, modify, and extend Used through interface so changes don’t propagate Used through interface so changes don’t propagate Interface can be bound to new implementations Interface can be bound to new implementations Simple so easy to test Simple so easy to test

Software Design 7 Design Goals: Selectable Five million lines of code project Five million lines of code project –Has roughly 10, 000 modules Average of 500 lines of code per module Average of 500 lines of code per module –10 functions with 50 lines of code each Need ways to find parts to salvage and reuse Need ways to find parts to salvage and reuse –Need to make quick decisions Localize candidates by functionality or application Localize candidates by functionality or application –has operational summaries in prologue and manual page –Need to quickly evaluate candidates Easy to build Easy to build –has maintenance information with build process Easy to run Easy to run –has test stub

Software Design 8 Design Goals: Reusable Selectable Selectable –Has prologue and Manual Page Understandable Understandable –Has module operation description –Meaningful names –Simple structure Low fan-out Low fan-out –Dependent on very few other components Needs no application specific code Needs no application specific code –Uses delegates –Provides base class “hook”

Software Design 9 Design Goals: Reliable Understandable model Understandable model No surprises No surprises –Operates according to known model –Processing is repeatable –No race conditions or deadlocks Thoroughly tested Thoroughly tested

Software Design 10 Design Goals: Robust Will not crash with unexpected inputs or environment Will not crash with unexpected inputs or environment –Can use AppDomain partitions to isolate processing –Use exception handling to trap unexpected events –Validate user input, especially strings and paths

Software Design 11 Design Goals: Flexible Changes don’t propagate Changes don’t propagate –Provide an interface so users don’t bind to your implementation –Change to some implementation detail won’t cause changes to other components Supports changes of implementation Supports changes of implementation –Interfaces guarantee substitutability of any implementing class –Change of entire implementation won’t break using classes

Software Design 12 Design Goals: Extendable Supports addition of new implementation Supports addition of new implementation –Use of interface and object factory supports adding new component –No changes to users of the interface and factory

End Presentation Software Design 13