Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

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.
EEE 243B Applied Computer Programming Software engineering Life cycle and when to test.
1 Integration Testing CS 4311 I. Burnstein. Practical Software Testing, Springer-Verlag, 2003.
System/Software Testing Error detection and removal determine level of reliability well-planned procedure - Test Cases done by independent quality assurance.
Lecture # 2 : Process Models
Design Concepts and Principles
November 2005J. B. Wordsworth: J5DAMQVT1 Design and Method Quality, Verification, and Testing.
© 2005 Prentice Hall3-1 Stumpf and Teague Object-Oriented Systems Analysis and Design with UML.
Illinois Institute of Technology
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne, office K115A. –
Chapter 1 Principles of Programming and Software Engineering.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Testing & Strategies
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Introduction to Computer Technology
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Software.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system design 1 what is systems design? preparation of the system’s specifications with.
12.
CCSB223/SAD/CHAPTER141 Chapter 14 Implementing and Maintaining the System.
1 Shawlands Academy Higher Computing Software Development Unit.
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.
Ch6: Software Verification. 1 Decision table based testing  Applicability:  Spec. is described by a decision table.  Tables describe:  How combinations.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
SOFTWARE DESIGN.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
SE: CHAPTER 7 Writing The Program
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
The Software Development Process
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.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
© 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.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Software Engineering Saeed Akhtar The University of Lahore.
Software Testing and Quality Assurance 1. What is the objectives of Software Testing?
Software Development Life Cycle (SDLC)
CS451 Software Implementation and Integration Yugi Lee STB #555 (816) Note: This lecture was designed.
Chapter 1 Software Engineering Principles. Problem analysis Requirements elicitation Software specification High- and low-level design Implementation.
1 Object-Oriented Analysis and Design with the Unified Process Figure 13-1 Implementation discipline activities.
OOAD UNIT V B RAVINDER REDDY PROFESSOR DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING.
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.
C++ for Engineers and Scientists, Second Edition 1 Problem Solution and Software Development Software development procedure: method for solving problems.
CS 325: Software Engineering February 16, 2016 Designing a Design Class Diagram Design Class Diagrams DCD: Restaurant Example DCD: ATM Example Software.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
CS646: Software Design and Architectures Introduction and Overview †  Definitions.  The general design process.  A context for design: the waterfall.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
1 slc5 TTYP – C++ revisited 1 Which of the following statements are reasonable after the following statement: char* fred = new char[5]; a. fred = bill;
 System Requirement Specification and System Planning.
Principles of Programming & Software Engineering
Software Testing.
Software Testing Techniques
Unit# 9: Computer Program Development
Qbasic Modular Programming.
Static Testing Static testing refers to testing that takes place without Execution - examining and reviewing it. Dynamic Testing Dynamic testing is what.
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Stumpf and Teague Object-Oriented Systems Analysis and Design with UML
What Is Good Software(Program)?
Software Development Chapter 1.
Presentation transcript:

Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing

Software Engineering Software crisis: –Arose from the rapid increase in the size and complexity of computer applications. Software engineering: –Evolved in response to the problems of cost, productivity, and reliability of large and complex software systems. –Definition: The application of engineering (systematic, disciplined, quantifiable) approach to the development, operation, and maintenance of software

Waterfall Software Life-Cycle Model What to do How to do Look at the system from the point of view of the end user Written from the point of view of system developers and programmers Outlines the most significant characteristics, the most important data structures and algorithms, modules or objects Coding and preliminary testing Several levels of testing for individual parts, communication between the parts, and the entire system Corrective, perfective, adaptive, and enhancement maintenance

System Specifications The specifications –must contain a complete description of all of the functions and constraints of the desired system, the performance needed from the system, and the interaction between the software and the users –must be clearly and precisely written –must be consistent –contain all of the information needed to write and test the software

Sample Specifications Format of the input Lexical rules for labels Content of the input Context-dependent restrictions Implementation restriction Form and content of the output Output condition Constraints on the output values Efficiency Ease of use Reliability

Decision Table Specification for Combinations of Conditions

Error Conditions Effective handling of error conditions is essential to the creation of a usable software product. –Ignore the error and continue normally –Abort or halt with no output –Issue an error message and continue processing A program should not “crash” when presented with any input –Garbage In---Meaningful Error Messages Out

Data Flow Diagrams

Top-Down Design of Data Flow Diagram

Principles of Modular Design Meet the system specifications Easy to implement, understand, and maintain Have high cohesion within a module Have low coupling between different modules

Modular Design as a Partitioning of Data Flow Diagram

Minimization of Coupling between Modules

Modularized Assembler Design

Calling Structure for Modules

Parameters and Calling Sequence for Modules

Object-Oriented Design of an Assembler

System Testing Unit testing –Individual modules are tested in isolation from the rest of the system –Black box testing Test cases are generated from the specifications for the module –White box testing Test cases are designed that force the module through certain statements Integration testing –Interfaces between modules are tested via an incremental approach Bottom-up ordering Top-down ordering System testing –Entire system are tested to verify that it meets all of the requirements and specifications –Alpha testing Performed by the organization that developed the system, before it is released to any outside users. –Beta testing Placing the system into actual use in a limited number of environments –Acceptance testing Performed by the customers to decide whether or not to accept delivery of the system

Bottom-Up Testing Bottom-up testing begins with passive objects that do not invoke methods on other objects. The sequence continues with other objects that invoke methods only on objects that have already been tested. It is necessary to simulate the remainder of the system by writing test driver program for each module.

Top-Down Testing Modules are unit tested and integrated into partial systems beginning at the highest level of the hierarchical structure. During the top-down testing, we must simulate the presence of lower-level modules by writing stubs.