SWE 316: Software Design and Architecture Objectives Lecture # 01 Prologue: The Software Process SWE 316: Software Design & Architecture  To review software.

Slides:



Advertisements
Similar presentations
Software Testing. Quality is Hard to Pin Down Concise, clear definition is elusive Not easily quantifiable Many things to many people You'll know it when.
Advertisements

Test process essentials Riitta Viitamäki,
P5, M1, D1.
1 Software Testing and Quality Assurance Lecture 13 - Planning for Testing (Chapter 3, A Practical Guide to Testing Object- Oriented Software)
1 Requirements and the Software Lifecycle The traditional software process models Waterfall model Spiral model The iterative approach Chapter 3.
Ch 3: Unified Process CSCI 4320: Software Engineering.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
The “Lifecycle” of Software. Chapter 5. Alternatives to the Waterfall Model The “Waterfall” model can mislead: boundaries between phases are not always.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
Requirements and Design
Introduction to Requirements (Chapters 1-3 of the requirements text) CSSE 371, Software Requirements and Specification Don Bagert, Rose-Hulman Institute.
© The McGraw-Hill Companies, 2006 Chapter 9 Software quality.
SE 555 Software Requirements & Specification Requirements Validation.
1 Security Architecture and Analysis Software Inspections and Verification Software Testing and Certification.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
ECE122 L17: Method Development and Testing April 5, 2007 ECE 122 Engineering Problem Solving with Java Lecture 17 Method Development and Testing.
System Testing There are several steps in testing the system: –Function testing –Performance testing –Acceptance testing –Installation testing.
Software Quality Chapter Software Quality  How can you tell if software has high quality?  How can we measure the quality of software?  How.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Chapter 1: Introduction to Software Testing Software Testing
Chapter 2 The process Process, Methods, and Tools
Prologue: The Software Process. Main Phases of Software Process 1. Requirements Analysis (answers “WHAT?”) Specifying what the application must do 2.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Testing -- Part II. Testing The role of testing is to: w Locate errors that can then be fixed to produce a more reliable product w Design tests that systematically.
13-January-2003cse LifeCycle © 2003 University of Washington1 Lifecycle CSE 403, Winter 2003 Software Engineering
1 Intro to Java Week 12 (Slides courtesy of Charatan & Kans, chapter 8)
Software Construction Lecture 18 Software Testing.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
REQUIREMENTS - WHY WHAT AND HOW? Steve Chenoweth & Chandan Rupakheti CSSE 371 Chapters Requirements Text. Question 6.
Systems Analysis and Design in a Changing World, Fourth Edition
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
The Software Development Process
1 Chapter 26 Cleanroom Software Engineering Cleanroom Developed in early 80’s by Harlan Mills Reported very good results –reliable, high-quality.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Dr. DEVENDRA TAYAL– THE SCOPE OF SOFTWARE ENGINEERING.
Software Engineering Lecture # 1.
Intermediate 2 Computing Unit 2 - Software Development.
System Maintenance Modifications or corrections made to an information system after it has been released to its customers Changing an information system.
CSCE 240 – Intro to Software Engineering Lecture 2.
COMP2110 Software Design in 2003 ● a(nother) framework for Software Engineering ● the Software Engineering ideas and concepts in comp2110 ● Organisation.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which:  is precise;  defines.
DE?!GN software. COMP2110 Software Design in 2004 Chris Johnson 1.Software Requirements and Software Design in a framework for Software Engineering 2.The.
Welcome to Software Project Management. CONVENTIONAL SOFTWARE MANAGEMENT The BEST and WORST thing about software is its flexibility. 1.Software development.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Week # 4 Quality Assurance Software Quality Engineering 1.
Introduction to Problem Solving Programming is a problem solving activity. When you write a program, you are actually writing an instruction for the computer.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
 System Requirement Specification and System Planning.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Software Development.
