powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как изобразить путь вызова функции графически?
19 сообщений из 19, страница 1 из 1
Как изобразить путь вызова функции графически?
    #33852304
GoldDragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я сейчас пытаюсь разобраться с определённой проблемой. И чтобы её решить мне надо проследить вызов определённой функции. Конечно, можно было бы использовать ручку и бумагу, чтобы записать весь этот путь, но хотелось бы воспользоваться уже готовыми продуктами разроботки программного обеспечения. Обычно я для таких целей использую Visio, но я не уверен что я пользуюсь верной моделью изображения и я даже не уверен, есть ли вообще какая-то модель, которая служит именно для таких целей. Но я не специалист в разработке ПО, так любитель ;).
Вот и хотелось бы узнать у тех, кто на этом "собаку" съел, как бы вы изобразили и сохранили бы на будущее информацию о вызове конкретной функции?
Надо ещё учесть, что имеется различные аппликации и библиотеки, которые вызывают в конце концов эту функцию, а также она может быть использована в различных потоках и т.д. и т.п.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33852368
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Боюсь, я отвечу "не в ту сторону", но похоже проблема в неудачном дизайне этого фрагмента кода. Желание изобразить и запомнить на будущее такой путь имхо может возникнуть либо в случае излишне сильной связи между функциями, либо при слишком запутанных, недостаточно структурированных связях; других вариантов я не вижу. Вдобавок, call stack - вещь, очень подверженная изменению в ходе сопровождения, и фиксировать его - значит, создавать быстро устаревающий документ.

Отчасти это утверждение сродни более частому - если появилось желание нарисовать блок-схему работы некоторой подпрограммы, ее нужно вместо этого разбить на более простые и короткие.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33852395
GoldDragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerХм. Боюсь, я отвечу "не в ту сторону", но похоже проблема в неудачном дизайне этого фрагмента кода. Желание изобразить и запомнить на будущее такой путь имхо может возникнуть либо в случае излишне сильной связи между функциями, либо при слишком запутанных, недостаточно структурированных связях; других вариантов я не вижу. Вдобавок, call stack - вещь, очень подверженная изменению в ходе сопровождения, и фиксировать его - значит, создавать быстро устаревающий документ.

Отчасти это утверждение сродни более частому - если появилось желание нарисовать блок-схему работы некоторой подпрограммы, ее нужно вместо этого разбить на более простые и короткие.
Я согласен со всем что ты написал здесь. Но я получил эту программу в таком виде. Но чтобы понять, что проишодит в программе и найти BUG, мне надо хоть как-то понять как это работает. Мне не хотелось бы это делать в таком виде, как изображено ниже (это пример из другой немного области), если есть что-то более подходящее этой цели, чтобы в будущем когда мне понадобится найти все связи, мне было бы легче это сделать.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33852408
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Штука полезная, когда нужно отследить влияние функции на окружение. Типа что будет, если её изменить.

На UML можно Use Case диаграмму изобразить. Акторы - пользователи твоей функции, Система - сама функция, прецедент(ы) описывает цель вызова функции с точки зрения её пользователя. Можно ещё добавить акторов, которые обозначат функции, и объекты которые используются самой функцией в процессе реализации прецедента.
Будет странно, если у функции окажется более одного главного прецедента.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33852465
GoldDragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenabШтука полезная, когда нужно отследить влияние функции на окружение. Типа что будет, если её изменить.

На UML можно Use Case диаграмму изобразить. Акторы - пользователи твоей функции, Система - сама функция, прецедент(ы) описывает цель вызова функции с точки зрения её пользователя. Можно ещё добавить акторов, которые обозначат функции, и объекты которые используются самой функцией в процессе реализации прецедента.
Будет странно, если у функции окажется более одного главного прецедента.
А нельзя ли для этой цели использовать Sequence Diagram?
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33853184
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотря какой язык, например в Delphi есть программы автоматом строит то что хочешь
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33853243
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldDragonА нельзя ли для этой цели использовать Sequence Diagram?

Из пакета поведения практически любую диаграмму можно использовать. Дугое дело облегчает ли она понимание проблемы.
У тебя процесс сильно зависит от времени?
На диаграммах последовательности изображают последовательность взаимодействия объектов во времени. Твоя функция будет находится на одном из рёбер между линиями жизни объектов. ИМХО, её будет трудно найти среди всех остальных вызовов.
Для каждого вариата вызова тебе придётся нарисовать отдельную диаграмму, а то и не одну.
Думаю, что сильно увлекаться диаграммами тут не стоит. Имеет смысл описать сценарии словами. (Сценарий это экземпляр варианта использования). Можно ещё построить дерево зависимостей. Над функцией - кто от неё зависит, под функцией от кого она зависит.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33853395
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что mcureenab зашел немного с другой стороны, и тут можно построить и Sequence Diagram (если хотите показать взаимодействие между классами/объектами) и Active Diagram (если хотите построить блок-схему) и Statechart Diagram (если хотите показать состояние объектов/классов). Так же на Active/Statechart Diagram можно указать дорожки с классами/объектами для более структурированной последовательности действий и понимая что и какой класс делает.

