Life is an exercise to express the InExpressible.

A typical software company uses different tools and templates for various stage of software development
life cycle to ensure quality, like different tools for requirements management,
coding, static code analysis, configuration management, unit testing, defect tracking,
templates for review process etc. This paper attempts to present an alternative
to combine most of the tools access under single umbrella of Eclipse IDE. The
Eclipse IDE can be extended with various plug-ins available at Eclipse Market
place. This paper proposes an Eclipse IDE as an integrated solution to invoke
various tools during various stage of software development. So it provides
simplicity, productivity and adherence to quality process.

Introduction

Bangalore,
India is an IT hub. Here, many IT company focusing on software product
development and software services, serving many international client. The
Indian software industry is quite mature and following all CMMI standard
quality processes. The software development life cycle is divided among various
stages like requirement gathering, analysis, design, coding, testing,
deployment and maintenance. Each stage has well-defined entry and exit
criteria. The quality assurance department deploys various tools, to adhere to
quality standards. They are diverse set of tools, specific to organization.
Many times, some projects within organization take deviation and use another
tools to suite the customers’ requirement. Many times, specific tools are
developed in-house.

Here an
attempt has been made to put all such tools under single umbrella of Eclipse
IDE, with special focus on telecom product.

TABLE I.
Abbreviations &
Terminology

CDT

C/C++ Development
Tooling

CMMI

Capability
Maturity Model Integration

COBOL

COmmon Business-Oriented Language

FAQ

Frequently Asked
Question

PHP

Hypertext
Preprocessor

SCM

Software
Configuration Management

XML

eXtensible Markup
Language

Solution Overview

There
is common (mis-)belief prevails that Eclipse is an IDE to develop primarily Java
applications and sometime C++ also with additional CDT plugin. Eclipse is much
more than mere IDE. Its runtime system is based on Equinox. Equinox is an implementation
of OSGi core framework specification. This architecture equips Eclipse with
many extensible plugins to customize its environment and enhance its
functionality. This paper shed lights on hidden features of Eclipse IDE from
the perspective of productivity, usefulness and quality process. The next
section describes some common features of Eclipse IDE and then subsequent section
is about specific feature for telecom application development over Unix like
environment.

IV.Solution
details

i.
Design

The
Eclipse Modeling Project [reference 1] focuses on the evolution and promotion
of model-based development technologies. It provides a unified set of modeling
frameworks, tooling, and standards implementations. It includes many tools for
software design (like UML), auto code skeleton generation and reverse
engineering feature to keep code and design synchronized.

ii.
Static
Code Analysis

Eclipse
has many plugins for checking code style, and static analysis. The popular
tools SonarQube and Klocwork both have supports for Eclipse plugin. [references
2 and 3]

iii.
Code
Review

Jupiter
Eclipse Plugin, CodeCollaborator, AgileReview, ReviewMate etc are some of the
popular plugins for code review. [reference 11, 12, 13, 14] They have some very
useful features like:

1.
The
reviewers and author can comment on the code and discuss the same. It creates
threaded and contextual conversations.

2.
The
review can be either asynchronous or synchronous like chatting.

Mylyn
is a subsystem of Eclipse for task management. It is an open source API
implementation of the Task-Focused Interface. It helps a developer work efficiently
with many different tasks such as bugs, problem reports or new features. The
Mylyn keeps track of all files related to the current task. It focuses on
improving productivity by reducing searching, scrolling, and navigation. It
also facilitates multitasking, planning, reusing past efforts, and sharing
expertise. [reference 6]

In
case, Mylyn is not used, then also, Eclipse can be configured with almost all
bug tracking system like bugzilla, JIRA etc.

Fig. 1. Mylyn screenshot

vii.
Launching
of external application.

Eclipse
IDE allows invoking any external tools from drop down menu. The possible common
tasks need to be invoke from Eclipse can be

1.
Generate
docs using Doxygen

2.
Upload
binaries to target platform

3.
Run
Lint tools

4.
Translate
XML to API Docs. Etc. [reference 7]

V.Typical
Use case

A
telecom project can get benefits of all such useful Eclipse feature. This
section highlights additional key features relevant to a C/C++ project,
particularly on Unix like system.

i.
VI/emac
Editor

Most of
the telecom software running on different switches, controller and network
elements are developed using C/C++. Many developers prefer simple VI editor for
coding and avoid rich GUI.

Eclipse
can be enhanced for VI support with Vrapper, VIPlugin etc. [reference 8 and 9] Eclipse
has built-in key-binding configuration to emulate emacs. [reference 10] With
eclipse, a developer can take advantage of many code editing features like
syntax highlighting, code folding etc. Eclipse supports many programming
language including C, C++, Python, COBOL, Eiffel, PHP, Ruby, and C# etc.
with additional plugins.

ii.
Call-Hierarchy

Sometimes,
while coding, one needs to navigate through code to know list of other
functions who are calling a particular function. Just right Click on the
function and select Open Call Hierarchy. The keyboard shortcut is Ctrl + Alt +
H (H for Hierarchy). [reference 17]

Fig. 2. A typical call-hierarchy screenshot

iii.
Build

Generally
for a telecom project, software binaries are built using command line make
utility. One can set project properties as Makefile project, option as C/C++
build and specify appropriate build command.
Eclipse allows to build application using normal short cut, menu and
toolbar. The build output is redirected to console view and at the end of
successful build, Project Explorer Build is populated with generated binaries. [reference
18 and 22]

There
is list of FAQ for CDT, to get familiarized with it. [reference 19]. For step
by step instruction, please refer webinar on “Developing C/C++ Applications
with the CDT” [reference 23]

iv.
Profiling
and tracing

Many
developers still prefer Linux/Unix and VI editor combination to build an optimized
application using GNU profiling (gprof) and code coverage (gcov) tools. Eclipse Kepler has Linux Tools. Its profiling
framework contains several popular profiling tools into a single location. Its
generic call stack view allows users to visualize the call stack per thread
over time. Kernel space and user space traces can be analyzed and visualized
graphically using LTTng.

Fig. 3. Linux Tools screenshot

Open Issues

Open
issues are yet to be identified. So far not any known issue to implement Eclipse
tool for telecom domain.

Conclusion

This
paper focus more on typical C/C++ based telecom product. However, Eclipse can
address many other domains like mobile application development for Android/
iOS, web based applications, enterprise application, embedded application, cloud
based applications development etc. For Visual C++ based application, It is
possible to replace Microsoft Visual Studio IDE. [reference 25].

Eclipse
IDE is a very wide area. Eclipse has many tools for different programming languages
and for different purposes. The complete
list please refer Eclipse Tools Project page. [reference 21] This paper just
focused on how to reap benefits of Eclipse for a typical telecom application
written in C/C++. Many useful Eclipse IDE features are highlighted with
emphasize on quality processes and productivity.