Что такое трассировочная таблица
Перейти к содержимому

Что такое трассировочная таблица

Урок 10
§7(3). Анализ программ с помощью трассировочных таблиц

liniya

Для анализа свойств алгоритма и проверки его соответствия решаемой задаче используются трассировочные таблицы. В них фиксируется пошаговое исполнение алгоритма (программы), что позволяет наглядно представлять значения переменных, изменяющиеся при его выполнении. Поэтому трассировочные таблицы иначе называют таблицами значений.

Используются трассировочные таблицы двух видов:

1) таблицы, каждая строка которых отражает результат одного действия;
2) таблицы, каждая строка которых отражает результат выполнения группы действий.

Пример 3. Определим значения переменных а и b, полученные в результате выполнения следующей программы:

Составим трассировочную таблицу первого вида. В её заголовке поместим имена всех переменных, используемых в программе. В отдельном столбце будем записывать команды и условия, имеющиеся в программе. Каждая строка таблицы соответствует одному шагу алгоритма.

Чтобы не загромождать таблицу, будем записывать в каждой строке только то значение переменной, которое получено на соответствующем шаге.

Из таблицы видно, что в результате работы переменные приняли значения: а = 2 и b = 4.

Cкачать материалы урока

Тема 9. Таблицы трассировки

Ранее мы посмотрели, как загрузить исходные требования в проектную базу и работать уже с ними, как с самостоятельными элементами — оценивать наличие ошибок, некорректных формулировок, управлять приоритетами и статусами.

Однако кроме требований в проекте можно и нужно разрабатывать и управлять и другими данными. Например, структурой системы (в демо-проекте это SBS), рисками, верифи кациями, словарем, задачами.

Технически в Cradle для этого используются те же самые инструменты, что и для управления требованиями. Т.е. интерфейс унифицирован и если вы разобрались с требованиями, то значит вы освоили и работу с остальными типами проектных данных.

Самое важное — это то, что никакое требование не существует отдельно от других проектных данных. Оно обязательно должно быть связано напрямую или косвенно, например, с элементом структуры системы (в английской терминологии это называется allocation и является одной из задач проектирования).
Требования также могут быть связаны с конкретными заказчиками. С требованиями могут быть связаны риски.
И, конечно, требования часто взаимозависимы, а значит эти связи также должны быть отражены в проекте.
И так далее, в соответствии с выбранной моделью трассировки.

Назначение трассировки — отражение проектных связей, которые далее используются в качестве базы знаний проекта, для верификации проекта и управления изменениями.

Все известные мне международные стандарты, связанные с системной инженерией, говорят одно и то же: «требования должны быть трассируемы», т.е. должна быть возможность проследить все связи от исходных требований, до их реализации (через все промежуточные требования и проектные решения).

В Cradle можно настроить очень много удобных представлений для анализа проектных связей. Технически они делятся на три класса:

  • Таблицы трассировки
  • Матрицы трассировки
  • Иерархические диаграммы трассировки

— это три разных способа показать связи между проектными данными.

Сегодня мы посмотрим подробнее на таблицы трассировки.
Они основаны на Представлениях, которые мы уже немного разбирали (в рамках отображения загруженных требований (8)).
Далее иллюстрации.

На этой иллюстрации представлена типичная структура таблицы трассировки. Слева отображается один тип элементов, справа — элементы другого типа, связанные с теми, что справа. В данном случае эта таблица отражает риски, связанные с требованиями, а заоднопоказывает вероятность этих рисков.

Что можно быстро увидеть по этой таблице? Например, Тр1 — какое-то подозрительно рискованное, с ним связано аж два риска, один из них с высокой вероятностью. Возможно стоит это требование исключить или наоборот, уделить ему больше внимания.

traceability_table

Теперь пример из Cradle. Это отчет, включающий таблицу трассировки, который показывает, как исходные требования, связаны с производными системными требованиями.

report

А вот еще одно представление (не из демо-проекта), с таблицей трассировки. В этот раз от бизнес-целей к бизнес-правилам. Это уже более сложное иерархическое представление, для его генерации используется рекурсия (представление вызывает само себя).
Здесь мы видим, какие накладываются ограничения на наши бизнес-цели. Это демо-проект, поэтому конкретные цели/требования не указаны, но если бы он был наполнен реальными данными, вся картина проблем, задач и ограничений была бы как на ладони.

