| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <!-- |
| Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. |
| --> |
| <head> |
| <meta http-equiv="Content-Type" |
| content="text/html; charset=windows-1252"> |
| <link rel="stylesheet" type="text/css" |
| href="https://netbeans.org/netbeans.css" media="screen"> |
| <meta name="Derek Walker" content="NetBeans, Intland, CodeBeamer"> |
| <title>An Introduction to Intland's CodeBeamer Module for NetBeans</title> |
| </head> |
| <body> |
| <h1>An Introduction to Intland's CodeBeamer Module for NetBeans</h1> |
| <span style="font-style: italic;">Contributed by Derek Walker, devnull |
| software, inc.</span><br> |
| <br> |
| <h2>Summary</h2> |
| In seeking a happy medium between managing software projects |
| effectively and maintaining developer productivity, devnull software |
| inc. found the right combination in an IDE and a collaborative |
| development platform. A promising plug-in integrated the two, |
| subsequently reduced the developer's workload and provided more |
| detailed and accurate project information. This article gives the |
| background of why this was necessary, how these tools were selected, |
| and what benefits were realized from using them.<br> |
| <h2>Introduction</h2> |
| Software development organizations battle daily with the same triad of |
| fundamental constraints: producing the right software (the right |
| features with the necessary quality), producing it on time and within |
| budget. These only get more complicated and difficult to achieve when |
| other constraints, such as a distributed, virtual organizational |
| structure, are added. The successful execution of a software |
| development project may make or break a company; therefore, it should |
| not only be the concern of the project manager but |
| the entire team. Not to mention that it is far more enjoyable to be on |
| a smooth running project than on one that is not.<br> |
| <br> |
| Team members need to know the "big picture" (that is, the vision of the |
| product and the problem it solves for its users), the general project |
| plan and milestones, and what their individual assigned tasks, |
| deliverables and deadlines are. They also need visibility about how |
| well they and the rest of the team are doing in meeting these |
| commitments so corrective measures can be taken if necessary. They |
| should also meet regularly to ensure that goals are being met and to |
| address any issues encountered. Project or program managers see no |
| issue with these tasksthey make up a major part of their jobs; |
| however, most developers, even the ones who understand the need for |
| these tasks, find |
| them uninteresting and burdensome.<br> |
| <br> |
| Our company, devnull software inc., is no different from other |
| organizations and must provide this visibility in order to be |
| successful. Our distributed, virtual organizational structure increases |
| this burden because our project managers lack direct visibility about |
| what everyone is doing and our staff works in different time zones; |
| therefore, more formal communication |
| and reporting is required. We needed a way to manage projects |
| effectively while keeping the burden low on our developers, thus |
| avoiding a decrease in productivity and morale. In fact, the ideal |
| solution would actually also boost productivity. This required that we |
| consider how the critical tools needed to achieve these goals would |
| function and would need to be selected.<br> |
| <h3>Collaborative Development Platforms</h3> |
| In the past, many tools have been used to manage the software |
| development life-cycle: source code management (SCM) systems, bug and |
| issue tracking software, build tools, project management systems, |
| documentation applications and email. The main issue with these tools |
| was that they were just thata group of tools. There was no integration |
| between them, therefore it was difficult to get visibility into the |
| whole project. This integration was difficult to achieve by a single |
| organization because of the cost and expertise required to do it.<br> |
| <br> |
| With the emergence of the web and other collaboration tools (i.e., |
| chat) |
| came a new way to documentthe wiki. It soon became the "virtual |
| handbook" everyone was looking for. It was ideal for developers and |
| anyone who had no time to document. It required almost no time to learn |
| to use or enter information. The other powerful feature was the ability |
| to create hyperlinks to other parts of the wiki. Later, plug-ins |
| provided much more sophisticated functionality while keeping the same |
| interface. Collaborative development tools emerged that integrated |
| the past tools and the newer collaborative tools, like the wiki, into a |
| platform that would help the management of software projects and |
| provide greater project visibility.<br> |
| <br> |
| IDEs have been an integral part of the software development life-cycle |
| for almost three decades. In the 80s, IDEs were rigid yet still |
| provided the highest productivity for individuals. In the late 90s, IDE |
| vendors extended their IDEs with frameworks allowing simple plug-ins |
| that extended the IDE's functionality beyond its core purpose. But |
| developers were disconnected |
| from each other except for simple SCM access. Today's IDE frameworks |
| allow you to integrate developers into teams through collaboration |
| services and extend the IDE to become a comprehensive integrated |
| application life-cycle environment.<br> |
| <h3>Selecting an IDE</h3> |
| Every software development organization is interested in developer |
| productivity, reducing time-to-market, keeping teams small, and making |
| developers happy by increasing their sense of accomplishment and making |
| their day-to-day work life more convenient. <br> |
| <br> |
| One of the ways, and arguably the easiest way, to achieve this is |
| through an IDE. It's hardly a secret that developers are happiest when |
| they are producing code, especially when necessary but tedious tasks |
| are automated or streamlined. Besides the convenience, an IDE frees up |
| more time for creative and intellectual work.<br> |
| <br> |
| devnull software inc. looked at many IDEs, but in the end we came to |
| the conclusion that NetBeans was the best tool for our needs:<br> |
| <br> |
| <ul> |
| <li>One tool to address all of our development needs for a 3-tiered |
| application</li> |
| <li>J2EE support</li> |
| <li>JSF support</li> |
| <li>Web page editor and application builder (i.e., Visual Web Pack)</li> |
| <li>Ant support</li> |
| <li>SVN support</li> |
| <li>Extensibility and customization of the tool via a Java based |
| framework</li> |
| </ul> |
| <h3> |
| Selecting a Collaborative Development Platform</h3> |
| Our requirements for a collaborative development platform were |
| extensive since we planned to use it as the "operational system" for |
| the company. In short, it would run our business.<br> |
| <br> |
| The main objective was to find one tool to serve the role of many tools |
| and support our entire software development life-cycle in a virtual |
| environment. It needed to replace core systems like SCM and bug and |
| issue tracking, as well as ancillary ones such as document management, |
| reporting, news/announcements and a wiki. We were also looking for it |
| to initially augment our project management system by making project |
| plans |
| and progress reports more visible to the entire team. Not only did |
| this tool need to be comprehensive but it had to be tightly integrated |
| as well. We also wanted only one system in order to eliminate |
| "application thrashing"the constant switching between applications.<br> |
| <br> |
| Knowledge and documentation of our projects is critical to our success, |
| so a very capable and extensible wiki was a necessary requirement. We |
| expected the wiki to become our main project reporting interface and |
| performance dashboard as well as provide a platform for traditional |
| project documentation. Since the wiki was to be |
| the central tool, we were also looking for all other tools to |
| tie into it so we could integrate related entities. For example, a task |
| to implement a feature could have a wiki link to the actual requirement |
| specification and the usecase it is related to.<br> |
| <br> |
| Given that we have specific needs and that these will change as our |
| processes mature, extensibility is extremely important to us. We never |
| want to be |
| in a situation where we are unable to perform a necessary task. To be |
| able to extend the platform, especially the wiki, meant it needed to |
| run on the right platformJ2EE, the platform of the applications we |
| develop and our area of expertise. We do not want to |
| develop or find capabilities in areas that are not core to our main |
| business. This not only gives us independence but also the ability to |
| quickly adapt the system as needed. We also expected the platform to be |
| able to extend through well-documented plug-ins, APIs and web services, |
| and have an extensive list of pre-built features since we would |
| not have the time nor the resources to create everything we needed.<br> |
| <br> |
| As previously mentioned, there was an extensive list of requirements. |
| Besides the main requirements, here are some of the other important |
| ones we were looking for:<br> |
| <br> |
| <ul style="list-style-type: disc;"> |
| <li>Ability to host in-house behind our firewalls</li> |
| <li>Easy installation and administration that could be done by our |
| team</li> |
| <li>Wiki requirements: extensive mark-up language and plug-in |
| library, built-in charting for reports, ability to embed html directly |
| into wiki pages, the ability to create dynamic data for wiki pages and |
| to link pages to bugs and tasks<br> |
| </li> |
| <li>Extensive email notification capability</li> |
| <li>Ability to create and archive email forums and threads</li> |
| <li>Easy enough to use and extend by entire team including |
| documentation and QA</li> |
| <li>Automatic continuous builds and build result notification</li> |
| <li>Dependable and responsive support</li> |
| </ul> |
| After reviewing a number of commercial and open-source collaborative |
| development platforms, CodeBeamer from Intland was the only platform |
| that met our requirements.<br> |
| <h2>CodeBeamer Module for NetBeans</h2> |
| We have always been intrigued by the idea of integrating our |
| collaboration development platform with our IDE, so we jumped at the |
| chance to try the CodeBeamer Module for NetBeans, a plug-in for |
| CodeBeamer. It is a NetBeans module that interfaces a CodeBeamer |
| instance and allows the remote viewing, creation, modification and |
| deletion of CodeBeamer "trackers" (requirements, bugs, tasks, change |
| requests or any custom-defined tracker) and, soon, the same |
| functionality for documents[1] in CodeBeamer's document management |
| system. The |
| interface is a set of panels added to the NetBeans IDE. It enables the |
| developer to interact with CodeBeamer and its critical information |
| without leaving the IDE and effectively makes one application out of |
| two. In addition, the module is open-source so you can look at the |
| code, customize it or help out in its development. There is a |
| developer's community with a forum. It was too compelling not to try, |
| despite being |
| just a prototype at this time with general availability anticipated |
| around <a href="http://java.sun.com/javaone/sf/index.jsp">JavaOne 2007</a>.<br> |
| <br> |
| <div style="text-align: center;"><a |
| href="../../images_www/articles/codebeamer-for-netbeans/fig1.jpg"><img |
| alt="Screenshot of the NetBean's IDE with the CodeBeamer Module for NetBeans" |
| src="../../images_www/articles/codebeamer-for-netbeans/fig1.jpg" |
| style="border: 0px solid ; width: 559px; height: 404px;"></a><br> |
| <span style="font-style: italic;">Figure 1: Screenshot of the NetBean's |
| IDE with the |
| CodeBeamer Module for NetBeans</span><br> |
| <span style="font-style: italic;">(Click on image for larger view)</span><br> |
| </div> |
| <h3>Installation</h3> |
| Installing the module is similiar to installing a typical NetBeans |
| module. After downloading the module, you install it using the Update |
| Center. If you do not have a CodeBeamer instance running, Intland |
| offers a free 15-user version of CodeBeamer that is available on their |
| web site: <a class="moz-txt-link-abbreviated" |
| href="http://www.intland.com/">www.intland.com</a>.<br> |
| <h3>Features and Benefits of Using the CodeBeamer Module for NetBeans</h3> |
| Once we began using the module, the benefits were immediately apparent. |
| We created CodeBeamer trackers for requirements, project tasks, bugs |
| and |
| information requests. Developers checked their trackers daily to |
| confirm what they had planned for the day and to make sure no new |
| critical |
| bugs had been assigned to them. Later, they could update trackers with |
| details |
| about what was accomplished. We found that these same activities could |
| easily be done through the CodeBeamer Module for NetBeans module while |
| in the NetBeans IDE. This was very convenient and saved time. It also |
| helped people maintain focus and flow since it eliminated "application |
| thrashing".<br> |
| <br> |
| Bugs are time critical, especially those that bring down customer |
| production systems or break the build. Dealing with them |
| quickly is mandatory. The ability to look at the details of a bug while |
| in the IDE and simultaneously looking at the code significantly helps |
| in this area. Once reviewed, the developer can update the tracker with |
| estimated effort and delivery date thereby giving those who are |
| managing the issue timely information. If the bug is incorrectly |
| assigned, it can |
| be re-assigned from the GUI. If during the course of fixing the bug (or |
| at |
| anytime developing code), a bug is found, a new bug tracker can be |
| created without leaving your work and the IDE. When available[1], |
| accessing the documents from the NetBeans IDE that are related to a |
| feature, i.e., requirements or standards, will be another productivity |
| boost and will eliminate the issue of trying to find documents and |
| making sure they are up-to-date.<br> |
| <br> |
| CodeBeamer has a wonderful continuous build facility, but because |
| devnull software is a virtual organization it is easy to have a broken |
| build that continues |
| to stay in that state for a significant amount of time either because |
| of time differences or the challenges in communication. To mitigate |
| that risk, we have created, as part of the build, a program that parses |
| the build results and will automatically create a bug tracker of the |
| highest priority and criticality for the issue and assign it to the |
| developer who is in charge of the failed module. It will then show up |
| in their tracker list.<br> |
| <br> |
| The CodeBeamer Module for NetBeans also reduces the developer's load in |
| providing project related information. Items like estimated hours, |
| actual hours, resolution and comments for any tracker can be updated |
| without leaving the IDE. Updating the status of any tracker only takes |
| a couple of minutes to provide timely and detailed information. These |
| capabilities provide extremely valuable and timely information to the |
| project manager looking after the project.<br> |
| <br> |
| The most powerful feature of this module is the interaction between |
| source code management system and the tracker system. When you commit |
| code to your SCM (for example, subversion) from within the NetBeans |
| IDE, you are presented with a window that not only enables you to |
| create a comment for the code to be checked in but that also allows you |
| to associate a tracker (for example, a bug or task) to that submission. |
| The tracker is selected from a tree of all of the available trackers |
| for a project.<br> |
| <br> |
| <div style="text-align: center;"><img |
| alt="Figure 2: Screenshot of CodeBeamer Module for NetBeans Commit Window" |
| src="../../images_www/articles/codebeamer-for-netbeans/fig2.jpg" |
| style="width: 658px; height: 512px;"><br> |
| <span style="font-style: italic;">Figure 2: Screenshot of CodeBeamer |
| Module for NetBeans Commit Window</span><br> |
| </div> |
| <br> |
| Once this association is made, it enables anyone looking at the tracker |
| in the NetBeans IDE to double click on the commit link, and the file |
| associated with that commit will be opened up in the main plane of the |
| IDE positioned at the starting line of the commit.<br> |
| <h2>Conclusion</h2> |
| The benefits of this integration are easy to see. The real question is: |
| where can it lead to? Perhaps, extending the module to allow for the |
| viewing and creation of wiki pages or reports, or exposing the project |
| dashboards? With the open-source nature of the module, you can help |
| shape its direction or create your own version |
| for your specific needs. The forum is waiting for input and the |
| community is waiting for new members: <a class="moz-txt-link-freetext" |
| href="https://codebeamer.com/cb/proj/wiki/displayHomePage.do?proj_id=346">https://codebeamer.com/cb/proj/wiki/displayHomePage.do?proj_id=346</a>.<br> |
| <br> |
| <h3>Footnotes</h3> |
| 1. Through the community support offered for the project, this |
| functionality is anticipated to be ready by JavaOne.<br> |
| <div style="text-align: right;">(<span style="font-style: italic;">May |
| 2007</span>) <br> |
| </div> |
| <br> |
| <div class="feedback-box"> |
| <a href="/about/contact_form.html?to=3&subject=Feedback:Codebeamer">Send Feedback on This Tutorial</a> |
| </div> |
| <br style="clear:both;" /> |
| </body> |
| </html> |