Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.20;
Скачать: CL | DM;

Вниз

Вертикальная совместимость - Ваше мнение   Найти похожие ветки 

 
PEAKTOP ©   (2007-12-11 15:02) [0]

Хотелось бы услышать мнение людей, занимающихся разработкой крупных проектов, в которых требуется поддержка предыдущих версий.

Имеется проект, который успешно внедряется другим отделом. Проект - кроссплатформенное клиентской приложение для доступа к СУБД (поддерживается Firebird и MySQL). Само по себе приложение ничего не умеет, оно представляет собой интерпретатор объектного языка (Pascal) и имеет дизайнер форм (как в Delphi7). На этом всем пишется конфигурация, то есть конкретная заточка по определенный вид деятельности, уже внедренцами. В результате конфигурация представляет собой саму БД и 1000..1500 текстовых файлов - ресурсов XFM и скриптов.

В текущий момент имеется стабильная версия с огромным багофиксом, и работающая как часики. Сейчас возник вопрос о доработке ядра в сторону расширения функционала, поддержка Unicode (читай переход на BDS2006/2007), переход на новые версии компонент (Indy10, TeeChart8, EhLib), переработка LINUX-овых модулей (чтобы выглядело все одинаково), кардинальная переработка некоторых вещей.

Естественно, вертикальная совместимость должна быть строгой - иначе отдел внедрения будет бить долго и, возможно, - сапогами :), но некоторыми функциями они готовы поступиться в виду противоречия их основной идее. Вот и возник вопрос:
1) начать новый проект с нуля, реализовать в нем новую философию, а затем прикрутить "костыли" или "заглушки" к тому, что в новой версии уже не будет в виду противоречия и копать дальше в сторону полной совместимости, пока не произойдет "встреча на Эльбе". Вариант более быстрый во времени.
2) заняться переработкой старых исходников, пока не достигнем результата - тогда функционал будет меняться постепенно. Вариант более долгий.

В общем, хотелось бы услышать мнение других.


 
Семен Сурков   (2007-12-11 15:16) [1]

Никогда ничего не переписывай с нуля. И не имхо.
Биться за старый код нужно до конца, пока силы есть.

Переработка старого *работающего проекта* путем постепенного рефакторинга по моему мнению лучшее решение в большинстве случаев.

Хотя, в конкретной ситуации все очень зависит от текущего состояния проекта.


 
Reindeer Moss Eater ©   (2007-12-11 15:17) [2]

Принцип такой. Новый сервер приложений должен уметь работать со всеми версиями клиентов младше его самого. Тогда все будет ок.


 
PEAKTOP ©   (2007-12-11 15:29) [3]

> Семен Сурков   (11.12.07 15:16) [1]
Фактор №1 - время. И не все с нуля будем писать. Библиотеки кода никуда не денутся, никто их перерабатывать не собирается. Речь идет о 30-50 unit-ах из 380, отвечающих за "идеологию" ядра.

> Reindeer Moss Eater ©   (11.12.07 15:17) [2]
Ну, это понятно.  но некоторые вещи будут "сноситься", это уже обговорено. Опять таки, обкатывать будем на отделе внедрения, пусть открывают новой версией старые конфигурации. И будем искать грабли. :)

Опять же, будет кое-чего выкинуто из скомпиленнго ядра в скрипты (скриптовая машина поддерживает $INCLUDE - директиву).


 
Anatoly Podgoretsky ©   (2007-12-11 16:00) [4]

Переписать все нафиг :-)
Отказ от поддержки старого кода не тянет за собой его ошибок, а новые все равно создавать придется.


 
PEAKTOP ©   (2007-12-11 16:10) [5]

> Anatoly Podgoretsky ©   (11.12.07 16:00) [4]

Совместимость обеспечивать придется. Пускай и с помощью "костылей".

