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

Цель — Средства — Результат

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

Первым и ключевым основанием для разра­ботки ПО под заказ стано­вится получение доступа к инстру­менту, позво­ля­ющему обеспечить необхо­димый результат. Например выписать счёт или сформи­ровать итоговый отчет после обработки посту­пившей из разных офисов инфор­мации, связанной с объемами, наиме­но­ва­ниями и катего­риями реали­зо­ванных товаров, включая имена сотруд­ников, оформивших продажу. Причем, сделать это таким образом, чтобы по любому из анали­зи­руемых критериев можно было сделать выборку, и увидеть результат работы конкретного офиса с опреде­ленной категорией товаров. Имеющиеся на рынке решения, как правило, доста­точно громоздки и не “заточены” под работу в конкретной сфере деятель­ности, вынуждая коммер­сантов отказы­ваться от комплексного и единого продукта в пользу разроз­ненных программ.

Отсюда вытекает и второе основание для разра­ботки ПО под заказ — необхо­ди­мость снизить требо­вания к имеющемуся компью­терному обору­до­ванию. Практи­чески все универ­сальные решения на рынке предна­значены для выпол­нения огромного набора задач, чтобы охватить интересы макси­мального количества потен­ци­альных покупа­телей ПО. Это приводит к поверх­ностному отношению к конкретным функциям, являю­щимся весьма критичными для опреде­ленных коммер­ческих компаний. Более дорогое решение, помимо прочего, будет предъ­являть повышенные требо­вания к “железу”, на котором плани­руется эксплу­а­ти­ровать приоб­ре­тенное ПО.

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

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

Причины неудач

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

  • завышенные ожидания;
  • несогла­со­ван­ность действий Заказчика и Аутсорсера;
  • неэффек­тивное управ­ление деятель­ностью аутсор­син­говой компании.

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

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

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

Правильные шаги

Чтобы проти­во­дей­ствовать появлению на пути к успешному IT-аутсо­рингу упомя­нутых факторов, руково­дителю следует сделать всего несколько правильных шагов. Обозначим их:

  • провести анализ переда­ваемой на аутсорсинг области бизнеса;
  • создать концепцию аутсор­син­говой модели;
  • сделать проект перевода органи­зации на систему аутсорсинга;
  • выбрать партнёра, при необхо­ди­мости провести тендер на партнёрство;
  • подго­товить и подписать полно­ценный контракт.

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

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

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

Зачем нужно лицензирование?

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

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

Передача прав на ПО

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

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

Весьма часто перед руково­ди­телем предприятия встает вопрос о целесо­об­раз­ности содер­жания штатного програм­миста или системного админи­стратора, чья деятель­ность в большинстве ситуаций, а особенно для не понимающих принципы их работы сотруд­ников, остается “за кадром”. Необхо­ди­мость ежеме­сячно выпла­чивать заработную плату работнику, результат деятель­ности которого доста­точно сложно оценить и “ощупать”, вынуждает владельцев компаний серьезно задуматься о более актуальном, удобном и эконо­ми­чески выгодном механизме обслу­жи­вания имеющейся на предприятии компью­терной техники и эксплу­а­ти­ру­емого программного обеспе­чения — удаленном IT консал­тинге. Что же он представляет собой и в чем его удобство и выгода перед штатным системным админи­стра­тором или програм­мистом, поста­раемся рассказать более детально.

Меньше — Больше

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

- звонок по телефону;
— звонок через сервис Skype;
— обращение через ICQ;
— вызов специ­а­листа в офис.

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

Тем не менее, в большинстве ситуаций решить небольшую проблему удается при помощи простого телефонного звонка — с помощью подсказок, опираясь на инфор­мацию клиента, IT-специ­алист, обеспе­чи­вающий удаленный IT консалтинг, быстро поможет исправить неполадку. Например, с программным обеспе­чением, переставшим выполнять необхо­димые функции по вине “челове­че­ского фактора”, когда пользо­ватель неожи­данно для себя или без злого умысла отключает или изменяет некоторые параметры.

Подключаем” услугу

