Хотелось бы иметь такую возможность, чтобы в любой момент показать шефу КАК это работает. Даже не знаю что и где смотреть.. Подозреваю, что уже есть что-то, чем НАДО пользоваться, но
А "что ано"? Гуглю натравил — а он ничего божеского найти не смог — кучу испанских (итальянских) форумов.. Где лежит (почитать инфу хотя бы)? Кто сделал? (может это и не софт вообще, а злобный вирус).
В приципе ты конечно прав — шефу оно не так нужно, как скажем службе технической поддержки (впрочем шеф тоже ее занимается, мистер телефонитис.. )
Но вот например возникла трабла и я открываю свои исходники (запылившийся рар-архив в стопке сидюков), смотрю, одупляюсь (довольно долго).. Все-таки даже месяц назад я думал совершенно не так, как думаю сейчас. И было бы намного быстрее и проще вместо рытья в исходниках взглянуть в большой белый лист с алгоритмом (а не восстанавливать его в памяти по обрывкам комментариев) и дать четкий и ясный ответ — что и после чего просходит (в этот раз мне нужно было просто узнать порядок действий одного алгоритма — что и за чем следует)..
И видится мне 2 пути — первый рисовать (одновременно с программированием) алгоритм, а второй — натравить какую-нибудь тулзу, которая похавает к примеру комментарии, определит, что и из чего вызывается, переменные там и красиво это все структурирует.. может я загнул, но ведь хочется!..
Здравствуйте, Sinatr, Вы писали:
S>Привет!
M>>Reverse Ingenering
S>А "что ано"? Гуглю натравил — а он ничего божеского найти не смог — кучу испанских (итальянских) форумов.. Где лежит (почитать инфу хотя бы)? Кто сделал? (может это и не софт вообще, а злобный вирус).
Скорее всего имелось ввиду Reverse Engineering, конвертация кода в некую модель, напр. UML... копайте в сторону Rational XDE. На сайте IBM можно скачать trial version.
Здравствуйте, Sinatr, Вы писали:
S>И видится мне 2 пути — первый рисовать (одновременно с программированием) алгоритм, а второй — натравить какую-нибудь тулзу, которая похавает к примеру комментарии, определит, что и из чего вызывается, переменные там и красиво это все структурирует.. может я загнул, но ведь хочется!..
Может загнул а может и нет. Но в любом случае -- если будешь давать небольшое _текстовое_ описание тому что ты делаешь, в общих чертах то во первых научишься красиво говорить, а во вторых будет потом все намного проще Ну и потом, нужно писать "правильно" разделяя задачу на ее составные (ну нынче модно это делать в виде классов)?!
Касательно схем... мммм... боюсь что чистый реверс не позволит определить весь порядок взаимодействия тех же объектов. А тот реверс что есть в визио так это не реверс, это тьфу
Привет!
F>Может загнул а может и нет. Но в любом случае -- если будешь давать небольшое _текстовое_ описание тому что ты делаешь, в общих чертах то во первых научишься красиво говорить, а во вторых будет потом все намного проще Ну и потом, нужно писать "правильно" разделяя задачу на ее составные (ну нынче модно это делать в виде классов)?!
Дык я так и делаю! Просто я не хочу комментировать очень много, ТЕМ БОЛЕЕ "красиво".. главное — сухо и по смыслу. Можно например написать такое:
// Функция add()
// Дата последней модификации: 17 декабря 2003
// Складывает два целых числа
// Входные параметры:
// int a - первый аргумент
// int b - второй аргумент
// Возвращаемое значение: int
// Используется для сложения двух целых чисел и возвращет тоже целое.
// Внимание! Если сумма a и b больше максимально хранимого в типе int значения
// то результат может быть неверным! Пользуйтесь этой функцией очень аккуратно!
// Все права защищены! Автор (я) не несет никакой ответственности за содержимое стека
// после какой-либо модификации этой функции! Пишите мне на email@email.comint add(int a, int b)
{
// здесь у нас на входе два целых числа
// складываем их и возвращем результат
// без проверки на переполнение!return a + b;
}
А потом ковырятся в листинге такой проги.. и по-моему это не есть гуд.
Я вообще думал о чем-то, что может взять мой проект и конвертнуть это в что-то такое красивое.. Однако после пары страниц, связанных с UML я вижу, что заблуждался, причем даже думал неправильно..
Но все равно хочется что-то как в Intellisense — ты ему пишешь <summary> — а он тебе потом это же показывает при вызове этой функции (использовании этого класса, метода, e.t.c) далеко от места описания.. Вот если бы можно было в комментарии вписать свои теги (а-ля атрибуты, только без вставки в exe) а потом чем-то это все пропарсить, структурировать и красивенько так напечатать? Разве это никому не нужно?
Здравствуйте, Sinatr, Вы писали:
S>Но все равно хочется что-то как в Intellisense — ты ему пишешь <summary> — а он тебе потом это же показывает при вызове этой функции (использовании этого класса, метода, e.t.c) далеко от места описания.. Вот если бы можно было в комментарии вписать свои теги (а-ля атрибуты, только без вставки в exe) а потом чем-то это все пропарсить, структурировать и красивенько так напечатать? Разве это никому не нужно?
То про что ты говоришь, да все верно -- изначально ты говорил немного о другом.
Я просто сказал что нужно еще текстуально описывать _алгоритм_ и взаимодействия работы программы в целом. Слава богу с функциями проблемы возникают не так часто как с вопросом "$$$ знает где это расположено, а если оно расположено то какого $$$ оно тут делает, и вообще $$$$$ оно тут нужно" я изначально понял ты хотел бороться с такого рода вопросами
Вот, а summary разве тебя не удовлетворяет?
А в результате получается достаточно удобная док-ция. Главное не лениться писать. Но опять таки, для себя -- имхо избыточно. Если в коллективе -- стоит. Например Firebird .NET data provider -- генерит из этих тегов док-цию в MSDN style, html при помощи ndoc. (Искать на sourceforge)... Может это таки подойдет? Да и возможно на сами сорцы провайдера не помешает посмотреть? Как пример оформления... там в коде вообще стоят только ссылки на файлы с описанием, бо если бы в сорс это засунуть -- было бы действительно жестоко.
Привет!
F>То про что ты говоришь, да все верно -- изначально ты говорил немного о другом.
Ну не знаю, я просто не хочу делать дополнительную работу (ленивый стал) и в тоже время хочу, чтобы у меня был не только листинг программы (пусть даже с комментариями и пусть даже литературно-грамотно-качественно-толково оформленными), а что-то вроде.. абстрактной сущности, выражающей поведение и состояние программы, раскрывающей алгоритм для непосвящнного... и еще кучи всего — проще говоря листа бумажки с картинкой.. и чтобы не рыться в килобайтах и каталогах проектов, а взять листик и быстренько так одуплить (или одуплиться, зависит от ситуации).
F>Я просто сказал что нужно еще текстуально описывать _алгоритм_ и взаимодействия работы программы в целом. Слава богу с функциями проблемы возникают не так часто как с вопросом "$$$ знает где это расположено, а если оно расположено то какого $$$ оно тут делает, и вообще $$$$$ оно тут нужно" я изначально понял ты хотел бороться с такого рода вопросами
Неее.. С этим проблем нет — найти-то легко (если помнишь как работает). Проблема именно чтобы не искать вообще, вернее избежать необходимости поиска любой ценой (даже небольшими затратами на этапе разработки или реализации). Просто через полгода я уже не помню ничего, за исключением может быть имени папки, где лежит проект (и то не всегда). А теперь представь, к тебе подбегает шеф (что-то там заглючило) и спрашивает, что произойдет, когда пользователь сделает то-то и то-то после того-то?.. вот это и есть проблема..
F>Вот, а summary разве тебя не удовлетворяет?
А как он меня может "удовлетворить"? Он хорошо Intellisense удовлетворяет, а мне он может лишь время от времени помочь (хотя неправда, через много лет работы с .Net будет капитально помогать при использовании старых наработок).
F>А в результате получается достаточно удобная док-ция. Главное не лениться писать. Но опять таки, для себя -- имхо избыточно. Если в коллективе -- стоит. Например Firebird .NET data provider -- генерит из этих тегов док-цию в MSDN style, html при помощи ndoc. (Искать на sourceforge)... Может это таки подойдет? Да и возможно на сами сорцы провайдера не помешает посмотреть? Как пример оформления... там в коде вообще стоят только ссылки на файлы с описанием, бо если бы в сорс это засунуть -- было бы действительно жестоко.
Много комментариев — это не всегда хорошо, к тому же они затрудняют серфинг по листингу (когда много текста, пусть даже по другому закрашенного — можно потерятся).. было бы хорошо разграничить эти две стадии (с этим неплохо справляется #region)... А вот связь между функциями (методами, классами), время вызова, и т.д — в комментарии не запихнешь. Я молчу про мнопоточность и синхронизацию.. Тебе ведь придется в любом случае читать код, а я хочу отложить это на максимально возможный срок, тоесть чтобы на большинство вопросов я мог ответить, лишь поверхностно взглянув на что-то (например, лист бумаги..)..
Firebird .Net data provider — посмотрю, спасибо.. А до ссылок на файлы в комментариях нос не дорос по крайней мере пока не испытываю такой необходимости.. может быть зря?..
С кем не бывает.. Главное что Ingenering — тоже есть такое слово! Я попробовал "марожиное" ввести — тоже есть (8 результатов).. Боюсь за чистоту нашего языка (и не нашего).. не отмоем!
S>Можно конечно сесть и красиво нарисовать все в Visio.. но это немножко не то..
А почему это не то?
Объяснить как работает — это значить описать его словами
и иллюстрировать картинками.
Так что Visio (или аналоги) в сочетании с MS Word — это нормально.
Здравствуйте, Sinatr, Вы писали:
S>Привет!
S>Хотелось бы иметь такую возможность, чтобы в любой момент показать шефу КАК это работает. Даже не знаю что и где смотреть.. Подозреваю, что уже есть что-то, чем НАДО пользоваться, но
S>
Есть тулзы, после выполнения программы выводящие порядок вызовов
функций/модулей в виде графа. Например, OptimizeIT.
Кроме того, есть тулзы, которые на основе расширений UML проектируют и генерят приложения, основанные на взаимодействии объектов. Потом в
них в режиме отладки можно визуально показать, какие сигналы, данные и
события проходят от одного объекта к другому и какой объект в данный момент
активен. Самые известные из них — Rational Rose RealTime и Telelogic Tau. Я
не в курсе, но по моему они вряд ли смогут реенжинерить готовую систему.
Здравствуйте, S-SH, Вы писали:
SS> Я не в курсе, но по моему они вряд ли смогут реенжинерить готовую систему.
Они смогут, только пользы будет мало.
Картинки и диаграмы полезны тогда, когад они содеражат только нужную
для понимания информацию и не содержат ненужных деталей.
Диаграмы получаются красивыми и понятными, только если они сделаны
вручную. То, что получается автоматически, обычно малопригодно для чтения человеком.
А так нет проблем натравить мой любимый Together на гору кода
и получить никому ненужную Sequence Diagram с горой ненужных подробностей.
Здравствуйте, bkat, Вы писали:
B>Они смогут, только пользы будет мало. B>Картинки и диаграмы полезны тогда, когад они содеражат только нужную B>для понимания информацию и не содержат ненужных деталей.
Это правильно. Модель должна содержать только ключевые детали
B>Диаграмы получаются красивыми и понятными, только если они сделаны B>вручную. То, что получается автоматически, обычно малопригодно для чтения человеком.
Это не совсем так. Сначало надо построить полную модель, возможно даже обратимую. Т.е. по модели можно было восстановить код. Потом выделить ключевые места.
B>А так нет проблем натравить мой любимый Together на гору кода B>и получить никому ненужную Sequence Diagram с горой ненужных подробностей.
Тут дело сложнее. При систематическом подходе необходимо использовать парсер. Специализированный. Который помимо примитивного разбора, позволял бы выделять значимые конструкции языка. Например блоки работы с БД, GUI и т.д.
S>Ну не знаю, я просто не хочу делать дополнительную работу (ленивый стал) и в тоже время хочу, чтобы у меня был не только листинг программы (пусть даже с комментариями и пусть даже литературно-грамотно-качественно-толково оформленными), а что-то вроде.. абстрактной сущности, выражающей поведение и состояние программы, раскрывающей алгоритм для непосвящнного... и еще кучи всего — проще говоря листа бумажки с картинкой.. и чтобы не рыться в килобайтах и каталогах проектов, а взять листик и быстренько так одуплить (или одуплиться, зависит от ситуации).
Черт возьми, и что же я имел в виду пож этим прямоугольником?.. Или это трапеция... А, это явно блок расчета статистики... А эта стрелочка от него? То ли он от кого-то зависит, то ли тот наоборот его вызывает... Поток данных? Не, поток данных у меня вот здесь... Ага... Осталось понять, в каком порядке оно что вызывает...А тут явно tight coupling, чего я их сразу в один модуль не объединил... А, нет! Точно, там же требование было — чтоб плагинилось оно... Ну ее, эту картинку, надо под дебуггером посмотреть!
... << RSDN@Home 1.1.2 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
S>И видится мне 2 пути — первый рисовать (одновременно с программированием) алгоритм, а второй — натравить какую-нибудь тулзу, которая похавает к примеру комментарии, определит, что и из чего вызывается, переменные там и красиво это все структурирует.. может я загнул, но ведь хочется!..
какой язык?
(doxygen , javadoc etc)..
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
S>Хотелось бы иметь такую возможность, чтобы в любой момент показать шефу КАК это работает. Даже не знаю что и где смотреть.. Подозреваю, что уже есть что-то, чем НАДО пользоваться, но S>Можно конечно сесть и красиво нарисовать все в Visio.. но это немножко не то..
Блок-схемы рисует visustin. Страшно, медленно, в пределах одной функции, но рисует.
Когда первый раз увидел — подумал "вот ....глупые...., кому такое нужно".
А потом как-то переписывали с FORTRAN 77 на более новый язык расчетный софт, и были процедурки по 3000 строк, и каждая третья строка — GOTO или вычисляемый GOTO. С возвратом вверх,
эквивалентностями и проч. фортрановскими радостями. Плюс отсутствие документации.
Вот тут я про visustin и вспомнил... Работает.
www.aivosto.com Не пугайся названия сайта (VB Shop), она не только под пупсик.