OberonCore
https://forum.oberoncore.ru/

Рефакторинг: есть ли ему место в разработке систем?
https://forum.oberoncore.ru/viewtopic.php?f=86&t=3573
Страница 3 из 4

Автор:  Valery Solovey [ Четверг, 22 Сентябрь, 2011 22:14 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

alexus писал(а):
Valery Solovey писал(а):
Пишется один или несколько новых модулей. Они подключаются. Старые модули отключаются. Всё это время система как работала, так и продолжает работать. Остановок в работе не было. Повторного тестирование ранее написанного кода тоже не было.
Фактически, это всё тот же рефакторинг
А вот и нет. Часть пунктов лишние. Часть всё равно придётся делать. Правда, когда я писал сообщение, я думал об относительно однородном и небольшом предприятии. Но когда Вы начали перечислять способы оплаты работ, то стало понятно, что моё решение будет слишком тяжело поддерживать.

Автор:  alexus [ Четверг, 22 Сентябрь, 2011 22:16 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Драконограф писал(а):
alexus писал(а):
Программисты должны стараться создавать качественные инструменты в тех случаях, когда речь идёт о том, что предметную область невозможно или не нужно/бесполезно (как в приведённом случае) формализовать.
Читай - когда, скажем, требуется просто отработать задачу от начала до конца по дной и той же схеме? М.б. неоднократно - но с рестартом каждый раз с определённого места (возможно, одного из нескольких)?
Возможно, но необязательно. Иногда достаточно не спешить приступать к реализации... поразмышлять, подумать, то есть, пропустить через голову. Иногда "через руки" доходит... всё это индивидуально и относительно задачи, и относительно разработчика.
Драконограф писал(а):
alexus писал(а):
Развитие должно опираться на "правильную схему/модель"... иначе неизбежно вернёмся к рефакторингу (переделки то в одном месте, то в другом). Так вот... "выявление сущностей/отношений предметки, операций над ними" - это относится к получению "правильной модели", но не её развитию.
...
Общее движение (аналитика, проектировщика, программиста) должно происходить от семантики в сторону насыщения/многообразия форм, а не от ошибок и недочётов (в модели/проектной документации/коде) к их исправлению. Исходная мысль здесь: "смысл всегда прост, трудно даётся его обретение". Ладно... я, кажется, опять увлёкся "тонкими материями"... Напрасно...
М.б. и нет... ну потом так потом. :)
Т.е. суммируя - один раз, уяснив смысл предметки, формируем её ДСЛ (язык моделей, которые считаем правильными)?
Вообще я имел в виду под изменением ДСЛ (кроме указанных Вами введений его изоморфных представлений) не столько его исправление, сколько расширение... подобно тому, как интегро/диффисчисления расширяют арифметику... ну и т.д. Вряд ли это всегда сразу видимо... или нет?..
Однажды я увител ссылку на статью Вирта... "...step by step..." Подумалось: "Вот оно", - но статья оказалась не о том... увы. Кратко я бы так выразил процесс развития... сначала познаётся суть. Собственно суть - это и есть минимальная модель из которой нельзя ничего убрать, не исказив существо... Убрав из промышленного предприятия производство, мы тем самым разрушаем суть промышленного предприятия... оно превращается в торговое или транспортное... уберём логистику и исчезнет логистическое предприятие... оно превратится в финансовое... в котором всего одна функциональная подсистема. Если её убрать, то... получим "дырку от бублика". Точно также и внутри любой подсистемы. Каждая подсистема образована всего тремя элементами... Например, сбыт: 1)товар/продукция, 2)деньги и 3)клиенты. Свяжем их товар-клиенты, клиенты-деньги, деньги-товар. Смысл каждой связи отражается на множестве документов. Если убрать хотя бы один из элементов, то сбыта уже не будет. Эти три взаимосвязных элемента отражают суть любого сбыта.
После того, как суть (как минимальная... правильная схема/модель) определена и реализована, может начинаться развитие. Развитие происходит как пошаговое углубление (более детальная проработка) и пошаговое расширение (включение новых "несущественных" элементов). Никакой переработки того, что сделано на предыдущем шаге не делается (конечно, если семантическая модель была хорошо продумана). Развитие (углубление и расширение) связаны не с недостатками исходной семантической модели (она банально проста), а с привязкой её к конкретной предметной области.

Автор:  Иван Кузьмицкий [ Пятница, 23 Сентябрь, 2011 05:14 ]
Заголовок сообщения:  Re: Оберон, ДРАКОН и проектирование систем

Info21 писал(а):
Иван Кузьмицкий писал(а):
Заранее можно обдумать структуру программы, если отчетливо понимаешь, в чем задача.

