Inspection In The Software Development Industry Computer Science Essay

Published:

This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.

Quality is the main goal of every software development industry. The common observation is that there is no other effective method to enhance the quality other than lengthening the development cycle, increasing the development expenses, or both.

Releasing quality software services on fixed schedule and on budget is impossible. The limited check on software, shorter development cycles, and increase in software complexity ultimately leads to the decline in the quality of software. The economic impact from these defects is extremely high; software defects is the core reason of failure for mission-critical applications and causes damage to the users directly or indirectly related and even to the development company's business.

The software industry has long known that software inspection is an effective technique to eradicate defects that brings long-term benefits. Inspection succeeds because it detects and removes the errors early in the development process before the code reaches testing or deployment.

Automation is the use of tools, artifacts and strategies that plays a pivotal role in reducing the human involvement or interaction in repetitive or unskilled tasks. JTool, the automation software provides automation wizards and commands on its own apart from providing task record and re-play options. Using these programs one can record an IT or business related tasks. In addition to these, it can be used as the editor to edit the task, add new actions to ones task, use variables or prompt user for values and to even create an automation script from the beginning using GUI automation commands.

JTool, a team based solution automates and coordinates software control multiple coding standards across various projects.

1.2 Constraint satisfaction Definition:

"Constraint satisfaction in one line can be explained as the logical problem solving language to find solution by solving some conditions". It is used in conjunction with any programming language. The conditions must be satisfied by the variables we use and these conditions are called as constraints. One advantage of constraint satisfaction is generality; many previous attempts in program understanding could now be cast under same spectrum of heuristics, and thus be compared.

The problem is defines as a triple (X,D,C)

X=set of variable

D=domain of values

C=set of constraints

The evaluation v: X ->D satisfies the constraint

((x1 , … xn) , R) if (v(x1) , …,v(xn)) belongs to R

Problems based on constraints of a finite domain are generally solved using search criteria. The general forms of constraint satisfaction problem used are backtracking and local search. To make a given problem simple to solve the constraint propagation can be used along with search criteria.

Several types of constraint programming libraries used in this JTool.Since the programming language used here is java for the uses interface we use a constraint solving java class conMan.java .

1.3 BACK TRACKING:

Back Tracking is the process of finding the solution by trying the various available choices. If in case a particular choice is incorrect in a process, then the process is abandoned and starts from the other choice.

1.4 TESTING Vs INSPECTION:

Inspection is important right from the start of the project. The main objective of it is to find the defects at each phase.

Inspection will guarantee that requirements are testable and design is possible to implement.

When it comes to finding faults in the code it can be hard to choose between inspection and testing. It is much easier to find the flaws in code standards and traceability with inspection than it is with testing.

Inspection is also very important when it comes to debugging and finding what is wrong. This is because inspection will find the flaw in the code and testing will only find the failure.

Inspection can be effective when same method can be used on a lot of different documents and testing is effective when it comes to re-running the same test.

The people performing an inspection may not have the necessary knowledge about the product domain or they may be overloaded with data in the initial stages of the inspection etc while Testers don't have same problem because they have test cases to follow.

CHAPTER 2

AIMS AND OBJECTIVES:

In this project, we start from the scratch by analyzing what inspection actually is, its purposes, its scope and its usage.

Initially we try to understand about inspection and review the advancements made in this field.

We review the primitive tools used for software inspection and critically review their capabilities and shortcoming.

Further, we introduce solutions to the disadvantages faced by the primitive tools.

Finally we develop and evaluate the system.

The tool to be created is easy to use and is easily understood during the training period of the inspectors.

MOTIVATION

We as software engineers tend to create new softwares or tools for easy and better processing and maintenance of existing software. A lot of investment goes into each project undertaken. Hence, quality and time constraints come into picture without which the final outcome may not match the customer requirements. Moreover, manual inspection is time consuming and may not identify all the defects. An automated inspection technique is way more efficient, debugs large amount of code in a very short period of time and is result - oriented.

FEATURES

Inspection is the process of reviewing the software and checking for defects in paths not frequently executed but yet forms an ancillary part of the software.

Hence the aim and objectives include the following:

Errors must be rectified during the coding phase itself and generate warning messages for the same.

This prevents the high debugging and correction costs at the later phases of the project. Moreover, this reduces the time complexity later on where time taken for identify and debug errors can prove to be disastrous. Thus it must prove risk management.

It must identify complex constructs that appear in the software and provide techniques for simplifying the same.

