LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

UML Sequence diagrams and MVC planning

Hi,

I'm trying to plan a post-processing and data view/analysis tool. I definitely want to use LVOOP where applicable because I know the following to be true:

 

a) support/life of many years

b) new functionality and expansion of base functionality throughout the life-cycle

c) I’m currently using the built in 3D Surface and 3D Waterfall X-controls, but I may need to change these either to the old version or to a different implementation. (So keeping the “View” different like in MVC would allow me to just replace or add a new plug-in interface).  

 

I’ve made some classes and objects already and then I came across the “Measurement Abstraction and Model-View-Controller (MVC) Project with Actor Framework in LabVIEW”. Doing this separation seems to make a lot of sense and the Actor framework is at this point pretty well developed and well suited for this type of application.

 

I started thinking about how a sequence diagram would look, but I have no formal UML background so I feel I’m sort of just randomly naming and specifying/configuring the UML elements from Visio. Anyway, I’ve attached an early version of the sequence diagram, and as you can see I’m running into problems that may indicate that I’m not doing this right…

 

Questions:

1) Can you have objects in the “model” section communicate directly with each other, or do they have to go through the controller? (I’m thinking they SHOULD go through the controller to keep them de-coupled from each other?)

2) I’m running out of space real fast, and haven’t even touched most of the objects. Am I doing this at the wrong level of detail? Should I not define all messages on this diagram?

3) How do you indicate iterative actions (like the indexer in the model, should index all files passed to it, and update the indexing status on each iteration.)?

4) How do you indicate user event triggered messages? (Or do you not need to specially indicate these?)

 

Other than that, are there general comments anyone would be willing to share?

Thanks!

QFang
-------------
CLD LabVIEW 7.1 to 2016
0 Kudos
Message 1 of 5
(5,766 Views)

[edit to add additional line-breaks]

In parallel to this thread, I purchased some books and I'm so happy with the first one that I wanted to share it already:

"The Object-Oriented Thought Process" third edition, by Matt Weisfeld ISBN-13: 978-0-672-33016-2

Once I've solidified my understanding of OO, I'll move into the "Learning UML 2.0" by Russ Miles & Kim Hamilton. I hope and plan to start a blog over at the Large App's group so that others may glean helpful information as I go from novice enthusiast on OO to someone who actually understands OO and how to use UML.

 

Oh, and I just wanted to share some thoughts from the introduction on the Object Oriented thought process book that I think we can all recognize or even be guilty of:

 

"Several popular books deal with topics including OO analysis, OO design, OO programming, design patterns, OO data, the Unified Modeling Language (UML), OO Internet development, various OO programming languages, and many other topics related to OO development.

 

However, while pouring over all of these books, many people forget that all of these topics are built on a single foundation: how you think in OO ways. It is unfortunate, but software professionals often dive into these books without taking the appropriate time and effort to really understand the concepts behind the content.

I contend that learning OO concepts is not accomplished by learning a specific development method or a set of tools. Doing things in an OO manner is, simply put, a way of thinking. This book is all about the OO thought process.

 

Separating the methods and tools from the OO thought process is not easy. Many people are introduced to OO concepts via one of these methods or tools. For example years ago, most C programmers were first introduced to object orientation by migrating directly to C++ before they were even remotely exposed to OO concepts. Other software professionals were first introduced to object orientation by presentations that included object models using UML - again, before they were even exposed directly to OO concepts. It is not unusual to find that programming books and courses defer OO concepts until later in the learning process.

 

It is important to understand the significant difference between learning OO concepts and using the methods and tools that support the paradigm. This came into focus for me before I worked on the first edition of this book when I read articles such a Craig Larman's "What the UML is - and Isn't". In this article he states, "Unfortunately, in the context of software engineering and the UML diagramming language, acquiring the skills to read and write UML notation seems to sometimes be equated with skill in object-oriented analysis and design. Of course, this is not so, and the latter is much more important than the former. Therefore, I recommend seeking education and educational materials in which intellectual skill in object-oriented analysis and design is paramount rather than UML notation or the use of a case tool."

 

Although learning a modeling language is an important step, it is much more important to learn OO skills first. Learning UML before OO concepts is similar to learning how to read an electrical diagram without first knowing anything about electricity."

QFang
-------------
CLD LabVIEW 7.1 to 2016
Message 2 of 5
(5,709 Views)

Nice post!

 

I'd prefer you do a series of Nuggets here in the forum where you can get greater exposure and help get the gang thinking OOPishly.

 

I started with Craig Larman's book on UML and Patterns where he introduces the diagrams along with the concept side by side.

 

I am of the opinion that many developers already think OOedly but lack the vocabulary to go with their mental models.

 

Just my two cents,

 

Ben

 

 

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
0 Kudos
Message 3 of 5
(5,705 Views)

Would you recommend I put such nuggets in this thread, or do I make "my own nugget thread" or how would you do that?

I can only speak for myself, and I've found that I think in a limited sense at least, in OO ways, but I totally lack the vocabulary (as you said) and this makes all my attempts at "quickly" using UML or LVOOP for that matter, filled with all sorts of questions (what makes a good boundary for my object, should I make this a large object, or break it up in smaller objects, what type of diagram should I use, what the heck are all these "constraints" and 'tagged values" in my UML tool and when do I use what? and so on and so forth.)

 

I finally realized that as far as myself goes, with no formal CS background (I'm a "EE'ish undergrad, with a Master's in Aerospace that now happens to do mostly software engineering full time with the odd electronics, mechanics and system design thrown in to spice it up), what keeps holding me back despite my best efforts is that I completely lack a solid, deep (but rounded) foundation in the OO concepts.

 

This book has me so excited. Its the first non-fiction book that I've been able to read in bed without falling asleep! 😄

 

-Life is good! 

QFang
-------------
CLD LabVIEW 7.1 to 2016
Message 4 of 5
(5,702 Views)

@QFang wrote:

Would you recommend I put such nuggets in this thread, or do I make "my own nugget thread" or how would you do that?

...

 

This book has me so excited. Its the first non-fiction book that I've been able to read in bed without falling asleep! 😄

 

-Life is good! 


 

My approach (when I get around to Nuggetizing again) will differ slightly from what I outline below.

 

Start by composing the Nugget off-line.

 

Post your images to an albumn in your image gallery.

 

Post your Nugget and use your images from your gallery. (This will make it easier to find latter, trust me!).

 

Post an update to the Heading Cats thread on the Break Point so we can find it latter.

 

Then post a copy of the Nugget in the Community of your choice and include a link to the thread in the LV forum so others can join in the discusion.

 

Post your Nugget just prior to about 8:00 Eastern US to get the most exposure.

 

Let your Nugget cook and let others reply.

 

Time any replies to others postings to occur either at 8:00 or noon eastern. This will bump your thread when there is the most activity.

 

If others offer feedback that makes you want to edit your Nugget you can edit the version in the Community and post a link in the LV thread saying the Community was updated.

 

Try to write the Nugget for a broad audience so that you help noobs while harnessing the power of the frequent flyers by including stuff that will entertain the more seasoned contributors.

 

A special recomendation I  would make for a Nugget series on OO is to include a list of the definitions as a foot notes to make it easier for other to wade through the alphabet soup that comes with LVOOP ( rhym unintended). We can add tags for each term defined thereby turning your Nugget into a resource for other who taking on the OOPish way.

 

Don't worry about making your Nugget perfect. THe few Nuggets that were perfect, were also very boring. Nugets are chance for you to learn as well.

 

take care,

 

Ben

 

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
Message 5 of 5
(5,696 Views)