Чем новее и сложнее задача, тем труднее ее понять.
Вот игра с реальными прототипами как раз и позволяет понять, в чем там дело.


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

Автор:  alexus [ Пятница, 23 Сентябрь, 2011 06:34 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Простите, вынужден был прервать ответ...

Драконограф писал(а):
Ну, мне тоже кажется правильным проекция... в этом смысле и говорил. И она в Вашем понимании возможна так - просто даём уже определённым в инварианте вещам/отношениям названия, принятые в предметке? Т.е. можно определить некий базис типов отношений и сущностей?
Да, об этом и идёт речь. Если мы подразумеваем последующий рефакторинг, то можно подходить к выбору базиса произвольно, не задумываясь. Но противоположный подход, без рефакторинга, исходит из выявления и реализации базовых элементов с последующим их углублением и насыщением в направлении той или иной предметной области, включая те области, где разработчики... некомпетентны... (понимаю, что это высказывание вызовет волну негодования и насмешек, но может быть хоть кто-то задумается... оно того стоит...)

Автор:  alexus [ Пятница, 23 Сентябрь, 2011 06:49 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Alexey_Donskoy писал(а):
alexus писал(а):
Общее движение (аналитика, проектировщика, программиста) должно происходить от семантики в сторону насыщения/многообразия форм, а не от ошибок и недочётов (в модели/проектной документации/коде) к их исправлению...
Например так, есть некоторая супер-модель ("правильная схема"), которая включает в себя все модели ("схемы"). Эта "супер-модель" является собирательным образом и постоянно дополняется новыми моделями (схемами). А можно так, супер-модель, проецируется на разные области, и поэтому она не является собирательным образом, а является про-образом тех образов-моделей, которые являются её проекциями на предметные области. Это два принципиально разных... взгляда/подхода...
Первая мысль: блин, всё же так просто и очевидно!
И всегда сам знал, только словами выразить не мог :wink:
Это Вам просто повезло... Гораздо хуже, когда получается выразить... Собственно, в этом легко убедиться... Но я рад, что Вам понравилась (хотя в статье "О познании" я говорил тоже самое... чуть другими словами, но, зато, с графическими иллюстрациями).
Alexey_Donskoy писал(а):
Вторая мысль: а примеров второго-то я и не видел в жизни... за исключением пары относительно мелких частных задач... Почему? А, может, это всё правильно, но принципиально недостижимо, как абсолютный идеал?
Достижимо, точнее оно всегда с нами, рядом... только стремимся мы к другому, как правило... Потом, что-то правим или выбрасываем...
Alexey_Donskoy писал(а):
Если ты не знаешь ни одной предметной области - то откуда возьмётся прообраз? Следовательно, нужна подготовка, изучение, опыт построения моделей, рефакторинг тот же... пока не кристаллизуется вот эта самая суть!
Прообраз берётся не из предметной области. Предметная область нужна только для того, чтобы... привести человека к... себе самому (заинтересовать в познании), а не для того, чтобы приподнести "прообраз".

PS. Просьба, пишите подобные сообщения (офтопик) в личку...

Автор:  Alexey_Donskoy [ Пятница, 23 Сентябрь, 2011 08:08 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

alexus писал(а):
Прообраз берётся не из предметной области. Предметная область нужна только для того, чтобы... привести человека к... себе самому (заинтересовать в познании), а не для того, чтобы приподнести "прообраз".
Согласен.

alexus писал(а):
хотя в статье "О познании" я говорил тоже самое...
Пока это выглядит как противоречие, и в голове не укладывается... Но, вероятно, и не надо укладывать :wink:
В познании, как и везде, имхо, есть циклы. "Экстенсивный" период накапливает опыт, затем "интенсивный" кристаллизует суть, которая, будучи познана, даёт потенциал для очередного "экстенсивного" скачка... имхо...

alexus писал(а):
PS. Просьба, пишите подобные сообщения (офтопик) в личку...
Если ещё хотя бы один человек, кроме меня, сочтёт сие важным, то уже никак не офтопик :wink:

Автор:  albobin [ Пятница, 23 Сентябрь, 2011 09:12 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Спор по поводу рефакторинга, понимаемого всеми по разному, есть пример "семантического недоразумения" :)
Не могу в толк взять, а в чём предмет спора в части системостроительства? Неужели кто-то спорит, что если идёт проектирование сверху вниз, то изменения верхнего уровни могут приводить к большим изменениям в низлежащих и потому это нежелательно и потому надо тщательно подходить к проектированию. Боюсь, что в том, что сейчас написал, также заложена мина "семантического недоразумения". Поясню мысль. Всегда есть слой, где локализована вся количественная сложность системы, грубо говоря все человеко-месяцы написания кода. Надо избегать смены проектных решений, которые сильно возмущают этот слой. Универсальных конкретных рецептов наверное нет, есть абстрактные рекомендации и хорошие и/или плохие примеры инженерных решений. Давеча был приведён хороший пример инженерного решения.
ЗЫ.
В начале этой ветки было высказано мнение, что нет в Обероне всего необходимого для проектирования/моделирования систем. Как то быстро затухла стартовая тема. Видимо оттого, что те люди, которые знают и используют сабж, имеют конкретные аргументы в пользу Оберона. Остальным же приходится аргументировать общими соображениями (как за, так и против). :)

Автор:  Илья Ермаков [ Пятница, 23 Сентябрь, 2011 13:05 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

alexus писал(а):
Никакой переработки того, что сделано на предыдущем шаге не делается (конечно, если семантическая модель была хорошо продумана). Развитие (углубление и расширение) связаны не с недостатками исходной семантической модели (она банально проста), а с привязкой её к конкретной предметной области.


Мне кажется, что даже при таком подходе - поиск смыслового ядра и потом его уточнение - остаётся частая ошибка: что-то не включено в ядро, что-то не вяжется при переходе к конкретным случаям. Модель тут же "догромождается", как только её конкретизируем. Тогда приходится выделять ещё одно упущенное "ядерное" понятие или связь и вносить её в ядро.

Автор:  alexus [ Пятница, 23 Сентябрь, 2011 15:51 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Илья Ермаков писал(а):
alexus писал(а):
Никакой переработки того, что сделано на предыдущем шаге не делается (конечно, если семантическая модель была хорошо продумана). Развитие (углубление и расширение) связаны не с недостатками исходной семантической модели (она банально проста), а с привязкой её к конкретной предметной области.
Мне кажется, что даже при таком подходе - поиск смыслового ядра и потом его уточнение - остаётся частая ошибка: что-то не включено в ядро, что-то не вяжется при переходе к конкретным случаям. Модель тут же "догромождается", как только её конкретизируем. Тогда приходится выделять ещё одно упущенное "ядерное" понятие или связь и вносить её в ядро.
:)
А может быть и правда, "страшнее кошки зверя нет"?.. Илья, я не собираюсь никого ни в чём убеждать, я говорю только о своём опыте. Что Вы можете сказать о системе расчётов?.. Это реализуемо? Это расширяемо?.. ... положив правую руку на левое сердце... :) Хотите я нарисую сбыт/снабжение, как семантическую модель?.. Обсудим возможные направления развития... или опровержения выслушаем (вдруг есть такое предприятие, где всё/что-то не так... то есть, не всё предусмотрено в семантической модели... и придётся рано/поздно её переделать... обидно же... весь жизненный опыт... к проктологу...) ;)
(производство и финансы тоже можно рассмотреть, как и прочие подсистемы, но там вводная часть больше... лениво...)

Автор:  Илья Ермаков [ Пятница, 23 Сентябрь, 2011 16:40 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Я не возражал, а просто уточнял... Что иногда возврата к работе над смысловым ядром бывает не избежать...

Автор:  Peter Almazov [ Пятница, 23 Сентябрь, 2011 17:39 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

alexus писал(а):
Хотите я нарисую сбыт/снабжение, как семантическую модель?.. Обсудим возможные направления развития... или опровержения выслушаем (вдруг есть такое предприятие, где всё/что-то не так... то есть, не всё предусмотрено в семантической модели... и придётся рано/поздно её переделать... обидно же... весь жизненный опыт... к проктологу...) ;)
(производство и финансы тоже можно рассмотреть, как и прочие подсистемы, но там вводная часть больше... лениво...)
Илья, ну напишите уже "хотим!"
:)

Автор:  alexus [ Пятница, 23 Сентябрь, 2011 18:24 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Peter Almazov писал(а):
alexus писал(а):
Хотите я нарисую сбыт/снабжение, как семантическую модель?.. Обсудим возможные направления развития... или опровержения выслушаем (вдруг есть такое предприятие, где всё/что-то не так... то есть, не всё предусмотрено в семантической модели... и придётся рано/поздно её переделать... обидно же... весь жизненный опыт... к проктологу...) ;)
(производство и финансы тоже можно рассмотреть, как и прочие подсистемы, но там вводная часть больше... лениво...)
Илья, ну напишите уже "хотим!"
:)

