I think this is too much for my brain to comprehend on a Friday 
afternoon!!! :-)




From:
Lyle Taylor <tayl...@ldschurch.org>
To:
arslist@ARSLIST.ORG
Date:
05/15/2009 12:56 PM
Subject:
Re: Cyclomatic Complexity
Sent by:
"Action Request System discussion list(ARSList)" <arslist@ARSLIST.ORG>



** 
This is interesting.  I?ll take an initial stab at it.  At the most basic 
level, I figure a filter or active link corresponds to a basic block which 
will result in at least one node per filter or active link.  If there are 
Else actions, then it would be at least two nodes ? one for the If, and 
one for the Else.  What I can?t decide on yet is whether there could be 
more than one node per If or Else action, but there are probably cases 
where you could structure a set of actions in a filter or active link 
where the execution ? or result of ? an action could depend on the outcome 
of a previous action which may warrant adding more nodes for those 
actions.  Then again, thinking about it more, maybe push fields and set 
fields actions should be given their own node, since they essentially 
correspond to their own if statements (if the query qualification matches 
something, do this, otherwise, do this ? e.g., nothing, display an error, 
etc.).  Guides and escalations would probably also warrant having their 
own node.
 
So, in essence, the number of nodes in your graph would be equal to or 
greater than the number of workflow objects in your application.  All 
filters and active links with only an If action get at least one node, all 
those with Else actions get at least two.  You?d need to look at the 
actions in those to determine if more nodes should be applied.
 
The tricky part, then is determining how the nodes are connected, since 
the execution of any basic block in Remedy is for the most part event and 
qualification driven.  It?s less clear cut to analyze than, say, 
structured program code.  However, in designing the application, you 
understand what the flow should be, so you could run through scenarios and 
determine which workflow will fire under what circumstances and derive 
most of the edges between the nodes.  I say most, because it seems easier 
to run into situations where unexpected or bad data could cause unexpected 
behavior than you might get with structured programs.
 
So, let?s take a very simple example.  Let?s say we have a form that has a 
button and two fields, Field 1 and Field 2.  Clicking on the button 
triggers an active link that looks for an entry in another form that 
matches the text entered in Field 1 and sets Field 2 with the results and 
then pops up a notification.  You might have something like this:
 
·         The active link for the button would get one Node.  This is the 
start node.
·         The Set fields action might get three nodes (because it?s 
essentially another If statement) ? a node for the decision point (is 
there a matching entry), a node for setting Field 2 to the found value, 
and another for setting it to $NULL$ if no matching entry is found.
·         The notify action does not get a node, because it is not a 
decision point.  It?s just included as part of the node for the active 
link.  (I?m not very sure about this one, though, since you essentially 
have control passing from the conditional statement to the notification).
·         There is an end node.
 
So, in the end, we end up with 5 nodes that look something like this:
 
O
|
O
|\
OO
|/
O
 
So, with that, we would get M = E ? N + 2P = 5 ? 5 + 2*1 = 1
 
Hmm.  1 doesn?t sound right.  Maybe it would be higher if there was 
looping involved or if we branched off into other workflow.
 
Well, that was just a stab.  Thoughts?
 
Lyle
 
From: Action Request System discussion list(ARSList) [
mailto:arsl...@arslist.org] On Behalf Of Axton
Sent: Thursday, May 14, 2009 7:58 PM
To: arslist@ARSLIST.ORG
Subject: Cyclomatic Complexity
 
** I found this interesting.  I wonder how one could apply this to a 
Remedy application.

http://en.wikipedia.org/wiki/Cyclomatic_complexity

Axton Grams
_Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers 
Are"_ 


NOTICE: This email message is for the sole use of the intended 
recipient(s) and may contain confidential and privileged information. Any 
unauthorized review, use, disclosure or distribution is prohibited. If you 
are not the intended recipient, please contact the sender by reply email 
and destroy all copies of the original message.
_Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers 
Are"_ 

**********************************************************************
CONFIDENTIALITY NOTICE: 
This is a transmission from Kohl's Department Stores, Inc.
and may contain information which is confidential and proprietary.
If you are not the addressee, any disclosure, copying or distribution or use of 
the contents of this message is expressly prohibited.
If you have received this transmission in error, please destroy it and notify 
us immediately at 262-703-7000.

CAUTION:
Internet and e-mail communications are Kohl's property and Kohl's reserves the 
right to retrieve and read any message created, sent and received.  Kohl's 
reserves the right to monitor messages by authorized Kohl's Associates at any 
time
without any further consent.

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Platinum Sponsor:rmisoluti...@verizon.net ARSlist: "Where the Answers Are"

Reply via email to