Productive Usage of Eclipse IDE


  1. Abstract

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.

  1. 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

  1. 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.
3.     XML format data storage to simplify use and re-use.
4.     Collects metrics, maintains an audit trail and provides customizable reports
5.     PeerReview Complete is for document review. [reference 15]

                    iv.        SCM : Version Control

Eclipse IDE can be integrated with many software configuration management system. CVS is supported out of the box from Eclipse. Here is list of other such plugins.

TABLE II.         Eclipse plugins for SCM

No.
Version Control System
Popular plugins
1
SVN
Subclipse, Subversive
2
Git
EGit
3
Mercurial
MercurialEclipse

For other SCMs See the Eclipse Marketplace list of plugins on SCM [reference 16]

                     v.        Testing

Eclipse has built in support JUnit for Java-based project. Eclipse CDT release (juno) has built-in support for C/C++ unit testing framework integration. ‘Selenity - Selenium Grid Eclipse Plug-in 1.0.0’ makes easy using Selenium Grid inside Eclipse and running the System tests. [reference 4]

                    vi.        Task Management

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

  1. Open Issues

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

  1. 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.

  1. References / Appendix

1.     Eclipse Modeling Project http://www.eclipse.org/modeling/
2.     Klocwork Insight 10.0 Eclipse plugin http://marketplace.eclipse.org/content/klocwork-insight
3.     SonarQube Eclipse plugin
4.     Selenity - Selenium Grid Eclipse Plug-in 1.0.0
5.     Eclipse Marketplace
6.     Mylyn
7.     External tools in eclipse
8.     Vrapper (vim) 0.38.0 https://marketplace.eclipse.org/content/vrapper
9.     viPlugin 2.12.0
10.  Eclipse key binding
11.  Jupiter Eclipse plugin
14.  ReviewMate plugin
15.  Peer Review Complete plugin http://marketplace.eclipse.org/content/peerreview
16.  SCM: Eclipse plugins, bundles and products.
17.  Call – Hierarchy
18.  Externally managed build
19.  FAQ on CDT
20.  Linux Tools

21.  Eclipse Tools Project http://projects.eclipse.org/projects/tools

1 comments:

Manish Panchmatia said...

http://efytimes.com/e1/fullnews.asp?edid=125002

12 Eclipse Plugins That Every Developer Should Know!

Post a Comment