Vladimir Misic: Design111:43:34 AM Software design.

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

UML an overview.
Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
Chapter 22 Object-Oriented Systems Analysis and Design and UML Systems Analysis and Design Kendall and Kendall Fifth Edition.
Ch 12: Object-Oriented Analysis
Introduction To System Analysis and Design
Fall 2007CS 225 Introduction to Software Design Chapter 1.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Software Development Software Life Cycle UML Diagrams.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 1 Introduction to Object-Oriented Programming and Software Development.
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
©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.
Software Engineering Principles and C++ Classes
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 1 Introduction to Object-Oriented Programming and Software Development.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
The chapter will address the following questions:
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Introduction 01_intro.ppt
1 Shawlands Academy Higher Computing Software Development Unit.
Chapter 2 The process Process, Methods, and Tools
Managing the development and purchase of information systems (Part 1)
Understand Application Lifecycle Management
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
CSC-115 Introduction to Computer Programming
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Introduction To System Analysis and Design
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
INTRODUCTION SOFTWARE HARDWARE DIFFERENCE BETWEEN THE S/W AND H/W.
Copyright 2002 Prentice-Hall, Inc. Chapter 2 Object-Oriented Analysis and Design Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Ceg860 (Prasad)L1SQ1 Software Quality Object-Oriented Programming Paradigm.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
I Power Higher Computing Software Development The Software Development Process.
Data Structures Using C++1 Chapter 1 -Software Engineering Principles -ADT and Classes.
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
1 Introduction to Software Testing. Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 1 2.
The Software Development Process
Data Structures Using C++ 2E
SEN 460 Software Quality Assurance. Bahria University Karachi Campus Waseem Akhtar Mufti B.E(UIT), M.S(S.E) AAU Denmark Assistant Professor Department.
© 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.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
Intermediate 2 Computing Unit 2 - Software Development.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
Chapter 1 Software Engineering Principles. Problem analysis Requirements elicitation Software specification High- and low-level design Implementation.
The Hashemite University Computer Engineering Department
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Chapter 2 Principles of Programming and Software Engineering.
Data Structures Using Java1 Chapter 1 Software Engineering Principles and Java Classes.
Object Oriented Programming and Data Abstraction Earl Huff Rowan University.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Programming III Introduction.
Unified Modeling Language
About the Presentations
IS442 Information Systems Engineering
CS 1120: Computer Science II Software Life Cycle
Software Design Lecture : 15.
CS 1120: Computer Science II Software Life Cycle
Chapter 22 Object-Oriented Systems Analysis and Design and UML
Presentation transcript:

Vladimir Misic: Design111:43:34 AM Software design

Vladimir Misic: Design211:43:34 AM Code Size Program/ApplicationLines of Code Solaris 7400,000 Linux1.5 million Windows 95Under 5 million NT535 million Boeing 7777 million Space Shuttle10 million Space Station40 million Netscape17 million

Vladimir Misic: Design311:43:34 AM Disasters 7 deaths of cancer patients were due to overdoses of radiation resulting from a race condition between concurrent tasks in the Therac-25 software. The 1988 shooting down of the Airbus 320 by the US Vicennes was attributed to the cryptic and misleading output displayed by the tracking software. An American Airlines plane crashed into a mountain because the pilot entered an incorrect one letter command that sent the plane into a mountain. An Iraqi scud missile hit Dhahran barracks, leaving 28 dead and 98 wounded. The incoming missile was not detected by the patriot defenses, whose clock had drifted.36 seconds during the 4-day continuous siege.

Vladimir Misic: Design411:43:34 AM So What Does All This Mean? Seat of your pants programming may work here, but it won’t cut it in industry!! There is an urgent need for techniques that can be used to manage the development of large software systems This is part of what software engineering is all about

Vladimir Misic: Design511:43:34 AM Software Quality Correctness Robustness Extendibility Portability Ease of use Functionality Timeliness Product quality is a measure how well a product meets given criteria. Here is a list of external factors for software quality * : 8 Source: Bertrand Meyer, ``Object-Oriented Software Construction'', Chapter 1. ? A lot of… blah-blah, but, what does it actually mean?

Vladimir Misic: Design611:43:34 AM Software Quality Correctness: –Correctness is the ability of software products to perform their exact tasks, as defined by their specification. Robustness: –Robustness is the ability of software system to react appropriately to abnormal conditions. Extendibility: –Extendibility is the ease of adapting software products to changes of specification. Product quality is a measure how well a product meets given criteria. Here is a list of external factors for software quality * : 8 Source: Bertrand Meyer, ``Object-Oriented Software Construction'', Chapter 1.

Vladimir Misic: Design711:43:34 AM Software Quality Reusability: –Reusability is the ability of software elements to serve for the construction of many different applications. Compatibility: –Compatibility is the ease of combining software elements with others. Efficiency: –Efficiency is the ability of a software system to place as few demands as possible on hardware resources, such as processor time, space occupied in internal and external memories, bandwidth used in communication devices. … external factors for software quality: 8 Source: Bertrand Meyer, ``Object-Oriented Software Construction'', Chapter 1.

