Coding

exilant.com

Coding

Software Development

A Tool Driven Approach

27-Aug-2011


Requirements to Release Automation

Requirement

Analysis &

Design

Coding

(Eclipse)

Build

Testing

Requirements

Coding

(Eclipse)

Hudson

JUnit

JIRA

SVN

Maven

Automated

iQA

Radar

Crucible

Deployment

Performance

Testing

2


JIRA Workflow

Business Requirements

• Documents requirements

• Organize tasks for Releases

JIRA

• Continuous Progress tracking

• Integration with Dev. Tools ( SVN, Crucible)

SVN

Crucible

Progress

Tracking

Backlog

Prioritization

Collaboration/

Discussion

Development

Reviewer

App Owner / Manager

3


Requirement

Analysis &

Design

Requirements Tracking using JIRA

Traditional Task Tracking

Tracking using JIRA

3

Uses stand alone tools like Fast

track Scheduler

Usually a one time task in the

beginning of project

Does not show the actual

progress unless manually

entered

Allows collaboration

Drag & Drop Prioritization

Uses Virtual Index Cards to

capture requirements, tasks

Ability to link requirement to source

code in SVN

Ability to integrate Crucible with

JIRA for code review information

4


Continuous Integration

Continuous Integration, referred as CI, is a continuous

process of applying quality control on small pieces of

development effort on a frequent basis

Improve the quality of software

Reducing time taken to deliver

Replacing the traditional practice of

applying quality control after completing

all development

Integration of Source Code

Execution of tests after each Commit of

code to SVN repository

Proving immediate feedback to

development team

Involves integrating early and often, as

to avoid the pitfalls of integration

3

5


CI Workflow

Developers check in new or modified code

into the SVN repository (CI server creates a

dedicated workspace for each project)

Retrieve sources from the repository into the

workspace

Executes Unit Test Cases

Runs Test Coverage tool

Runs Code Review tool

Executes functional test cases using

Automation Tool

Pushes the latest build in the defined

Environment

The CI server executes the build process

on the newly created or refreshed

workspace

Registered individuals can be notified by

email on the build status

3

6


Continuous Integration:

Tools & Benefits

Automated Build Systems

Minimizes integration risk

Code Coverage / Unit Test

Configuration Management

Build / Deployment Servers

Centralized, repeatable /

re-creatable 3builds

Supports Test Driven

Development

Easier defect diagnosis

Better Build & Release

Management

7


Test Driven Development

Development driven by repeated unit testing of code to

ensure Quality

Best Practices

Writing tests for failed cases

Writing enough code to pass

Re-factoring

Executing tests again

Repeating until software meets goal

Writing new code only when tests are failing

Bug is an indicator of missing test case

3

Benefits

Fewer bugs, less time debugging

Confidence to re-factor

Executable Documentation

Validation

Reducing number of iterations

8


Code Coverage

Measures the degree of which source code testing

Benefits

Code or Test Coverage is the process, which

provides detailed statistics of number of lines of

code executed by automated test suite on the

latest code base

Measures different coverage accomplished for:

Statement Coverage

Branch Coverage

Helps in determining whether the test suite is

adequate

Helps in finding redundant test cases

Helps in finding the regions of code that are not

executed

Determines cyclomatic complexity

Reduce the overall testing and iterations

3

9


Tool Based Code Review

Ensures code follow standards and meets the agreed

requirements

Checks class design

problems, duplicate

code, or bug patterns

like double checked

locking

Helps developer to

adhere to a coding

standard

3

Static Analysis tool to find

bug in Java code based on

the bug pattern

Bug pattern arise due to:

o Difficult language features

o Misunderstood API methods

o Misunderstood invariants when

code is modified during

maintenance

o Typos, use of the wrong

Boolean operator

Empty

try/catch/finally/switch

statements

Dead code, Suboptimal

code

Overcomplicated

expressions

Duplicate code

10


Code Review using

&

Simple & Fast Review

Configure roles - Moderator, Author and Reviewer

Iterative Reviews – Tracks changes to code with review comments

Integration with Eclipse, FishEye, JIRA, CVS, SVN

Inline Comments & Threaded Review Comments

11


Build Automation with Hudson & Maven

Hudson provides an easy-to-use

continuous integration system,

making it easier for developers to

integrate changes to the project,

and making it easier for users to

obtain a fresh build

3

Maven attempts to apply patterns to

a project's build infrastructure and

uses Project Object Model (POM) to

describe the software project being

built, its dependencies on other

external modules and components,

and the build order

12


Continuous Integration in Projects

Kona

Software Depot

Haystack

13


Thanks

More magazines by this user
Similar magazines