Prologue: The Software Process. Main Phases of Software Process 1. Requirements Analysis (answers “WHAT?”) Specifying what the application must do 2.

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 Design and Documentation. Test Design Test design is to ensure that all requirements are met through a series of test procedures, increasing the.
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.
Chapter 05: Evolutionary Requirements Definition : Requirements  “Requirements are capabilities and conditions to which the system, and more broadly.
SWE 316: Software Design and Architecture Objectives Lecture # 01 Prologue: The Software Process SWE 316: Software Design & Architecture  To review software.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
IT Requirements Capture Process. Motivation for this seminar Discovering system requirements is hard. Formally testing use case conformance is hard. We.
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
Software Engineering COMP 201
© The McGraw-Hill Companies, 2006 Chapter 9 Software quality.
Unit 211 Requirements Phase The objective of this section is to introduce software system requirements and to explain different ways of expressing these.
Illinois Institute of Technology
SE 555 Software Requirements & Specification Requirements Validation.
16/27/2015 3:38 AM6/27/2015 3:38 AM6/27/2015 3:38 AMTesting and Debugging Testing The process of verifying the software performs to the specifications.
Chapter 1 Program Design
1CMSC 345, Version 4/04 Verification and Validation Reference: Software Engineering, Ian Sommerville, 6th edition, Chapter 19.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
1 CMPT 275 Software Engineering Software life cycle.
1 Shawlands Academy Higher Computing Software Development Unit.
Chapter 2 The process Process, Methods, and Tools
Chapter 5 Design Principles II: Flexibility, Reusability, and Efficiency.
RUP Implementation and Testing
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
 Explain the role of a system analyst.  Identify the important parts of SRS document.  Identify the important problems that an organization would face.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
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
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
Computers Are Your Future Tenth Edition Chapter 13: Systems Analysis & Design Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall1.
Rational Requirements Management with Use Cases v5.5 Copyright © Rational Software, all rights reserved 1 Requirements Management with Use Cases.
Systems Analysis and Design in a Changing World, Fourth Edition
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Software Life Cycle The software life cycle is the sequence of activities that occur during software development and maintenance.
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.
Software Engineering Lecture # 1.
Intermediate 2 Computing Unit 2 - Software Development.
1 The Requirements Problem Chapter 1. 2 Standish Group Research Research paper at:  php (1994)
COMP2110 Software Design in 2003 ● a(nother) framework for Software Engineering ● the Software Engineering ideas and concepts in comp2110 ● Organisation.
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.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
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.
Introduction to Problem Solving Programming is a problem solving activity. When you write a program, you are actually writing an instruction for the computer.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
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.
Chapter 2- Software Development Process  Product Components  Software Project Staff  Software Development Lifecycle Models.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Software Development.
CSC 480 Software Engineering
ICS 3UI - Introduction to Computer Science
IL Marking Get out your CPU / Memory answers Swap with someone else
Verification and Validation
Verification and Validation
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.
CSE 303 Concepts and Tools for Software Development
Applied Software Project Management
Baisc Of Software Testing
Test Cases, Test Suites and Test Case management systems
Presentation transcript:

Prologue: The Software Process

Main Phases of Software Process 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 Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Software Process Phases: Personal Finance Example o Requirements Analysis : Text produced e.g., “ … The application shall display the balance in the user’s bank account. …” o Design : Diagrams and text e.g., “ … The design will consist of the classes CheckingAccount, SavingsAccount, …” o Implementation : Source and object code e.g., … class CheckingAccount{ double balance; … } … o Testing : Test cases and test results e.g., “… With test case: deposit $44.92 / deposit $32.00 / withdraw $ / … the balance was $ , which is correct. …” o 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 Pesos.” Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Key Concept:  Software Process  -- a procedure followed by the development team to produce an application.

