I had a thread on the LAVA forums brought to my attention on the topic of ‘What is your LabVIEW application development process?, Best and worst development practices?’ This thread prompted an interesting discussion regarding some of the common challenges developers face when tackling a large application.
One of the primary goals of creating this group in the new NI community was to foster conversation and dialog amonst those of you working on these large LabVIEW applications and to share your insights on what you’ve learned from experience – both good and bad. I’m excited to see that this same exchange is taking place in a number of different venues, including the thread that I stumbled across and the new wiki on LAVA dedicated to Software Engineering. http://zone.ni.com/devzone/cda/tut/p/id/7117
Several people mentioned the difficulty of requirements management in this thread. The consensus amongst software developers is that requirements gathering is a difficult art to master, but the fact is that it can be extremely costly if overlooked. After analysis of 63 different software projects at companies such as IBM, GTE and TRW, we can actually put a number next to the ‘cost of getting it wrong’
The fact is that LabVIEW often falls victom to oversight of requirements as well as a lack of due dillegence for other software engineering practices due to the fact that it is so commonly used for rapid prototyping of small applications. Too often, I’ve seen developers try to scale these initially small projects into much larger and more complex systems without giving proper thought to requirements and especially to code architecture. Good requirements are typically generated as a result of iteratations between prototyping and documenting the findings of prototyping, which then lend themsleves to proper archiecture and better insight into how an application should be designed and help developers apply sound software engineering practices to ensure quality and reliability.
If you’re interested to learn more about requirements management with LabVIEW, check out some of these links.