OberonCore
https://forum.oberoncore.ru/

VCS и организация разработки
https://forum.oberoncore.ru/viewtopic.php?f=6&t=27
Страница 2 из 2

Автор:  Vlad [ Среда, 30 Ноябрь, 2005 13:48 ]
Заголовок сообщения: 

Ivor писал(а):
Простите что вмешиваюсь. А Вас интересуют изменения внутри используемых Вами DLL? Или достаточно только описания изменений интерфейса?


Если DLL - часть проекта, то меня интересуют изменения исходников этих DLL. Это не значит, что я буду повседневно внимательно отслеживать все изменения, сделанные другими членами команды, обычно внимание обращается на изменение интерфейсной части, но когда придет время фиксить баги, я хочу, чтобы всю историю можно было поднять со всеми подобностями.

P.S. У нас в текущем проекте ресурсы форм хранятся в бинарном виде. Постоянная головная боль.

Автор:  Сергей Губанов [ Среда, 30 Ноябрь, 2005 14:06 ]
Заголовок сообщения: 

Vlad писал(а):
Я хочу трэкать изменения.


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

Separate Compilation and Module Extension
http://www.oberon2005.ru/paper/eth10650.pdf

Автор:  Vlad [ Среда, 30 Ноябрь, 2005 14:40 ]
Заголовок сообщения: 

Сергей Губанов писал(а):
"отпечатками пальцев" (fingerprint)


Каким боком здесь "отпечатками пальцев"? Ладно поясняю на пальцах. Вчера твой коллега поменял модуль "Kernel". Сегодня ты взял последнюю версию этого модуля и у тебя все перестало работать. Твои действия?

Автор:  Илья Ермаков [ Среда, 30 Ноябрь, 2005 14:46 ]
Заголовок сообщения: 

Не спорю, что CVS здесь будет полезной, но, строго говоря, тот, кто писал модуль Kernel, должен был его сначала протестировать, что пред-пост условия и инварианты функций остались правильными. А если ошибка есть, то я бы не стал поручать ее исправлять никому, кроме ответственного за модуль. Иначе бардак получится...

Автор:  Илья Ермаков [ Среда, 30 Ноябрь, 2005 14:49 ]
Заголовок сообщения: 

Кроме того, подход, принятый в ББ, требует, чтобы во всех контрольных точках, в каждой процедуре были оговорены ASSERT-ы. Тогда вероятность того, что программа "стала работать не так" сильно уменьшается. Сразу будет видно, какие условия нарушены, и где искать ошибку.
P.S. против CVS я не спорю :-) Нужна она, нужна, да где ее пока взять под ББ? Вот руки никак не доходят сделать...

Автор:  Сергей Губанов [ Среда, 30 Ноябрь, 2005 15:38 ]
Заголовок сообщения: 

Vlad писал(а):
Каким боком здесь "отпечатками пальцев"? Ладно поясняю на пальцах. Вчера твой коллега поменял модуль "Kernel". Сегодня ты взял последнюю версию этого модуля и у тебя все перестало работать. Твои действия?


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

Автор:  Илья Ермаков [ Среда, 30 Ноябрь, 2005 15:41 ]
Заголовок сообщения: 

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

Автор:  Vlad [ Среда, 30 Ноябрь, 2005 15:47 ]
Заголовок сообщения: 

Сергей Губанов писал(а):
Если он поменял интерфейс своего модуля, значит это деяние уже было согласовано со мной заранее. Если он поменял реализацию своего модуля, то с какой стати что-то перестанет работать в моём модуле?


Детский сад. С такими вопросами не ко мне.

Автор:  Сергей Губанов [ Среда, 30 Ноябрь, 2005 15:50 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Перестать-то может, если будут нарушены спецификации.

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

Автор:  Илья Ермаков [ Среда, 30 Ноябрь, 2005 15:57 ]
Заголовок сообщения: 

Сергей, спецификации есть не только на интерфейс, но и на функциональность. Если новая реализация перестает отрабатывать какие-либо раньше допустимые входные данные, будет ошибка. Если она будет отрабатывать их не так, как раньше, будет изменение поведения.

Просто прежде чем менять, надо думать. И проверять почаще, благо пересборка проекта не нужна. А если ошибка, то лучше всего, если исправлять ее будет автор модуля. Вот тут-то CVS может и пригодиться, хотя обычно ошибки в логике на КП отлавливаются проще, чем в "классических" языках. Ставятся в контрольных точках дополнитильные ловушки-ассерты и прерывания-халты, и внимательно анализируются дампы. До полного просветления в голове. А пока этого просветления в голове не наступает, ничего лучше не менять. А то общепринятый подход - попробуем вот тут и вот тут подправить и на пошаговом отладчике прогоним, авось заработает! Так не годится, надеюсь, все понимают, почему.

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/