Technical Articles
Portal Home  |  Outer Space  |  SankhyaTechnologiesHome  |  Publish (Secure)  |  Create

Close

Please submit the following details. This information will be displayed on your site. Items marked * are required.

Contact Information                        Bill To: Check Here if same as Contact Information
*Name :
*Organization :
*Address :
*City :
*Country :
*Phone :
*Email ID:
  
*Business Title :
About Us :
*Name :
*Organization :
*Address :
*City :
*Country :
*Phone :
*Email ID:
  
SignUp Fees : Rupees Dollars
Signup Fee:
Annual Charges :
Signup Fee:
Annual Charges :
Enter Coupon :   
I authorize you to bill me to the above address and mail the subscription details. I accept the Terms and Conditions of hamara.in.

Hamara Spaces - SankhyaTechnologies- TechnicalArticles

tweet this    share this      

ActivityMonitoringAnalysis
ApplicationChain
CInputOutputLibrary
DistributedFaultTolerance
DynamicProgramming
EclipseUMLConcepts
GridComputing
L01SmartSitePublishing
L02SmartSitePublishing
L03SmartSitePublishing
L04SmartSitePublishing
LinuxResources
ModelDrivenTransformation
ObjectFileFormat
ProcessDocumentation
ProductDataManagement
SoftwareDebugging_1
SoftwareDebugging_2
WhatIsCORBA
AutovalTraining.pdf
IAmALightPole.pdf
stf-r-abstraction.pdf

The Art of Computer Software Debugging

Part-1 | Part-2

Introduction

A large percentage of all software engineers maintain programs. They have to routinely deal with poorly written programs that are bloated and twisted out of shape over years of maintenance, absence of any documentation and even worse, misleading documentation.

While most engineers do a good job of maintaining software, there is always a minority that excel at maintaining software developed by others ! There appears to be a silent process at work, when such an engineer looks at a defect description and starts to identify what is wrong with the system. A clear understanding of this process will certainly make it easier to break down the debugging process into a sequence of well defined steps.

What is Debugging ?

Debugging (in the context of software engineering) refers to the process of identifying the cause for defective behavior of a system and addressing that problem. In less complex terms - fixing a bug. A significant percentage of all the time spent on maintenance is often spent on debugging activities.

Life Cycle of a Debugging Task

Let us assume that a defect has been identified in a software system, here are roughly the various steps involved in debugging:

a) Defect Identification/Confirmation
  1. A problem is identified in a system and a defect report created
  2. Defect assigned to a software engineer
  3. The engineer analyzes the defect report, performing the following actions:
    1. What is the expected/desired behavior of the system ?
    2. What is the actual behavior ?
    3. Is this really a defect in the system ?
    4. Can the defect be reproduced ? [While many times, confirming a defect is straight forward, there will be defects that often exhibit quantum behavior, we will discuss those in a separate article]
b) Defect Analysis

Assuming that the software engineer concludes that the defect is genuine, the focus shifts to understanding the root cause of the problem. This is often the most challenging step in any debugging task, particularly when the software engineer is debugging complex software.

Many engineers debug by starting a debugging tool, generally a debugger and try to understand the root cause of the problem by following the execution of the program step-by-step. This approach may eventually yield success. However, in many situations, takes too much time, and in some cases is not feasible, either due to the complex nature of the program(s).

c) Defect Resolution

Once the root cause of a problem is identified, the defect can then be resolved by making an appropriate change to the system, which fixes the root cause. [we will revisit this in the future]

Defect Analysis Revisited

Let us now define a few terms more formally:

Expected Behavior
The ideal behavior of the system when it encounters a set of inputs.
Actual Behavior
The actual behavior of the system when it encounters a set of inputs.
Defective Behavior
A system shows a defective behavior, when the actual behavior deviates from the expected behavior.
Root Cause of the Problem
The earliest instant when a defective system deviates from the expected behavior. Often, it may take some more time before such deviation becomes observable to the user of a system.
Root Cause Analysis
Root Cause Analysis, is the process of identifying the root cause of a problem.

It now becomes clear that defect analysis basically consists of root cause analysis.

[We will discuss defect analysis in more detail in

part-2

of this article.]

Published On : .

Content published for public or private access is the sole responsibility of the person who originated such Content. Hamara may not monitor or control or endorse the Content published in the space or the channels and cannot take any responsibility for such Content. Please read the terms & conditions of use carefully before using the site.
If you find any harmful, annoying, or illegal content in Hamara.in, please write to info@hamara.in with Subject: REPORT CONTENT - REQUEST REMOVAL