powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Управление процессом разработки ИС [игнор отключен] [закрыт для гостей] / Как организовать поддержку ПО?
16 сообщений из 16, страница 1 из 1
Как организовать поддержку ПО?
    #34659861
mlitkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые знатоки! У нас в компании сложилась нехорошая ситуация, с которой надо что-то делать... Хотелось бы услышать мнения людей, сталкивающихся с подобным. Но обо всем по порядку...
Я работаю программистом в маленькой компании по разработке ПО. Мы пишем различные программные модули (финансовый, складской и т.д.) для организации и планирования бизнеса (что-то типа 1С, Галактика). Клиентов немного - всего 4. 2 из них крупные, которым нужно постоянно дорабатывать софт, а 2 других - мелкие (ну или можно сказать средние), для которых апгрейд софта требуется, но ЗНАЧИТЕЛЬНО реже.
Так вот, суть проблемы заключается в следующем (реальный пример из жизни)... Для одного из маленьких клиентов мы сделали складской модуль. Установили, работает. Затем складской модуль также понадобился и одному из наших крупных клиентов. Но там все не так просто, и его пришлось дорабатывать, чтобы заточить под нужды заказчика (он до сих пор в разработке). Изначально предполагалось, что складской модуль (как впрочем и все остальные) будет один на всех. Соответственно БД тоже должны быть спроектированы по одной схеме. НО! Через пару месяцев звонит маленький клиент (у которого мы склад поставили первым) и просит добавить в один из отчетов доп. поле. Делов-то, как говориться, на копейку, НО! Разработка склада ушла уже далеко вперед! Т.е. изменился не только сам модуль, но и БД (ведь все эти пару месяцев мы вели доработку модуля под нужды другого заказчика). Т.о. нам приходилось каждый раз, когда один клиент хочет изменения в модуле, накатывать ему все изменения БД, которые были сделаны для других, и обновлять exe. И все для того чтобы добавить какое-то поле в отчет (например)! При таком подходе есть ОЧЕНЬ серьезные недостатки:
1. Клиенты боялись обновлений как огня, т.к. накаты базы и обновление exe влекли за собой неотловленные баги. Плюс к этому мог запросто где-то поменяться интерфейс и т.п. Вобщем был просто кошмар!
2. Почему собственно клиент должен получать бесплатно (вместе с новым exe) те же самые дополнительные фишки, которые мы делали для другого клиента, который за них платит? Как-то это неправильно. Он ведь за них платить не будет. И правильно - он ведь их не заказывал. Он хотел только доп. поле в отчете, за которое и заплатит 100р (условно). А у нас порой на накат и связанные с ним проблемы могло уйти пара дней! А кто за них заплатит???
Вобщем, чтобы решить данные проблемы мы решили разделить исходники и БД, которые были бы индивидуальны для каждого заказчика. Это решает проблему пунктов 1 и 2, НО! Появляется новая головная боль! Опять по пунктам:
1. Исправлять найденные ошибки (например, в справочнике товаров) нужно теперь в нескольких местах (сколько копий исходников).
2. Внешний вид одних и тех же модулей может ОЧЕНЬ отличаться для разных заказчиков. Тогда новому заказчику какой демострировать? Непонятно...
Вобщем и в том и в том подходах есть минусы. Хотелось услышать ваше мнение по этому вопросу. Как же все-таки более правильно организовывать апгрейд и поддержку софта для нескольких клиентов?
P.S.: Интерфейс мы пишем на Delphi, а БД - Oracle. Правда смотрим уже в сторону .NET. Может она чем поможет...
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34660260
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как варианты, в очень крупную клетку: модули вынести в DLL и подгружать их с сервера в рабочий каталог с exe. При обращении к этой DLL, проверять версию и заменять старую при необходимости. Каждому юзеру с БД определить только свои DLL. Exe при этом меняется крайне редко, необходимые обновления происходят автоматом.
Аналогично можно оставить только один exe, версию менять аналогично, запускается другая прога, сравнивает версию exe с БД, при необходимости её перед запуском заменяет. В зависимости от юзера, включать только необходимые функции. Всё это можно прописать в БД, а в проге например при запуске можно показывать пункты меню.

Видел в работе эти два варианта. Первый хорошо подходит для проектов где работает коллектив программистов, код которого формирует свою DLL, да и exe приходится менять крайне редко.

Удачи.
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34660371
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlitkin
Интерфейс мы пишем на Delphi, а БД - Oracle. Правда смотрим уже в сторону .NET. Может она чем поможет...
чем смена, практически, языка программирования по Вашему может помочь? У Вас отсутствует инфраструктура поддержки жизненного цикла приложений, а Вы шило на мыло меняете.
Каждому клиенту нужно только его решение, за которое он заплатил. То, что Вы их начинаете причесывать в едином стиле, естественно, вызывает у них законное недовольство. Прежде чем увеличивать число клиентов нужно заняться все же апгрейдом внутренней структуры разработки, так сказать - своей собственной платформой, которая позволит Вам без лишних хлопот поддерживать множество вариантов приложений.
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34661150
Фотография Big17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам нужно ставить процесс управления изменениями и конфигурациями, а также релизами.
Посмотрите в сторону ITIL...
А также почитайте о таких продуктах как Rational ClearQuest/ClearCase или Borland StarTeam...