Чтобы восполь­зо­ваться столь удобным и финансово выгодным инстру­ментом, как удаленный IT консалтинг, доста­точно обратиться в одну из фирм, предо­став­ляющих такую услугу. Перед заклю­чением договора необходимо определить спектр услуг, которые требуется получить в процессе работы. Например, “подпи­саться” на посто­янное консуль­ти­ро­вание по вопросам работы стандартного для любого офиса программного обеспе­чения — пакета Microsoft Office или одного из его бесплатных аналогов. Любые вопросы или затруд­нения, возни­кающие у сотруд­ников предприятия, будут разрешены после одного телефонного звонка — специ­а­листы IT-консал­тинга быстро помогут разобраться с затруднениями.

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

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

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

Типичные ошибки планирования

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

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

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

Исклю­чением являются работы, имеющие зафик­си­ро­ванный в договоре “дедлайн” — дату сдачи выпол­ненного проекта, установ­ленную Заказ­чиком. Это приведет к необхо­ди­мости вписать в программу для управ­ления проектами крайний срок сдачи работы, то есть основной целью ПО станет оптимальное распре­де­ление задач между имеющимися ресурсами, чтобы обеспечить своевре­менное выпол­нение условий согла­шения. Самым правильным же способом взаимо­дей­ствия с программой стано­вится анализ возмож­ностей имеющегося “арсенала”, состо­ящего как из вычис­ли­тельной техники и другого обору­до­вания, так и из штата сотруд­ников органи­зации, реали­зу­ющего проект.

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

Раз проблема, два проблема

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

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

Пути решения

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

1. Анализ требований

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

2. Анализ и сквозной контроль кода

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

3. Сесси­онное тестирование

Методика сесси­онного тести­ро­вания, предло­женная одним из ведущих специ­а­листов в области програм­ми­ро­вания Джеймсом Бахом, позволяет осуществлять качественную проверку работо­спо­соб­ности созданного решения. В отличие от техно­логии поиска “точечных” недора­боток кода, при сесси­онном тести­ро­вании тести­ровщик получает свободу действий, пытаясь выявить необычные дефекты, факти­чески моделируя поведение предпо­ла­га­емого пользователя.

IT-аутсорсинг поможет

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

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

Бесплатно — не всегда даром

Скачивая в сети Интернет программу для стаци­о­нарного компьютера или ноутбука, а также прило­жения для своего мобильного устройства пользо­ватель весьма редко обращает внимание на вид лицензии для программного обеспе­чения, устанав­ли­ва­емого на ПК, ноутбук, смартфон или планшет. Однако очень часто краткая аббре­ви­атура доста­точно точно харак­те­ризует возмож­ности программы и дальнейшие перспективы для ее исполь­зо­вания. Итак, чаще всего потре­бители сталки­ваются со следу­ющими видами лицен­зи­ро­вания ПО:

  • Freeware;
  • DemoWare;
  • Trial или TrialWare;
  • ShareWare;
  • AdWare.

Разберем их более подробно. Первый тип лицензии является самым удобным для конечного пользо­вателя — надпись “Freeware’ означает возмож­ность приме­нения программного продукта без каких-либо ограни­чений. При этом весь риск за вероятные послед­ствия от исполь­зо­вания такого ПО на пользо­ва­тельском обору­до­вании ложится на плечи скачавшего программу человека. Принцип DemoWare означает, что результат деятель­ности разра­бот­чиков имеет целью проде­мон­стри­ровать потен­ци­альные возмож­ности полно­ценной программы будущему покупателю, то есть такое ПО весьма серьезно ограничено в функци­онале. Распро­стра­няются подобные продукты исклю­чи­тельно в демон­стра­ци­онных целях, весьма похожих на еще один вид лицензии на ПО — ShareWare. Этот тип лицен­зи­ро­вания имеет условно-бесплатный принцип распро­стра­нения программных решений, обеспе­чи­вающий потре­би­телям возмож­ность исполь­зо­вания части доступных функций с рядом ограни­чений. К последним могут относиться как недоступ­ность ряда функций, так и ограни­ченное число запусков прило­жения или программы, что вынуждает впослед­ствии приоб­ретать за деньги полностью рабочий продукт.

