|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
Я сейчас пытаюсь разобраться с определённой проблемой. И чтобы её решить мне надо проследить вызов определённой функции. Конечно, можно было бы использовать ручку и бумагу, чтобы записать весь этот путь, но хотелось бы воспользоваться уже готовыми продуктами разроботки программного обеспечения. Обычно я для таких целей использую Visio, но я не уверен что я пользуюсь верной моделью изображения и я даже не уверен, есть ли вообще какая-то модель, которая служит именно для таких целей. Но я не специалист в разработке ПО, так любитель ;). Вот и хотелось бы узнать у тех, кто на этом "собаку" съел, как бы вы изобразили и сохранили бы на будущее информацию о вызове конкретной функции? Надо ещё учесть, что имеется различные аппликации и библиотеки, которые вызывают в конце концов эту функцию, а также она может быть использована в различных потоках и т.д. и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2006, 19:21 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
Хм. Боюсь, я отвечу "не в ту сторону", но похоже проблема в неудачном дизайне этого фрагмента кода. Желание изобразить и запомнить на будущее такой путь имхо может возникнуть либо в случае излишне сильной связи между функциями, либо при слишком запутанных, недостаточно структурированных связях; других вариантов я не вижу. Вдобавок, call stack - вещь, очень подверженная изменению в ходе сопровождения, и фиксировать его - значит, создавать быстро устаревающий документ. Отчасти это утверждение сродни более частому - если появилось желание нарисовать блок-схему работы некоторой подпрограммы, ее нужно вместо этого разбить на более простые и короткие. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2006, 20:03 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
softwarerХм. Боюсь, я отвечу "не в ту сторону", но похоже проблема в неудачном дизайне этого фрагмента кода. Желание изобразить и запомнить на будущее такой путь имхо может возникнуть либо в случае излишне сильной связи между функциями, либо при слишком запутанных, недостаточно структурированных связях; других вариантов я не вижу. Вдобавок, call stack - вещь, очень подверженная изменению в ходе сопровождения, и фиксировать его - значит, создавать быстро устаревающий документ. Отчасти это утверждение сродни более частому - если появилось желание нарисовать блок-схему работы некоторой подпрограммы, ее нужно вместо этого разбить на более простые и короткие. Я согласен со всем что ты написал здесь. Но я получил эту программу в таком виде. Но чтобы понять, что проишодит в программе и найти BUG, мне надо хоть как-то понять как это работает. Мне не хотелось бы это делать в таком виде, как изображено ниже (это пример из другой немного области), если есть что-то более подходящее этой цели, чтобы в будущем когда мне понадобится найти все связи, мне было бы легче это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2006, 20:21 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
Штука полезная, когда нужно отследить влияние функции на окружение. Типа что будет, если её изменить. На UML можно Use Case диаграмму изобразить. Акторы - пользователи твоей функции, Система - сама функция, прецедент(ы) описывает цель вызова функции с точки зрения её пользователя. Можно ещё добавить акторов, которые обозначат функции, и объекты которые используются самой функцией в процессе реализации прецедента. Будет странно, если у функции окажется более одного главного прецедента. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2006, 20:30 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
mcureenabШтука полезная, когда нужно отследить влияние функции на окружение. Типа что будет, если её изменить. На UML можно Use Case диаграмму изобразить. Акторы - пользователи твоей функции, Система - сама функция, прецедент(ы) описывает цель вызова функции с точки зрения её пользователя. Можно ещё добавить акторов, которые обозначат функции, и объекты которые используются самой функцией в процессе реализации прецедента. Будет странно, если у функции окажется более одного главного прецедента. А нельзя ли для этой цели использовать Sequence Diagram? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2006, 21:23 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
смотря какой язык, например в Delphi есть программы автоматом строит то что хочешь ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2006, 10:47 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
GoldDragonА нельзя ли для этой цели использовать Sequence Diagram? Из пакета поведения практически любую диаграмму можно использовать. Дугое дело облегчает ли она понимание проблемы. У тебя процесс сильно зависит от времени? На диаграммах последовательности изображают последовательность взаимодействия объектов во времени. Твоя функция будет находится на одном из рёбер между линиями жизни объектов. ИМХО, её будет трудно найти среди всех остальных вызовов. Для каждого вариата вызова тебе придётся нарисовать отдельную диаграмму, а то и не одну. Думаю, что сильно увлекаться диаграммами тут не стоит. Имеет смысл описать сценарии словами. (Сценарий это экземпляр варианта использования). Можно ещё построить дерево зависимостей. Над функцией - кто от неё зависит, под функцией от кого она зависит. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2006, 11:01 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
Мне кажется, что mcureenab зашел немного с другой стороны, и тут можно построить и Sequence Diagram (если хотите показать взаимодействие между классами/объектами) и Active Diagram (если хотите построить блок-схему) и Statechart Diagram (если хотите показать состояние объектов/классов). Так же на Active/Statechart Diagram можно указать дорожки с классами/объектами для более структурированной последовательности действий и понимая что и какой класс делает. Не совсем согласен с softwarer , т.к. графическое представление всегда облегчает понимание, особенно чужого кода, но соглашусь, что писать надо правильно и не одной тряпкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2006, 11:36 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
basНе совсем согласен с softwarer , т.к. графическое представление всегда облегчает понимание, особенно чужого кода http://www.rsdn.ru/Forum/Message.aspx?mid=1973177&only=1 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2006, 11:49 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
Alexey Kudinov basНе совсем согласен с softwarer , т.к. графическое представление всегда облегчает понимание, особенно чужого кода http://www.rsdn.ru/Forum/Message.aspx?mid=1973177&only=1 неплохой пример, как проекты на высокоуровневых языках (с библиотеками) сложно "визуализировать". Разберётся только "главный архитектор корабля" (но никому не скажет). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2006, 14:33 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
basМне кажется, что mcureenab зашел немного с другой стороны, и тут можно построить и Sequence Diagram (если хотите показать взаимодействие между классами/объектами) и Active Diagram (если хотите построить блок-схему) и Statechart Diagram (если хотите показать состояние объектов/классов). Так же на Active/Statechart Diagram можно указать дорожки с классами/объектами для более структурированной последовательности действий и понимая что и какой класс делает. Не совсем согласен с softwarer , т.к. графическое представление всегда облегчает понимание, особенно чужого кода, но соглашусь, что писать надо правильно и не одной тряпкой. А с чего бы ты начал и как бы ты это сделал? Просто я не большой спец во всех этих видах диаграм. Мне надо просто чтобы в будущем мне не пришлось бы снова бегать по всему коду и искать взаимосвязи, а просто зашёл бы в Visio, просмотрел то, что я уже сделал до этого и нашёл бы места, где бы я мог поставить trace code, чтобы посмотреть почему произошла ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2006, 22:51 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
Если хочешь трасируемости от диаграммы к коду, то ты ее не получишь. Ну начни с Active Diagramm. Нарисуй простую блок схему работы программы. Потом поймешь дальнейшие шаги или спросишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2006, 11:03 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
GoldDragonМне надо просто чтобы в будущем мне не пришлось бы снова бегать по всему коду и искать взаимосвязи, а просто зашёл бы в Visio, просмотрел то, что я уже сделал до этого и нашёл бы места, где бы я мог поставить trace code, чтобы посмотреть почему произошла ошибка. А не случится ли так, что разобравшись с веткой кода ты обнаружишь и устранишь ошибки, таким обрабзом тебе никогда уже не придётся смотреть его второй раз? Определись что ты хочешь увидеть на диаграмме. Стек вызовов? Потоки данных? Сценарии, в контексте которых выполняется функция? Пользователей функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2006, 11:59 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
mcureenab GoldDragonМне надо просто чтобы в будущем мне не пришлось бы снова бегать по всему коду и искать взаимосвязи, а просто зашёл бы в Visio, просмотрел то, что я уже сделал до этого и нашёл бы места, где бы я мог поставить trace code, чтобы посмотреть почему произошла ошибка. А не случится ли так, что разобравшись с веткой кода ты обнаружишь и устранишь ошибки, таким обрабзом тебе никогда уже не придётся смотреть его второй раз? Определись что ты хочешь увидеть на диаграмме. Стек вызовов? Потоки данных? Сценарии, в контексте которых выполняется функция? Пользователей функции? Сценарии, в контексте которых выполняется функция!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2006, 19:08 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
GoldDragon mcureenabОпределись что ты хочешь увидеть на диаграмме. Стек вызовов? Потоки данных? Сценарии, в контексте которых выполняется функция? Пользователей функции? Сценарии, в контексте которых выполняется функция!!! Диаграмма вариантов использования как раз определяет контекст. На диаграмме этого типа изображаются классы сценариев, а не сами сценарии. Конкретные сценарии следует описать текстом. Типа: Сценарий 1. Функция X вызывает твою функцию с такими значениями параметров. Твоя функция возвращает такой результат. Сценарий 2. Функция X вызывает твою функцию с дугими значениями параметров. Твоя функция поднимает исключение E. И т.п. Диаграммы состояний и делятельности описывают изменения и переходы внутри системы в ответ на внешние события. Но как я понимаю метод функции описывать не надо, поэтому диаграммы этого типа для решения задачи не подойдут. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2006, 19:55 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
mcureenab Конкретные сценарии следует описать текстом. mcureenab Ну начни с Active Diagramm. Нарисуй простую блок схему работы программы. Необязательно текстом. Я обычно делаю это с помощью Flowchart. И я могу в принципе продолжать делать тоже самое с его помощью. Просто может быть с помощью URL это будет нагляднее? Вот к примеру небольшой кусок программы: Есть 3 наследуемых класса: LESElement => TaskInfo => QOCTaskInfo. Путь запроса идёт так - QOCTaskInfo.TaskOfficialName => TaskInfo.ServiceName => QOCTaskInfo.operator[] => LESElement.operator[]. Это очень небольшой пример того, какие функции должны быть выполнены прежде чем я узнаю имя. Здесь я не указываю различные условия по пути и кроме того, на самом деле классов больше. Как работать с Flowchart я знаю, а как тоже самое изобразить в Activity Diagram? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2006, 22:32 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
GoldDragon mcureenab Ну начни с Active Diagramm. Нарисуй простую блок схему работы программы. Ошбочка - это комментарий bas-а ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2006, 22:35 |
|
Как изобразить путь вызова функции графически?
|
|||
---|---|---|---|
#18+
GoldDragonКак работать с Flowchart я знаю, а как тоже самое изобразить в Activity Diagram? Если использовать Activity Diagram только как средство рисования, то точно так же. Рисуешь граф, в узлах находятся действия, на рёбрах переходы потока управления. ИМХО, ничего нового ты не обнаружишь. Стек вызовов будет значительно компактнее и полезнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2006, 11:30 |
|
|
start [/forum/topic.php?fid=33&fpage=58&tid=1549317]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 232ms |
total: | 386ms |
0 / 0 |