Chapter 18 Maintaining Information Systems
BASICS OF SOFTWARE TESTING Chapter 1. Topics to be covered 1. Humans and errors, 2. Testing and Debugging, 3. Software Quality- Correctness Reliability.
Dilbert Scott Adams Manage It! Your Guide to Modern, Pragmatic Project Management. Johanna Rothman.
Requirements and the Software Lifecycle
Lecture 09:Software Testing
SOFTWARE DESIGN COMP2110 Software Design COMP2510 Software Design for Software Engineers COMP6444 Software Design for eScience in 2005 lecturers: Chris.
Baisc Of Software Testing
Software Engineering Lecture 17.
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Presentation transcript:

SWE 316: Software Design and Architecture Objectives Lecture # 01 Prologue: The Software Process SWE 316: Software Design & Architecture  To review software process and its phases Chapter 0

SWE 316: Software Design and Architecture Main Phases of Software Process Software Process: a procedure followed by the development team to produce an application. 1.Requirements Analysis (answers “WHAT?”)  Specifying what the application must do 2.Design (answers “HOW?”)  Specifying what the parts will be, and how they will fit together 3.Implementation (A.K.A. “CODING”)  Writing the code 4.Testing (type of VERIFICATION)  Executing the application with test data for input 5.Maintenance (REPAIR or ENHANCEMENT)  Repairing defects and adding capability 2 Sec 0.1 Software Process ModelsRequirementsDesignCodingTestingMaintenance Page 2 of 21

SWE 316: Software Design and Architecture Personal Finance Example  Requirements Analysis: Diagrams and text  e.g., “ … The application shall display the balance in the user’s bank account. …”  Design: Diagrams and text  e.g., “ … The design will consist of the classes CheckingAccount, SavingsAccount, …”  Implementation: Source code  e.g., … class CheckingAccount{ double balance; … } … 3 Software Process ModelsRequirementsDesignCodingTestingMaintenance Page 3 of 21

SWE 316: Software Design and Architecture Personal Finance Example (Cont’d)  Testing: Test cases and test results  e.g., “… With test case: deposit $44.92 / deposit $32.00 / withdraw $ / … the balance was $ , which is correct. …”  Maintenance: Modified design, code, and text  e.g., Defect repair: “Application crashes when balance is $0 and attempt is made to withdraw funds. …”  e.g., Enhancement: “Allow operation with Riyal.” 4 Software Process ModelsRequirementsDesignCodingTestingMaintenance Page 4 of 21

SWE 316: Software Design and Architecture Waterfall Process  Basic software process in which requirements analysis, design, coding, testing, and maintenance are performed in sequence, but with some overlap. 5 Software Process Models RequirementsDesignCodingTestingMaintenance Page 5 of 21

SWE 316: Software Design and Architecture Waterfall Process (cont.)  Why a Pure Waterfall Process is Usually Not Practical ?  Don’t know up front everything wanted and needed  Usually hard to visualize every detail in advance  We can only estimate the costs of implementing requirements  To gain confidence in an estimate, we need to design and actually implement parts, especially the riskiest ones  We will probably need to modify requirements as a result  We often need to execute intermediate builds  Stakeholders need to gain confidence  Designers and developers need confirmation they're building what’s needed and wanted  Team members can't be idle while the requirements are being completed  Typically put people to work on several phases at once 6 Software Process Models RequirementsDesignCodingTestingMaintenance Page 6 of 21

SWE 316: Software Design and Architecture The Spiral Process 7 Software Process Models RequirementsDesignCodingTestingMaintenance Page 7 of 21

SWE 316: Software Design and Architecture Common Procedures  Work Against the Product of Prior Phase  In each phase of the software process, we design and code within the specifications produced by the prior phase.  Inspections  An artifact is a document or code.  An inspection of an artifact is the process of reading through the artifact in a complete and entirely thorough manner. 8 Software Process Models RequirementsDesignCodingTestingMaintenance Page 8 of 21

SWE 316: Software Design and Architecture Requirements Analysis  The process of understanding what’s needed or wanted, and expressing the results in writing. 9 Sec 0.2 Software ProcessModels Requirements DesignCodingTestingMaintenance Page 9 of 21

SWE 316: Software Design and Architecture The Challenges of Requirements Analysis  Express requirements in ordinary, clear English  Non-technical  From the user’s perspective  Organize the requirements into logical groupings  Make easy to access and change  Challenging for real applications  Arrange for the management of requirements  A procedure must be developed in advance for keeping the requirements documents up to date  Who, how, and when 10 Software ProcessModels Requirements DesignCodingTestingMaintenance Page 10 of 21

SWE 316: Software Design and Architecture Design (The heart of this course)  The design of an application expresses how the application is to be constructed.  It describes the parts involved and how they are to assembled.  It consists of a set of documents (diagrams and text) 11 Sec 0.3 Software ProcessModelsRequirements Design CodingTestingMaintenance Page 11 of 21

SWE 316: Software Design and Architecture Tips on Coding  Code only against a design  Specify precisely what each method accomplishes 12 Sec 0.4 Software ProcessModelsRequirementsDesign Coding TestingMaintenance Page 12 of 21

SWE 316: Software Design and Architecture Tips on Coding (cont.)  Before compiling, satisfy yourself that the code you have typed is correct. Read it thoroughly.  ‘correct’ means that is satisfies what’s required of it  This is “author-inspection”  Build-a-little-Test-a-little 1.Add a relatively small amount of code (“build-a-little”) 2.(Again): Read what you have typed and correct it if necessary until you are totally satisfied it’s correct 3.Compile 4.Test the new functionality (“test-a-little”) 13 Software ProcessModelsRequirementsDesign Coding TestingMaintenance Page 13 of 21

SWE 316: Software Design and Architecture Author-Inspect Before Compiling Inspect and edit the block of code you have just written until you are convinced it does exactly what it is meant to do. Only then compile it. 14 Software ProcessModelsRequirementsDesign Coding TestingMaintenance Page 14 of 21

SWE 316: Software Design and Architecture Testing  The testing phase consists of supplying input to the application and comparing the output with that mandated by the software requirements specification.  Helps to uncover defects  Proves the presence of defects, but never their absence 15 Sec 0.5 Software ProcessModelsRequirementsDesignCoding Testing Maintenance Page 15 of 21

SWE 316: Software Design and Architecture Types of Testing  Black-box testing  Compares the output obtained with the output specified by the requirements document  Does not take into account the manner in which the application is designed  White-box testing  Based on the design  Exercise specific design features such as branching, loops, interfaces, etc.  Unit Tests  Tests on parts of an application (individual methods, classes, etc.)  Integration Tests  Tests the software units work together correctly  System Tests  Tests of an entire application Software ProcessModelsRequirementsDesignCoding Testing Maintenance Page 16 of 21

SWE 316: Software Design and Architecture Tips on Testing  Test early and often  Test with extreme values  Very small, very big, etc.  Borderline  “Illegal” values  Vary test cases  Don’t repeat tests with same test data except when specifically intended 17 Software ProcessModelsRequirementsDesignCoding Testing Maintenance Page 17 of 21

SWE 316: Software Design and Architecture Testing  Test early and often: Note that “passed all tests” doesn’t equate to “bug free.” 18 Software ProcessModelsRequirementsDesignCoding Testing Maintenance Page 18 of 21

SWE 316: Software Design and Architecture Maintenance  Maintenance refers to the work performed on the application that occurs after it has been delivered.  Types of maintenance  Corrective (Defect Removal)  Finding and fixing all inconsistencies with the requirements document  Perfective (Enhancement)  Introducing new or improved capability  Adaptive  Adapts software to new environment  Preventive  changing some aspect of the system to prevent failures 19 Sec 0.6 Software ProcessModelsRequirementsDesignCodingTesting Maintenance Page 19 of 21

SWE 316: Software Design and Architecture Summary of Software Process  A way of going about the creation and upkeep of a software product  Commonly based on the Waterfall process 1.Specify requirements 2.Create design 3.Write code 4.Test 5.Maintain 20 In sequence with some overlap Software ProcessModelsRequirementsDesignCodingTestingMaintenance Page 20 of 21

SWE 316: Software Design and Architecture Reading 21 Prologue - The Software Process (Page 1-18) Software ProcessModelsRequirementsDesignCodingTestingMaintenance Page 21 of 21