SlideShare a Scribd company logo
THAAD GUI Redevelopment By Frank J. Lhota August 1, 2011
Overview of THAAD THAAD has two major applications, DCP and RTCP, whose GUIs are required to have a common “look and feel” DCP and RTCP actually share some display elements Both of these GUIs were developed many years ago using Motif These GUI’s run on HP and Sun workstations August 1, 2011 Frank J. Lhota Slide
DOD Problems with the Old GUI The GUI had some quirks that would confuse users familiar with more modern GUI conventions The applications did not include more modern GUI conventions, such as tabs and wizard dialogs, that could have simplified the GUI The GUI required a lot of training time They were concerned about operator errors August 1, 2011 Frank J. Lhota Slide
Raytheon Problems with the Old GUI There were some concerns over whether the Motif tools used to design and maintain the GUI would have continued support, or whether they would be available on other platforms The GUI was ascetically unappealing (has the look of a 16 bit windows app.) August 1, 2011 Frank J. Lhota Slide
Raytheon Problems with the Old GUI DCP and RTCP did  not  share GUI code Maintenance costs were driven up by making parallel changes in the two applications This arrangement increased the possibility for inconsistencies, such as updating a display in RTCP but not updating the same display in DCP August 1, 2011 Frank J. Lhota Slide
THAAD GUI Replacement Project The DOD Missile Defense program contracted with Raytheon to develop a new GUI for the THAAD I was hired to work on this project, based in part on my successful work on developing a new GUI for the Howitzer cannon My first duties were to evaluate tools and approaches for the new GUI August 1, 2011 Frank J. Lhota Slide
First Solution: A Java Front End  The first solution was to split the GUI portion of the application into a separate application, communicating with the back end via messages August 1, 2011 Frank J. Lhota Slide  Back End Java GUI Display Data User Input
First Solution: A Java Front End  In the first prototypes, the GUI portion was written in Java Java is supported on all of the currently used and planned future THAAD platforms Java supports all the modern GUI widgets Java has excellent, well supported tools on multiple platforms August 1, 2011 Frank J. Lhota Slide
First Solution: A Java Front End  The disadvantage of Java: Speed Java code is interpreted at run time, and hence is often not as fast as native code There are strict requirements for how fast the radar display updates (if a new object is a missile, the operator clearly needs to know right away) The Java prototype simply wasn’t updating the radar display fast enough Speed was deal killer: Java was dropped August 1, 2011 Frank J. Lhota Slide
Second Solution: Qt Front End  To get the desired speed, the team decided that the GUI front end would be compiled into native code Based on my recommendation, Raytheon decided to code the front end in C++ using the Qt framework  August 1, 2011 Frank J. Lhota Slide
Second Solution: Qt Front End  Qt has many of the same advantages as Java But what about the problem of code duplication? August 1, 2011 Frank J. Lhota Slide
Second Solution: Qt Front End  Qt had two features that could be used to solve the code duplication problem: Programmer can write their own Qt widgets, and On all platforms, Qt supports loading a shared library at runtime Using these two features together, custom widgets can be loaded at runtime, i.e. plug-ins August 1, 2011 Frank J. Lhota Slide
Using Plug-ins to Cut Duplication My solution was to have one application serve as the front end of both DCP and RTCP There were separate file names for the DCP and RTCP front end applications… ... but these names are soft links to the one common front end On start up, the application looks at its own name to determine if it is running in DCP or RTCP mode August 1, 2011 Frank J. Lhota Slide
Using Plug-ins to Cut Duplication The GUI main window starts off with only the few widgets that are common to both DCP and RTCP August 1, 2011 Frank J. Lhota Slide  GUI
Using Plug-ins to Cut Duplication After the GUI determines whether it is the front end for DCP or RTCP, it then loads the plug-ins that are specific to the application August 1, 2011 Frank J. Lhota Slide  DCP yyy xxx zzz Radar Status DCP Plug-ins
Using Plug-ins to Cut Duplication Some plug-ins will need to interact with the main window, e.g. a plug-in may want to set the current tab in the main window’s tab control I created a base class for the DCP / RTCP plug-ins; this base class defines signals for interacting with the main window When the main window loads each plug-in, it connects these signal to slots that will carry out the desired action August 1, 2011 Frank J. Lhota Slide
Advantages of Plug-ins Plug-ins promote a common DCP / RTCP look and feel The front end for both these applications have the same framework Common graphic elements are shared between the 2 apps, guaranteeing the same look and feel  Code duplication is eliminated August 1, 2011 Frank J. Lhota Slide
Reception of the New GUI The clients were very happy with the new interface The soldiers surveyed overwhelming preferred the new GUI Commanders also indicated that the new GUI reduced training time Raytheon decided that this interface would be used for future radar products, e.g. AN/TPY-2 August 1, 2011 Frank J. Lhota Slide
Reception of the New GUI Michael  Longo, manager for the GUI project, said of my work  “ Frank has great technical skills and impressive experience. He is willing to take on new tasks and he takes ownership of his tasks. Frank brings a lot of good ideas to the table and routinely thinks outside the box.” August 1, 2011 Frank J. Lhota Slide

More Related Content

