LabVIEW is a test and measurements application environment which facilitates the integration of instrumentation and other hardware components to the application. Moreover, LabVIEW evolved, over the years and its dataflow paradigm of G programming became a fairly powerful programming language. To summarize, LabVIEW is actually both, a test and measurements application environment at the same time that is also a programming language.
This is absolutely great as the productivity boost the LabVIEW application environment brings about allows much more complex test and measurements applications to be developed and deployed at a fraction of the time and cost than their counterparts of the past. Moreover, the LabVIEW programming language allows software programmers to develop full fledge software products with rich user interfaces, reporting, database connectivity, advanced analysis and all other components that are usually present on software artifacts.
However, all of this power and flexibility obviously comes with a price. This blog will focus on the two main tasks that are must-haves and drivers of LabVIEW project success: design and project management. Even though these two tasks are being listed as separate activities, in fact, they are intertwined to the extent that if one falls apart, the other will certainly suffer. Conversely, if one is well carried out, the other will receive a good shot in the arm and will be headed to success.
Complex software systems require a good foundation. One may potentially get away with developing a simple software application by starting to develop code without much preparation. This will NEVER be successful for complex applications. Even if the programmer is fortunate enough to get to functioning software by using the ad hoc approach at the cost of hundreds, if not thousands, of extra man hours of effort, the final product will most likely suffer of the typical conditions of bad software. It will take the development team much more time to add new features, the addition of new features will most likely break something that was working before, fixing of any bugs will take ten times as much time as it should, possibly only the author of the code would be able to maintain it, no components will have potential for reuse on other systems, possibly it would have been impossible to have more than one person working on the application due to lack of modularity, leading to schedule slips, and the list goes on and on.
Discipline and formalism are keywords that need to be etched on the project team members’ brains. Software engineers love to write code. That is their passion for sure. However, they need to fight the urge as much as possible to start coding away as soon as there is need for software. Good software will be maintainable, expandable and modular. The only way to achieve that is through good design. Design can be summarized as the activity of thinking through the overall requirements set and to figure out how to create modules that will, as independently as possible, implement the LabVIEW project requirements. Moreover, these modules need to function together in a cohesive whole.
If you read the previous paragraph again more carefully, you will see that requirements is the foundation for design. If the requirement set is bad, the design may be flawless, but the LabVIEW project as a whole will still fail. Bad requirements and poor planning are the two top root causes for failed LabVIEW projects. The activity of collecting requirements is part of project management; therefore bad project management, in this case, bad requirements gathering, will drive bad design, which will drive the LabVIEW project to fail.
Now, let’s look at the tail end of the LabVIEW project, after the design is complete and code has been written. For the sake of this analysis, we will assume that the requirements gathering was well done, the design was solid and the code implementation done right. Is this a guarantee of project success? Actually, it isn’t. Test and measurements projects, or LabVIEW projects if you will, are much more than writing good software these days. These projects now involve a plethora of engineering disciplines and their corresponding professionals executing different tasks that need to be brought together as a system. Without careful planning, the bringing together of these activities, and even the appropriate direction as to what specific activities need to be executed will probably fail.
Successful LabVIEW projects need both good project management and strong design as both can either make or break your project.