При этом хочется убить и еще одного зайца: доработка механизма OpenToolsAPI, как Delphi. т.к. отдел внедрения уже просто достал просьбами: "нет редактора меню", "можно изменить редактор колонок в DBGrid" - "не, можно вернуть старый".

Имеется возможность достучаться до дизайнера объектов из скрипта и пусть сами ваяют себе редакторы объектов и свойств "под себя".

Я уже не привожу просьбы сделать интеллектуальный редактор кода.... :( Может сразу и с распознаванием устной речи :)


 
oldman ©   (2007-12-11 16:13) [6]


> Проект - кроссплатформенное клиентской приложение для доступа
> к СУБД (поддерживается Firebird и MySQL).


Ничего не понял...
Если вы не меняете саму БД на фига вам совместимость?
И для совсем тупых: для доступа к БД или СУБД???

Разницу между понятиями объяснять?


 
data ©   (2007-12-11 16:14) [7]


> PEAKTOP ©   (11.12.07 15:02)


вопрос с точки зрения бизнес-заказчиков или с точки зрения разработчиков?

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

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

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


 
oldman ©   (2007-12-11 16:15) [8]


> В текущий момент имеется стабильная версия с огромным багофиксом,
>  и работающая как часики. Сейчас возник вопрос о доработке
> ядра в сторону расширения функционала


При чем тут "совместимость"???
Дорабатываете ядро и все.
У кого старая версия, просто лишится некоторых возможностей.


 
PEAKTOP ©   (2007-12-11 16:22) [9]

> oldman ©   (11.12.07 16:13) [6]

> Если вы не меняете саму БД на фига вам совместимость?

Имеется в виду совместимость скриптовой машины (хотя опять таки с нулевой версии поддерживается директива препроцессора IFDEF VER_NNNN) и ресурслоадера XFM (Не может он загрузить объекты с отсутсвующими свойствами - теми, которые будут "снесены").

> data ©   (11.12.07 16:14) [7]

> или разбивать команду разработчиков на два проекта
Никого разбивать не надо. Основной доход - отдел внедрения. Как внедряли, так и будут внедрять. Мы (разработчики ядра) их не касаемся.
Хотя, у отдела внедрения после этого появиться дополнительная нагрузка : тестить модули под новой версией в поисках граблей. Что времени не прибавит.


 
KSergey ©   (2007-12-11 16:43) [10]

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

Так что не понятно что автор имеет в виду под "переписывать полностью" и уж особенно - при чем тут совместимость? Выкосить некоторые функции можно и вообще без какого-либо переписывания, если в этом собственно цель :)


 
Сергей Суровцев ©   (2007-12-11 20:04) [11]

Замена 15% кода не есть переписывание.
Отлаженная как часики версия исключает простой в работе внедренцев.
Разработчикам ядра все равно нечего делать, кроме как развивать ядро.
Совместимость обеспечивается сохранением старых ф-й, даже при появлении новых аналогов.
При нормальной документированности изменений тестировать надо будет по минимуму.
Так что в чем вопрос не совсем ясно.


 
PEAKTOP ©   (2007-12-11 20:41) [12]

> Сергей Суровцев ©   (11.12.07 20:04) [11]
> Разработчикам ядра все равно нечего делать, кроме как развивать ядро.

Все, убедил. Пойдем по пути переписывания. :)

Всем: спасибо за участие в обсуждении. Услышал много полезного.



Страницы: 1 вся ветка

Текущий архив: 2008.01.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
15-1197724641
Tirael
2007-12-15 16:17
2008.01.20
как умирают компы?


2-1198234675
Denis
2007-12-21 13:57
2008.01.20
Отображение текста из dbf


15-1197634269
Piter
2007-12-14 15:11
2008.01.20
Обсудим if?


15-1197745816
Иксик
2007-12-15 22:10
2008.01.20
Просьба к модераторам


2-1198245704
..::KraN::..
2007-12-21 17:01
2008.01.20
RSS в Delphi