Покрытие требований с помощью DXL

#count #ibm-doors

#граф #ibm-двери

Вопрос:

я хотел бы узнать охват моих требований с помощью ссылок из другого документа doors. Вот сценарий:

 Module m = current  
Object o = null

string NameLinkModule = "./xyz/abc"
Link InLink

int Req_Count = 0
int noInLinkCount = 0

for o in m do {
    
    if ((isMember(o."a","aaa")) amp;amp; (isMember(o."b","bbb"))) {
        Req_Count  
        // Check for any inlinks at all
        bool no_inlink_flag = true
        for InLink in o <- NameLinkModule do {
            // If this executes, at least 1 inlink- flag and break
            no_inlink_flag = false
            break
        }
        // If no inlinks, increment and print object ID without inlink
        if ( no_inlink_flag ) {
            print o."ID"
            noInLinkCount  
        }
    }
}

print "Total Requirement Number = "
print Req_Count 
print "No In Link Count = "
print noInLinkCount
print "Coverage = "
int coverage = 100 * ((Req_Count - noInLinkCount) / Req_Count)
print coverage
 

Каким-то образом количество объектов без каких-либо inlink неверно, оно равно общему количеству требований, что означает, что ни один отдельный объект не имеет inlink. Но у меня есть ссылки в текущем модуле. Я проверил модуль ссылок, и там у меня тоже есть ссылки.

Что я делаю false?

Заранее спасибо!

Ответ №1:

В графическом интерфейсе, когда вы нажимаете на входящую ссылку, вы видите текст «не загружено», только когда вы открываете модуль с исходящей ссылкой, вы видите информацию о подключенном объекте.

Эта концепция, переведенная в DXL, представляет собой разницу между ссылками на ссылки ( LinkRef ) и ссылками ( Link ). В вашем случае достаточно подсчитать ссылки LinkRefs. Только если вам нужна дополнительная информация об удаленном объекте, сначала вам нужно открыть модуль с исходящей ссылкой, а затем у вас также будет Link s в дополнение к LinkRef s в вашем модуле входящей ссылки

Комментарии:

1. Большое спасибо. Это сработало, за исключением вывода o.»ID» и вычисления покрытия.. У меня есть еще одна проблема.. В используемом мной linkmodule есть 2 набора ссылок; один — «цель к источнику», а другой — «источник к цели». Хотя один из них пуст, другой включает ссылки. Имеет ли это какое-либо значение, когда я просто использую имя linkmodule в своем скрипте или я могу каким-то образом также использовать linkset в своем скрипте?

2. Достаточно просто использовать имя linkmodule

3. print o."ID" —> print o."ID" "" ( print принимает строку в качестве параметра и o."ID" является ссылкой на атрибут. когда вы приводите ссылку на атрибут к строке, например, путем объединения ее со строкой null, вы получаете значение атрибута)

4. В конце скрипта я всегда получаю покрытие 0, даже если я приведу результат к реальному типу данных. Что здесь не так? Спасибо!

5. DXL довольно требователен, когда дело доходит до объединения int и real. Это сработало для меня, когда Req_Count и noInLinkCount имеют тип int : real coverage = 100.0 * realOf(Req_Count - noInLinkCount) / realOf Req_Count ; print coverage "" (обратите особое внимание на разницу между 100 и 100.0

Ответ №2:

Используйте LinkRef вместо ссылки

 LinkRef InLink