Configuring the Software Development Process on Linux Arthur Hicken Parasoft Corporation

Slides:



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

Making the System Operational
Project Management and Software Quality See accompanying Word file “Software PM tools 3”
Verification and Validation
McGraw-Hill/Irwin © 2006 The McGraw-Hill Companies, Inc. All rights reserved BUSINESS DRIVEN TECHNOLOGY Chapter Nineteen: Building Software to Support.
Chapter 4 Quality Assurance in Context
Software Architecture Prof.Dr.ir. F. Gielen
CLEANROOM SOFTWARE ENGINEERING
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
Documentation Testing
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
SYSchange for z/OS By Pristine Software April 2009 Thomas Phillips April 2009 SYSchange Pristine Software.
(c) 2007 Mauro Pezzè & Michal Young Ch 1, slide 1 Software Test and Analysis in a Nutshell.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
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.
Introduction to Software Testing
Software Testing & Strategies
CHAPTER 19 Building Software.
Functional Testing Test cases derived from requirements specification document – Black box testing – Independent testers – Test both valid and invalid.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 24 Slide 1 Critical Systems Validation 1.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
CCSB223/SAD/CHAPTER141 Chapter 14 Implementing and Maintaining the System.
Extreme Programming Software Development Written by Sanjay Kumar.
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Project Management Development & developers
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation.
Chapter 2 The process Process, Methods, and Tools
CLEANROOM SOFTWARE ENGINEERING.
© 2012 IBM Corporation Rational Insight | Back to Basis Series Chao Zhang Unit Testing.
Software Project Failure Software Project Failure Night Two, Part One CSCI 521 Software Project Management.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
Principles of Information Systems, Sixth Edition Systems Design, Implementation, Maintenance, and Review Chapter 13.
Service Transition & Planning Service Validation & Testing
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 23 Reliability III.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
LESSON 3. Properties of Well-Engineered Software The attributes or properties of a software product are characteristics displayed by the product once.
Chapter 8 Lecture 1 Software Testing. Program testing Testing is intended to show that a program does what it is intended to do and to discover program.
Principles of Information Systems, Sixth Edition 1 Systems Design, Implementation, Maintenance, and Review Chapter 13.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Software Quality Assurance SOFTWARE DEFECT. Defect Repair Defect Repair is a process of repairing the defective part or replacing it, as needed. For example,
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Test Plan: Introduction o Primary focus: developer testing –Implementation phase –Release testing –Maintenance and enhancement o Secondary focus: formal.
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.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
T EST T OOLS U NIT VI This unit contains the overview of the test tools. Also prerequisites for applying these tools, tools selection and implementation.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Parasoft : Improving Productivity in IT Organizations David McCaw.
Test Automation Steffen Goerlitz Barry Lange Mitchell Meerman Harry Schultz Trevor Spees.
Tool Support for Testing Classify different types of test tools according to their purpose Explain the benefits of using test tools.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVII. Verification and Validation.
CSC 480 Software Engineering
Chapter 9, Testing.
Lecture 09:Software Testing
Verification and Validation Unit Testing
Critical Systems Validation
Baisc Of Software Testing
Presentation transcript:

Configuring the Software Development Process on Linux Arthur Hicken Parasoft Corporation

Why Modify Your Development Process? Current industry trends are forcing companies to turn out applications in 2- 3 months If you don’t have an effective development process, you will not survive

Goals of This Presentation 1.Demonstrate the necessity of configuring a development process that effectively prevents errors 2.Describe what such a development process should look like 3.Discuss how tools fit into this development process –Describe what commercial and public domain tools help you perform each step or assess readiness to progress, –Explain how to effectively configure public domain tools

Error Prevention Errors are not inevitable Errors occur because of bad coding and development practices Examples in C++ and Java Preventing errors results in a higher- quality product than introducing errors, then trying to find and remove them

Example 1 IBM Study “Projects that aim from the beginning at achieving the shortest possible schedules regardless of quality considerations tend to have fairly high frequencies of both schedule and cost overruns. Software projects that aim initially at achieving the highest possible levels of quality and reliability tend to have the best schedule adherence records, the highest productivity, and even the best marketplace success.”* * Jones, Capers. Programming Productivity. New York: McGraw-Hill, 1986.

