Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.

Slides:



Advertisements
Similar presentations
Lecture # 2 : Process Models
Advertisements

10 Software Engineering Foundations of Computer Science ã Cengage Learning.
Cmp Sci 187: Introduction to Software Design Following Chapter 1 of text (Koffmann and Wolfgang)
1 The Software Challenge People may come and go, but software may remain A software product is often expected to be used for an extended period of time.
1 Lecture 2: Processes, Requirements, and Use Cases.
Software Design. The Software Challenge In industry, a software product is expected to be used for an extended period of time by someone who did not write.
MCS 231: Concepts of Data Structure Class Hour: Section 1: MW 2:15PM - 3:30PM. Hyland 2306.
Describing Process Specifications and Structured Decisions Systems Analysis and Design, 7e Kendall & Kendall 9 © 2008 Pearson Prentice Hall.
ITEC200 Week01 Introduction to Software Design.
Introduction To System Analysis and Design
Systems Analysis and Design in a Changing World, Fourth Edition
Fall 2007CS 225 Introduction to Software Design Chapter 1.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Fall 2007CS 2251 Software Engineering Intro. Fall 2007CS 2252 Topics Software challenge Life-cycle models Design Issues Documentation Abstraction.
©Ian Sommerville 2006Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives Intro - Software OOP Inheritance, interfaces,
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 1 Introduction to Object-Oriented Programming and Software Development.
Chapter 1 Principles of Programming and Software Engineering.
Chapter 1 Software Engineering. Homework ► Read Section 2.2 (pages 79-98) ► Answer questions: ► 7, 8, 11, 12, & 13 on page 134. ► Answer on paper, hand.
Objectives Explain the purpose and objectives of object- oriented design Develop design class diagrams Develop interaction diagrams based on the principles.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 1 Introduction to Object-Oriented Programming and Software Development.
Spring 2009CS 225 Introduction to Software Design Chapter 1.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Lesson 1 Week01.
Introduction to Java Appendix A. Appendix A: Introduction to Java2 Chapter Objectives To understand the essentials of object-oriented programming in Java.
CIS 321—IS Analysis & Design
Chapter 2: Approaches to System Development
Lesson 7 Guide for Software Design Description (SDD)
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
Chapter 1: Introduction to Systems Analysis and Design
Introduction Ellen Walker CPSC 201 Data Structures Hiram College.
1 SYS366 Lecture 1: Introduction to Systems. 2 What is Software Development? Software Development implies developing some software – but it does not involve.
Case Study: Designing A Telephone Directory Program Ellen Walker CPSC 201 Data Structures Hiram College Includes figures from Objects, Abstraction & Data.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
Unified Modeling Language, Version 2.0
Introduction To System Analysis and Design
Describing Process Specifications and Structured Decisions Systems Analysis and Design, 7e Kendall & Kendall 9 © 2008 Pearson Prentice Hall.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Systems Analysis and Design in a Changing World, 3rd Edition
1 Introduction to Software Engineering Lecture 1.
The Systems Development Life Cycle
Object-Oriented Analysis and Design. Lesson 1: Introduction to Software Engineering.
Dr.Basem Alkazemi
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.
© 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.
Systems Analysis and Design in a Changing World, Fourth Edition
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
1 Unified Modeling Language, Version 2.0 Chapter 2.
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
1 SYS366 Week 2 - Lecture 2 Visual Modeling & UML.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Basic Characteristics of Object-Oriented Systems
Visual Basic.NET Comprehensive Concepts and Techniques Chapter 1 An Introduction to Visual Basic.NET and Program Design.
Systems Analysis and Design in a Changing World, Fourth Edition
Chapter 1: Introduction to Systems Analysis and Design
Systems Analysis and Design With UML 2
About the Presentations
UML: Unified modeling language
An Introduction to Visual Basic .NET and Program Design
SOFTWARE LIFE-CYCLES Beyond the Waterfall.
Chapter 1: Introduction to Systems Analysis and Design
Chapter 1: Introduction to Systems Analysis and Design
Presentation transcript:

Introduction to Software Design Chapter 1

Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand what activities take place in each phase of the software life cycle  To learn how to use top-down design and object-oriented design  To learn to use data abstraction, procedural abstraction, and information hiding to manage complexity  To learn how to draw class diagrams to document the interaction between classes  To become familiar with the software challenge and the software life cycle  To understand what activities take place in each phase of the software life cycle  To learn how to use top-down design and object-oriented design  To learn to use data abstraction, procedural abstraction, and information hiding to manage complexity  To learn how to draw class diagrams to document the interaction between classes

Chapter Objectives (continued)  To learn the role of abstract data types in building models of computer systems and how to implement them using classes and interfaces  To become familiar with use cases as a tool to document a system’s interaction with the user  To understand the software design process by following the design and implementation of an array-based telephone directory  To become familiar with sequence diagrams as a tool for documenting the interaction between multiple classes used in a program  To learn the role of abstract data types in building models of computer systems and how to implement them using classes and interfaces  To become familiar with use cases as a tool to document a system’s interaction with the user  To understand the software design process by following the design and implementation of an array-based telephone directory  To become familiar with sequence diagrams as a tool for documenting the interaction between multiple classes used in a program

