Ovation - System Building the WTF way



  • Emerson has a product called Ovation, which is a distributed control system for plants of all kinds. It's similar to the .NET Framework in that they do the boring stuff for you (runtime, hardware, development environment, servers, etc.) and you fill in the more specific bits of the application yourself. Part of my job involves creating, reviewing, and approving changes to the software of the various plants that use this system (all of them). It works well enough to create plant control systems, but we're not here to extoll the good things about software, right?

    WTF #1: The install process.

    Creating an Ovation workstation is a rather lengthy and error-prone process. First you have to install a fresh Windows Server 2008 on the computer you'll be using. Then you run updates to get all the security patches. Then you install Ovation, which (a) takes half a day, (b) asks you for information like computer name and IP address, stuff it could look up itself, and (c) installs Java for some reason. Then you install all the Ovation security patches which takes up the second half of the day. Finally, you are ready to open the Developer Studio and start configuring what hardware you have hooked up to where. Which is where the problems start. For example, if you typed in an incorrect computer name earlier, Ovation won't be able to communicate with any hardware. There's no setting for it, either; a reinstall is necessary, which loses you another day.

    We just spent two and a half weeks upgrading our development workstation to the new version of Ovation. For whatever reason, the software wasn't able to properly locate and communicate with the hardware. The support group's solution for this in almost every case was to wipe the machine and start again since they didn't know what was wrong. So after about 5 OS wipes and reinstalls they told us to use the previous version of the Ovation security patches, which so far everything seems to be working. So who tested these patches and determined that they were ready to be released?

    WTF #2: The development environment.

    Ovation is like LabVIEW in that it was written by a bunch of EEs who were filled with the strange desire to take the nice abstraction of computer languages and turn it into something that would be completely unreadable and unmaintainable and waste the time of engineers everywhere. By that I mean that you "program" by dragging little boxes onto a canvas then drawing little lines to connect outputs to inputs so that it's almost like building a circuit. There's some type checking so you don't connect the thing to the wrong thing, but you can easily circumvent this by making the connection first then specifying what variable flows along it later. As you can imagine, this makes the concept of types incredibly loose - there's barely even a visual distinction between wires carrying different types like in LabVIEW, just dotted lines for boolean signals and a solid line for everything else. Except that Ovation will sometimes change a solid line to a dotted line in certain situations.

    Also, since Ovation's distributed, in order to submit changes to the main system you have to take several unintuitive steps.

    1. Make changes and save the document to disk.
    2. "Load" the changes into your copy of the server, running on your machine.
    3. "Download" the changes onto the actual piece of hardware that runs the software.

    Nice and simple, eh? Oh, and doing these things in the wrong order will destroy your changes. There are other fun options too, like Clear (does it clear your local disk, local server, or the production hardware? Off to the documentation!), Import and Export (to/from what?), and others.

    WTF #3: Control Builder

    Control Builder is the part of the dev environment where you make the boxes and lines. It's also the worst editor I've ever encountered, for anything, ever. Even though Ovation is primarily a Windows product, the only part of the stylesheet they kept was Ctrl-C and Ctrl-V to copy and paste, Ctrl-Z to undo, that sort of thing. But dragging to make a selection box? Nope, you have to click where you want one corner, then move the cursor to where you want the other one, then click again to select everything in that area. This is a demonstrably worse user action than click-dragging. No other common controls are context-sensitive either. For example, to move an object, you have to select it, then move the mouse to the toolbar to select the "Move" option, then move the mouse back into the canvas area, click anywhere, move the thing to the place you want, then click again to place it. As opposed to just clicking the object and waiting for the cursor to change to the "move" icon. The processes for zooming and drawing the wires are similarly laborious. The Ovation dev team could save all the users of their system countless man hours if they would only switch to proven effective and simple user actions.

    Also, when the mouse cursor is over the canvas area, it redraws itself at about 3 frames per second, no joke. So doing anything with any accuracy takes a long time and is very frustrating.

    WTF #4: Graphics Builder

    Graphics builder is what you make the displays in. It works like WinForms: drag buttons around and such. But I knew there was going to be trouble when I saw that they can't even do textboxes correctly. See, if you change the text of a textbox in Ovation to a shorter string, it doesn't redraw the entire area, just the part that contains the new string. So if you changed text from OFF to ON you'll see ONF. Remember when Windows 95 solved this problem with fixed-width text fields? So in order to make things look non-retarded you change the text to "ON " instead so the space covers it up. But what if you're not using a monospaced font? Then it's trial and error with the spaces, each minor fix requiring a two-minute save-load-download cycle.

    Graphics Builder also provides access to the "code-behind" of the graphics, but in the dumbest possible way. For one, there are some things you can't do with the designer that you have to do in the code, and there are some things you have to do in code that can't be done in the designer. These things appear to be arbitrarily chosen. ALSO, since we have this whole distributed system, if you make changes to the source code and save it, THEN save the graphic, it will overwrite your changes since they made no effort to link the two. Closing and re-opening the graphic doesn't work either, you have to do the full save-load-download, then close and reopen the graphic to see the change. More recent versions have an "integrated" source editor which is consistent between the two windows, but it's even less usable than vim so it's worthless.

    Also, the code-behind looks like this:

    POINTER $P98 0 320
    POINTER $P99 0 401
    PTR_VALUE $P98 $A0x80 "X"
    PTR_VALUE $P99 $A0x80 "X"
    MACRO 60001 14020 3076 1.0 1.0 0 1 0 0 1 0 "   LCI2" 125 0 0
    MACRO 60001 14020 2009 1.0 1.0 0 1 0 0 1 0 "   SLI1" 126 0 0
    MACRO 60001 14020 2542 1.0 1.0 0 1 0 0 1 0 "   LCI1" 127 0 0
    MACRO 7642 5365 2506 1.0 1.0 3 0 0 0 3 3 \NP-ESW01MB2-0-DSOI\ \NP-KB0101-1\ \NP-KB0101-1\
    29 0 1 ON1 ON3 ON14 1 antiquewhite4 0
    
    ....snip....
    
    LINE 2900 11763 2900 12748 2 SOLID
    COLOR FG BLACK BG BLACK ER BLACK OL 0 BLINK FG OFF BG OFF
    TEXT 3725 14023 "CDP01" HORZ VECTOR 101 338 1
    COLOR FG BLACK BG ANTIQUEWHITE4 ER ANTIQUEWHITE4 OL 0 BLINK FG OFF BG OFF
    LINE 4052 11731 4052 12750 2 SOLID
    COLOR FG BLACK BG BLACK ER BLACK OL 0 BLINK FG OFF BG OFF
    TEXT 1361 14023 "0-LC02M" HORZ VECTOR 101 338 1
    COLOR FG BLACK BG ANTIQUEWHITE4 ER ANTIQUEWHITE4 OL 0 BLINK FG OFF BG OFF
    LINE 1748 11731 1748 12764 2 SOLID
    LINE 595 13298 595 14811 2 SOLID
    
    ....snip....
    
    IF ($P3 $I4 = 1)
    PTR_VALUE $P1 $B36 8
    RUN_PROGRAMS 1 117 7705 7 0 0 0 0 2 \N\ ID \N\ ID
    * Store value of ST
    PTR_VALUE $P33 $A0X26 "    SG 2 ECONOMIZ. FW  IV"
    PTR_VALUE $P33 $A26X26 "               FW-HS-135"
    PTR_VALUE $P33 $A52X26 "               FW-HS-135"
    * set status on
    RUN_PROGRAMS 1 202 0 1
    

    The terrible variable names are NOT because the programmers chose them...Ovation requires you to use names like $P33 or $SP01 for things. The function parameter lists are 8 integers long because everything has a code you need to look up and pass to a function to accomplish anything.



  • @lettucemode said:

    For one, there are some things you can't do with the designer that you have to do in the code, and there are some things you have to do in code that can't be done in the designer.

    So there are things you have to do in code, AND things you have to do in code? Outrageous!

     

     



  • @lettucemode said:

    ... LabVIEW in that it was written by a bunch of EEs who were filled with the strange desire to take the nice abstraction of computer languages and turn it into something that would be completely unreadable and unmaintainable and waste the time of engineers everywhere.
     

    Awesome line, very true about labview, but lab view was written for EEs, not sure EEs could write it though.


  • ♿ (Parody)

    Wow. Front page material for sure.



  • @boomzilla said:

    Wow. Front page material for sure.

    There's no need to be rude. I thought it was a very good WTF.



  • Horrible. Sounds like a system that was originally simple and has been extended with layer after layer after layer of badly designed and badly programmed features.


  • ♿ (Parody)

    @morbiuswilters said:

    @boomzilla said:
    Wow. Front page material for sure.

    There's no need to be rude. I thought it was a very good WTF.

    Well, it'll have to be edited to add some spelling and grammar errors, for sure. Plus some silly frame story that will obscure most of the WTFs. But that should go without saying.



  • @boomzilla said:

    @morbiuswilters said:
    @boomzilla said:
    Wow. Front page material for sure.

    There's no need to be rude. I thought it was a very good WTF.

    Well, it'll have to be edited to add some spelling and grammar errors, for sure. Plus some silly frame story that will obscure most of the WTFs. But that should go without saying.

    Applying The DailyWTF Anonymizer™ we get:

    lettucemode -> Moe D. Lettis


    distributed control system for plants of all kinds -> hotel reservation system


    god-forsaken install process -> quirky co-worker with a heart of gold


    poorly-implemented, non-standard, drag-and-drop editor -> well-written, well-documented, bug-free .NET library


    "lettucemode was found dead in his apartment of an apparent self-inflicted gunshot wound" -> "Moe loved his job but on the way through the airport he saw an airport monitor with an error dialog on it"


  • Considered Harmful

    @morbiuswilters said:

    well-written, well-documented, bug-free .NET library

    I'm sorry but this just wasn't believable.


  • :belt_onion:

    @morbiuswilters said:

    @boomzilla said:
    @morbiuswilters said:
    @boomzilla said:
    Wow. Front page material for sure.

    There's no need to be rude. I thought it was a very good WTF.

    Well, it'll have to be edited to add some spelling and grammar errors, for sure. Plus some silly frame story that will obscure most of the WTFs. But that should go without saying.

    Applying The DailyWTF Anonymizer™ we get:

    lettucemode -> Moe D. Lettis


    distributed control system for plants of all kinds -> hotel reservation system


    god-forsaken install process -> quirky co-worker with a heart of gold


    poorly-implemented, non-standard, drag-and-drop editor -> well-written, well-documented, bug-free .NET library


    "lettucemode was found dead in his apartment of an apparent self-inflicted gunshot wound" -> "Luke Dumont loved his job but on the way through the airport he saw an airport monitor with an error dialog on it"

    FTFY - main characters on the front page always change names halfway during the story



  • @lettucemode said:

    Even though Ovation is primarily a Windows product...

    But dragging to make a selection box? Nope, you have to click where you want one corner, then move the cursor to where you want the other one, then click again to select everything in that area.

    ... to move an object, you have to select it, then move the mouse to the toolbar to select the "Move" option, then move the mouse back into the canvas area, click anywhere, move the thing to the place you want, then click again to place it. As opposed to just clicking the object and waiting for the cursor to change to the "move" icon.

    Also, when the mouse cursor is over the canvas area, it redraws itself at about 3 frames per second, no joke

    I'm not a windows programmer, but I was under the impression that most of this behaviour was standard for controls in Windows apps.

    Is it the case that the coder has actually disabled standard functionality for a screen object? I refuse to believe that this behaviour needs to be implemented for each and every control - surely there's some property that can be flicked on to allow a control to be resized/manipulated in normal established ways?



  • @lettucemode said:

    dragging to make a selection box? Nope, you have to click where you want one corner, then move the cursor to where you want the other one, then click again to select everything in that area.

    This is normal behavior in CAD software — or at least, it was when I used AutoCAD (occasionally) ages ago. If this system was designed by and/or for people used to CAD software, the UI conventions probably make sense. Really, this is an issue that you see in every type of software: if you're used to one word processor, you can probably use most other word processors fairly easily, but now try using a spreadsheet; or if you're used to vector-graphics software, try using a DTP program. Each class of programs seems to have its own set of conventions, and even if two programs of different types look fairly similar, using what you know from one in the other will probably cause quite a few unexpected outcomes. (My personal "favorite" here being anything made by Adobe: learn to work with InDesign, then try to create something in Illustrator … )

    @lettucemode said:

    The Ovation dev team could save all the users of their system countless man hours if they would only switch to proven effective and simple user actions.

    I have a feeling they don't because their user base expects the software to work the way it does, and changing that would cause all kinds of problems. Not that I'm saying this is a good reason to stick to it, though: they could just tell their users to bite the bullet, leaving everyone better off in the end.



  • @Gurth said:

    I have a feeling they don't because their user base expects the software to work the way it does, and changing that would cause all kinds of problems. Not that I'm saying this is a good reason to stick to it, though: they could just tell their users to bite the bullet, leaving everyone better off in the end.

    .. or they could offer different behaviour as configurable options:

    UI behaviour: [Windows|AutoCAD]



  • The Ovation™ expert distributed control system is a product of our four decades of experience in process control for the power generation and water/wastewater treatment industries. Ovation utilizes commercially available,  off-the-shelf technology to provide a powerful and secure architecture while allowing your system to easily progress with rapidly advancing computer technologies. Ovation provides a seamless interface with the most widely adopted bus standards allowing you to incorporate smart device technologies into your process. And Ovation's embedded advanced algorithms and proven industry-specific control routines assure that you can optimize your operations to maximize efficiency, productivity, and profitability.

    I'm no Windows expert, but why does this thing needs server 2008 if it's a workstation? Why call it "distributable" when it's clearly no? How much does this software costs?

    Wow... and TRWTF is trying to write HTML in the iPad



  • @ubersoldat said:

    The Ovation™ expert distributed control system is a product
     

    AHHHH



  • @morbiuswilters said:

    Applying The DailyWTF Anonymizer™ we get:

    lettucemode -> Moe D. Lettis


    distributed control system for plants of all kinds -> hotel reservation system


    god-forsaken install process -> quirky co-worker with a heart of gold


    poorly-implemented, non-standard, drag-and-drop editor -> well-written, well-documented, bug-free .NET library


    "lettucemode was found dead in his apartment of an apparent self-inflicted gunshot wound" -> "Moe loved his job but on the way through the airport he saw an airport monitor with an error dialog on it"

     

    +1 would bang again



  •  An horrible ecosystem named Ovation that has spread all over the place... and you haven't started calling it the clap yet?


Log in to reply