The Waterfall Software Process time Requirements Analysis Design Milestone(s) Phases (activities) Implementation Testing Maintenance Release product X Two phases may occur at the same time for a short period Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Why a Pure Waterfall Process is Usually Not Practical  Don’t know up front everything wanted and needed o Usually hard to visualize every detail in advance  We can only estimate the costs of implementing requirements o To gain confidence in an estimate, we need to design and actually implement parts, especially the riskiest ones o We will probably need to modify requirements as a result  We often need to execute intermediate builds o Stakeholders need to gain confidence o 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 o Typically put people to work on several phases at once Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

The Spiral Process time 1 Requirements analysis Design Coding Testing 1Iteration # Product released X Intermediate version* completed X *typically a prototype M I L E S T O N E S Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Key Concept:  Waterfall Process  -- basic software process in which requirements analysis, design, coding, testing, and maintenance are performed in sequence, but with some overlap. Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Key Concept:  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. Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Key Concept:  Inspections  -- the process of reading meticulously through an artifact. Authors inspect their code before compiling it. Teams inspect when the author is done. Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Key Concept:  Requirements Analysis  -- the process of understanding what’s needed or wanted, and expressing the results in writing. Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

The Challenges of Requirements Analysis  Express requirements in ordinary, clear English o Non-technical o From the user’s perspective  Organize the requirements into logical groupings o Make easy to access and change o Challenging for real applications  Arrange for the management of requirements o A procedure must be developed in advance for keeping the requirements documents up to date Who, how, and when Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Requirements For CustomFootnoter 1 of 3 1. Overview CustomFootnoter generates footers to promote customer relationships. Initial versions will produce simple courtesy statements. Later versions will contain helpful tips and offerings tailored to the recipient's interests. This requirements specification is for a prototype which accepts command-line input, and generated console output. Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

2. Detailed Requirements 2.1 Input 1)CustomFootnoter will accept the first 10 characters of the recipient’s first name as follows. Please type in the sender’s first name: Abcd 2)The application will accept a single middle initial with the following format. Please type in the sender’s middle initial: M 3)The application will accept the first 10 characters of the recipient’s last name as follows. Please type in the sender’s last name: Xyz Requirements For CustomFootnoter 2 of 3 Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

4) The application will accept the sender’s name in the same manner 2.2 Output 5) CustomFootnoter outputs the following text to the console if it is less than or equal to 60 characters long ---- To A b c d M. X y z from E r i c J. B r a u d e (the number and position of blanks as indicated by the example) Otherwise the three initials may be used, as in ---- To A. M. X. from E. J. B User Interface The requirements in sections 2.1 and 2.2 will conform to the I/O format in the following example. Requirements For CustomFootnoter 3 of 3 Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Input / Output Format for Requirement Specifications Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Design for CustomFootnoter ______________CustomFootnoter______________ senderFirstName: String senderMidInitial: char senderFirstName: String recipientMidInitial: char recipientLastName: String __________recipientLastName: String___________ CustomFootnoter() main() getSenderName() getRecipientName() createExpandedVersionOf( String aName ): String createFootnote(): String Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Tips on Coding  Code only against a design This book explains how to express designs  Specify precisely what each method accomplishes Chapter xx explains how to do this in comment sections  Before compiling, satisfy yourself that the code you have typed is correct. Read it meticulously. o ‘correct’ means that is satisfies what’s required of it o 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”) Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Key Concept:  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. Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

o Informal developer tests o Performed by individual developers; documented informally in their notebooks o Unit tests o On parts such as methods or classes o May be formally documented o Intermediate tests o System tests o On whole application o Thoroughly documented o White box o Black box Types of Testing  Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Output of a White Box Test Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

o Test early and often o Test with extreme values o Very small, very big, etc. o Borderline o “Illegal” values o Vary test cases o Don’t repeat tests with same test data except when specifically intended Tips on Testing Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Key Concept:  Testing  Test early and often: Note that “passed all tests” doesn’t equate to “bug free.” Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Types of Maintenance o Defect Removal o Finding and fixing all inconsistencies with the requirements document o Enhancement o Introducing new or improved capability Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Summary of Software Process o A way of going about the creation and upkeep of a software product o Commonly based on the Waterfall process 1.Specify requirements 2.Create design 3.Write code 4.Test 5.Maintain In sequence with some overlap. } Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.