The Software Challenge  In industry, a software product is expected to be used for an extended period of time by someone who did not write the program and who is not intimately familiar with its internal design  Initial specification for a software product may be incomplete  Specification is clarified through extensive interaction between users of the software and the system analyst  A requirements specification should be generated at the beginning of any software project  Designers and users should both approve the document  In industry, a software product is expected to be used for an extended period of time by someone who did not write the program and who is not intimately familiar with its internal design  Initial specification for a software product may be incomplete  Specification is clarified through extensive interaction between users of the software and the system analyst  A requirements specification should be generated at the beginning of any software project  Designers and users should both approve the document

The Pizza Class Exercise  Take out a sheet of paper and write your three most important requirements for a pizza.

Class Response

The Software Life Cycle  Software products go through several stages as they mature from initial concept to finished product  The sequence of stages is called a life cycle  It is important to design and document software in an organized way so that it can be easily understood and maintained after the initial release  The person who maintains the software is not necessarily the person who writes it  Software products go through several stages as they mature from initial concept to finished product  The sequence of stages is called a life cycle  It is important to design and document software in an organized way so that it can be easily understood and maintained after the initial release  The person who maintains the software is not necessarily the person who writes it

Software Life Cycle Models  Waterfall model: simplest way of organizing activities that transforms software from one stage to another  Activities are performed in sequence and the results of one flows into the next  Waterfall model is simple but unworkable  Fundamental flaw is assumption that each stage can and must be completed before the next one occurs  Sometimes, it is not until the product is finished that the user can fully express his or her requirements  Waterfall model: simplest way of organizing activities that transforms software from one stage to another  Activities are performed in sequence and the results of one flows into the next  Waterfall model is simple but unworkable  Fundamental flaw is assumption that each stage can and must be completed before the next one occurs  Sometimes, it is not until the product is finished that the user can fully express his or her requirements

Waterfall Model

Waterfall Model (continued)

Software Life Cycle Models (continued)  Common themes among alternative models is to develop software product in stages or cycles  Unified Model: the cycles are called phases and iterations and the activities are called workflows  Four phases  Inception  Elaboration  Construction  Transition  Common themes among alternative models is to develop software product in stages or cycles  Unified Model: the cycles are called phases and iterations and the activities are called workflows  Four phases  Inception  Elaboration  Construction  Transition

Software Life Cycle Models (continued)

Software Life Cycle Activities (continued)  Certain activities are essential for software development  Requirements specification  Architectural, component, and detailed designs  Implementation  Unit, integration, and acceptance tests  Installation and maintenance  Certain activities are essential for software development  Requirements specification  Architectural, component, and detailed designs  Implementation  Unit, integration, and acceptance tests  Installation and maintenance

Software Life Cycle Activities

Software Life Cycle Activities (continued)  Requirements Specification  System analyst works with software users to clarify the detailed system requirements  Questions include format of input data, desired form of any output screens, and data validation  Analysis  Make sure you completely understand the problem before starting the design or program a solution  Evaluate different approaches to the design  Requirements Specification  System analyst works with software users to clarify the detailed system requirements  Questions include format of input data, desired form of any output screens, and data validation  Analysis  Make sure you completely understand the problem before starting the design or program a solution  Evaluate different approaches to the design

Software Life Cycle Activities (continued)  Design  Top-down approach: breaking a system into a set of smaller subsystems  Object-oriented approach: identification of a set of objects and specification of their interactions  UML diagrams are a design tool to illustrate the interactions between  Classes  Classes and external entities  Design  Top-down approach: breaking a system into a set of smaller subsystems  Object-oriented approach: identification of a set of objects and specification of their interactions  UML diagrams are a design tool to illustrate the interactions between  Classes  Classes and external entities

Software Life Cycle Activities (continued)

Using Abstraction to Manage Complexity  An abstraction is a model of a physical entity or activity  Abstraction helps programmers deal with complex issues in a piecemeal fashion  Procedural abstraction: distinguish what is to be achieved by a procedure from its implementation  Data abstraction: specify the data objects for a problem and the operations to be performed on them without concern for their representation in memory  An abstraction is a model of a physical entity or activity  Abstraction helps programmers deal with complex issues in a piecemeal fashion  Procedural abstraction: distinguish what is to be achieved by a procedure from its implementation  Data abstraction: specify the data objects for a problem and the operations to be performed on them without concern for their representation in memory

Using Abstraction to Manage Complexity (continued)  If a higher-level class references a data object only through its methods, the higher-level class will not have to be rewritten, even if the data representation changes  Information hiding: Concealing the details of a class implementation from users of the class  If a higher-level class references a data object only through its methods, the higher-level class will not have to be rewritten, even if the data representation changes  Information hiding: Concealing the details of a class implementation from users of the class

