Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как организовать поддержку ПО, Вопрос организации апгрейда ПО 
:(
    Опции темы
mlitkin
Дата 16.7.2007, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Здравствуйте, уважаемые знатоки! У нас в компании сложилась нехорошая ситуация, с которой надо что-то делать... Хотелось бы услышать мнения людей, сталкивающихся с подобным. Но обо всем по порядку...
Я работаю программистом в маленькой компании по разработке ПО. Мы пишем различные программные модули (финансовый, складской и т.д.) для организации и планирования бизнеса (что-то типа 1С, Галактика). Клиентов немного - всего 4. 2 из них крупные, которым нужно постоянно дорабатывать софт, а 2 других - мелкие (ну или можно сказать средние), для которых апгрейд софта требуется, но ЗНАЧИТЕЛЬНО реже.
Так вот, суть проблемы заключается в следующем (реальный пример из жизни)... Для одного из маленьких клиентов мы сделали складской модуль. Установили, работает. Затем складской модуль также понадобился и одному из наших крупных клиентов. Но там все не так просто, и его пришлось дорабатывать, чтобы заточить под нужды заказчика (он до сих пор в разработке). Изначально предполагалось, что складской модуль (как впрочем и все остальные) будет один на всех. Соответственно БД тоже должны быть спроектированы по одной схеме. НО! Через пару месяцев звонит маленький клиент (у которого мы склад поставили первым) и просит добавить в один из отчетов доп. поле. Делов-то, как говориться, на копейку, НО! Разработка склада ушла уже далеко вперед! Т.е. изменился не только сам модуль, но и БД (ведь все эти пару месяцев мы вели доработку модуля под нужды другого заказчика). Т.о. нам приходилось каждый раз, когда один клиент хочет изменения в модуле, накатывать ему все изменения БД, которые были сделаны для других, и обновлять exe. И все для того чтобы добавить какое-то поле в отчет (например)! При таком подходе есть ОЧЕНЬ серьезные недостатки:
1. Клиенты боялись обновлений как огня, т.к. накаты базы и обновление exe влекли за собой неотловленные баги. Плюс к этому мог запросто где-то поменяться интерфейс и т.п. Вобщем был просто кошмар!
2. Почему собственно клиент должен получать бесплатно (вместе с новым exe) те же самые дополнительные фишки, которые мы делали для другого клиента, который за них платит? Как-то это неправильно. Он ведь за них платить не будет. И правильно - он ведь их не заказывал. Он хотел только доп. поле в отчете, за которое и заплатит 100р (условно). А у нас порой на накат и связанные с ним проблемы могло уйти пара дней! А кто за них заплатит???
Вобщем, чтобы решить данные проблемы мы решили разделить исходники и БД, которые были бы индивидуальны для каждого заказчика. Это решает проблему пунктов 1 и 2, НО! Появляется новая головная боль! Опять по пунктам:
1. Исправлять найденные ошибки (например, в справочнике товаров) нужно теперь в нескольких местах (сколько копий исходников).
2. Внешний вид одних и тех же модулей может ОЧЕНЬ отличаться для разных заказчиков. Тогда новому заказчику какой демострировать? Непонятно...
Вобщем и в том и в том подходах есть минусы. Хотелось услышать ваше мнение по этому вопросу. Как же все-таки более правильно организовывать апгрейд и поддержку софта для нескольких клиентов?
P.S.: Интерфейс мы пишем на Delphi, а БД - Oracle. Правда смотрим уже в сторону .NET. Может она чем поможет...
PM MAIL   Вверх
batigoal
Дата 16.7.2007, 08:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Цитата(mlitkin @  16.7.2007,  04:12 Найти цитируемый пост)
2. Почему собственно клиент должен получать бесплатно (вместе с новым exe) те же самые дополнительные фишки, которые мы делали для другого клиента, который за них платит? Как-то это неправильно. Он ведь за них платить не будет. И правильно - он ведь их не заказывал. Он хотел только доп. поле в отчете, за которое и заплатит 100р (условно). А у нас порой на накат и связанные с ним проблемы могло уйти пара дней! А кто за них заплатит???

Заплатит за них клиент, кто же ещё. Когда вы берёте деньги с заказчика, то сумма, в которую ему это обойдётся, должна быть прямо пропорциональна усилиям на разработку/доставку. То есть даже если это всего лишь одно поле в базе, это может стоить дорого. Альтернатива - продумывание и реализация более простого механизма "патчевания".

Цитата(mlitkin @  16.7.2007,  04:12 Найти цитируемый пост)
1. Исправлять найденные ошибки (например, в справочнике товаров) нужно теперь в нескольких местах (сколько копий исходников).

Архитектурный недостаток. Если есть возможность - лучше переделать архитектуру так, чтобы она использовала общие компоненты. Тогда изменение в этом компоненте затронет обе кастомизации.

Цитата(mlitkin @  16.7.2007,  04:12 Найти цитируемый пост)
2. Внешний вид одних и тех же модулей может ОЧЕНЬ отличаться для разных заказчиков. Тогда новому заказчику какой демострировать? Непонятно...
Вобщем и в том и в том подходах есть минусы. Хотелось услышать ваше мнение по этому вопросу. Как же все-таки более правильно организовывать апгрейд и поддержку софта для нескольких клиентов?

Внешний вид - это, по сути, тоже отдельный компонент, причём хорошо локализуемый. Опять же, непродуманность архитектуры.

Общая рекомендация - продумать и переделать высокоуровневую архитектуру таким образом, чтобы всё приложение делилось на компоненты (либо на ядро с плагинами).

Ясное дело, что достижимо это далеко не всегда. Потому можно подумать ещё над таким вариантом, как версионность за счёт организации кода. Под этим я имею в виду следующее.

Существует некий "эталонный" код (reference implementation). Это может быть код проекта вашего первого (или основного) заказчика. Он хранится в CVS (ClearCase, или еще-там-где). Для всех остальных проектов код организован в такую же файловую структуру, но хранятся там только те файлы, которые имеют отличия от основной ветки. При сборке билда ветка конкретного проекта накладывается на основную, и общие файлы перезаписываются. Тогда изменения основной ветки (например, фиксы общих багов) затронут и нижестоящие.

Конечно, второй подход гораздо хуже управляем. Например, он требует периодического "поднятия" в основную ветку изменений, вносимых в рамках проектных веток.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
mlitkin
Дата 16.7.2007, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Цитата(batigoal @  16.7.2007,  08:27 Найти цитируемый пост)
Заплатит за них клиент, кто же ещё.

А если для другого заказчика добавился скажем новый функционал на главной форме, и теперь работать с документами на порядок легче и быстрее. Тогда за него тоже нужно взять доп. деньги с клиента, который хочет увидеть всего лишь новое поле в отчете? Почему он должен за это платить, он ведь это не просил делать?

Цитата(batigoal @  16.7.2007,  08:27 Найти цитируемый пост)
Общая рекомендация - продумать и переделать высокоуровневую архитектуру таким образом, чтобы всё приложение делилось на компоненты (либо на ядро с плагинами).

Я так понимаю, что по вашему мнению вариант с разделением кода неприемлим и лучше писать общий модуль, разделенный на компоненты (dll), со сложной системой настроек? А без сложной системы настроек там точно не обойтись, т.к. различия в одном только складском модуле у разных заказчиков потрясают вооброжение  smile 

Цитата(batigoal @  16.7.2007,  08:27 Найти цитируемый пост)
Конечно, второй подход гораздо хуже управляем. Например, он требует периодического "поднятия" в основную ветку изменений, вносимых в рамках проектных веток.

Да уж... Подход конечно - не фонтан.

А вообще я так понимаю что платформа .NET + C# как раз и позволяет реализовать нормальный компонентый подход к разработке приложений?
PM MAIL   Вверх
batigoal
Дата 16.7.2007, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Цитата(mlitkin @  16.7.2007,  10:15 Найти цитируемый пост)
А если для другого заказчика добавился скажем новый функционал на главной форме, и теперь работать с документами на порядок легче и быстрее. Тогда за него тоже нужно взять доп. деньги с клиента, который хочет увидеть всего лишь новое поле в отчете? Почему он должен за это платить, он ведь это не просил делать?

В общем-то, да. Если клиент хочет новый функционал, он должен за него платить. Либо следует просто перенести лишь этот небольшой кусочек в его проект.

Цитата(mlitkin @  16.7.2007,  10:15 Найти цитируемый пост)
так понимаю, что по вашему мнению вариант с разделением кода неприемлим и лучше писать общий модуль, разделенный на компоненты (dll), со сложной системой настроек? А без сложной системы настроек там точно не обойтись, т.к. различия в одном только складском модуле у разных заказчиков потрясают вооброжение  smile 

Почему бы и нет? Лучше править конфиги в XML, чем код на плюсах (или что у вас там).
А о том, что второй вариант неприемлем, я не говорил. У нас используется как раз он. Нужно только четко понимать, какие трудности он за собой влечет.

Цитата(mlitkin @  16.7.2007,  10:15 Найти цитируемый пост)
А вообще я так понимаю что платформа .NET + C# как раз и позволяет реализовать нормальный компонентый подход к разработке приложений?

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


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
arilou
Дата 16.7.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 2
Всего: 61



mlitkin, +1 за совет о плагинообразной организации, плюс посмотрите в сторону smart client (если еще не смотрели). причем, вполне реальна ситуация, когда у разных клиентов разные реализации одного и того же плагина склада. соответственно, когда клиент просит какую-то фишку, которая есть в другой ветке, вы ее мерджите с его веткой. 

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

Пишите, будем разбираться.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mlitkin
Дата 17.7.2007, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Цитата(batigoal @  16.7.2007,  09:26 Найти цитируемый пост)
Почему бы и нет? Лучше править конфиги в XML, чем код на плюсах (или что у вас там).

У нас Delphi smile Можно конечно и с конфигами сделать... Правда в таком подходе я сразу вижу ряд недостатков (первое, что приходит в голову):
1. Эта система будет ооочень сложна в разработке, настройке и поддержке, т.к. я уже писал, что различия в одном только складском модуле у разных заказчиков потрясают вооброжение.
2. exe-файл будет довольно-таки тяжеловесным, т.к. там будет вся функциональность всех заказчиков зашита. А т.к. обновления происходят по нету, то это может быть критично. Хотя, если реализовать грамотную компонентную модель, то может и не так это будет важно...

Цитата(batigoal @  16.7.2007,  09:26 Найти цитируемый пост)
 С# имеют некоторые языковые удобства для организации более структурированного с точки зрения ООП кода, что дает большую гибкость при внедрении компонентной модели.

Уже начал изучать C#. Похоже в переходе на .NET действительно есть смысл...

Цитата(arilou @  16.7.2007,  11:12 Найти цитируемый пост)
В чем ваша роль заключется в этом проекте?

Я - программист. Общаюсь с заказчиками, разрабатываю софт и затем его сопровождаю. Могу сказать, что мое мнение у нас далеко не последнее smile


Цитата(arilou @  16.7.2007,  11:12 Найти цитируемый пост)
Переделка архитектуры и смена платформы - это самые самые дорогостоящие пертурбации в проекте, на которые владельцы компании могут не пойти

У нас в компании всего-то 6 человек smile Так что инерция принятия решения не должна быть большой. Мы периодически переписываем наш софт с нулю, где-то раз в 2-3 года - очень помогает smile И сейчас как раз уже похоже наступает такой момент когда, надо сделать это в очередной раз. Так почему бы не перейти на .NET?

А вообще, я считаю, что будущее таких вот как мы маленьки компаний как раз за оказанием ИНДИВИДУАЛЬНЫХ услуг клиентам. Т.е. если пишется софт для клиента, так уж только для него и с теми примочками, которые нужно только ему. Ну и естественно, что при разработке модулей для каждого последующего клиента нужно просто учитывать/использовать те наработки, которые были ранее. 
Подход должен быть не столько прибыль-ориентированым , сколько клиент-ориентированым! Тогда и прибыль будет ;) Проблема только в том, что у нас в России пока не понимают, что за штучный (индивидуальный) товар нужно платить соответствующие деньги. А у нас все хотят супер софт, заточеный под них, но по цене 1С! Но так ведь не бывает...
PM MAIL   Вверх
nornad
Дата 17.7.2007, 04:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 3
Всего: 31



