Software Lifecycle Activities

Slides:



Advertisements
Similar presentations
Chapter 11, Testing.
Advertisements

UML an overview.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering September 12, 2001 Capturing.
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
Software Engineering COMP 201
Software Testing and Quality Assurance
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Chapter 11, Testing.
Use Case Analysis – continued
Outline Types of errors Component Testing Testing Strategy
 QUALITY ASSURANCE:  QA is defined as a procedure or set of procedures intended to ensure that a product or service under development (before work is.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
System/Software Testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
Testing Chapter 11. Dealing with Errors Verification: –Makes assumptions –Doesn’t always deal with real environment Testing (this lecture) –Testing is.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
COP 3331 OBJECT-ORIENTED ANALYSIS AND DESIGN Bob Myers Department of Computer Science Week 6 Lecture.
CMSC 345 Fall 2000 Unit Testing. The testing process.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
CS3773 Software Engineering Lecture 04 UML Class Diagram.
Software Construction Lecture 18 Software Testing.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design.
Sept. 18, 2003CS WPI1 CS 509 Design of Software Systems Lecture #3 Thursday, Sept. 18, 2003.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Design - programming Cmpe 450 Fall Dynamic Analysis Software quality Design carefully from the start Simple and clean Fewer errors Finding errors.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 11, Testing.
Chapter 8 Testing. Principles of Object-Oriented Testing Å Object-oriented systems are built out of two or more interrelated objects Å Determining the.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Chapter 5 System Modeling. What is System modeling? System modeling is the process of developing abstract models of a system, with each model presenting.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
Software Quality Assurance and Testing Fazal Rehman Shamil.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 9, Testing.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
WELCOME TO OUR PRESENTATION UNIFIED MODELING LANGUAGE (UML)
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVII. Verification and Validation.
Software Testing.
Review of last class Software Engineering Modeling Problem Solving
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Software Engineering (CSI 321)
Integration Testing.
Software Testing.
Chapter 9, Testing.
Object-Oriented Analysis and Design
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Software Lifecycle Activities
IEEE Std 1074: Standard for Software Lifecycle
Verification and Validation Overview
BASICS OF SOFTWARE TESTING Chapter 1. Topics to be covered 1. Humans and errors, 2. Testing and Debugging, 3. Software Quality- Correctness Reliability.
Applied Software Implementation & Testing
Chapter 11, Testing.
Lecture 09:Software Testing
Verification and Validation Unit Testing
Chapter 11, Testing.
Baisc Of Software Testing
Chapter 9, Testing.
Use Case Analysis – continued
Chapter 11, Testing.
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
From Use Cases to Implementation
Presentation transcript:

Software Lifecycle Activities Requirements Elicitation Requirements Analysis System Design Object Design Implemen- tation Testing Use Case Model Verified By Implemented By Realized By Structured By Expressed in Terms Of Application Domain Objects SubSystems Implementation Domain Objects class... Source Code Test Cases ? class.... April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

From Use Cases to Objects Le v el 1 Level 1 Use Case Le v el 2 Le v el 2 Level 2 Use Cases Le v el 3 Le v el 3 Le v el 3 Level 3 Use Cases Le v el 4 Le v el 4 Operations A B Participating Objects April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Definition: Object Modeling Main goal: Find the important abstractions What happens if we find the wrong abstractions? Iterate and correct the model Steps during object modeling: 1. Class identification (based on the fundamental assumption that we can find abstractions) 2. Find the attributes 3. Find the methods 4. Find the associations between classes (Order of steps is secondary, only a heuristic) April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Do UML associations have direction? An association between two classes is by default a bi-directional mapping. A B Class A can access class B and class B can access class A Both classes play the agent role. April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Do UML associations have direction? If you want to to make A a client, and B a server, you can make the association unidirectional. The arrowhead points to the server role: A B access  Class A ( the “client”) accesses class B (“the server”). B is also called navigable April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Aggregation Models "part of" hierarchy Useful for modeling the breakdown of a product into its component parts (sometimes called bill of materials (BOM) by manufacturers) UML notation: Like an association but with a small diamond indicating the assembly end of the relationship. April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Aggregation weight Automobile serial number year manufacturer model color drive purchase Engine horsepower volume on off Battery amps volts charge discharge 3,4 Wheel diameter number of bolts 2 Brakelight on off 2,4 Door open close April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Inheritance Models "kind of" hierarchy Powerful notation for sharing similarities among classes while preserving their differences UML Notation: An arrow with a triangle Cell NerveCell BloodCell MuscleCell Red White Smooth Striate Cortical Pyramidal April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Aggregation vs. Inheritance Both associations describe trees (hierarchies). Aggregation tree describes “part-of” relationships (also called and-relationship) Inheritance tree describes "kind-of" relationships (also called or-relationship) Aggregation relates instances (involves two or more different objects) Inheritance relates classes (a way to structure the description of a single object) April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Other Associations “Uses”: A subsystem uses another subsystem (System Design) “Contains”: Sometimes called “spatial aggregation” ... contains ... Example: A UML package contains another UML package Parent/child relationship: ... is father of ... ... is mother of ... Seniority: ... is older than ... ... is more experienced than ... April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Object Types Entity Objects: Represent the persistent information tracked by the system (Application domain objects, “Business objects”) Boundary Objects: Represent the interaction between the user and the system Control Objects: Represent the control tasks performed by the system April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Roles A role name is the name that uniquely identifies one end of an association. A role name is written next to the association line near the class that plays the role. April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Roles When do you use role names? Necessary for associations between two objects of the same class Also useful to distinguish between two associations between the same pair of classes When do you not use role names? If there is only a single association between a pair of distinct classes, the names of the classes serve as good role names April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Example of Role Problem Statement: A person assumes the role of repairer with respect to another person, who assumes the role of inspector with respect to the first person. Person Creates Workorders Person inspector repairperson April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Roles in Associations Client Role: An object that can operate upon other objects but that is never operated upon by other objects. Server Role: An object that never operates upon other objects. It is only operated upon by other objects. Agent Role: An object that can both operate upon other objects and be operated upon by other objects. An agent is usually created to do some work on behalf of an actor or another agent. April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Qualification The qualifier improves the information about the multiplicity of the association between the classes. It is used for reducing 1-to-many multiplicity to 1-1 multiplicity. Example: Without qualification, a directory has many files. A file belongs to only one directory. File filename 1 * Directory Directory filename 0..1 1 File With qualification: A directory has many files, each with a unique name. April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Software Lifecycle Activities Requirements Elicitation Requirements Analysis System Design Object Design Implemen- tation Testing Use Case Model Verified By Implemented By Realized By Structured By Expressed in Terms Of Application Domain Objects SubSystems Implementation Domain Objects class... Source Code Test Cases ? class.... April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing What is this? April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Erroneous State (“Error”) April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Algorithmic Fault April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Mechanical Fault April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Examples of Faults and Errors Faults in the Interface specification Mismatch between what the client needs and what the server offers Mismatch between requirements and implementation Algorithmic Faults Missing initialization Branching errors (too soon, too late) Missing test for nil Mechanical Faults (very hard to find) Documentation does not match actual conditions or operating procedures Errors Stress or overload errors Capacity or boundary errors Timing errors Throughput or performance errors April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

How do we deal with errors and faults? April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Verification? April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Modular Redundancy? April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Declaring the Bug as a Feature? April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Patching? April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Dealing with Errors Verification: Assumes hypothetical environment that does not match real environment Proof might be buggy (omits important constraints; simply wrong) Modular redundancy: Expensive Declaring a bug to be a “feature” Bad practice Patching Slows down performance Testing (this lecture) Testing is never good enough April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Another View on How to Deal with Errors Error prevention (before the system is released): Use good programming methodology to reduce complexity Use version control to prevent inconsistent system Apply verification to prevent algorithmic bugs Error detection (while system is running): Testing: Create failures in a planned way Debugging: Start with unplanned failures Monitoring: Deliver information about state. Find performance bugs Error recovery (recover from failure once the system is released): Modular redundancy Recovery blocks April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Some Observations It is impossible to completely test any nontrivial module or any system. Theoretical limitations: Halting problem Practical limitations: Prohibitive in time and cost Testing can only show the presence of bugs, not their absence (Dijkstra). April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Testing Takes Creativity Testing often viewed as dirty work. To develop an effective test, one must have: Detailed understanding of the system Knowledge of the testing techniques Skill to apply these techniques in an effective and efficient manner Testing is done best by independent testers. We often develop a certain mental attitude that the program should behave in a certain way when in fact it does not. Programmers often stick to the data set that makes the program work. "Don’t mess up my code!" A program often does not work when tried by somebody else. Don't let this be the end-user. April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

Fault Handling Techniques Fault Avoidance Fault Detection Fault Tolerance Design Methodology Verification Reviews Configuration Management Testing Debugging Modular Redundancy Component Testing Integration Testing System Testing Correctness Debugging Performance Debugging April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Component Testing Unit Testing: Individual subsystem Carried out by developers Goal: Confirm that subsystem is correctly coded and carries out the intended functionality Integration Testing: Groups of subsystems (collection of classes) and eventually the entire system Goal: Test the interfaces among the subsystems April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing System Testing System Testing: The entire system is tested Carried out by developers Goal: Determine if the system meets the requirements (functional and global) Acceptance Testing: Evaluates the system delivered by developers Carried out by the client. May involve executing typical transactions on site on a trial basis Goal: Demonstrate that the system meets customer requirements and is ready to use Implementation (Coding) and testing go hand in hand. April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing

CS410 – Software Engineering Lecture #10: UML II/Testing Unit Testing Informal: Incremental coding Static Analysis: Hand execution: Reading the source code Walk-Through (informal presentation to others) Code Inspection (formal presentation to others) Automated Tools checking for syntactic and semantic errors departure from coding standards Dynamic Analysis: Black-box testing (Test the input/output behavior) White-box testing (Test the internal logic of the subsystem or object) Data-structure based testing (Data types determine test cases) April 4, 2019 CS410 – Software Engineering Lecture #10: UML II/Testing