Nature of Software Design

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
Lecture # 2 : Process Models
What is Software Design?. Systems Development Life- Cycle Planning Analysis Design Implementation Design.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Design Concepts and Principles
Documenting a Software Architecture By Eng. Mohanned M. Dawoud.
Alternate Software Development Methodologies
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Object-Oriented Analysis and Design
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Major Exam II Reschedule 5:30 – 7:30 pm in Tue Dec 5 th.
Overview of Software Requirements
Chapter 1 Principles of Programming and Software Engineering.
UML Sequence Diagrams Eileen Kraemer CSE 335 Michigan State University.
SE 555 – Software Requirements & Specifications Introduction
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Chapter 4 Capturing the Requirements 4th Edition Shari L. Pfleeger
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
1 Lecture 5.3: SEF Ch 4 Requirements Analysis Dr. John MacCarthy UMBC CMSC 615 Fall, 2006.
S/W Project Management
1 Shawlands Academy Higher Computing Software Development Unit.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 1: Best Practices of Software Engineering.
Chapter 2 The process Process, Methods, and Tools
SOFTWARE ENGINEERING BIT-8 APRIL, 16,2008 Introduction to UML.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
ITEC224 Database Programming
An Introduction to Software Architecture
Architecture Business Cycle
Business Analysis and Essential Competencies
Software Design: An Introduction by David Budgen Presented by Shane Marcus EEL 6883 – Spring 2007 Presented by Shane Marcus EEL 6883 – Spring 2007.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
SOFTWARE DESIGN.
What is a Business Analyst? A Business Analyst is someone who works as a liaison among stakeholders in order to elicit, analyze, communicate and validate.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Lecture 7: Requirements Engineering
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
1 Introduction to Software Engineering Lecture 1.
Requirements as Usecases Capturing the REQUIREMENT ANALYSIS DESIGN IMPLEMENTATION TEST.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
1 Software Requirements l Specifying system functionality and constraints l Chapters 5 and 6 ++
Software Requirements: A More Rigorous Look 1. Features and Use Cases at a High Level of Abstraction  Helps to better understand the main characteristics.
The Software Development Process
Software Architecture Evaluation Methodologies Presented By: Anthony Register.
Formal Methods.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
Lecture 13.  Failure mode: when team understands requirements but is unable to meet them.  To ensure that you are building the right system Continually.
Smart Home Technologies
1 The Requirements Problem Chapter 1. 2 Standish Group Research Research paper at:  php (1994)
Software Requirements Specification Document (SRS)
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Requirement Analysis SOFTWARE ENGINEERING. What are Requirements? Expression of desired behavior Deals with objects or entities, the states they can be.
Software Engineering, COMP201 Slide 1 Software Requirements BY M D ACHARYA Dept of Computer Science.
Introduction to Software Engineering 1. Software Engineering Failures – Complexity – Change 2. What is Software Engineering? – Using engineering approaches.
 System Requirement Specification and System Planning.
Software Design Process. What is software? mid-1970s executable binary code ‘source code’ and the resulting binary code 1990s development of the Internet.
Object-Oriented Analysis and Design
Unified Modeling Language
The Systems Engineering Context
Introduction to Systems Analysis and Design Stefano Moshi Memorial University College System Analysis & Design BIT
Presentation transcript:

Nature of Software Design What is design? The role of design activity Design as a problem solving activity Design as a wicked problem

What is design Design is a set of activities that need to be performed by the designer in deriving and specifying a solution to a problem Design is a set of activities that need to be performed by the designer to produce a workable solution There is an order or sequence to these actions There may be more than one possible solution for a given problem The fitness of the solution is measured by the correctness or appropriateness of that solution

A model of the design process Clarify Nature of Requirements Req Specification External Requirements Build a black box Model of problem Functional specification Functional specification List of mismatches Postullate White box Design solution Validate Solution By prototype White box model Implementation Of design plan Using a s/w

