Клуб разработчиков программных систем

Темы | Статьи | Рейтинги |

 буллет Статьи

Стоимость разработки базы данных

Сергей Трофимов

2.10.2004


База данных или программа?

Меня часто спрашивают, а сколько стоит создать базу данных? Сразу возникает встречный вопрос, а что вы понимаете под базой данных? И что нужно в каждом конкретном случае: база данных или все-таки программа? Многие ответят, на секунду задумавшись, что в первую очередь - программа. 

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

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

Из чего складывается стоимость заказной разработки

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

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

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

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

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

Ох уж эти человеко-часы

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

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

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

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

Стоит ли столько платить?

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

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

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

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

Так сколько же это стоит?

Я не смогу точно сказать, во сколько обойдется разработка конкретной базы данных. Для этого нужно встречаться с заказчиком и беседовать, беседовать и еще раз беседовать и все равно только после реализации проекта можно подсчитать насколько мы уложились или не уложились в бюджет. Исходя из опыта предыдущих проектов, которые были проведены компанией АвтоКод в 2004 году можно привести следующие цифры бюджета:

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

Стоимость проекта около 1500-2000$ - кроме базовых возможностей есть поле для создания новых учетных единиц в пределах 30-40 часов работ. Типичные решения, которые позволяет включать в себя , несколько форм ввода, итоговые отчеты. 

Стоимость проекта около 2000-3000$ - базовые возможности плюс порядка 80 часов доработок. Здесь уже можно создать решение с расчетными задачами, сложной структурой связей и бизнес-логикой, с большим количеством отчетов и форм ввода. 

Комплексная автоматизация - это проекты стоимостью более 3000 долларов. Такие проекты целесообразно разделять на отдельные этапы и рассчитывать каждый этап отдельно.

Заключение

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

 




Список статей:

 

    Еще статьи >>>

© Trofimov Sergey   http://www.caseclub.ru при цитировании ссылка обязательна.