Цитата(mlitkin @  17.7.2007,  04:46 Найти цитируемый пост)
Эта система будет ооочень сложна в разработке, настройке и поддержке, т.к. я уже писал, что различия в одном только складском модуле у разных заказчиков потрясают вооброжение

Если нормально спроектировать систему "плагинов", то разработать, настроить и сопровождать её будет всё же легче, чем систему, где всё свалено в кучу. Просто, нужно нормально спроектировать - один из принципов будет состоять в том, что "плагин" сам грузит-обрабатывает-сохраняет свои настройки.
Цитата(mlitkin @  17.7.2007,  04:46 Найти цитируемый пост)
exe-файл будет довольно-таки тяжеловесным, т.к. там будет вся функциональность всех заказчиков зашита.

Хм... а я так понял, что batigoal всё же на модульную систему тебя агитировал. smile
Лишний раз перечитав его слова, я так и не нашёл, где он тебе советовал делать именно "свалку всего в одном месте".
Цитата(mlitkin @  17.7.2007,  04:46 Найти цитируемый пост)
Похоже в переходе на .NET действительно есть смысл...

Переход на .NET - очень важное решение. С этим переходом может произойти очень много событий. Может выйти так, что клиенты от вас уйдут (ну, не нравится им дотнэт - они фортран любят smile). А может и наоборот - клиентов прибавится. Но кроме того, при переходе вы получаете новую среду, а значит потребуются усилия по её освоению и переписке проекта под дотнэт, что явно не произойдёт быстро и безошибочно. В общем, перед принятием решения о переходе стоит очень хорошо подумать и просчитать, насколько это выгодно всем.
Цитата(mlitkin @  17.7.2007,  04:46 Найти цитируемый пост)
Мы периодически переписываем наш софт с нулю, где-то раз в 2-3 года - очень помогает