Abstract Data Types, Interfaces, and Pre- and Postconditions  A major goal of software engineering is to write reusable code  Abstract data type (ADT): The combination of data together with its methods  A Java interface is a way to specify an ADT  The interface specifies the names, parameters, and return values of the ADT methods without specifying how the methods perform their operations and without specifying how the data is internally represented  Each class that implements an interface must provide the definitions of all methods declared in the interface  A major goal of software engineering is to write reusable code  Abstract data type (ADT): The combination of data together with its methods  A Java interface is a way to specify an ADT  The interface specifies the names, parameters, and return values of the ADT methods without specifying how the methods perform their operations and without specifying how the data is internally represented  Each class that implements an interface must provide the definitions of all methods declared in the interface

Abstract Data Types, Interfaces, and Pre- and Postconditions (continued)

 You cannot instantiate an interface  You can declare a variable that has an interface type and use it to reference an actual object  A Java interface is a contract between the interface designer and the programmer who codes a class that implements the interface  Precondition: a statement of any assumptions or constraints on the method data before the method begins execution  Postcondition: a statement that describes the result of executing a method  You cannot instantiate an interface  You can declare a variable that has an interface type and use it to reference an actual object  A Java interface is a contract between the interface designer and the programmer who codes a class that implements the interface  Precondition: a statement of any assumptions or constraints on the method data before the method begins execution  Postcondition: a statement that describes the result of executing a method

Requirements Analysis, Use Cases, and Sequence Diagrams  First step in analysis is to study the problem of input and output requirements carefully to make sure they are understood and make sense  Use case: list of the user actions and system responses for a particular sub-problem in the order that they are likely to occur  Sequence diagram: shows all the objects involved in this use case across the horizontal axis, time is shown along the vertical axis  First step in analysis is to study the problem of input and output requirements carefully to make sure they are understood and make sense  Use case: list of the user actions and system responses for a particular sub-problem in the order that they are likely to occur  Sequence diagram: shows all the objects involved in this use case across the horizontal axis, time is shown along the vertical axis

Design of an Array-Based Phone Directory  Case study deals with design, implementation, and testing of the software-based phone directory  In UML class diagrams  + sign next to a method or attribute means it is public  - sign next to a method or attribute means it is private  Classes to design include:  PDUserInterface  PDApplication  PhoneDirectory  ArrayBasedPD  DirectoryEntry  Case study deals with design, implementation, and testing of the software-based phone directory  In UML class diagrams  + sign next to a method or attribute means it is public  - sign next to a method or attribute means it is private  Classes to design include:  PDUserInterface  PDApplication  PhoneDirectory  ArrayBasedPD  DirectoryEntry

Design of an Array-Based Phone Directory (continued)

Implementing and Testing the Array-Based Phone Directory

Implementing and Testing the Array-Based Phone Directory (continued)  Note that some code in this application is controversial  Combination of assignment with the evaluation of a condition  Break statement allows exiting of the while loop without storing an entry  Note that some code in this application is controversial  Combination of assignment with the evaluation of a condition  Break statement allows exiting of the while loop without storing an entry

Implementing PDUserInterface  PDUserInterface must contain a public method, processCommands  We show two different classes that implement the PDUserInterface:  PDGUI Class  PDConsoleUI  PDUserInterface must contain a public method, processCommands  We show two different classes that implement the PDUserInterface:  PDGUI Class  PDConsoleUI

Implementing PDUserInterface as GUI  This class provides a GUI input using JOptionPane dialog windows

Implementing PDUserInterface as a console  Implemented using PDConsoleUI class  This class uses System.out to display the menu of choices and results.  It also uses a Scanner object (scIn) associated with System.in to read data from the keyboard.  Implemented using PDConsoleUI class  This class uses System.out to display the menu of choices and results.  It also uses a Scanner object (scIn) associated with System.in to read data from the keyboard.

Chapter Review  We introduced two software life cycle models (waterfall and Unified) and discussed the activities performed in each stage of these models  Procedural abstraction, data abstraction, and information hiding are tools for managing program complexity  A Java interface can specify an abstract data type (ADT) and a Java class can implement an ADT  Use cases summarize the interaction between the user and the system during requirements specification and analysis  We introduced two software life cycle models (waterfall and Unified) and discussed the activities performed in each stage of these models  Procedural abstraction, data abstraction, and information hiding are tools for managing program complexity  A Java interface can specify an abstract data type (ADT) and a Java class can implement an ADT  Use cases summarize the interaction between the user and the system during requirements specification and analysis

Chapter Review (continued)  UML class diagrams are used during the analysis and design phases to document the interaction of classes with each other and with the user  Sequence diagrams and pseudocode can be used to describe the sequence of actions performed by a program that is implemented as a collection of multiple interacting classes  Sequence diagrams are employed during the design phase of the software life cycle  UML class diagrams are used during the analysis and design phases to document the interaction of classes with each other and with the user  Sequence diagrams and pseudocode can be used to describe the sequence of actions performed by a program that is implemented as a collection of multiple interacting classes  Sequence diagrams are employed during the design phase of the software life cycle