Dale Thoma works for Saab Systems Grintek (SSG) in South Africa, where he supervises application development within the tactical communications environment. His roles at SSG include that of project manager, systems engineer, and line manager.
While he's been employed at commercial companies in the past, he's spent the majority of his career working in the defence industry. He has an honours degree in Computer Science from the University of Johannesburg.
Below follows an interview with Dale about SSG's usage of the NetBeans Platform.
Hi Dale, how does the NetBeans Platform relate to what you're doing?
To provide you with a little background information, we are involved with the tactical interoperability of defence platforms. Amongst other things, we implement Command & Control type applications (in particular relating to Situational Awareness (SA)), data links, translations between 3rd party systems (such as Combat Management Systems (CMS) or Electronic Warfare Systems (EWS)) and tools for interoperability management.
The NetBeans Platform is heavily ingrained into our strategies for future development. We are currently implementing several projects on top of the NetBeans Platform for the South African National Defence Force (SANDF). These projects relate to the upgrading of the tactical communications backbone for the SANDF. Eventually, we’ll see somewhere in the region of several thousand defence platforms that will make use of the NetBeans Platform.
A big part of this is "KITT". Can you talk a bit about that?
Kaizen Integrated Tactical Technologies (KITT) is our development strategy for the next 10-15 years. It is the result of a Research & Development project within our organization to create a common platform for all our future tactical applications.
It is worth noting that KITT is a 2nd generation product suite. Previous development efforts took place on top of our own proprietary C++ plug-in framework (developed from scratch) called Zenith. This plug-in platform has been successfully deployed on the South African Navy (SAN) frigate battleships, patrol boats and a Command, Control, Communication & Information (C3I) mobile base station. My team is currently upgrading the SAN 209 submarines Tactical Data Link (TDL) using the Zenith platform.
What's the current state of this project?
We have already built two products on top of the KITT platform: Symmetry, and a Tactical Geographic Information System (TGIS) for the SANDF. The TGIS is primarily used for Situation Awareness, with the focus primarily on Military Operations Other Than War.
Some more details on these two applications, with screenshots:
- Symmetry: A generic analysis tool for determining interoperability between nodes on a tactical network. The focus of the tool is currently to determine the level of semantic interoperability between consort systems on different network nodes implementing the Link-ZA standard. Link-ZA is the tactical data link standard that forms a part of the CNIS. This product allows for an NxN comparison of all defence platforms making use of Link-ZA.
- Tactical Geographical Information System (TGIS): Based on a C3I system product developed for the South African Navy (SAN) for an Operational Boat Squadron (OBS) base camp. The TGIS component has now been ported onto the KITT platform as a NetBeans module. The TGIS can be used in the following environments:
- Situational Awareness on a tactical level for peacekeeping missions.
- Real-time Common Operating Picture (COP) of ground, maritime and air platforms.
- Military operations other than conventional warfare.
We are currently in the process of implementing various projects, one of which is a Data Link Reference System (DLRS). The DLRS is a tool for determining interoperability compliancy of tactical messaging for the SANDF. This includes scenario generation, a tactical GIS and message compliancy validation. The messages are based on the Combat Net Interoperability Standard (CNIS), a South African TDL standard.
How does the NetBeans Platform help you with all of this?
The NetBeans Platform is the foundation of our development strategy. It provides a modular plug-and-play architecture, including advanced Swing components (such as a window system) for free. Based on the NetBeans Platform, KITT, in turn, provides a set of services used by applications that operate within the tactical environment. These include the Generic Messaging System (GMS) that operates at bit-level, the Central Message Bus (CMB) and an Open Data Model (ODM) for data dissemination. KITT also provides and implements a Service Oriented Architecture (SOA) extension for a distributed architecture deployment environment.
Here is a diagram of the place that the NetBeans Platform fills in our architecture:
Why did you choose the platform provided by NetBeans over its competitors?
We approached the selection of the NetBeans Platform in a formal and methodical way. It was important to me that we were able to justify our decision-making process and not choose a platform blindly. The process applied was the following:
Formalise criteria for comparison
Select applicable platforms
Research, and document comparison results
Compile a common design to be applied for implementation for each platform
Implement design for each platform
Document results and select the most fit platform
Our criteria not only focused on the technical aspects of each platform. We also looked at the companies or organizations that owned these platforms, the main contenders being NetBeans Platform, Eclipse RCP and Spring RCP. We researched and documented the architecture and technology choices with a long-term view of what the impact of each of these platforms would be.
Upon completing the research phase, we implemented a common design for a messaging program to mimic certain functionality that was indicative of our product environment. Each product was required to be able to exchange free-text messages with each platform. We documented the development process, looking at the design deviations, technical issues, duration, support etc. The results from the research phase coupled with prototyping allowed us to compile a fitness result. The NetBeans Platform was by far the most-fit platform for our needs.
The NetBeans Platform proved to be the most straightforward for implementation. The fact that the NetBeans Platform relies only on Ant scripts to build contributed greatly to our choice. Also, the NetBeans Platform's use of pure Swing (as opposed to Eclipse’s use of SWT) means that integration with other products is seamless. The NetBeans Platform does not force the design architecture to adhere to any constraints such as the OSGi framework - Eclipse and (optionally Spring RCP) make use of OSGi.
Ease of implementation in the NetBeans Platform allows intermediate level programmers to partake in the development process with less training. The NetBeans Platform was more pure in using vanilla Java as opposed to Eclipse; this allows us to migrate to other future technology frameworks should there be a need. The use of Swing and vanilla Java makes the NetBeans Platform the best-suited product for OS independence i.e. running on both Windows and Linux platforms.
Do you have tips and tricks or anything else you'd like to share with the NetBeans Platform developer community?
Getting started with the NetBeans Platform is easy. I recommend going through the Top 10 NetBeans APIs screencast series. This provides context and scope and gives an understanding of what is available for a programmer on the NetBeans Platform. I also recommend the tutorials provided by either the NetBeans IDE (FeedReader and Paint Application) or to pick a tutorial from the NetBeans Platform learning trail. Make sure that you understand the Look-up API - it’s fundamental for module interaction and behaviour (high-cohesion, low coupling).