Borland StarTeam
IBM Rational ClearCase 7
IBM Rational ClearQuest 7
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34661170
Фотография Big17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ClearCase и StarTeam есть возможность так называемого "бранчевания" программных модулей, то есть разветвления версий одного и того же ПО (как раз ваш вариант с несколькими заказчиками), и также при необходимости - слияния версий и т.д. и т.п.
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34661262
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Big17В ClearCase и StarTeam есть возможность так называемого "бранчевания" программных модулей, то есть разветвления версий одного и того же ПО (как раз ваш вариант с несколькими заказчиками), и также при необходимости - слияния версий и т.д. и т.п.
А разве есть системы контроля версий, где нет такой возможности?
Если уж подобные системы у автора не используются, то это совсем клинический случай. Но похоже тут в первую очередь организационно-идеологическая проблема.
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34661275
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Subversion, четыре ветки кода и простенький багтракер. На полдня работы, включая установку и конфигурирование.

Это как нужно не любить себя и заказчиков, чтобы пользовать Oracle, но при этом не иметь системы контроля версий... УжОс...
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34661369
Фотография Big17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун
А разве есть системы контроля версий, где нет такой возможности?

Уже, наверное, нет :)

Александр Гoлдун
Если уж подобные системы у автора не используются, то это совсем клинический случай. Но похоже тут в первую очередь организационно-идеологическая проблема.
Да, проблема похоже именно в этом. Но главное - осознана потребность в становлении данных процессов.
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34662339
aak__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прибавьте к системам версионного контроля механизм автоматической сборки и тестирования проектов (DUnit + ant + cruisecontrol) и значительно облегчите себе жизнь не только в плане управления изменениями, но и отлова ошибок.

С другой стороны, вести отдельный бранч по каждому из, допустим, 15 клиентов - уже не очень просто. Согласен с постом
автор
Прежде чем увеличивать число клиентов нужно заняться все же апгрейдом внутренней структуры разработки, так сказать - своей собственной платформой, которая позволит Вам без лишних хлопот поддерживать множество вариантов приложений.
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34662769
mlitkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Tomsмодули вынести в DLL
Мы так в свое время и собирались сделать, но тогда возникла какая-то проблема с передачей сессии БД в DLL (а сессия у нас одна на все приложение) и пришлось все делать в одном exe. Правда с проблемой я лично не разбирался, т.к. в то время еще не работал в этой компании.

iscrafmчем смена, практически, языка программирования по Вашему может помочь?
Тем, что C# изначально спроектирован так, что там просто необходимо писать модульно. А поскольку мы периодически переписываем наш софт с нуля (где-то раз в 2-3 года), то можно было бы переписать его уже под .NET. Кроме того есть необходимость в доступе к данным по интернету, в чем может помочь ASP.NET. Плюс нужно еще писать софт для Windows CE.

guest_20040621Это как нужно не любить себя и заказчиков, чтобы пользовать Oracle, но при этом не иметь системы контроля версий...
А причем здесь система контроля версий и Оракл? Система контроля версий контролирует исходники Delphi (или др. языка), а сервер БД то здесь причем?
Вообще, для контроля версий мы используем FreeVCS. Правда опцией Branch projects мы никогда не пользовались...
И все же я никак не могу понять чем может помочь разделение проектов на ветки... Вот к примеру ситуация: один из заказчиков захотел новый вид справочника товаров (зеленый фон грида вместо clWindow), другим естественно это не надо... Что мы делаем? Отделяем файл исходников с главной формой справочника в отдельную папку (т.е. ветвь) и делаем там зеленый грид. Затем, к примеру, мы обнаруживаем, что запрос на выборку товаров неоптимален и меняем его. Но менять уже придется и в основном юните товаров, и в каждой ветке. Так? Двойной edit не есть хорошо. Или я чего-то не понимаю?
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34663046
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_TomsКак варианты, в очень крупную клетку: модули вынести в DLL и подгружать их с сервера в рабочий каталог с exe.Это всё полумеры.

Нужно просто вести разные ветки проектов для разных клиентов.

Продукт у mlitkin не тиражный, заказной, поэтому это вполне оправдано.
Для тиражного собирают пожелания от клиентов и делают следующую версию, их учитывающую, для всех.

mlitkinА причем здесь система контроля версий и Оракл? Система контроля версий контролирует исходники Delphi (или др. языка), а сервер БД то здесь причем?А сервер БД система контроля версий не контролирует???