Да, действительно... не стоит быть навязчивым...
Всем пламенный привет, и удачи... в рефакторинге!

Автор:  Peter Almazov [ Пятница, 23 Сентябрь, 2011 18:43 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

alexus писал(а):
Peter Almazov писал(а):
alexus писал(а):
Хотите я нарисую сбыт/снабжение, как семантическую модель?.. Обсудим возможные направления развития... или опровержения выслушаем (вдруг есть такое предприятие, где всё/что-то не так... то есть, не всё предусмотрено в семантической модели... и придётся рано/поздно её переделать... обидно же... весь жизненный опыт... к проктологу...) ;)
(производство и финансы тоже можно рассмотреть, как и прочие подсистемы, но там вводная часть больше... лениво...)
Илья, ну напишите уже "хотим!"
:)

Да, действительно... не стоит быть навязчивым...
Всем пламенный привет, и удачи... в рефакторинге!
Да нет, Вы поняли все в точности наоборот.
Я бы сам написал ХОТИМ, и даже очень, но предложение-то относилось к Илье. Поэтому не счел возможным и попытался повлиять на Илью.

Автор:  Valery Solovey [ Пятница, 23 Сентябрь, 2011 19:44 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

albobin писал(а):
Спор по поводу рефакторинга, понимаемого всеми по разному, есть пример "семантического недоразумения" :)
Просто у рефакторинга есть автор. Он описал какую-то деятельность и дал ей имя, чтобы потом на неё ссылаться. Если мне не изменяет память, то автор его - тот же человек, что и описавший технику экстремального программирования. Возможно даже, что в книге про экстремальное программирования этот термин и был введён. Сам я книгу не читал, но мне говорили, что рефакторинг в идеале не должен вносить изменения в логику работы. Таким образом, рефакторинг в сумме с полётом мысли даёт то, против чего выступает alexus.
Но если вдуматься в слово "рефакторинг", то его значение окажется более глубоким, чем официальное. Относиться к исходному коду оно будет в самую последнюю очередь.