Ну, ежели так... тогда переход на дотнэт вам не страшен. Особенно, если со времени последней переписки проекта прошло хотя бы полтора года. smile
А вообще это далеко не самая умная практика. Явно указывает на то, что "что-то не так".
Цитата(mlitkin @  17.7.2007,  04:46 Найти цитируемый пост)
А вообще, я считаю, что будущее таких вот как мы маленьки компаний как раз за оказанием ИНДИВИДУАЛЬНЫХ услуг клиентам. Т.е. если пишется софт для клиента, так уж только для него и с теми примочками, которые нужно только ему. Ну и естественно, что при разработке модулей для каждого последующего клиента нужно просто учитывать/использовать те наработки, которые были ранее.

Работал я на одной фирме, где у босса была такая же мысль. И знаете что? Команда программистов просто не успевала работать на всех. На фирме было две команды - одна (3-4 человека) занималась разработкой инструмента автоматизации, а другая (ещё человек 5) писала на этом инструменте софт для клиентов. И обе команды не очень-то успевали. Потому что перед тем, как  соглашаться на требования клиента, надо хорошенько их выяснить и разобраться в предметной области, чтобы можно было спроектировать такое, что с меньшими доработками можно будет адаптировать под других клиентов. Тот же подход, который был на фирме (и до сих пор есть, кстати), как и подход у вас - имхо, тупиковая ветвь, т.к. фирма распыляет свои ресурсы и ей остаётся только бороться за выживание, а не подниматься выше и выше.
Цитата(mlitkin @  17.7.2007,  04:46 Найти цитируемый пост)
Проблема только в том, что у нас в России пока не понимают, что за штучный (индивидуальный) товар нужно платить соответствующие деньги. А у нас все хотят супер софт, заточеный под них, но по цене 1С!

