Welcome to Telelogic Product Support
  Home Downloads Knowledgebase Case Tracking Licensing Help Telelogic Passport
Telelogic DOORS (steve huntington)
Decrease font size
Increase font size
Topic Title: Generating a Verification or Traceability Matrix (VCRM)
Topic Summary: how do we create an advanced VCRM without running into memory problems?
Created On: 14-Nov-2007 18:56
Status: Post and Reply
Linear : Threading : Single : Branch
Search Topic Search Topic
Topic Tools Topic Tools
Quick Reply Quick Reply
Subscribe to this topic Subscribe to this topic
E-mail this topic to someone. E-mail this topic
Bookmark this topic Bookmark this topic
View similar topics View similar topics
View topic in raw text format. Print this topic.
 14-Nov-2007 18:56
User is offline View Users Profile Print this message


jason haury

Posts: 39
Joined: 20-Feb-2007

Hi All,

I'll try to keep this post brief, but there are several details to mention so the problem can be best understood. The bottom line is that to create a VCRM (verification cross-reference matrix) using a DXL script where varrying "tier levels" of requirements are linked from a Test Data module is not only tricky to implement, but also a memory hog! My present method seems to error out because of running out of memory. Since traceability is on of the biggest selling points of DOORS, I assume there's a better way to accomplish what I'm trying to do. I think the problem boils down to either 1) having too many modules open at one time, or 2) putting so much data in a skip list (intending to save time when looking up data) that it is too big for memory. Again, i appologize for the length here.

Here's the skinny on our database structure: we have 4 folders in our Project:
    Tier 1 (T1)
    Tier 2 (T2)
    Tier 3 (T3)
    Test


There may be several modules in each Tier and it's possible for requirements in Tier 2 to link directly to a Test Case (TC) in our Test Data module (TD...it contains test cases, procedures and results, but all we care about here are the Test Cases). Also, several T1 requirements may link to the same T2 rqmt, and then that single T2 may branch back out by flowing down to several T3 requirements. The following illustrates the possible paths that requirements may trace to a TC:

T1 <- T2 <- T3 <- TC
T1 <- T2 <- TC

Our goal is to generate a table (CSV file) where each row has the following information (if applicable to the row) (Class = Classification, OT = Object Text, QM = Qualification Method, ID = Object Identifier)

T1 Class, T1 ID, T1 OT, T1 QM, T2 ID, T2 OT, T2 QM, T3 ID, T3 OT, T3 QM, TC ID

Our present solution opens all of the T1 modules and begins recursively tracing links to some T2 object. That T2 Object is then traced to either a T3 object or directly to a TC. The user provides criteria about a link so the script will only process "valid" links (links going through a specific link module, going between a specific target/source, and even that the object at each end of the link pass through a filter stored in a view in each module). At each "hop" from one object to the next, it begins concatenating the appropriate attributes to generate a row for the VCRM as shown above. When we find a valid link going straight from T2 to a TC, then we add in a few commas so that when the CSV table is opened in Excel, we have our data in the right columns.

This method works well except for when we scale it to involve ~25 modules that have to be opened. It doesn't make sense to open a module and close it each time a link is traced, because chances are that same module will need to be open for many links. Thus, to save time, the script will open a module and keep it open. Is this my deal breaker?

Here are 2 more details on what's happening. 1) when a module is opened, it shows the front panel of the module so that I can load a view (the view allows the user to one show requirements meeting specific criteria if he desires). I thought maybe the front panel took up extra memory, so 2) closed the module and re-opened it without the front panel after doing the following: i scanned through all the objects in that module and for each object put an entry in a Skip List (key is the concatenation of the module's full name with a "," and the Object's Absolute Number). In this way, when we process the T1 Modules, I can just look at the details of the link coming in and see if the link is "valid" by simply looking it up in the skip list and looking at link information. if it's valid, then i will "harvest" the appropriate object attributes. Perhaps this skiplist (which contains an entry for every filtered objectect of every module) is so large that it's taking up too much memory?

I assumed looking up elements in a Skip List is faster than actually tracing a link, but I may be putting redundant data into memory by building this list. Perhaps I should just open all my Modules with the appropriate view and leave the front panels open. If i did this, I could just trace things and use "isFiltered() as part of my check for validity. another option is to put more data in my skip list and close the Modules altogether: keep the key as it is, but use the value part of the skip list to hold all the attribute values that i may need for that object. Doing this would let me close the module completely and thus free up memory (though inflate the skip list). Does anyone know which way is less memory intensive and which is faster?

Or, lastly, if there's any clever way to do all of this with Layout DXL columns, I'd love to know! I assume we'd need the columns in the TD module and upon export we could sort based on the T1 ID column. I saw other posts about how to keep traceability clear in Layout DXL, but it didn't seem like it would accomplish what we're trying to do with each link chain from T1 to a TC on a new row.

Any ideas?
Jason
Report this to a Moderator Report this to a Moderator
 14-Nov-2007 21:04
User is offline View Users Profile Print this message


David Pechacek

Posts: 674
Joined: 5-Dec-2006

Why not set up a module that uses DXL attributes(or layout columns) to pull all this information in. Then merely export the module in CSV?

You can use the traceability wizard to get a basis for the code but you'll have to tweak it for each column. It's not terribly difficult. Feel free to email me.

-------------------------
David Pechacek
AAI Services Textron
dpechacek@sc-aaicorp.com
David.Pechacek@gmail.com

Edited: 14-Nov-2007 at 21:05 by David Pechacek
Report this to a Moderator Report this to a Moderator
Statistics
20925 users are registered to the Telelogic DOORS forum.
There are currently 2 users logged in.
The most users ever online was 15 on 15-Jan-2009 at 16:36.
There are currently 0 guests browsing this forum, which makes a total of 2 users using this forum.
You have posted 0 messages to this forum. 0 overall.

FuseTalk Standard Edition v3.2 - © 1999-2009 FuseTalk Inc. All rights reserved.