Анало­гичным с упомя­нутым ShareWare видом лицензии на программное обеспе­чение является TrialWare, чаще всего носящий укоро­ченное название — Trial. Наличие подобной надписи в описании программного продукта говорит о похожих ограни­чениях в исполь­зо­вании — либо путем установ­ления ограни­ченного количества доступных запусков прило­жения, либо с помощью лимити­ро­вания срока, в течение которого пользо­ватель сможет ею пользо­ваться. Так называемый “триальный” период может длиться как несколько дней, так и один и более месяцев. AdWare, как следует из расшиф­ровки этого сокра­щения, предпо­лагает бесплатную эксплу­а­тацию ПО, распла­чи­ваться за что придется необхо­ди­мостью просмат­ривать рекламные блоки, интегри­ро­ванные в прило­жение. Такой вариант лицен­зи­ро­вания наиболее популярен для игр для смарт­фонов и планшетов, распро­стра­няемых по бесплатному принципу через интернет-магазины приложений.

Это был перечень наиболее востре­бо­ванных на рынке и популярных среди разра­бот­чиков видов лицензий, исполь­зуемых при распро­стра­нении программного обеспе­чения среди потре­би­телей. Подробно описывать другие существующие варианты лицен­зи­ро­вания — например, DonationWare, PostCardWare, а также Ad-SupportedWare и BeerWare, когда создателю ПО пользо­ватель обязан при встрече налить стаканчик пива, вряд ли стоит. Большинство из них являются факти­чески “умершими”, и крайне редко встре­чаются в совре­менном мире. Разницу составляют только хорошо известные Linux-пользо­ва­телям бесплатные виды лицензий вроде GNU GPL и OpenSource ПО, о существо­вании которых исполь­зующие опера­ци­онную систему Windows потре­бители узнают только от своих знакомых, пересевших на ОС Linux.

Понимающие принципы разде­ления существующих лицензий на программное обеспе­чение по признакам “бесплат­ности” и “платности” пользо­ватели весьма часто задают вполне очевидный вопрос — а зачем и для чего вообще создается ПО OpenSource, то есть имеющее нулевые ограни­чения на исполь­зо­вание и распро­стра­нение. Попробуем смоде­ли­ровать типичные ситуации, в которых разра­ботчики приходят к приме­нению столь непопу­лярного среди крупных компаний вида лицен­зи­ро­вания. Первым делом, давайте охарак­те­ризуем принцип “открытого кода” с точки зрения рядовых обыва­телей, являю­щихся потре­би­телями созда­ваемых програм­ми­стами программ и мобильных приложений.

С чем “едят” OpenSource

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

Так зачем и для чего создается OpenSource программное обеспе­чение. Чтобы ответить на этот вопрос, доста­точно обратиться к наиболее известным предста­ви­телям “армии открытого кода”. Ими являются посте­пенно набирающая популяр­ность, в том числе и в России, опера­ци­онная система Linux, к созданию которой “приложили руку” сотни, а может и тысячи програм­мистов со всего мира. Другим известным продуктом является интернет-браузер Mozilla Firefox, код которого разра­ботчики предо­ставляют по первому требо­ванию желающих. Основы­ваясь на этой инфор­мации, можно попытаться охарак­те­ри­зовать, для чего програм­мисты вообще создают программные продукты с открытым кодом.

OpenSource — зачем и почему

Итак, программное обеспе­чение с открытым кодом, то есть разра­бо­танное по принципу OpenSource, создается по следующим причинам:

  • недоста­точ­ность челове­ческих ресурсов;
  • популя­ри­зация компании-разработчика;
  • потреб­ность в создании “народного продукта”.

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

Следующей по востре­бо­ван­ности причиной создания OpenSource программного обеспе­чения является, по мнению экспертов, потреб­ность в популя­ри­зации молодой команды разра­бот­чиков, плани­рующих покорить рынок. Если удается выпустить действи­тельно стоящий продукт, востре­бо­ванный среди много­чис­ленных потре­би­телей, после­дующие программы или прило­жения молодой команды програм­мистов будут очень оптими­стично восприняты пользо­ва­телями, даже если они будут распро­стра­няться по платному принципу. Именно так обычно и проис­ходит в совре­менном мире больших денег. Ну и, наконец, последней в списке причин находится попытка создания “народного продукта”, актуального для конкретной или сразу нескольких сфер деятель­ности человека. Среди успешных проектов, где целью являлось именно это, назвать сегодня можно разве что упомя­нутые ОС Linux и браузер Mozilla Firefox, количество “клонов” которого сегодня попросту “зашка­ливает”,

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

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

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