The design process consists mainly 4 activities Postulate a solution Build a model of the solution Evaluate the model against original requirements Elaborate the model to produce to produce a detailed specification of the solution The nature of the design process The design process will not be implemented in a single precise sequence The design process is iterative in nature The design process contains the extensive backtracking

Moving House Example The following parameters will be considered while moving to a new house Plan Initial model Strategies Constraints Modularity Quality Reuse Even the same set of parameters will be considered for designing a solution to a problem

The Role of Design Activity The main task of design activity is to produce the plans necessary for s/w production to proceed The form and extent of the plans will be determined by the design practices, means of implementation and size of the system being developed The plans will be concerned with describing Structure of the system including sub programs Data objects to be used in the system The algorithms to be used Packaging of the system Interactions between the components Designing process Viewpoints (E-R,DFD,STD) The plan should even specify how the final product is to be assembled by making use of components

Channels of Communication of Designer Designer derives “plans” by making use of 3 resources Requirements specification Designer Plans for Realization of the design Constraints Domain knowledge

Design as a Problem Solving Process The purpose of the design is simply to produce a solution to a problem The final solution should fulfill the ultimate requirement i.e. it should work and do the required job apart from the other factors like size, speed, ease of adoption, look &feel Designer gets help from number of tools like design methods ,design patterns, representations while designing the solution Even abstraction plays very important role while developing the solutions for large and complex systems

Design as a Wicked Problem A wicked problem can be considered to be symptom of another problem Every wicked problem is essentially unique Wicked problems do not have an enumerable set of potential solutions Wicked problem have no stopping rule Solutions to wicked problems are not true or false, but good or bad Even the same strategy will be applicable to the s/w design

The Software Design Process Designer Formulates and Develops an Abstract Design Model Representative of the Solution Why is This Process Not Understood as Well as Other Forms of Design? The Complexity of Software The Problem of Conformity The (Apparent) Ease of Changeability The Invisibility of Software

Phases of software design process Requirements Specification Architectural design decisions Logical design details Detailed design decisions Physical design details

Transferring Design Knowledge Codifying and exchanging experiences about the processes involved in design and resulting design features that have proved effectively gaining design knowledge. The characteristics of an exceptional designer: 1)Familiarity with the application domain 2)Skill in communicating technical vision to other project members. 3)Identification with project performance Familiarity with application domain Skill in communicating Technical vision to others Identification with Project performance

Other Parameters In Gaining Design Knowledge Design methods Design patterns The process part The representation part Heuristics Verification and validation operations Quality measures Identification of certain constraints

Design Constraints Designing Software is Rarely an Unconstrained Process Examples of Constraints Programming Language to be Used Execution Environment or Operating System Performance Expectations User Interface Needs

Recording design decisions The need to record the design decisions from the viewpoint of design and maintenance tasks The design and maintenance can be extended and modified by making use of design decisions Quality control is the main intension to record the design decisions Benefits to the new members of design and maintenance teams Generally design decisions are represented through the diagrams or other notation

Designing with others We need to consider some parameters while designing a solution to problem Social Organizational Economical Political

Role of Software Design Question… “What exactly is the purpose of Design? Answer… “To produce a workable (implementable) solution to a given problem.” Fitness for Purpose The Key Measure of the Appropriateness of Any Solution

Design – Problem-solving Approach Is There Only One Solution to a Problem? Rarely…Almost Never Moving House Example Is There a Systematic Approach to Design? No, a Designer Must Create Each System Identify the Properties Required Stake Holders (Customer, Users, etc.) Devise a Structure That Possesses the Properties What Can a Designer Use in This Effort?

Design – Main Characteristics Main Characteristics Found in Almost All Design Problems No Single “Right” Solution Many Factors and Constraints to be Balanced in Choosing a Solution No One Measure of “Quality” No Particular Process That Can Ensure That We Can Even Identify an Acceptable Solution

Software Design Process Designer Formulates and Develops an Abstract Design Model Representative of the Solution Why is This Process Not Understood as Well as Other Forms of Design? The Complexity of Software The Problem of Conformity The (Apparent) Ease of Changeability The Invisibility of Software

Gaps in Domain Knowledge Software Design Method Used When a Designer Lacks Experience or is Unfamiliar With the Problem to be Solved Limited to Forms of Design Practice That Can be Prescribed in a Procedural Manner These Methods Provide… A Representation Part A Process Part A Set of Heuristics

Design Constraints Designing Software is Rarely an Unconstrained Process Examples of Constraints Programming Language to be Used Execution Environment or Operating System Performance Expectations User Interface Needs

Design in the Software Development Cycle Constraints Affect the Design Process and the Form of the Product Set of User Needs to be Met Fitness of Purpose Requirements Elicitation and Analysis Leads to Identifying Inconsistencies Between the Requirements and the Solution Designer Must “Think Ahead” Short Term Use, Long Maintenance Effort, Stability of the Solution Space, etc.

Design Qualities Fitness of Purpose Doesn’t Provide an Absolute Measure of Quality Correct and Within Constraints May Not be Enough to Achieve Fitness of Purpose Quality Factor “ilities” Reliability Efficiency Maintainability Usability

Assessing Design Quality A Systematic Form of Measurement is Difficult to Achieve Favorable Assessment Techniques Design Walk-through Meetings Reviews Refactoring (XP) How Often?

Representing abstract ideas Abstraction plays an important role in the design process The designer needs ways to represent abstract ideas about the problem models, design objects and about the various relationships that will exist between these A representation is used for mainly 3 purposes To capture the designer’s ideas for a solution Explaining the designer ideas to others Checking for consistency Representations can be associated with the problem models ,solution forms and process forms

Viewpoints Viewpoint is defined as a projection of the design model Different viewpoints encompass design model A representation ca be used to represent the attributes or characteristics of the viewpoints Basically 4 viewpoints are available Constructional forms Behavioral forms Functional forms Data modeling forms

Constructional forms Behavioral forms Concerned with static aspects of the system ,Files of data, header files, data in the form of HTML&XML threads, and packaging constructs. Concerned with relationships and dependencies among elements Behavioral forms Concerned with the causal links between events and system responses during execution Example is finite state machine

Functional forms Data modeling forms Concerned with description of functionality Behavior of program elements i.e. subprograms Data modeling forms Modeling of data structures These include Type ,sequence, and form Concerned with data objects within the system and relationships among them

Describing Designs Recording the Design Model: Design Viewpoints Design Representation Forms Some Examples of Design Representations

Design Viewpoints Behavior Functional Structural Data Modelling Describing the Causal Links Between External Events and System Activities During Execution Functional Describing What the System Does Structural Describing the Interdependencies of the Constructional Components Data Modelling Describing the Relationships that Exist Between the Data Objects Used

Design Representation Forms of Design Representation Textual Diagrammatical Mathematical Examples State Charts Data Flow Diagram (DFD) Entity Relationship Diagram (ERD)

Current Design Representations UML Diagrams Class Use Case Collaboration Sequence State chart Component Activity * http://atlas.kennesaw.edu/~dbraun/csis4650/A&D/UML_tutorial/index.htm

Software Design Practices and Design Methods Major Problem with Teaching Software Design is Scale Roles for Software Design Methods Establishing Common Goals and Styles Generating “Consistent” Documentation Assist With Future Maintenance Recapture the Original Design Model Helping Make Some Features of a Problem More Explicit Constraints That Limit Their Usefulness The Process Part of a Method Provides Relatively Little Detailed Guidance as to How a Problem Should be Solved The Need to Use a Procedural Form Leads to Practices That Conflict with the Behavior Observed in Experienced Designers

Design Strategies Top-down Compositional Organizational Template Separate a Large Problem into Smaller Ones Compositional Identifies a Set of “Entities” That Can be Modeled and Then Assembled to Create a Model for the Complete Solution Organizational Use Where Development Organization and Management Structures Impose Constraints Upon the Design Process Template Used Where Some General Paradigm Describes a Reasonably Large Domain of Problems