Вот именно поэтому у "штучного" подхода меньше шансы на выживание. Согласитесь, 1С имеет куда более стабильное положение. У клиента нет страха, что через год фирма закроется и купленный продукт будет некому не то что развивать, но и просто поддерживать. Да даже если 1С закроется, что с того? Налетит куча других контор, наперебой предлагающих свои продукты. В этом случае у клиента будет отличная возможность познакомиться со всеми продуктами и выбрать то, что ему больше понравится. Неспеша. Да ещё и скидку получить - многие предложат скидки, чтобы только "взять" клиента - не забываем, что немалая часть дохода идёт от сопровождения продукта.
Вот и получается, что покупая 1С, клиент получает не совсем то, что ему надо, но дёшево (относительно). Если 1С закрылась - покупает ещё что-то примерно за ту же стоимость. Итого: клиент платит 2Х+поддержка. Если же он заказывает разработку под себя, то платит он раз в пять больше, т.е. 5Х. Плюс поддержка. Причём, если вы закрылись, то он остался с носом, т.к. через некоторое время потребуется новая "фишка", а делать её некому. (хорошо, если он найдёт тех, кто сможет что-то добавить, но ведь далеко не всегда такое возможно)
Итог - клиенту дешевле (не лучше, а именно дешевле) купить 1С. Многие это понимают и потому не идут заказывать "штучный" товар.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
mlitkin
Дата 17.7.2007, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Цитата(nornad @  17.7.2007,  04:41 Найти цитируемый пост)
Переход на .NET - очень важное решение. С этим переходом может произойти очень много событий.