traceability_table2

верификация

Еще несколько примеров. Трассировка от Требований к «Фичам»

Трассировка от тестов к требованиями. Сразу можем видеть, по каким требованиям не прошли тесты. Обратите внимание, что некоторые тесты покрывают несколько требований.

тесты

И трассировка через три типа элементов — от результатов тестов, к тесткейсам и требованиям

тесты-3 типа

Еще один пример совершенно иной таблицы трассировки через три типа элементов (Доска Scrum) Релизы-User Stories-Задачи, связанные с каждой пользовательской историей

Что такое трассировочная таблица

Трассировка

Для понимания чужой программы и для проверки правильности написания своей используют метод пошагового выполнения программы с отслеживанием значений всех переменных.

Пример 6.4.
Вычисление суммы чисел от 6 до 10

Program Test.4;
var
N: integer; < Это будет счетчик цикла for >
S: integer;
begin
S:=0;
for N:=6 to 10 do
S:=S + N;
writeln(‘Сумма чисел=’, S:6);
readln
end.

Рис. 6.3. Блок-схема алгоритма вычисления суммы чисел от 6 до 10

Для проверки правильности работы программы рекомендуется пошагово отслеживать изменение всех переменных после выполнения каждого оператора программы.
Такой процесс называется трассирввкой. Продемонстрируем этот прием (табл. 6.1).
В результате работы программы на экране получим число 40.

Таблица 6.1. Трассировка программы из примера 6.4

Оператор

Условие

N

S

Примечание

S:=0

0

for N:= 6 to 10 do

Да

6

S:=S + N

6

0+6-6

For N:= 6 to 10 do

Да

7

S:= S + N

13

6 + 7 = 13

For N:= 6 to 10 do

Да

8

S:= S + N

21

13 + 8 = 21

For N:= 6 to 10 do

Да

9

S:= S + N

30

21 + 9 = 30

For N:= 6 to 10 do

Да

10

S:= S + N

40

30 + 10 = 40

For N:=6 to 10 do

Нет

11

writeln (‘Сумма чисел’,S:3)

.

На экране: Сумма чисел=40

Для операторов, выполняющих проверку условий (if, for и т. п.) в столбце «Условие» принято указывать результат проверки. В данном случае в цикле for проверяется условие продолжения цикла.
Символы «. » подчеркивают, что значение счетчика цикла по выходе из цикла считается неопределенным.

Метод трассировки очень помогает при отладке программы, когда программа выдает не тот результат, который должна выдать. Осуществляя пошаговую трассировку, мы вникаем в логику работы программы и на каждом шаге проверяем, правильны ли были наши рассуждения при ее написании.

Вычисление суммы ряда

Рассмотрим задачу вычисления суммы ряда:
1/(1*1) + 1/(2*2) + 1/(3*3) + 1/(4*4) + 1/(5*5)

Здесь мы имеем ряд дробей, у которых в знаменателях записаны квадраты чисел от 1 до 5.
Рассмотрим каждую дробь как произведение двух дробей, например:
1/(3*3) = 1/3 * 1/3

В общем виде это можно записать так:
1/(N * N) = 1/N * 1/N

Блок-схема алгоритма решения задачи представлена на рис. 6.4.

Задание 6.5.
Написать программу вычисления n! (факториал числа n), где n положительно. Определение факториала:

Другими словами, n! — это произведение первых n натуральных чисел.

Каждый следующий результат (обозначим его Р) получается путем умножения предыдущего результата (предыдущего Р) на счетчик, который пробегает значения от 1 до n.
Обозначим значение счетчика буквой k.

Получаем общий вид выражения: Р = Р * k (то есть воспользуемся рекуррентной формулой вычисления факториала: n! = (n — 1)! * n).

Программа должна быть организована так: с клавиатуры вводится число n (n— положительно), а затем на экран выдается таблица факториалов чисел до n включительно.

Задание 6.6.
Написать программу вычисления суммы ряда S=1 + 2 + 3 + 4 + 5 + 6. Нарисовать блок-схему и заполнить таблицу трассировки. Убедиться при трассировке, что сумма равна 21.

Таблица 6.2. Заготовка для таблицы трассировки алгоритма из задания 6.6

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *