Тема офшорного программирования вот уже несколько месяцев не сходит со страниц печатных и электронных изданий всего мира. Главным раздражителем стал индийский феномен, обусловивший стремительный выход огромной и прекрасной, но нищей и истерзанной страны в лидеры по разработке заказного ПО на экспорт. Многомиллиардные обороты программной индустрии Индии заставили говорить о новом Эльдорадо, которое стало неизбежным следствием процесса построения цифровой экономики.
Волна покатилась по всем частям света, в нее включились Европа и Азия, Америка и Австралия, Ближний Восток и Африка. В «офшорную» гонку оказались вовлечены: Ирландия, Финляндия, Австрия, Чехия, Польша, Румыния, Венгрия — в Европе; Индия, Китай, Пакистан, Филиппины, Индонезия, Малайзия, Таиланд, Вьетнам, Корея — в Азии; Канада, Мексика, Бразилия — в Северной и Южной Америке; Австралия, Израиль, Египет, ЮАР... Не остались в стороне и государства, не так давно входившие в состав СССР: Белоруссия, Россия, страны Балтии.
Что же такое «офшорное программирование» и почему с ним сегодня связывают надежды на экономическое процветание?
Термин «офшорный» — калька с английского offshore, что буквально означает «находящийся на расстоянии от берега, в открытом море». Это же слово использовали для обозначения заказов правительства США, связанных с выполнением военной программы. В контексте программирования оно используется чаще всего в сочетании «offshore outsourcing» и означает «подрядные работы, выполняемые иностранными исполнителями». Несколько лет назад чаще применялся термин «контрактное программирование», однако он был более общим и не подчеркивал международный характер разработки ПО. К тому же, важную роль в этом процессе играет экономический фактор, поэтому аналогии со свободными от налогов офшорными зонами напрашиваются сами собой.
В то же время то, что понималось и понимается под словосочетанием «офшорное программирование», строго говоря, не являлось ни офшорным, ни уж тем более программированием. Неудивительно, что многие пытались найти более подходящий термин, пока, наконец, специалисты не остановились на том, что было предложено еще в начале 90-х — «глобальное программное производство» (global software development) [1]. Различие в терминах в данном случае — не филологические изыски, оно гораздо глубже и подчеркивает эволюцию взглядов на сам обозначаемый процесс.
Истоки
История офшорного программирования насчитывает не один десяток лет. Его появление стало результатом вполне естественного стремления компаний снизить свои производственные издержки за счет более дешевой рабочей силы. В некоторых случаях причина передачи заказа за рубеж была связана с невозможностью или нецелесообразностью вывоза из другой страны специалистов, являющихся носителями той или иной технологии, а также обусловливалась особенностями рынка сбыта (в частности, при локализации программного продукта, адаптации его к местным условиям).
Если говорить о глобальном производстве программ, то в рамках крупных корпораций создание иностранных филиалов все по тем же причинам воспринималось как само собой разумеющееся явление. В частности, классическим примером может служить IBM, важнейшей особенностью которой является глобальный характер производства. Исследовательские лаборатории и заводы корпорации размещены по всему миру; при этом все они являются независимыми предприятиями и ведут борьбу за контракты на разработку новых изделий. Не интегрированные в национальную структуру лаборатории имеют возможность сами выбирать местоположение из соображений его привлекательности для персонала [2].
Электронная форма представления программных продуктов, глобальные средства связи, обеспечивающие доставку «сырья» и «материалов», а также идея распределения производственных подразделений по всему миру позволили IBM разработать технологию непрерывного глобального производства, при котором рабочий день расширяется до 24 часов за счет распределения работ по исполнителям с учетом временных поясов.
Эта близкая к идеалу картина достижима лишь при «внутрикорпоративном подряде», тогда как в общем случае этому мешают ключевые проблемы офшорности — различие корпоративных культур заказчика и подрядчика, трудности синхронизации разных этапов производственного процесса.
Итак, главное, что объединяет офшорное программирование и глобальное программное производство — это географически разное местонахождение заказчика и подрядчика. Что касается принципиальных различий, то само программирование в общей доле производства занимает хоть и важное, но не главное место. К тому же здесь уже ярко проявляются различия между программированием (programming) и программной инженерией (software engineering).
Программирование и программная инженерия
Как подчеркивает в своей недавней работе [3] Бертран Мейер, автор языка Eiffel и технологии контрактной спецификации модулей (design by contract), «мы можем отличать программную инженерию от программирования по ее индустриальному характеру». Он приводит описание термина «программная инженерия», взятое из терминологического словаря: «это совокупность методов, инструментов и приемов, предназначенных для создания качественного программного обеспечения». Однако предлагает использовать иное определение: «программная инженерия — это разработка преимущественно больших систем, предназначенных для использования в производственной среде; она ведется на протяжении длительного периода времени при участии, как правило, большого числа людей с внесением значительного числа изменений». Под словом «разработка» (development) Мейер подразумевает управление проектом, сопровождение, тестирование, документирование и др. процессы, формирующие производственный цикл по созданию программного обеспечения. А потому более корректно термин «software development» переводить как «программное производство», нежели как «программирование» или «разработка ПО».
Таким образом, программирование можно рассматривать как кустарное, авторское производство программ, тогда как программную инженерию — как полноценное промышленное производство. Обычно в программировании выделяют три важных направления: теоретическое, системное и прикладное программирование, соединяя научный, исследовательский и производственный аспекты. Однако если мы подходим к программированию как к научной или изобретательской деятельности, такое деление мало что дает в случае выполнения реальных проектов, где на первый план выходит производственный аспект. В дальнейшем я чаще буду использовать термин «программное производство», поскольку помимо программной инженерии он охватывает и инженерию знаний (knowledge engineering).
Насколько программное производство по своей природе отличается от других видов производства? Еще в 1972 году Эдсгер Дейкстра отмечал [4]: «Столкновение с задачей программирования, является столь уникальным, что этот новый опыт поможет нам открыть глаза на нас самих. Он должен углубить наше понимание процессов проектирования и творчества; он должен научить нас лучше управлять задачей организации нашего мышления». О сложности стоящих проблем емко сказал А.П. Ершов [5]: «Потребовалось примерно полтора века, чтобы, начиная с Эйлера, построить современное здание математического анализа и на его основе создать науку инженерного конструирования, прежде всего машин и сооружений. Нашему и следующему поколению отпущено не более пяти десятков лет на то, чтобы решить соразмерную задачу по строительству теории программирования и на его основе создать науку инженерного конструирования автоматизированных рабочих мест, роботов и других современных машин».
Итак, программирование — это сложная интеллектуальная деятельность, которая, с одной стороны, очень близка деятельности инженера, а, с другой, — писателя. Общего здесь гораздо больше, чем различий. Поэтому посмотрим на программное производство с точки зрения обычного производства, а затем уже перейдем к особенностям.
Производство
В соответствии с классификацией Питера Друкера [6] можно выделить три системы промышленного производства: штучное, массовое и процессное. В основе каждой из них лежат особые принципы, при этом требования к управлению сильно разнятся. С точки зрения совершенства штучное находится на нижней ступени, а процессное — на самой верхней.
В штучном производстве можно выделить однородные стадии — самостоятельные и независимые единицы производственного процесса, что создает предпосылки для разделения труда и отличает его от ремесленного (кустарного) способа организации производства. Массовое производство — это выпуск целыми партиями разных видов изделий из однотипных или стандартизованных комплектующих. Процессное производство отражает зависимость набора конечных продуктов от технологии производства. Оно носит подчеркнуто непрерывный характер и при изменении соотношения и номенклатуры новых продуктов требует перестройки всей технологической цепочки всего производства.
В программной индустрии применимы все три вида производства. И даже выпуск уникальных продуктов в единичном экземпляре может быть организован как массовое (в плане комплектации и унификации) и процессное (в плане единой технологической линии) производство. Автоматизации, как известно, поддаются массовое и процессное производство. Из этого следует, что компании, задействованные в программном производстве, должны уделять внимание разработке собственной системы автоматизации вне зависимости от того, руководствуются ли они методами управления проектами или основаны на другой модели организации производства.
В ходе программного производства создаются три вида ПО: заказное, полузаказное, тиражируемое. Между заказным и полузаказным редко делают разницу, в силу того, что на контрактной основе создается единичный продукт, не подвергающийся тиражированию и редко отчуждаемый от заказчика. И все же под полузаказным корректнее понимать то ПО, которое создается по рекомендации/требованию заказчика на основе «строительных блоков» сторонних фирм. Что касается тиражируемого ПО, то это полностью отчуждаемый продукт, предполагающий массовое использование. Соответственно требования к тестированию, документированию, сопровождению, развертыванию и другим стадиям жизненного цикла во всех этих случаях разнятся.
Как считает Питер Деннинг [7], «Сейчас все более явной становится новая концепция предприятия, охваченного всепроникающей информационной технологией. Стоимость ее все время сокращается. Труд становится всемирным товаром... Географические границы теряют свое значение... Переосмысливается роль наций и международных организаций».
Глобализация программного производства четко следует принципам международного движения факторов производства [8]. На 70-е годы приходится активный рост международных корпораций, связанный с широким развитием прямого зарубежного инвестирования. (Основной признак международной корпорации — осуществление ею прямых международных инвестиций из страны своего базирования, где располагается головное подразделение, в принимающие страны, где имеются дочерние, ассоциированные компании или филиалы.)
Объяснения этому приводят разные. Это и теория «экономики масштаба» (снижение издержек), и технологическое направление (вынос вспомогательных операций с сохранением контроля за ноу-хау), и достижение определенного размера и масштаба производства. Размещение производства на территории другой страны связано с доступом к источникам сырья, трудовым ресурсам, рынкам сбыта, с устранением налоговых, таможенных и иных торговых барьеров. В случае ПО главным фактором становится доступ к трудовым ресурсам.
С экономической точки зрения нередко выгоднее размещать производство за границей, нежели ввозить специалистов, особенно при различии уровня жизни в стране базирования и принимающей стране. Другими словами, осуществлять не физическую, а логическую «утечку мозгов». Однако выгода может оказаться мнимой, поскольку географические и национальные различия способны свести на нет все преимущества глобального производства.
Управление
Важной особенностью управления глобальным производством является территориальная удаленность подрядчиков/производственных подразделений. В случае внутрикорпоративного управления эта проблема решается проще, нежели при аутсорсинге. Подрядчик, как правило, обладает иной корпоративной культурой, кроме того, барьер возводят различия в языке, традициях, культуре. Даже в случае Индии (бывшей английской колонии) и Филиппин (бывшей американской колонии) проблемы сохраняются. Особенно остро эти различия могут проявляться на стадиях предпроектных исследований, спецификации и проектирования, а также в ходе контроля заказчиком производственного процесса.
Несмотря на наличие даже хороших средств связи синхронизация становится узким местом: продуктивность работы коллектива на одной территории и в географически удаленных точках разная.
Как уже отмечалось, собственно программирование обладает в процессе производства сравнительно скромным удельным весом. Среди персонала, непосредственно вовлеченного в производство, помимо столь часто упоминаемой профессии программиста, можно выделить такие специализации, как руководитель проекта (project leader), руководитель группы (team leader), бизнес-аналитик (business analyst), системный аналитик/проектировщик (systems analyst/designer), прикладной программист (development programmer), системный программист (systems/support programmer), сетевой аналитик/проектировщик (network analyst/designer), инженер по качеству (quality assurance specialist), аналитик баз данных (database data analyst), технолог (metrics/process specialist), технический писатель (technical writer), тестировщик (test engineer) и др. Специфика коллективного создания программного продукта с исключительной яркостью изложена в классической книге Фредерика Брукса [9].
Контроль качества
При глобальном программном производстве на первый план теперь выходит не снижение издержек, а качество и сроки выполнения работ. При прочих равных условиях выбора подрядчика (а уровень оплаты труда в странах, вовлеченных в офшорную гонку, разнится незначительно) определяющим фактором становится реальное, а не декларируемое фактором качество.
Чарльз Браун, бывший президент корпорации AT&T, подчеркивал: «До тех пор, пока фирма имеет возможность обеспечивать приоритетное положение качеству услуг в условиях острой конкурентной борьбы, быстро реагировать на изменение обстановки и требовать точности и безупречного выполнения работы, за общий ее успех не следует беспокоиться».
Важным принципом при обеспечении качества является не столько обеспечение выходного контроля продукции, сколько создание таких условий производства, которые гарантируют требуемый уровень качества.
Наибольшую известность в области контроля качества сегодня получила серия международных стандартов ISO 9000, теория TQM (Total Quality Management) и модель CMM (Capability Maturity Model). Между ними существует тесная взаимосвязь. В конце 1987 года Институт программной инженерии при университете Карнеги-Меллона в сотрудничестве с корпорацией Mitre в рамках работы с Министерством обороны США выпустил документ, который первоначально был ориентирован на подрядчиков МО, а впоследствии произвел огромное воздействие на вопросы качества информационных систем и требований, предъявляемых к любым компаниям, изготовителям программного обеспечения. Его название «Модель зрелости. Пять уровней зрелости процесса создания программного обеспечения» («Capability Maturity Model. The Five Levels of Software Process Maturity») отражает подход авторов к целям и критериям оценки возможностей разных компаний.
Модель CMM близка по духу концепции и универсальной теории TQM, созданной В. Демингом, Дж. Джураном и Ф. Кросби. В большей степени подходы TQM изложены в стандарте ISO 9004:2000, являющемся методическим пособием по применению системы качества. При этом между стандартами серии ISO 9000 и концепцией TQM есть принципиальные различия. Основное состоит в том, что TQM является одним из лучших в мире методов управления качеством и ориентируется на повышение качества изделий в тех случаях, когда уже имеется некий достигнутый уровень, а внедрение стандартов ISO 9000 направлено в большей степени на снижение вероятности неправильных действий. Что касается CMM, то это общепризнанная модель зрелости производства ПО, и сейчас она начинает играть едва ли не ведущую роль.
Сегодня все больше компаний, особенно на европейском рынке, проявляет интерес к TickIT, английской схеме сертификации систем качества для программного обеспечения, предложенной группой ведущих фирм и некоммерческих организаций Великобритании, работающих в области ИТ. Контроль и поддержка схемы осуществляется английским Министерством по торговле и промышленности. Предметом TickIT, основанной на стандарте ISO 9001:1994, является управление предприятиями, разрабатывающими программное обеспечение. Предполагается, что дальнейшее расширение использования TickIT приведет к созданию международной европейской схемы.
Не секрет, что наиболее жесткие требования к качеству производства предъявляются в системах военного назначения. В этой связи полезно отметить, что Институт программной инженерии был образован в 1985 году в рамках специальной программной инициативы Пентагона. Главной его целью была передача технологий, устранение разрыва между исследованиями и повседневной практикой. Основу составила разработка технологических сред, опирающихся на язык программирования Ада. Нынешний ренессанс Ады позволяет взглянуть на такую историческую связь с куда более пристальным вниманием. В таком контексте опыт нашей страны значительно превосходит возможности потенциальных конкурентов на рынке глобального программного производства — Индии и Китая. Качество и надежность могут стать отличительной чертой отечественной программной индустрии. И.П. Ильин писал [10]: «Россия восстанет из распада и унижения и начнет эпоху нового расцвета и нового величия. Но возродится она и расцветет лишь после того, как русские люди поймут, что спасение надо искать в качестве!»
Подготовка кадров
Проблема кадров в программном производстве (особенно в глобальном) на сегодняшний день — пожалуй, ключевая. В бурно развивающихся отраслях разрыв между требованиями промышленности и академических организаций весьма велик. Программная индустрия не исключение. Как же обстоят дела с подготовкой специалистов за рубежом? Ведущую роль в выработке методики преподавания компьютерных дисциплин и подготовке научных и инженерных кадров пока играют Соединенные Штаты, где можно выделить четыре наиболее авторитетных университетских центра: Массачусетский технологический институт, Стэнфордский университет, Калифорнийский университет в Беркли и Университет Карнеги-Меллон. С 60-х годов компьютерные дисциплины в структуре высшего образования США находятся под влиянием двух авторитетнейших профессиональных обществ — Association for Computing Machinery и IEEE Computer Society; первое сделало акцент на научном, а второе — на инженерном аспектах образования.
Многие западные специалисты в области компьютерных наук по-настоящему озабочены сейчас «вымыванием» из университетов теоретического программирования и фундаментальных исследований. Работа в угоду сиюминутным прикладным задачам, активная борьба за будущих специалистов с привлечением их к коммерческой деятельности отрицательно сказывается на общем уровне подготовленных исследователей и инженеров. При этом, с одной стороны, выпускники не готовы для быстрого включения в производственный цикл, а, с другой, не обладают и метазнаниями — способностью к самообучению на основе фундаментальных знаний.
Почти столетие назад Д.И. Менделеев писал [11]: «Чинить и даже строить мосты, лечить и делать всякие другие практические дела, конечно, можно по рецептам, по наглядке, но прямо, судя по опыту, оказывается, что наилучшим способом практические дела делаются только исходя из общих начал, только при знакомстве с абстрактами, до них относящимися, с теми интегралами, атомами и невидимыми движениями, прямую пользу которых первоначально вовсе не улавливают... В этом сочетании конкретного, или действительного, с абстрактным, или отвлеченным, и должно видеть настоящий смысл высших учебных заведений...»
Одна из главных проблем подготовки кадров для организаций, работающих в области ИТ,— активный рост отрасли, приводящий в силу высокой конкуренции к крайне быстрому устареванию инструментальных систем и средств производства.
Общая тенденция нынешнего времени — создание специальных центров (а не отдельных курсов) по непрерывному обучению. Ими обладают практически все ведущие университетские центры США. Можно упомянуть, в частности, Стэнфордский центр профессионального развития и Факультет непрерывного образования Оксфордского университета. Кроме того, появляются и самостоятельные организации, выполняющие эти функции, например, Школа бизнеса и технологии Национального университета.
Но так ли далеко ушли вперед зарубежные центры обучения? В области среднего и высшего образования (как и в научной сфере — в теоретическом программировании) позиции России неплохие. Академик В.И. Арнольд, характеризуя положение с математическим образованием в мире, отметил [12]: «У нас есть у кого учиться и кого учить, и это очень важно сохранить. Верно, что молодые ученые стараются побыстрее уехать из России, чтобы на Западе лучше жить и лучше кормить своих детей. Нужно, конечно же, больше платить здесь, и тогда уезжать не будут. Однако до сих пор математическая культура в России высокая. Причем это настоящая культура, которая во Франции и Америке заменена абстрактным вздором...»
Подавляющее большинство кадров для программной индустрии в России составляют выпускники математических, физических и инженерных факультетов вузов. Сегодня можно выделить три ведущих университетских центра: Москва, Санкт-Петербург и Новосибирск. Именно здесь сосредоточены основные преподавательские кадры. Именно здесь формируются авторизованные учебные центры крупных отечественных и зарубежных компаний, а также всевозможные центры по подготовке кадров. В основном они готовят специалистов по конкретным продуктам, в том числе и на основе сертификации.
Довольно хаотичный рынок труда в России определяет и процесс подготовки кадров. В последние годы по понятным причинам основной спрос был на специалистов в области автоматизации банковской деятельности, офисных систем и систем автоматизации мелких и средних предприятий. При этом лучшие кадры либо уезжали на Запад, либо оставались работать по контрактам с западными компаниями, формируя фундамент для нынешнего офшорного бума. Если раньше зарубежные заказчики ограничивались большей частью краткосрочными индивидуальными контрактами, то сейчас наметились тенденции к размещению в России на основе аутсорсинга сравнительно крупных проектов в области Web-интеграции, системного и прикладного ПО, а также к частичному или полному размещению производственной части и даже исследовательских подразделений на территории России.
Приток инвестиций в отечественные компании позволил им уделять большее внимание расширению производства ПО, а также подбору и подготовке/переподготовке кадров. Численность коллективов разработчиков стала быстро расти. К сожалению, многих из них приходится на ходу переучитывать, что при сохранении высокого уровня миграции кадров создает массу проблем. К дефициту качества специалистов добавился дефицит их количества, который пытаются восполнить за счет «вербовки» и «приобретения» выпускников ведущих вузов прямо на месте их обучения. Не дожидаясь, пока у нас появятся специализированные крупные и авторитетные центры подготовки кадров на основе послевузовского обучения, ряд компаний создает альянсы с ведущими университетами страны, используя дешевизну площадей и учебной инфраструктуры.
Особый путь
Какой же мы выберем путь развития: индийский, ирландский, скандинавский, израильский или какой-то свой, особый? Способна ли Россия (в широком смысле: с учетом Белоруссии, Украины и других стран бывшего СССР) добиться весомых результатов в области глобального программного производства, и что для этого нужно сделать? Должно ли государство вмешиваться в этот бизнес? Вопросы слишком сложны, чтобы было просто дать на них однозначные и убедительные ответы.
Начнем с последнего. Вмешательство государства в бизнес Менделеев называл государственным протекционизмом и противопоставлял фритредерству, приводя в пример соответственно США (где тогда еще только надо было начинать развивать промышленность и торговлю) и Англию (где они уже были в зрелом состоянии). Фритредерство (от «free trade», «свободный рынок») зарождалось еще в средние века и к середине XIX столетия оформилось в особое движение, подразумевающее полное невмешательство правительства в промышленно-торговые отношения. Такую точку зрения разделяет немало представителей нашей нарождающейся программной индустрии. С этим можно спорить, но в любом случае, став на такую позицию, рассчитывать на значительный прорыв в области глобального программного производства не стоит.
Менделеев писал: «Всякое начинаемое (иногда и усиливаемое) в стране производство, как детство и юность, требует до возмужания особой поддержки и покровительства, потому что по незнакомству предпринимателей и рабочих с техническими подробностями начатого дела товары должны обходиться себе дороже, чем в странах с укоренившеюся тою же промышленностью, а особенно вследствие того, что для начинателей необходимы новые торговые обороты, внушение доверия и оттого большие оборотные капиталы (для кредита), новичкам всегда достигающиеся лишь за чрезмерно высокие проценты, ложащиеся на ценность производимых товаров».
Что касается способности России добиться успеха в области производства ПО, то для этого нужны твердое желание на уровне государства, разумеется, подкрепленное соответствующими протекционистскими шагами. Россия обладает неиспользованным потенциалом международного признания в области военно-промышленного комплекса. Это важный козырь в конкурентной борьбе на рынке экспорта программного обеспечения. Вне зависимости от своего нынешнего состояния главный фактор глобального производства — кадры — также имеют неплохую исходную позицию (наш авторитет в области математики, физики и инженерных дисциплин пока еще высок). Согласно данным Всемирного банка, по общему числу персонала, занятого в научно-исследовательской сфере (около 1,1 млн.), и по удельному числу студентов, обучающихся академическим дисциплинам (естественные науки, инженерия, математика, программирование, психология и социология - около 50%), Россия уверенно занимает первое место в мире. По мнению экспертов Американской торговой палаты, ни в одном другом центре офшорного программирования не сосредоточено столько квалифицированных и опытных инженерных кадров, как в России.
Да и в количественном плане в отечественной программной индустрии ситуация не столь печальная, как это можно было бы считать, опираясь на данные индийской ассоциации NASSCOM (4 тыс. специалистов) и американской компании McKinsey (7,5 тыс.). И это на фоне 400 тыс. человек в Китае, 300 тыс. в Индии и 50 тыс. на Филиппинах (также по данным NASSCOM). В России они явно рассматривали только тех, кто работает исключительно на офшорных проектах. Еще в 1985 году Ершов [5] утверждал, что число одних только профессиональных программистов в СССР 200 тыс. и примерно столько же тех, кто занимался этой деятельностью нерегулярно. Даже если сделать поправку на время, на развал Союза, несколько волн эмиграции, изменения в компьютерном мире, смену профессии и другие подобные факторы, такая армия не могла почти полностью раствориться. Тем более, что вузы за это время выпустили не один десяток тысяч ИТ-специалистов (в 1990 году около 100 тыс., правда, в 2000 году — всего 7 тыс.). Так что формально имеющих образование в области ИТ в нашей стране сейчас насчитывается около 1,3 млн. человек. Реально же работают, по словам Игоря Агамирзяна, представителя Microsoft Research, 50-80 тыс. При этом число предприятий в отечественной ИТ-отрасли составляет около 10 тыс.
Динамика развития внушает оптимизм: темпы роста отрасли за десятилетие составили около 20% в год. Скорость ежегодного роста офшорного сектора в последнее время превышает 50%. Производительность труда в программной индустрии России составляет 38% от американского уровня — это наивысший показатель для российской промышленности (средний — 18% от уровня США). К 2003 году, по данным Market Visio/EDC, оборот в офшорном секторе России составит 475 млн. долл. Так что осталось совсем «немного»: подкрепить слова делами, активизировать усилия в области образования, просвещения и особенно пропаганды, создавая соответствующие центры влияния (прежде всего в Internet).
Образование в последние месяцы профессиональных ассоциаций, проведение международных форумов и конференций, участие крупных зарубежных компаний в поддержке ведущих университетских и исследовательских центров страны - все это положительные моменты в развитии отечественной программной индустрии. Но если мы активно включимся в эту гонку, надо отдавать себе отчет в том, что основным «топливом» станут кадры. Все та же Индия к 2008 году, когда объем рынка офшорного ПО составит 80 млрд. долл., для сохранения своих лидирующих позиций должна будет ежегодно готовить 200 тыс. специалистов (при нынешнем объеме в 90 тыс.). Работа на экспорт — ответ на текущую ситуацию. В перспективе новая программная промышленность России должна будет насыщать внутренний рынок, давая импульс развитию всех отраслей экономики.
Намного ли мы отстали? Во всяком случае, не настолько, как это можно было бы подумать, читая зарубежную прессу. И так ли нам уж нужно кого-то догонять? Кто знает... По крайней мере, к принципу «догнать и перегнать» не стоит относиться чересчур уж скептически. Как догоняли мы, знают почти все, а вот как догоняли нас — вспоминают редко. Четыре десятилетия назад американцы все свои ресурсы направили на знаменитую лунную гонку [13], едва ли не по домам собирали средства и запуском «Сатурна-5» и «Аполлона-11» своего добились. Мы же были вынуждены похоронить свою программу пилотируемой экспедиции на Луну. Да, то было особое время. Но без большой цели не стоит рассчитывать на серьезные успехи.
Литература
[1] James Herbsleb, Deependra Moitra «Global Software Development» // IEEE Software, March/April 2001
[2] Д. Мерсер, «IBM: управление в самой преуспевающей корпорации мира» // М.: Прогресс, 1991
[3] Bertrand Meyer, «Software Engineering in the Academy» // IEEE Computer, May 2001 (см. также перевод статьи в этом выпуске журнала)
[4] Э. Дейкстра, «Смиренный программист» в сб. «Лекции лауреатов премии Тьюринга за первые двадцать лет. 1966-1985» // М.: Мир, 1993
[5] А.П. Ершов, «Избранные труды» // Новосибирск: Наука, 1994
[6] П. Друкер, «Практика менеджмента» // М.: Вильямс, 2000
[7] Peter Denning, «Educating a New Engineer» // Communications of the ACM, 1992, Vol. 35, No. 12
[8] А. Киреев, «Международная экономика. Движение товаров и факторов производства», // М.: Международные отношения, 2000
[9] Ф. Брукс, «Мифический человеко-месяц, или как создаются программные системы» // СПб.: Символ-Плюс, 1999
[10] И.П. Ильин, «Спасение в качестве» // Русский колокол, 1928
[11] Д.И. Менделеев, «Заветные мысли» // М.: Мысль, 1995
[12] В. Губарев, «Академик В.И. Арнольд: путешествие в хаосе» // Наука и жизнь, 2000, № 12
[13] Б.Е. Черток, «Ракеты и люди. Лунная гонка» // М.: Машиностроение, 1999
Вопросы, поднятые академиком Ершовым три десятилетия назад, касавшиеся анализа человеческого фактора в программном производстве и по сей день актуальны для программной индустрии:
- Возможна и нужна ли организация разработки программ по принципу конвейерной линии?
- Кого и почему труднее найти для реализации программного проекта — руководителя или исполнителя?
- Как сочетать элитарность системного программирования с его массовостью?
- Как воспитывать программиста — через мировоззрение (университет) или путем профессиональных навыков (технический институт)?
- Что такое индивидуальные способности в программировании, специфичны ли они и нужны ли?
- Можно и нужно ли отделять проектирование большой программы от ее изготовления?
Стандарты качества ПО
- ISO 9000-3:1991. Общее руководство качеством и стандарты по обеспечению качества. Руководящие указания по применению стандарта ISO 9001 при разработке, поставке и обслуживании программного обеспечения.
- ISO 9126:1991. ИТ. Оценка программного продукта. Характеристики качества и руководство по их применению.
- ISO 12119:1994. ИТ. Требования к качеству и тестирование.
- ANSI/IEEE 983:1986. Руководство по планированию обеспечения качества программных средств.
- ГОСТ 28195-89. Оценка качества программных средств. Общие положения.
- ГОСТ 28806-90. Качество программных средств. Термины и определения.