Кроме того, что C# изначально спроектирован так, что там просто необходимо писать модульно, у нас есть необходимость в доступе к данным по интернету, в чем может помочь ASP.NET. Плюс нужно еще писать софт для Windows CE. Так что я думаю, что .NET здесь самое то. Один язык на все задачи - это удобно smile

Цитата(nornad @  17.7.2007,  04:41 Найти цитируемый пост)
т.к. фирма распыляет свои ресурсы и ей остаётся только бороться за выживание

Возможно вы и правы. Так как у нас сейчас именно такая ситуация :(

Хорошо. Допустим мы решим делать общий софт с системой dll-плагинов (или что-то типа того). Как тогда быть в такой ситуации: один из заказчиков захотел новое инф. поле на форме редакции товара, другим естественно это не надо... Что мы делаем? 
Отделяем всю форму редакции в отдельную dll для конкретного заказчика? В таком варианте, если изменится например какой-то запрос на этой форме, то его придется менять во всех ответвленных dll. 
Или делаем спец. настройку для отображения/скрытия данного поля? В этом случае нужно будет делать сложную обработку нормальной отрисовки интерфейса с этим полем и без него. Кроме того нужно будет накатить это поле в БД у всех клиентов.
PM MAIL   Вверх
batigoal
Дата 17.7.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Цитата(mlitkin @  17.7.2007,  07:33 Найти цитируемый пост)
Как тогда быть в такой ситуации: один из заказчиков захотел новое инф. поле на форме редакции товара, другим естественно это не надо... Что мы делаем? 
Отделяем всю форму редакции в отдельную dll для конкретного заказчика? В таком варианте, если изменится например какой-то запрос на этой форме, то его придется менять во всех ответвленных dll. 
Или делаем спец. настройку для отображения/скрытия данного поля? В этом случае нужно будет делать сложную обработку нормальной отрисовки интерфейса с этим полем и без него. Кроме того нужно будет накатить это поле в БД у всех клиентов. 

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


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
nornad
Дата 17.7.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 3
Всего: 31



Цитата(mlitkin @  17.7.2007,  09:33 Найти цитируемый пост)
один из заказчиков захотел новое инф. поле на форме редакции товара, другим естественно это не надо... Что мы делаем?

Тут надо смотреть, может ли оно понадобиться другим. Если это поле объективно полезное, вставляйте в основной модуль. Если вдруг паре клиентов придётся не по вкусу нововведение, сделайте настройку для сокрытия этого поля.
Если же оно другим не надо, то можно сделать плагин в плагине, например. Или так же - в основной модуль и прятать настройкой (но это, имхо, будет хуже, т.к. такие поля будут со временем множиться и проект станет явно хуже).
Цитата(batigoal @  17.7.2007,  11:48 Найти цитируемый пост)
Если вы хотите дать ему такую возможность, то интерфейс вообще должен быть динамическим. Т.е. сведения об отображаемых полях, запросы и пр. должны храниться как ресурсы, во внешних конфигурационных файлах (возможно, зашифрованных либо иным способом скрытых).

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


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
mlitkin
Дата 17.7.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Цитата(batigoal @  17.7.2007,  08:48 Найти цитируемый пост)
Если вы хотите дать ему такую возможность, то интерфейс вообще должен быть динамическим.

Согласен, но это довольно непростая вещь - формирование динамически интерфейса. На нее можно убить не один месяц... Может есть другое решение?
Давайте я еще раз сформулирую проблему. Вобщем есть два клиента, которые используют склад (и не только склад). Один клиент БОЛЬШОЙ (занимается производством и продажей собственной продукции), а другой маааленький (занимается перепродажей чужого товара). Так вот каким образом лучше организовать разработку и поддержку складского модуля (и других тоже, вобщем не важно какого модуля), чтобы все были довольны? 
Можно сделать общий склад без динамического интерфейса, но тогда формы документов, редакции товара и т.п. будут содержать кучу ненужной для маленького клиента информации, которая нужна только большому. Получается - большой доволен, маленький нет.
Можно сделать общий склад с динамическим интерфейсом, но тогда его разработка и поддержка займут оочень много ресурсов (не учитываю естественные ограничения такого подхода в визуальном плане).
Так как же быть?
PM MAIL   Вверх
nornad
Дата 17.7.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 3
Всего: 31



Первым делом надо хорошенько исследовать предметную область, чтобы оценить возможность подобных "разногласий"  будущем. Если вероятность сего действа мизерная - можно просто по настройке делать поле недоступным (disable). Мааааленькому клиенту оно сильно мешать не будет - всё равно ничего не введёт. Зато есть вероятность, что глаза намозолит и он в итоге попросит разблокировать поле. smile
Если же таких изменений предполагается много, то надо либо делать разные "плагины", либо делать динамический интерфейс - в этом случае затраты на него окупятся.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
mlitkin
Дата 18.7.2007, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Цитата(nornad @  17.7.2007,  19:17 Найти цитируемый пост)
 Зато есть вероятность, что глаза намозолит

В том-то все и дело, что обязательно намазолит. Т.к. там не 1 и не 2 таких полей, а гораздо больше :(

Цитата(nornad @  17.7.2007,  19:17 Найти цитируемый пост)
Если же таких изменений предполагается много, то надо либо делать разные "плагины"

А можно чуть подробней про плагины? Может я это себе не так представляю, как оно есть на самом деле? В моем понимании плагины - это dll-файлы с доп. функциями/интерфейсами, которые вызываются из основного приложения. Так? Или там что-то еще?
PM MAIL   Вверх
nornad
Дата 18.7.2007, 04:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 3
Всего: 31



Можно сделать такую плагинную систему, при которой в отдельном модуле у тебя будет и логика, и интерфейс. Причём, отдельные модули можно разбивать на подмодули, которые в свою очередь будут расположены в своих "плагинах". Таким образом, вполне можно построить модуль "Склад", состоящий из отдельных подмодулей для обеспечения интерфейса пользователя и работы с БД. Другое дело, что чем больше у вас запросы, тем интереснее выйдет комплекс в целом.
Готовы ли вы потратить уйму времени и сил почти без отдачи (уж клиенты явно за такое платить не согласятся - им нужен конкретный результат, а не некая базовая платформа, на которой вы сможете делать необходимые им приложения).

Добавлено через 1 минуту и 15 секунд
Цитата(mlitkin @  18.7.2007,  04:26 Найти цитируемый пост)
В моем понимании плагины - это dll-файлы с доп.

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


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
mlitkin
Дата 19.7.2007, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



М-да, плагины конечно штука хорошая, но и они решают лишь часть проблемы - интерфейсную. А есть ведь еще БД, в триггерах и ХП которой также реализована определнная бизнес-логика... Мы же все-таки не 1С, чтобы всю бизнес логику в интерфейс переносить smile
Как быть там (в БД)? У нас была практика (да и сейчас тоже кое-где осталась), когда в базе в качестве константы хранился тип базы, зависящий от заказчика (т.е. признак заказчика), и мы по нему разделяли код в ХП и треггерах. Но этот подход ИМХО все же какой-то левый...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
arilou

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание на то, что новые темы, касающиеся новых вопросов, создаются кнопкой "Новая тема", а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих темах, будут удалены.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, arilou.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | УП: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1000 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.