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"