Example 2 W. Edwards Deming: Use statistical quality control to build quality into product-- implement a process that prevents errors, rather than focus on the product itself (Total Quality Control) In the 1970s, American auto manufacturers’ failure to focus on process and error prevention prevented them from improving product quality –They assumed defects were inevitable and did not try to stop causing defects –Instead, they tried to remove existing defects –Manufacturers failed to significantly reduce the number of product defects

Development Process Customers Development teams Methodology Practices Tools

Methodologies Waterfall Spiral RAD eXtreme programming

Practices Certain practices are universally acknowledged as beneficial, regardless of development methodology Code construction –Coding standards, code reviews, unit and application testing –Debugging support: firewalls, debugging information and debugging methods Source monitoring –Source control, automated and regular builds, bug tracking, automatic error detection, metrics

Coding Standards Standard code formatting Standard coding constructs –Beyond syntactically permissible –Standardized practices Coding standards promote… –A reduced chance of introducing defects –A reduced chance that defects will go unnoticed during code review –Enhanced communication through the code –Increased efficiency

Source Control Central repository for the entire source base Provide a record of the evolution of the source base –Who, when, why Reduce the risk of change –Recovering older, more stable version –Cheaper to try different approaches Facilitate group access to a common source base –Network, remote access Source tagging –Named collection of sources

Automated Builds Minimize the overhead in assembling the application pieces Identify certain classes of interface errors Promote frequent builds of the entire application Provide the basis for automated regular testing at the application level

Unit Testing Write the test before the code! Use the tests to document the behavior of the object Guaranteed maintenance of the test suite along with the code Thoroughly test the entire publicly accessible interface Test the boundary conditions –Out of range arguments, typos, NULL objects, numbers that are too big or too small

Unit Testing - Continued Unit testing provides… –Increased confidence that the unit is performing as expected –Continuous assessment of the quality of the code –Early detection of incompatible changes Helps minimize the risk of change by providing a means of verifying correctness and detecting fault

Application Testing Functional tests document the expected application behavior Necessary for assessing… –Overall application behavior –Unit integration –Performance –Resource requirements

Regression Tests Non-trivial applications have non-local defects Repairing a defect sometimes disturbs a sizeable portion of the system Regression tests… – Provide a warning system against non-local defects –Shield against poor understanding of application behavior by the maintainer A defect is not repaired until a test case that detects its presence is placed in the regression test suite

Additional Testing In-house testing Beta cycles Release candidates

Bug Tracking Ensure appropriate people are notified of problems Facilitate bug reporting Correlate bugs to source versions Facilitate tracking of individual problems Defect counts and defect rates are fundamental quality metrics

Code Reviews Promote collective ownership of the code Distribute the knowledge about the implementation details to the team Allow more experienced developers to share know-how Most importantly, code reviews are a very effective way to detect defects

Debugging Support Add logic for pre-conditions and post- conditions Retain the code fragments used to exercise the code during debugging sessions Write routines specifically for use during debugging –Expensive data structure validations –Multi-object interrelations –Detailed examination of memory owned by an object

Automatic Error Detection Simplest way to detect defects Works well with automatic application builds and test suites Some tools can generate test cases automatically

Coverage Analysis Measures the fraction of the application code that has been exercised Uncovers certain types of defects Provides a metric of the thoroughness of test suites

Development Tools for Linux Free Commercial

Version Control CVS –Download from Present in most Linux distributions Reads and writes a standard file format

GNATS Download from Installation requirements: Root access GNU m4 installed Easily customizable Integration with emacs

Bugzilla Download from Web-enabled

Unit Testing Tools Types of tools available: Integrated Task-specific Perform black-box, white-box and/or regression testing Various degrees of automation

Unit Testing Tools Look at: –Ease of use –Degree of automation Builds harness automatically Creates test cases automatically Automatically generates stubs –Customizability –Variety of tests performed –Coverage of automatic tests

Automatic Runtime Error Detection Tools Look at: –Technology that drives the error detection –Number and types of errors found –Ability to detect errors in threads –Precision of error messages –Memory areas in which it finds errors

ElectricFence Available in most Linux distributions Detects two kinds of dynamic memory misuses: –Out-of-bounds accesses –Accesses to de-allocated memory

Memory Profiling Tools Look at: –Types of reports available –Real-time profiling

Coverage Analysis Tools Look at: –Testing method (by block or by line) –How it works with your other tools

Conclusions Survival requires a development process that promotes shipping reliable applications as rapidly as possible Tools– both freely available and commercial– are critical to maintaining such a development process As the confidence of tool vendors in Linux increases, more specialized development tools should become available