Процесс проек­ти­ро­вания ПО

Перед тем, как предо­ставить читателю перечень средств, приме­няемых в процессе проек­ти­ро­вания ПО, перечислим основные задачи, которые требуется выполнить коллективу програм­мистов. Чтобы подго­товить качественный продукт, отвечающий требо­ваниям Заказчика или потре­би­тель­ского рынка, необходимо:

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

После завер­шения этих важных этапов проек­ти­ро­вания программного обеспе­чения команда разра­бот­чиков формирует эскизный проект, в большинстве случаев носящий название “Техни­че­ского проекта”. Анализ основных требо­ваний к будущему продукту, как правило, произ­во­дится с приме­нением методов систе­мо­логии, то есть, помимо анали­ти­че­ского процесса произ­во­дится синтез резуль­татов, основы­ваясь на опыте проек­ти­ровщика задания. Конечным резуль­татом стано­вится созданная по итогам анализа содер­жа­тельная, то есть имеющая оконча­тельную форму модель процесса функци­о­ни­ро­вания разра­ба­ты­ва­емого ПО. Для упрощения дости­жения постав­ленной цели — создания понятного програм­мистам “облика” будущей программы или мобильного прило­жения, приме­няются допол­ни­тельные средства.

Популярные средства для проек­ти­ро­вания ПО

Приведем список наиболее популярных средств, приме­няемых для проек­ти­ро­вания программного обеспе­чения как отече­ственными, так и западными командами разра­бот­чиков. К таковым относятся:

  • BPMN;
  • построение блок-схем;
  • создание ER-диаграмм;
  • UML-диаграммы;
  • разра­ботка макетов и матема­ти­ческих моделей.

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

Наиболее часто при исполь­зо­вании модели BPMN приме­няются следующие пакеты:

  • Sybase Power Designer;
  • Eclipse;
  • Vision 2003 + BPMN;
  • AcuaLogic BPMN.

И для создания блок-схем, наглядно форми­рующих структуру будущего прило­жения или программы, а также построения ER-диаграмм исполь­зуется пакет Vision 2003, который можно назвать наиболее универ­сальным инстру­ментом проек­ти­ровщика программного обеспе­чения. Для разра­ботки ER-диаграмм также приме­няются ERWin и упомя­нутый выше пакет Sybase Power Designer. Этот же программный пакет актуален для построения более сложных и действенных UML-диаграмм, являю­щихся, возможно, самым эффек­тивным средством для проек­ти­ро­вания программного обеспечения.

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

Обдумывая идею передачи некоторых функций предприятия сторонним компаниям, руководство доста­точно часто сталки­вается с предло­же­ниями обратиться к так называ­емому Offshore или Nearshore IT-аутсор­сингу. Чтобы читателю были понятны иноязычные опреде­ления, доста­точно сказать, что Offshore IT-аутсорсинг предпо­лагает исполь­зо­вание услуг сторонних разра­бот­чиков, распо­ло­женных на доста­точно больших рассто­яниях от место­по­ло­жения заказчика(к примеру заказчик из Европы, пользуется командой из Индии или Китая). Nearshore аутсорсинг предпо­лагает обращение к более прибли­женным геогра­фи­чески командам разра­бот­чиков или IT-специ­а­листов, когда разница в часовых поясах едва превышает 1–2 часа. Какой из этих двух вариантов будет наиболее привле­ка­тельным для абстрактного клиента IT-аутсорсера, поста­раемся выяснить в рамках этого материала.

Ближе — дальше — лучше

