Wednesday, June 2, 2010

Building Quality Software

Hi Guys,

Todays blog entry will focus on showing you why you can trust the code that we are developing on BlackTie to be of the high quality that you expect from JBoss projects.

To start us off, here's how you benefit in terms of the way we develop the project:
  • Continuous Integration - Provided by hudson, builds run regularly throughout the day on non-developer hardware
  • Unit Tests - Provided by both cppunit and Junit, we have an exhaustative set of unit tests across both Java and C testing every aspect of the XATMI API, ran during every build
  • Code Coverage Testing - Provided by emma and run on our Java code during the regular builds, this ensures we keep track of the coverage of the code based during testing
  • Memory Leak and Error Detection - Provided by valgrind and run on all of our C code during each test run, this ensures we are fully aware of any memory issues that may arise.
  • Transparent Agile Change Control - Our Jira instance can be accessed by anyone and bugs can be enterred and voted for so you can see just what is coming in any release
  • Clear Version Control - Our fisheye and subversion repositories are again easy to access
At runtime, you benefit from the fact that all our code has been structured to take advantage of:
  • Logging - We employ the fine grained and configurable logging frameworks of log4j and log4cxx, allowing the deployer access to detailed debug information in case of error
  • Re-use of 3rd party best of breed software - BlackTie is an adapter framework integrating with well understood and documented frameworks such as the number one Java application server, JBoss AS. As a thin layer it collates these technologies into something much greater than the sum of its parts
  • Modular Maven Project Structure - All our code is loosely coupled and our usage of Maven ensures that even in the C libraries, our code is highly modular and open for re-use in using the standard Maven dependency mechanism. This also helps to prevent cyclic dependencies in our codebase.
  • Portability - We use the ACE and APR frameworks to abstract the operating system ensuring that we never need to code directly against operating system header files in our C or C++ classes/routines.
  • Maven Plugin for C++ - We have developed our own C/C++ plugin for maven ensuring consistent and clear execution of the compiler.
Now, the final and perhaps most significant feature of our project that ensures the project is of the very highest quality is the fact that we are truly an open source project which means that not only are we able to foster input from the best in the industry, we also have the most stringent eyes in the world checking our work - yours! You are clearly able to see and the results and contribute to our design, code and tests for BlackTie.

Hopefully this entry has helped to explain some of the advantages in build quality that BlackTie has over other XATMI implementations, we will follow up in the future either here or on the wiki with more details of each of the aspects involved. If there is anything in particular you would like explaining in more detail, please comment here on on our forum.

All the best,
The BlackTie Team

No comments: