Check out our General Code Repository Files. Also, before posting here, check to see if your post doesn't fit into another subforum by category.
Tags |
(This content has not been tagged yet)
|
![]() |
Aug 4 2008, 03:50 AM
Post
#1
|
|||
|
Enough LAVA to be dangerous Member Posts: 4 Joined: 31-May 08 Member No.: 11640 Using LabVIEW Since:1998 LV:8.5 ,. ,.
|
Please Help,
I have started a new programming position and need to make some important design decisions. I have noted the following from the new postition: 1. The firm utilizes large Labview test programs (using closed loop control/data aquisition) involving approximately 100 VI's or more. 2. The programs use traditional structured (procedural) programming techniques. 3. The programs are written by many differrent authors and contractors making readability and program maintenance (upgrades) difficult. Each author utilized his/her own programming techniques. 4. Each program makes extensive use of parallelism by using global variables throghout the design (which I dislike). This creates race conditions and makes troubleshooting difficult. Since this is in a production environment, maintainability is a critical design factor. Ways to make improvements in the design. This is where I need questions answered. 1. I have contemplated the use of object oriented designs using Labview. I have good training using UML tools (models) and am currently using Labview 8.2. Since the use of OO programming promotes better maintainability and program maintenance. I feel this is a good choice. Is this a good choice???? What can I do with Labview 8.2??? I cannot use the Endevo toolkit since it requires Labview 8.2.1. I have explored using native by-value Labview classes and to be honest, I cannot see how this will work in my application. Once a class is instantiated, I cannot call it again using another instance inside another VI or for that matter even inside another while loop. This seems useless to me, especially compared to text based OO in which classes can be called up at anytime with all of the data intact. Also, my current applications make extensive use of parallelism. I have attempted to use the by reference example provided in Labview which uses queues. This also did not apppear to work unless a reference wire was attached making it impossible to pass data between separate VI,s. I have read where programmers create an additional VI when creating a class which is just used for asynchronus data transfer between VI's. Is this the only option that I have? If so, how does this work? Is this type of object oriented passing of data between VI's using a class structure a doable option????? This is what I need to know. Other questions: 1. after looking at the Labview 8.6 release. there were not any earthshaking changes made to the OO section. This does not appear to meet my need of a reference based Labview class. Will this be available in Labview 9?????? 2. Endevo makes a GOOP 3 class structure. Is this what I need to use?? Will this allow passing of data between VI,s using a class type architecture???? It appears that many developers have been succesful using GOOP classes. 3. It also appears that the current Labview architecture only allows scope (public, protected, private) for methods and not for classes. Does Endevo provide full inheritance for classes and methods such as text based languages????? 4. Since OO programming has been available for years in text based languages, I am becoming impatient with the Labview implementation and may be forced to use Endevo GOOP 3 classes (third party developer). 5. I am convinced that OO is the way to solve my maintainability problem, but am confused on how to implement this in the current Labview development platform. I may have to use Endevo classes temporarily until NI provides full inheritance and then switch to native Labview classes. Hope You can help, please include illustrations and examples if possible. Thanks Very Much, Your Fellow Architect.
|
||
|
|
|||
| Ad |
Aug 4 2008, 03:50 AM
Post
#
|
||
|
|
|
||
|
|
|||
Aug 4 2008, 05:04 PM
Post
#2
|
|||
|
Very Active Member Posts: 99 Joined: 23-February 06 From: Detroit, MI USA Member No.: 4230 Using LabVIEW Since:1994 LV:8.0.1 ,8.5.1 ,7.1
|
1. I have contemplated the use of object oriented designs using Labview. I have good training using UML tools (models) and am currently using Labview 8.2. Since the use of OO programming promotes better maintainability and program maintenance. I feel this is a good choice. Is this a good choice???? Object oriented design is a powerful tool, but it won't solve your item #3 (readability and consistency of techniques). Good standards, design specifications, etc., will solve #3, especially when dealing with contractors. I cannot use the Endevo toolkit since it requires Labview 8.2.1. 8.2.1 is a patch to 8.2. Why can't you use the Endevo toolkit if you are using 8.2? Is there a reason you can't apply the patch? I have explored using native by-value Labview classes and to be honest, I cannot see how this will work in my application. Once a class is instantiated, I cannot call it again using another instance inside another VI or for that matter even inside another while loop. The native by-value LVOOP takes a little thinking when you're familiar with by-reference objects. There are means to implement a "by reference" wrapper, or you could also use one of the flavors of by-reference LabVIEW objects. I suggest looking at examples. For your Endevo questions, I believe they offer a trial period for their software. Since OO programming has been available for years in text based languages, I am becoming impatient with the Labview implementation and may be forced to use Endevo GOOP 3 classes (third party developer). No one is forcing you to use Endevo. There are applications out there similar to your scope and size that successfully implement by-value objects. There are also applications out there that use no objects at all. I am convinced that OO is the way to solve my maintainability problem, but am confused on how to implement this in the current Labview development platform. I may have to use Endevo classes temporarily until NI provides full inheritance and then switch to native Labview classes. I dissagree on both statements. Bad and unmaintainable code can just as easily be written using OOP as with non-OOP. I believe the by-value objects require different designs and have equal value; I am more partial to by-reference objects, but that's due to familiarity through LabVIEW and VB. Tim Crosspost Please Help,
I have started a new programming position and need to make some important design decisions. I have noted the following from the new postition: 1. The firm utilizes large Labview test programs (using closed loop control/data aquisition) involving approximately 100 VI's or more. 2. The programs use traditional structured (procedural) programming techniques. 3. The programs are written by many differrent authors and contractors making readability and program maintenance (upgrades) difficult. Each author utilized his/her own programming techniques. 4. Each program makes extensive use of parallelism by using global variables throghout the design (which I dislike). This creates race conditions and makes troubleshooting difficult. Since this is in a production environment, maintainability is a critical design factor. Ways to make improvements in the design. This is where I need questions answered. 1. I have contemplated the use of object oriented designs using Labview. I have good training using UML tools (models) and am currently using Labview 8.2. Since the use of OO programming promotes better maintainability and program maintenance. I feel this is a good choice. Is this a good choice???? What can I do with Labview 8.2??? I cannot use the Endevo toolkit since it requires Labview 8.2.1. I have explored using native by-value Labview classes and to be honest, I cannot see how this will work in my application. Once a class is instantiated, I cannot call it again using another instance inside another VI or for that matter even inside another while loop. This seems useless to me, especially compared to text based OO in which classes can be called up at anytime with all of the data intact. Also, my current applications make extensive use of parallelism. I have attempted to use the by reference example provided in Labview which uses queues. This also did not apppear to work unless a reference wire was attached making it impossible to pass data between separate VI,s. I have read where programmers create an additional VI when creating a class which is just used for asynchronus data transfer between VI's. Is this the only option that I have? If so, how does this work? Is this type of object oriented passing of data between VI's using a class structure a doable option????? This is what I need to know. Other questions: 1. after looking at the Labview 8.6 release. there were not any earthshaking changes made to the OO section. This does not appear to meet my need of a reference based Labview class. Will this be available in Labview 9?????? 2. Endevo makes a GOOP 3 class structure. Is this what I need to use?? Will this allow passing of data between VI,s using a class type architecture???? It appears that many developers have been succesful using GOOP classes. 3. It also appears that the current Labview architecture only allows scope (public, protected, private) for methods and not for classes. Does Endevo provide full inheritance for classes and methods such as text based languages????? 4. Since OO programming has been available for years in text based languages, I am becoming impatient with the Labview implementation and may be forced to use Endevo GOOP 3 classes (third party developer). 5. I am convinced that OO is the way to solve my maintainability problem, but am confused on how to implement this in the current Labview development platform. I may have to use Endevo classes temporarily until NI provides full inheritance and then switch to native Labview classes. Hope You can help, please include illustrations and examples if possible. Thanks Very Much, Your Fellow Architect.
|
||
|
|
|||
Aug 13 2008, 08:27 AM
Post
#3
|
|||
|
More Active Member Posts: 34 Joined: 4-October 04 From: Stockholm Member No.: 744 Using LabVIEW Since:2000 LV:8.5 ,8.2.1 ,7.0
|
Without too much meaning to "sell" Endevo´s toolkit :
Since I am using new GOOP3 GDS toolkit I can say that you can create classes by-reference and by-value in it. Endevos GOOP3 kernel included, together with OpenGOOP kernel. All making use of LabVIEWs native objects, so it is pretty easy to create and edit classes. Beta and Community Editions available on Endevos site under "products". You will also have a UML-modeller bundled, whitch synchronises LabVIEW code to UML diagram and forth. Mickael Holmström is a LAVA-member, I am sure he will help You. /ProximaBleu -------------------- Some bugs are very small, but VE-E-ERY STINKY..
|
||
|
|
|||
![]() ![]() |
| Time is now: 2nd December 2008 - 06:49 PM |