Чтобы оценить разницу между Offshore и Nearshore IT-аутсор­сингом, доста­точно вспомнить, какие ограни­чения накла­ды­ваются на взаимо­дей­ствие с командой сторонних специ­а­листов, если выпол­няющая контрактные работы компания распо­ложена вдали от места вашего пребы­вания. Перечислим ключевые факторы, влияющие на качественное взаимо­дей­ствие с IT-специ­а­ли­стами, работа­ющими по принципу аутсорсинга:

  • стоимость услуг;
  • нацелен­ность на результат;
  • доступ­ность;
  • мента­литет разра­бот­чиков и менеджеров;

В основном, заказчики ориен­ти­руются на совокуп­ность упомя­нутых показа­телей — цену услуги IT-аутсор­синга, вне зависи­мости от его вида — Offshore, Nearshore или Onshore, а также квали­фи­кацию персонала разра­бот­чиков, их геогра­фи­ческую и комму­ни­ка­ци­онную доступ­ность, и ментальную совме­сти­мость. Под последним подра­зу­ме­вается способ­ность персонала заказчика найти взаимо­по­ни­мание и общий язык с работ­никами IT-аутсорсера, что часто стано­вится причиной отказов от сотруд­ни­чества с удаленными испол­ни­телями. Тем не менее, в сегменте разра­ботки программного обеспе­чения самым популярным является именно Offshore IT-аутсорсинг, когда испол­ни­телями стано­вятся програм­мисты из Индии, Китая, Африки или Латинской Америки, ведь стоимость их услуг существенно ниже, чем у более близких с геогра­фи­ческой точки зрения компаний-аутсорсеров.

Nearshore против Offshore

Однако стоит обращать внимание и на другие факторы, влияющие на успеш­ность осуществ­ля­емого проекта, отданного IT-аутсорсеру. Имеется в виду доступ­ность команды разра­бот­чиков для посто­янного контроля над их деятель­ностью — в этой ситуации Nearshore IT-аутсорсинг выигрывает за счет способ­ности заказчика потратить минимальное время на дорогу к компании-аутсорсеру. В большинстве случаев европейские компании предпо­читают отдать право реали­зации проекта по созданию ПО именно “местным” фирмам, что обуслав­ливает популяр­ность Nearshore IT-аутсор­синга в Европе. Если нужда­ю­щееся в разра­ботке ПО коммер­ческое предприятие сталки­вается с высокой стоимостью услуг распо­ло­женных побли­зости испол­ни­телей, то предпо­чтение будет отдано более доступным в ценовом плане разра­бот­чикам, находя­щимся вдали от офиса заказчика.

Для чего требуется быстрая и удобная возмож­ность комму­ни­кации с командой разра­бот­чиков, реали­зующих серьезный проект? В первую очередь, для осуществ­ления посто­янного контроля за их работой, чтобы IT-аутсорсер четко следовал графику выпол­нения мероприятий, а также был заинте­ре­сован в хороших резуль­татах. Кроме того, весьма часто требуется непосред­ственное присут­ствие заказчика при решении каких-либо спорных вопросов, когда предста­вителю предприятия-заказчика понадо­бится отпра­виться в офис сторонней компании. Если говорить о работе в формате Offshore IT-аутсор­синга, то добираться до испол­ни­телей придется очень долго, а сама поездка ощутимо отразится на бюджете фирмы.

Не менее важным фактором является механизм взаимо­дей­ствия заказчика и испол­ни­телей, когда большая разница в часовых поясах весьма негативно сказы­вается на конечном результате. В этом отношении при выборе между Offshore и Nearshore IT-аутсор­сингом руководство предпочтет остано­виться на втором варианте, так как незна­чи­тельная разница во времени практи­чески не повлияет на формат взаимо­дей­ствия — контро­ли­ровать работу испол­ни­телей удастся в течение своего рабочего дня, то есть так называ­емого суточного “лага”, когда Offshore-аутсорсер начинает работу в ночное время, заказчика попросту не будет.

Надеемся, что вышеиз­ло­женный материал поможет сделать правильный выбор при опреде­лении способа работы — путем Offshore или Nearshore IT-аутсор­синга. Вполне вероятно, что в ряде случаев наиболее комфортной покажется работа с Onshore IT-аутсор­сером, решение о чем каждому предприятию, нужда­ю­щегося в услугах сторонних компаний, стоит принимать самостоятельно.