Must provide complete optimization of the code written and identify sub-optimal code.

Must help improve the quality of the product and automatically assess the software reliability, maintenance and efficiency.

To reduce the cost of the initial stage of training for inspectors to a possible extent. Thus, it requires creating the tool which is easily understood.

It has built-in code standards which improves the code written by improving the quality and the extensibility. That is, the code can be re-used for other purposes. Moreover, it helps in creation of new and convenient rules.

Last but not the least, it can prove to be a powerful education tool which helps programmers improve their programming skills and assist them in identify errors while coding.

A key feature of this tool is that the code can be debugged in modules and finally these and be integrated.

It includes a feature called 'Filter' which indicates if the error pointed is a false positive or a true positive.

For code optimization, the code is debugged considering all possible paths that the program can take.

Research conducted by Capers Jones has proved that defects identified in the early phases of the development cycle are easy to handle and rectify. Therefore, JTool is created such that up to 96 % of the defects are identified and rectified at the initial stages.

THE TECHNIQUES INVOLVED

The tool involves certain techniques which make it automated and maintain a high efficiency and deep analysis of the software and easy identification of defects. The key techniques involved are:

The code analysis technique

Abstract interpretation technique

the code analysis technique

The first phase deals with a parse tree generation. When a program is given to the compiler, the first phase is the lexical analyzer, which divides the code into tokens and the second is the creation of an abstract syntax tree which identifies syntactical errors. In this all the structural information is modeled.

For example, if (a=b) then a=1 else b=1 condition is represented in the form of a tree with the parent node 'if' and the conditions and statements under it.

a=b is under the parent with the if-condition attribute.

a=1 is under attribute if - then

b=1 is under attribute else

The second phase deals with analyzing the control flow which deals with control structures and the data flow which deals with information flow .

Based on the complexity of the technique real time bugs can be identified.

The types of detects identifies

Structural errors can be easily identifies with this tool. There might be certain constructs which are to be used later on in the program . However , due to certain issues , if the construct is not executed , a bug is indicated. This is called a structural error. This includes

Dead code elimination

Wrong reallocation

Memory leakage

Uninitialized variables

Array out of bound access

Mishandled objects

SYSTEM REQUIREMENTS

Software requirements

The system used to run JTool on must have one of the following operating systems

-Windows XP/2000/NT/ME

- Sun Solaris 6.1

- RedHat Linux 6.1

- SuSE Linux 7

Hardware requirements

Pentium III processor - 800MHz or higher.

1GB RAM for faster processing of the tool.

20 GB HDD.

**JTool can operate in a standalone environment or can integrate with the following IDEs:

- Borland JBuilder

- Eclipse

- IBM WebSphere Studio

- IBM VisualAge for Java

- NetBeans

- Oracle9i JDeveloper

- Sun ONE Studio

CHAPTER 3

System Analysis

Inspection of software is considered as one of the most vital step in the development a project. The entire work done by a software developer is very legibly checked during this process. Basically the software Inspection is done manually, but by the development of this project it is made much easier and productive. The developer of a product doesn't sense the possible bugs that might be present and not visible and clearly enumerable, so the inspection needs to be there. Discussing about the software inspection techniques, we need to have a broad look at how software inspection used to be done. The Traditional Software inspection methods and the current Automated Software Inspection is clearly described.

Traditional Software Inspection includes manually checking the whole code and testing whether it is generic or not. It is a long going process. The development of the project lies in one end and the Inspection of code is at the other end. Many companies even don't spend much time and resources in doing so. There might be billions of lines of code that need to be inspected for a huge project and its going to be time consuming and hectic task. The software Inspection includes three types of inspection in involving:

i. Formal Inspection.

ii .Independent code reviews.

iii. Automated software inspection (The proposed approach).

Formal Inspection:

The formal inspection is the process of inspection the project during all the levels of the project development starting from the requirement level through the architecture and the design levels. There are certain steps in the formal inspection of code. They comprise planning, overview, preparation, inspection meeting, Rework and Follow up.

The planning comprises of confirming material to be inspected meeting entry criteria, arranging the availability of appropriate participants and scheduling a meeting place and time.

The Overview comprises educating the group of participants in what is being inspected at that time and assigning inspection roles to the participants that are participating in the inspection process.

During the Preparation phase the participants are separately made learn the material and find potential defects in that software.

In Inspection meeting the participants come to a group and discuss the potential defects that have come across in the Inspecting a particular code. The defects are discussed in a group and accordingly grouped into certain categories in the decision of the group and the group leader.