Vladimir Misic: Design811:43:34 AM Software Quality Portability: –Portability is the ease of transferring software products to various hardware and software environments. Ease of use: –Ease of use is the ease with which people of various backgrounds and qualifications can learn to use software products and apply them to solve problems. It also covers the ease of installation, operation and monitoring. Functionality: –Functionality is the extent of possibilities provided by a system. Timeliness: –Timeliness is the ability of a system to be released when or before its users want it. … external factors for software quality: 8 Source: Bertrand Meyer, ``Object-Oriented Software Construction'', Chapter 1.

Vladimir Misic: Design911:43:34 AM The Software Life Cycle Requirements and/or analysis –Determine and spell out the details of the problem Design –Determine how to solve the problem Coding –Translate the design into the actual system. Testing –Verify that the program solves the problem –Verify that the requirements have been satisfied –Verify that the system works properly Maintenance –Bug fixes

Vladimir Misic: Design1011:43:34 AM Waterfall Model Requirements/Analysis Design Coding Testing Maintenance These should be done sequentially. However, at any point you may discover a flaw (or the requirements may have been changed) and find you need to change a prior step.

Vladimir Misic: Design1111:43:34 AM Documents The work done in each stage is typically summarized in a document –Requirements document A description of what the customers and users expect the system to do –Specifications A detail description of how the software system will behave –Design A description of the various components in the system and how they will interact

Vladimir Misic: Design1211:43:34 AM Requirements Document The initial step is to determine what the system must do. –The Requirements Document is developed to document the customer’s and user’s expectations of the software. Requires data and potentially interaction with the customer and actual users. Requirements document Specifications Design

Vladimir Misic: Design1311:43:34 AM Requirements Once the team has an understanding of the requirements the next step is to determine how the system will behave. –The result of this step is the Functional Specification Document. –This document contains: How the system operates The user interface look and feel The system input and outputs Error handling Requirements document Specifications Design

Vladimir Misic: Design1411:43:34 AM Design Specification After the team understands how the system will behave, the next step is to determine how to implement the system. –The result of this step is the Design Document. Requirements document Specifications Design

Vladimir Misic: Design1511:43:34 AM Design Specification The design document contains: –The class organization. –The classes and instance variables. –The methods with specific return type and parameters –Any complex algorithms

Vladimir Misic: Design1611:43:34 AM From Specification to Design There are multiple approaches to developing the design. The following represent some good steps to take when developing a design (more like: 8 steps) 1)Find the possible objects: Look for noun phrases that represent objects. Nouns phrases may either be objects or state Look for key components in the requirements and specification documents.

Vladimir Misic: Design1711:43:34 AM From Specification to Design 2)Find the possible methods: Look for actions that identify behaviors. Look for verb phrases in the requirements and functional specification. 3)Identify the possible classes: Define classes that represent objects. Try to group nouns into classes if they represent a more general entity. Remove duplicate and extraneous nouns.

Vladimir Misic: Design1811:43:34 AM From Specification to Design 4)Write a statement that describes the purpose of each class that has been identified. Group nouns together that represent a more general entity What are the behaviors of this class and what will they do. 5)Determine the class structure. Put logically connected state and behaviors into the same class. If a behavior requires an attribute of a class, put the behavior in the same class.

Vladimir Misic: Design1911:43:34 AM From Specification to Design 6)Define the communication and relationships between classes (collaboration). Does a class require information from another class to perform the defined behaviors? Discard classes that do not interact with other classes. They most likely are not needed.

Vladimir Misic: Design2011:43:34 AM From Specification to Design 7)Refine the system design Review classes to see if they should be combined. Review collaborations between classes to see if they can be defined in a more streamlined manner. 8)Prepare a class diagram. Unified Modeling Language (UML)

Vladimir Misic: Design2111:43:34 AM Implementation Once the design is “complete” the implementation begins.

Vladimir Misic: Design2211:43:34 AM Testing The testing phase should begin as soon as there is any reasonable implementation to verify. –The first step is to develop test cases. –The second step is to run the test cases. –The third step is to report any problems back to the programmers. –We will talk more about testing in a few days.

Vladimir Misic: Design2311:43:34 AM Design Example Develop a system that will convert US dollars to Japanese Yen, Euros, or Chinese Yuan. The user enters an amount and a currency for the conversion. The output should list the entered amount in US dollars followed by the converted amount with the currency name. If the user enters a currency that does not exist, a proper error message should be printed.

Vladimir Misic: Design2411:43:34 AM Converter class Converter { // Class Variables: private static … // Instance Variables: // Class methods: public static … // Constructors: public Converter( ) // Methods : public … private … } class Converter { // Class Variables: private static … // Instance Variables: // Class methods: public static … // Constructors: public Converter( ) // Methods : public … private … }