Не совсем согласен с softwarer , т.к. графическое представление всегда облегчает понимание, особенно чужого кода, но соглашусь, что писать надо правильно и не одной тряпкой.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33853457
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basНе совсем согласен с softwarer , т.к. графическое представление всегда облегчает понимание, особенно чужого кода http://www.rsdn.ru/Forum/Message.aspx?mid=1973177&only=1
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33854077
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinov basНе совсем согласен с softwarer , т.к. графическое представление всегда облегчает понимание, особенно чужого кода http://www.rsdn.ru/Forum/Message.aspx?mid=1973177&only=1
неплохой пример, как проекты на высокоуровневых языках (с библиотеками) сложно "визуализировать". Разберётся только "главный архитектор корабля" (но никому не скажет).
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33855373
GoldDragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
basМне кажется, что mcureenab зашел немного с другой стороны, и тут можно построить и Sequence Diagram (если хотите показать взаимодействие между классами/объектами) и Active Diagram (если хотите построить блок-схему) и Statechart Diagram (если хотите показать состояние объектов/классов). Так же на Active/Statechart Diagram можно указать дорожки с классами/объектами для более структурированной последовательности действий и понимая что и какой класс делает.

Не совсем согласен с softwarer , т.к. графическое представление всегда облегчает понимание, особенно чужого кода, но соглашусь, что писать надо правильно и не одной тряпкой.
А с чего бы ты начал и как бы ты это сделал? Просто я не большой спец во всех этих видах диаграм. Мне надо просто чтобы в будущем мне не пришлось бы снова бегать по всему коду и искать взаимосвязи, а просто зашёл бы в Visio, просмотрел то, что я уже сделал до этого и нашёл бы места, где бы я мог поставить trace code, чтобы посмотреть почему произошла ошибка.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33857210
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хочешь трасируемости от диаграммы к коду, то ты ее не получишь.
Ну начни с Active Diagramm. Нарисуй простую блок схему работы программы. Потом поймешь дальнейшие шаги или спросишь.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33857417
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldDragonМне надо просто чтобы в будущем мне не пришлось бы снова бегать по всему коду и искать взаимосвязи, а просто зашёл бы в Visio, просмотрел то, что я уже сделал до этого и нашёл бы места, где бы я мог поставить trace code, чтобы посмотреть почему произошла ошибка.

А не случится ли так, что разобравшись с веткой кода ты обнаружишь и устранишь ошибки, таким обрабзом тебе никогда уже не придётся смотреть его второй раз?

Определись что ты хочешь увидеть на диаграмме. Стек вызовов? Потоки данных? Сценарии, в контексте которых выполняется функция? Пользователей функции?
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33859066
GoldDragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab GoldDragonМне надо просто чтобы в будущем мне не пришлось бы снова бегать по всему коду и искать взаимосвязи, а просто зашёл бы в Visio, просмотрел то, что я уже сделал до этого и нашёл бы места, где бы я мог поставить trace code, чтобы посмотреть почему произошла ошибка.

А не случится ли так, что разобравшись с веткой кода ты обнаружишь и устранишь ошибки, таким обрабзом тебе никогда уже не придётся смотреть его второй раз?

Определись что ты хочешь увидеть на диаграмме. Стек вызовов? Потоки данных? Сценарии, в контексте которых выполняется функция? Пользователей функции?
Сценарии, в контексте которых выполняется функция!!!
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33859125
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldDragon mcureenabОпределись что ты хочешь увидеть на диаграмме. Стек вызовов? Потоки данных? Сценарии, в контексте которых выполняется функция? Пользователей функции?
Сценарии, в контексте которых выполняется функция!!!

Диаграмма вариантов использования как раз определяет контекст.
На диаграмме этого типа изображаются классы сценариев, а не сами сценарии. Конкретные сценарии следует описать текстом. Типа:

Сценарий 1.
Функция X вызывает твою функцию с такими значениями параметров.
Твоя функция возвращает такой результат.

Сценарий 2.
Функция X вызывает твою функцию с дугими значениями параметров.
Твоя функция поднимает исключение E.

И т.п.

Диаграммы состояний и делятельности описывают изменения и переходы внутри системы в ответ на внешние события. Но как я понимаю метод функции описывать не надо, поэтому диаграммы этого типа для решения задачи не подойдут.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33859287
GoldDragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab
Конкретные сценарии следует описать текстом.

mcureenab
Ну начни с Active Diagramm. Нарисуй простую блок схему работы программы.


Необязательно текстом. Я обычно делаю это с помощью Flowchart.
И я могу в принципе продолжать делать тоже самое с его помощью. Просто может быть с помощью URL это будет нагляднее?

Вот к примеру небольшой кусок программы:
Есть 3 наследуемых класса: LESElement => TaskInfo => QOCTaskInfo.
Путь запроса идёт так - QOCTaskInfo.TaskOfficialName => TaskInfo.ServiceName => QOCTaskInfo.operator[] => LESElement.operator[].
Это очень небольшой пример того, какие функции должны быть выполнены прежде чем я узнаю имя. Здесь я не указываю различные условия по пути и кроме того, на самом деле классов больше.

Как работать с Flowchart я знаю, а как тоже самое изобразить в Activity Diagram?
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33859290
GoldDragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GoldDragon
mcureenab
Ну начни с Active Diagramm. Нарисуй простую блок схему работы программы.


Ошбочка - это комментарий bas-а
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33860065
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldDragonКак работать с Flowchart я знаю, а как тоже самое изобразить в Activity Diagram?

Если использовать Activity Diagram только как средство рисования, то точно так же. Рисуешь граф, в узлах находятся действия, на рёбрах переходы потока управления. ИМХО, ничего нового ты не обнаружишь. Стек вызовов будет значительно компактнее и полезнее.
...
Рейтинг: 0 / 0
Как изобразить путь вызова функции графически?
    #33967996
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Если стоит вопрос, откуда может вызываться функция и, вобще, кто кого вызывает, можно воспользоваться связкой Collaboration+Sequence.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как изобразить путь вызова функции графически?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]