The Rework phase consists of rectifying the potential defects that have come across during the process.

In the Follow-up phase the moderator or the entire team verifies the rework done and verifies that there are no potential bugs in the code. The code after this process is considered as pure code and no more bugs are crept in it.

But there are certain defects considering the Formal Inspection of a software code. Here as the Inspection of the software is done individually, the mistake done by a particular individual is carried out during the entire process. The manual inspection of entire process is not that much advisable.

Independent Code review:

In this type of software Inspection the code is rather divided to modules and each representative taking part in the Inspection process are given a certain part of code.

Code is checked for poor structure, buffer overflows, inadequate or inaccurate comments, and other security flaws. The comments regarding the flaws that had been encountered are clearly logged.

The task that is going on is regularly updated to the manager, other higher officials that are involved in the process.

The Management does not involve in the review process other than making sure that the process is done.

There might be certain amount of bugs that are not found in the review process, the bugs of such kind are finally fixed and the outcome is thoroughly verified by the manager.

But, there are certain defects during this type of software Inspection also. The representatives who take part in the inspection of a particular amount of code may not check the code precisely and finally leading to bug creeping in the software. Hence, after the code is being inspected also there are potential bugs in the software which may finally lead to entire depreciation of the quality of the entire project.

Automated Software Inspection (The Proposed approach):

The Automating the entire process of software Inspection comes under this proposed approach. Basically the need for this automated approach not only comes due to the flaws in the above mentioned types, but also to make the inspection of a Software project faster.

The efficiency of the Automated Software Inspection tool like JTool (The Proposed model) is comparatively much higher compared to that of the manual approach because the probability of making mistakes is much higher for mankind compared to that of the machines. Machines do make mistakes, but the probability is rather low compared to that of manual tools.

The model overcomes the potential risks in the previous models by self disintegrating the entire modules and checking the modules for errors or bugs and again integrating the modules after correcting the obstacles or bugs.

The process of bug rectifying is much faster as the system itself moulds according to the bugs raised.

The negotiations' regarding the project bugs are made by the tool itself and keeps a log record of all the bugs that have encountered and the way they are rectified. The final output is very clearly documented automatically.

CHAPTER -4

SOFTWARE TOOLS DISCUSSION

OVERVIEW:

As we see most of the applications we develop today are written in java, this tool (JTOOL) provides a greater feasibility in inspection during the coding stage. The Quality of Software can be effectively controlled during the coding stage. Static Analysis which refers to the analysis of source code before compilation can lead to greatly increased developer productivity and increased software quality. This process of Static Analysis should be a part of all quality software development.

JTOOL:

JTOOL for Java is a comprehensive and an advanced visual software inspection. This is a quality analysis tool based on static Analysis. JTOOL can automatically inspect Java source code before compilation and also provides real-time feedback. JTOOL allows developers to produce higher quality code more quickly and with fewer defects.

FEATURES OF JTOOL:

ERROR DETECTION:

It is a known fact that Problems identified during coding are much easier to correct than if discovered during the testing stage. JTOOL identifies software defects, potential bugs and misuse of the java language.

CONSTRUCT ANALYSIS:

We know that complex code constructs are hard to test and maintain. JTOOL can identify complex code constructs and can indicate guidelines for improvement.

OPTIMIZATION:

JTOOL can identify sub optimal code structures and suggests alternatives. JTOOL comes with a set of easy and good programming practices that can be enforced automatically.

STANDARDS ENFORCEMENT:

We know that coding standards can improve software quality, increase extensibility and makes maintenance easier. JTOOL has a built in coding standards which can be configured and automatically enforced. JTOOL also supports the creation of new tools.

QUALITY ASSESSMENT:

JTOOL can automatically assess software reliability, efficiency and maintainability.

EDUCATION:

JTOOL is an educational aid as well as quality control tool. Beginners will find JTOOL useful to help improve their programming skills during coding.

JTOOL supports JRE 1.2, 1.3 and 1.4 on the following platforms:

- Windows XP/2000/NT/ME

- Sun Solaris 6.1

- RedHat Linux 6.1

- Linux 7

To develop a java application we need an Integrated Development Environment (IDE). Lots of Integrated Development Environments are there to develop a java application. In this project "AUTOMATING SOFTWARE INSPECTION-JTOOL" , we are using NetBeans IDE.

NetBeans Architecture:

NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment (IDE) for developing with Java, JavaScript, PHP, Python, Ruby, C, C++ and others.

The NetBeans IDE is written in Java and runs everywhere where a JVM is installed, including Windows, Mac OS, Linux, and Solaris. A JDK is required for Java development functionality, but is not required for development in other programming languages.

The NetBeans Platform allows applications to be developed from a set of modular software components called modules. Applications based on the NetBeans platform can be extended by third party developers.

Different NetBeans IDE versions are available in the market. We use NetBeans IDE 6.8 in our project which is the first IDE to provide complete support of Java EE 6 , and Spring Framework 3.0 and also added support for easier code navigation, formatting hints, and refactoring across several languages.

SUMMARY:

Software failures are expensive and time consuming to detect, cause significant damage to the users directly or indirectly related and even to the development company's business.

JTool,the automated software is a team based solution automates and coordinates software control multiple coding standards across various projects.

When it comes to improving quality assurance and testing for applications, including ASI early in the development process will result in significant cost savings. This is an area where outsourcing inspection to a reliable inspection organization will yield proper returns.

Reasoning is easily employed early in the development process, before the application is run. It finds faults at source code level and indicates their exact locations.

Combined with conventional testing, automation software inspection will allow software projects to obtain the advantage of the traditional and newer methods in a proper proposition and cost effective way.

APPENDICES

INTIAL PROJECT PROPOSAL:

Key Techniques

Constraint satisfaction, good Java programming.

Background:

The automation software helps to JTool, the automation software provides automation wizards and commands on its own apart from providing task record and re-play options. Using these programs one can record an IT or business related tasks. In addition to these, it can be used as the editor to edit the task, add new actions to ones task, use variables or prompt user for values and to even create an automation script from the beginning using GUI automation commands.

Aims

• To gain an understanding of Constraint Satisfaction.

• To gain an understanding of a Constraint Satisfaction tool.

• To design, implement automation software.

• To document the work carried out.

CHAPTER 2

The initial parameters considered

AIMS AND OBJECTIVES:

In this project, we start from the scratch by analyzing what inspection actually is, its purposes, its scope and its usage.

Initially we try to understand about inspection and review the advancements made in this field.

We review the primitive tools used for software inspection and critically review their capabilities and shortcoming.

Further, we introduce solutions to the disadvantages faced by the primitive tools.

Finally we develop and evaluate the system.

The tool to be created is easy to use and is easily understood during the training period of the inspectors.

MOTIVATION

We as software engineers tend to create new softwares or tools for easy and better processing and maintenance of existing software. A lot of investment goes into each project undertaken. Hence, quality and time constraints come into picture without which the final outcome may not match the customer requirements. Moreover, manual inspection is time consuming and may not identify all the defects. An automated inspection technique is way more efficient, debugs large amount of code in a very short period of time and is result - oriented.

FEATURES

Inspection is the process of reviewing the software and checking for defects in paths not frequently executed but yet forms an ancillary part of the software.

Hence the aim and objectives include the following:

Errors must be rectified during the coding phase itself and generate warning messages for the same.

This prevents the high debugging and correction costs at the later phases of the project. Moreover, this reduces the time complexity later on where time taken for identify and debug errors can prove to be disastrous. Thus it must prove risk management.

It must identify complex constructs that appear in the software and provide techniques for simplifying the same.

Must provide complete optimization of the code written and identify sub-optimal code.

Must help improve the quality of the product and automatically assess the software reliability, maintenance and efficiency.

To reduce the cost of the initial stage of training for inspectors to a possible extent. Thus, it requires creating the tool which is easily understood.

It has built-in code standards which improves the code written by improving the quality and the extensibility. That is, the code can be re-used for other purposes. Moreover, it helps in creation of new and convenient rules.

Last but not the least, it can prove to be a powerful education tool which helps programmers improve their programming skills and assist them in identify errors while coding.

A key feature of this tool is that the code can be debugged in modules and finally these and be integrated.

It includes a feature called 'Filter' which indicates if the error pointed is a false positive or a true positive.

For code optimization, the code is debugged considering all possible paths that the program can take.

Research conducted by Capers Jones has proved that defects identified in the early phases of the development cycle are easy to handle and rectify. Therefore, JTool is created such that up to 96 % of the defects are identified and rectified at the initial stages.

THE TECHNIQUES INVOLVED

The tool involves certain techniques which make it automated and maintain a high efficiency and deep analysis of the software and easy identification of defects. The key techniques involved are:

The code analysis technique

Abstract interpretation technique

the code analysis technique

The first phase deals with a parse tree generation. When a program is given to the compiler, the first phase is the lexical analyzer, which divides the code into tokens and the second is the creation of an abstract syntax tree which identifies syntactical errors. In this all the structural information is modeled.

For example, if (a=b) then a=1 else b=1 condition is represented in the form of a tree with the parent node 'if' and the conditions and statements under it.

a=b is under the parent with the if-condition attribute.

a=1 is under attribute if - then

b=1 is under attribute else

The second phase deals with analyzing the control flow which deals with control structures and the data flow which deals with information flow .

Based on the complexity of the technique real time bugs can be identified.

The types of detects identifies

Structural errors can be easily identifies with this tool. There might be certain constructs which are to be used later on in the program . However , due to certain issues , if the construct is not executed , a bug is indicated. This is called a structural error. This includes

Dead code elimination

Wrong reallocation

Memory leakage

Uninitialized variables

Array out of bound access

Mishandled objects

SYSTEM REQUIREMENTS

Software requirements

The system used to run JTool on must have one of the following operating systems

-Windows XP/2000/NT/ME

- Sun Solaris 6.1

- RedHat Linux 6.1

- SuSE Linux 7

Hardware requirements

Pentium III processor - 800MHz or higher.

1GB RAM for faster processing of the tool.

20 GB HDD.

**JTool can operate in a standalone environment or can integrate with the following IDEs:

- Borland JBuilder

- Eclipse

- IBM WebSphere Studio

- IBM VisualAge for Java

- NetBeans

- Oracle9i JDeveloper

- Sun ONE Studio

SYSTEM DESIGN

JTool is an effective tool which identifies bugs at compile time.

JTool supports over 200 rules and few of these are used to create customized rules.

It enables users to create their own rules using open pad PMD. Hence, there is no restriction on the number of rules.

The parent class library it uses is 'Tool' which has various packages under it .

Some of the classes which can be implemented are ApplicationGUI.java , DataCal.java , CodeSolver.java and utility.java , reviewController.java , inspectionResult.java .

ApplicationGUI.java contains methods for displaying the user interface elements like buttons etc .

CodeSolver.java takes care of identifying solutions to the defects detected.

inspectionResult.java identifies the errors in the code and handles them accordingly.

reviewController.java takes care of the integration of the overall management of the inspection from the GUI to the result.

For constraint management , a class called conMan.java is used.

PROBLEMS IDENTIFIED AND THE PROPOSED SOLUTIONS

Generally, most of the automated tools created are system specific or program specific . This has created havoc when these are used with those projects which aren't compatible with the tool.

To rectify this problem JTool , since it is developed in Java has can advantage of being platform independent and is thus portable. The advised operating systems are mentioned in the system requirements but this isn't a constraint as it can run on any system which has the JVM installed.

One other advantage of this tool is that the rules aren't only pre-defined but also user-defined. Any number of new rules can be created and implemented by the users.

Moreover , since NetBeans IDE is used in it , the inspection can be done in modules. That is , the code to be inspected can be broken into modules and inspected separately. This , reduces the time required and the efficiency .

Writing Services

Essay Writing
Service

Find out how the very best essay writing service can help you accomplish more and achieve higher marks today.

Assignment Writing Service

From complicated assignments to tricky tasks, our experts can tackle virtually any question thrown at them.

Dissertation Writing Service

A dissertation (also known as a thesis or research project) is probably the most important piece of work for any student! From full dissertations to individual chapters, we’re on hand to support you.

Coursework Writing Service

Our expert qualified writers can help you get your coursework right first time, every time.

Dissertation Proposal Service

The first step to completing a dissertation is to create a proposal that talks about what you wish to do. Our experts can design suitable methodologies - perfect to help you get started with a dissertation.

Report Writing
Service

Reports for any audience. Perfectly structured, professionally written, and tailored to suit your exact requirements.

Essay Skeleton Answer Service

If you’re just looking for some help to get started on an essay, our outline service provides you with a perfect essay plan.

Marking & Proofreading Service

Not sure if your work is hitting the mark? Struggling to get feedback from your lecturer? Our premium marking service was created just for you - get the feedback you deserve now.

Exam Revision
Service

Exams can be one of the most stressful experiences you’ll ever have! Revision is key, and we’re here to help. With custom created revision notes and exam answers, you’ll never feel underprepared again.