Автор:  albobin [ Пятница, 23 Сентябрь, 2011 20:01 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Valery Solovey писал(а):
]Просто у рефакторинга есть автор...

Вот он и виноват во всём. Напридумывал, понимаешь, а люди потом ссорятся и обижаются :)

Автор:  Валерий Лаптев [ Пятница, 23 Сентябрь, 2011 21:08 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Книгу о рефакторинге написал Мартин Фаулер. Тот же, который написал книгу о DSL.
По определению Мартина Фаулера рефакторинг - это изменение когда с целью его улучшения без изменения функциональности.
В книге приводится 130 приемов-паттернов рефакторинга. От небольших до крупных.
Есть еще книга Кориевски Рефакторинг с использованием шаблонов (паттернов) проектирования.
Есть еще Рефакторинг баз данных.
Это довольно модный ныне термин.

Автор:  Владислав Жаринов [ Суббота, 24 Сентябрь, 2011 08:42 ]
Заголовок сообщения:  Инвариантная модель <искусственной> системы

alexus писал(а):
Peter Almazov писал(а):
alexus писал(а):
Хотите я нарисую сбыт/снабжение, как семантическую модель?.. Обсудим возможные направления развития... или опровержения выслушаем (вдруг есть такое предприятие, где всё/что-то не так... то есть, не всё предусмотрено в семантической модели... и придётся рано/поздно её переделать... обидно же... весь жизненный опыт... к проктологу...) ;)
(производство и финансы тоже можно рассмотреть, как и прочие подсистемы, но там вводная часть больше... лениво...)
Илья, ну напишите уже "хотим!"
:)

Да, действительно... не стоит быть навязчивым...
Всем пламенный привет, и удачи... в рефакторинге!
Чё-то не понял... Илья кому-то что-то запрещал обсуждать?.. :wink: Мне также интересно... тем более, что соответствует ИТ в возможном её базовом смысле, как здесь. Другое дело - что для этого топика другая тема... возможно, эта... или эта?..

Автор:  Info21 [ Суббота, 24 Сентябрь, 2011 09:46 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

Peter Almazov писал(а):
alexus писал(а):
Да, действительно... не стоит быть навязчивым...
Всем пламенный привет, и удачи... в рефакторинге!
Да нет, Вы поняли все в точности наоборот.
Согласен.

Автор:  igor [ Суббота, 24 Сентябрь, 2011 18:07 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

alexus писал(а):
Всем пламенный привет, и удачи... в рефакторинге!
(оффтоп) - удалил!

Автор:  albobin [ Суббота, 24 Сентябрь, 2011 19:59 ]
Заголовок сообщения:  Re: Оберон и проектирование систем

igor писал(а):
(оффтоп) - удалил!

оффтоп смыт :) (Здесь)

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