Thaad Gui

  • 1. THAAD GUI Redevelopment By Frank J. Lhota August 1, 2011
  • 2. Overview of THAAD THAAD has two major applications, DCP and RTCP, whose GUIs are required to have a common “look and feel” DCP and RTCP actually share some display elements Both of these GUIs were developed many years ago using Motif These GUI’s run on HP and Sun workstations August 1, 2011 Frank J. Lhota Slide
  • 3. DOD Problems with the Old GUI The GUI had some quirks that would confuse users familiar with more modern GUI conventions The applications did not include more modern GUI conventions, such as tabs and wizard dialogs, that could have simplified the GUI The GUI required a lot of training time They were concerned about operator errors August 1, 2011 Frank J. Lhota Slide
  • 4. Raytheon Problems with the Old GUI There were some concerns over whether the Motif tools used to design and maintain the GUI would have continued support, or whether they would be available on other platforms The GUI was ascetically unappealing (has the look of a 16 bit windows app.) August 1, 2011 Frank J. Lhota Slide
  • 5. Raytheon Problems with the Old GUI DCP and RTCP did not share GUI code Maintenance costs were driven up by making parallel changes in the two applications This arrangement increased the possibility for inconsistencies, such as updating a display in RTCP but not updating the same display in DCP August 1, 2011 Frank J. Lhota Slide
  • 6. THAAD GUI Replacement Project The DOD Missile Defense program contracted with Raytheon to develop a new GUI for the THAAD I was hired to work on this project, based in part on my successful work on developing a new GUI for the Howitzer cannon My first duties were to evaluate tools and approaches for the new GUI August 1, 2011 Frank J. Lhota Slide
  • 7. First Solution: A Java Front End The first solution was to split the GUI portion of the application into a separate application, communicating with the back end via messages August 1, 2011 Frank J. Lhota Slide Back End Java GUI Display Data User Input
  • 8. First Solution: A Java Front End In the first prototypes, the GUI portion was written in Java Java is supported on all of the currently used and planned future THAAD platforms Java supports all the modern GUI widgets Java has excellent, well supported tools on multiple platforms August 1, 2011 Frank J. Lhota Slide
  • 9. First Solution: A Java Front End The disadvantage of Java: Speed Java code is interpreted at run time, and hence is often not as fast as native code There are strict requirements for how fast the radar display updates (if a new object is a missile, the operator clearly needs to know right away) The Java prototype simply wasn’t updating the radar display fast enough Speed was deal killer: Java was dropped August 1, 2011 Frank J. Lhota Slide
  • 10. Second Solution: Qt Front End To get the desired speed, the team decided that the GUI front end would be compiled into native code Based on my recommendation, Raytheon decided to code the front end in C++ using the Qt framework August 1, 2011 Frank J. Lhota Slide
  • 11. Second Solution: Qt Front End Qt has many of the same advantages as Java But what about the problem of code duplication? August 1, 2011 Frank J. Lhota Slide
  • 12. Second Solution: Qt Front End Qt had two features that could be used to solve the code duplication problem: Programmer can write their own Qt widgets, and On all platforms, Qt supports loading a shared library at runtime Using these two features together, custom widgets can be loaded at runtime, i.e. plug-ins August 1, 2011 Frank J. Lhota Slide
  • 13. Using Plug-ins to Cut Duplication My solution was to have one application serve as the front end of both DCP and RTCP There were separate file names for the DCP and RTCP front end applications… ... but these names are soft links to the one common front end On start up, the application looks at its own name to determine if it is running in DCP or RTCP mode August 1, 2011 Frank J. Lhota Slide
  • 14. Using Plug-ins to Cut Duplication The GUI main window starts off with only the few widgets that are common to both DCP and RTCP August 1, 2011 Frank J. Lhota Slide GUI
  • 15. Using Plug-ins to Cut Duplication After the GUI determines whether it is the front end for DCP or RTCP, it then loads the plug-ins that are specific to the application August 1, 2011 Frank J. Lhota Slide DCP yyy xxx zzz Radar Status DCP Plug-ins
  • 16. Using Plug-ins to Cut Duplication Some plug-ins will need to interact with the main window, e.g. a plug-in may want to set the current tab in the main window’s tab control I created a base class for the DCP / RTCP plug-ins; this base class defines signals for interacting with the main window When the main window loads each plug-in, it connects these signal to slots that will carry out the desired action August 1, 2011 Frank J. Lhota Slide
  • 17. Advantages of Plug-ins Plug-ins promote a common DCP / RTCP look and feel The front end for both these applications have the same framework Common graphic elements are shared between the 2 apps, guaranteeing the same look and feel Code duplication is eliminated August 1, 2011 Frank J. Lhota Slide
  • 18. Reception of the New GUI The clients were very happy with the new interface The soldiers surveyed overwhelming preferred the new GUI Commanders also indicated that the new GUI reduced training time Raytheon decided that this interface would be used for future radar products, e.g. AN/TPY-2 August 1, 2011 Frank J. Lhota Slide
  • 19. Reception of the New GUI Michael Longo, manager for the GUI project, said of my work “ Frank has great technical skills and impressive experience. He is willing to take on new tasks and he takes ownership of his tasks. Frank brings a lot of good ideas to the table and routinely thinks outside the box.” August 1, 2011 Frank J. Lhota Slide