Это очень плохо.

Даже если не нужно плодить ветки для разных клиентов, работать с VCS удобно.

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

И вообще, надеюсь, у вас запросы прямо в коде дельфей не прописаны???

mlitkinЧто мы делаем? Отделяем файл исходников с главной формой справочника в отдельную папку (т.е. ветвь) и делаем там зеленый грид.Нормальные VCS-системы, вообще-то, поддерживают не только бранч, но и собственно деление на ветки (варианты, версии) проектов. Это делается для:
1. поддержки нескольких клиентов
2. поддержки плавного внедрения версий

К примеру, что вы делаете, если нужно срочно, немедленно, отправить клиенту(там) фикс, а файлы, где он должен быть, находятся в процессе изменения для новой версии?
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34663168
mlitkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgА сервер БД система контроля версий не контролирует???

Это очень плохо.
Дело в том, что у нас 1 человек занимается всей базой, поэтому система контроля версий для скриптов базы не нужна.

alexeyvgИ вообще, надеюсь, у вас запросы прямо в коде дельфей не прописаны???
Ээээ... Ну вообще-то да. Как раз в dfm и pas-файлах запросы хранятся... А что это очень плохо? Сейчас так уже никто не делает? :)

alexeyvgНормальные VCS-системы, вообще-то, поддерживают не только бранч, но и собственно деление на ветки (варианты, версии) проектов
Т.е. бранч и деление на ветки - это не одно и то же? Что-то я толком не пойму тогда, что это за "бранч" такой и как он физически функционирует? Надо будет почитать об этой функции VCS-систем...

alexeyvgК примеру, что вы делаете, если нужно срочно, немедленно, отправить клиенту(там) фикс, а файлы, где он должен быть, находятся в процессе изменения для новой версии?
Вот и приходится доводить все сначала до логического завершения, а потом только отправлять фикс уже в целом новом exe. Это конечно бред, сам понимаю... Потому и обратился сюда за советом как лучше организовать процесс разработки и поддержки ПО.

Может кто что посоветует почитать по этому вопрос?
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34663416
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlitkinДело в том, что у нас 1 человек занимается всей базой, поэтому система контроля версий для скриптов базы не нужна.Система контроля версий нужна не только для разделения проекта между людьми, но и просто, как ни банально, для контроля версий :-)

mlitkinЭэээ... Ну вообще-то да. Как раз в dfm и pas-файлах запросы хранятся... А что это очень плохо? Сейчас так уже никто не делает? :)Ну, вроде лучьше, IMHO, делать запросы в процедурах, а в клиенте только их вызовы оставить.

mlitkinТ.е. бранч и деление на ветки - это не одно и то же? Что-то я толком не пойму тогда, что это за "бранч" такой и как он физически функционирует? Надо будет почитать об этой функции VCS-систем...бранч - это просто копия файла в другое место.

А ветка - это копия файла в том-же месте, отмеченая специальным признаком.

К примеру, у вас есть текущая стабильная версия 2.1

Вы начали делать версию 2.2

Если клиенту нужно отправить фикс, делаете ветку нужного файла с названием 2.1 (fix1), и при сборке собираете билд из версии 2.1 с перекрытием 2.1 (fix1).

А над версией 2.2 люди продолжают работать.

Может быть, FreeVCS это не поддерживает, но системы типа Subversion должны.

MS VSS это не поддерживает, вот мы тоже мучаемся :-(
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34663440
Фотография Big17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlitkin
И все же я никак не могу понять чем может помочь разделение проектов на ветки... Вот к примеру ситуация: один из заказчиков захотел новый вид справочника товаров (зеленый фон грида вместо clWindow), другим естественно это не надо... Что мы делаем? Отделяем файл исходников с главной формой справочника в отдельную папку (т.е. ветвь) и делаем там зеленый грид. Затем, к примеру, мы обнаруживаем, что запрос на выборку товаров неоптимален и меняем его. Но менять уже придется и в основном юните товаров, и в каждой ветке. Так? Двойной edit не есть хорошо. Или я чего-то не понимаю?
Все правильно. Вы делаете бранч (ветвление) только одного модуля (pas+dfm) и поддерживаете две ветки - в одной делаете зеленый фон, в другом - пусть ничего не делаем. Затем оказывается, что "запрос на выборку товаров неоптимален и нужно поменять его"... Делаете это в любой из веток данного модуля (например, где у вас зеленый грид). А затем делаете слияние (Merge) этих веток. После чего получиться следующая ситуация: модуль с зеленым гридом остался тем же, а второй модуль изменился и получил следующий номер бранч-версии.
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34663441
Фотография Big17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как организовать поддержку ПО?
    #34665720
mlitkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок. Большое спасибо за советы! Обязательно поразбираюсь с бранчеванием проекта :)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Управление процессом разработки ИС [игнор отключен] [закрыт для гостей] / Как организовать поддержку ПО?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]