Решения с открытым кодом: состояние и перспектива
Определение основных организационных и экономических причин возникновения широкого развития программных решений с открытым кодом. Задачи, решаемые с использованием программных продуктов с открытым исходным кодом, основные инструменты их разработки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 15.08.2020 |
Размер файла | 20,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1
Решения с открытым кодом: Состояние и перспектива
Цымбал А.
программный продукт исходный код
Речь пойдет не о технических проблемах и конкретных реализациях. В центре внимания будут проблемы информатизации, подходы, используемые для их решений и порождаемые этими решениями новые проблемы, на которые необходимо в ближайшем будущем найти ответы.
Причины возникновения и широкого развития решений с открытым кодом
Основных причин две: организационная и экономическая.
С ростом сложности приложений, их комплексности, качественного повышения уровня требований - особенно в области надежности и масштабируемости, а также сокращения сроков на разработку процесс создания приложений подошел к грани, за которым теряется управляемость этого процесса. Уже никого не удивляют серьезные ошибки, которые нередко встречаются практически во всех серьезных продуктах, от самых разных производителей. Скорость исправления ошибок, обнаруженных пользователями на этапе эксплуатации, недостаточно высока, чтобы доводить текущие версии до высокой степени надежности. Проблема усугубляется необходимостью поддержки в общем случае нескольких платформ, появлением новых технологий и спецификаций и т.д. На это накладывается рост требований пользователей к программным системам.
Решение на пути использования традиционных технологий не проглядывается, более того, совершенно очевидно, что новые проблемы при таком подходе будут возникать все быстрее и быстрее.
Программирование с открытым кодом предлагает выход из этого тупика. Во-первых, пользователь продукта, представляющий собой компанию или просто являющийся квалифицированным разработчиком, может сам модифицировать «основной» код, исправляя ошибки и внося необходимые изменения. Во-вторых, открытый (и к тому же бесплатный) исходный код позволяет привлечь к разработке, отладке, переносу на другие платформы и поддержке продукта гораздо больше заинтересованных в конечном результате участников, нежели это может позволить себе любая специализированная компания. В-третьих, потребитель может сам адаптировать систему к своим специфическим требованиям, например, в области интерфейса пользователя и обеспечения безопасности. В-четвертых, пользователь, получив исходный код, перестает чувствовать свою зависимость от разработчика и может взять управление процессами развития и поддержки приложения в свои руки. В-пятых, пользователь может быть уверен, что приложение не содержит «злонамеренного» кода и не выполняет каких-то неоговоренных действий.
Но и это еще не все. Не менее важным оказался экономический аспект. Лавинообразный рост спроса на программное и аппаратное обеспечение со стороны все большего и большего числа потребителей привел к росту конкуренции в отрасли и к падению доходности производства программных продуктов в «коробочном исполнении». Более или менее комфортно чувствовали себя только монополисты в своей области, но только до тех пор, пока не стали все более и более очевидно проявляться недостатки, о которых говорилось выше. Посмотрим, какой ценой куплены маркетинговые успехи Microsoft. Приложения Microsoft в полной мере рассчитаны не просто на одно семейство операционных систем, но фактически даже на одну аппаратную платформу. Microsoft не следует основным стандартам - положение монополиста позволяет на своей платформе навязывать свои решения как стандарт de-facto. Операционная система .NET очень плохо поддерживает ВСЕ стандартные языки программирования без добавления в них специфических только для этой платформы расширений. По сути, маркетингово-технологическая политика Microsoft нежизнеспособна без монопольного положения компании.
С другой стороны, рост потребления средств управления информацией открыл новые возможности - в первую очередь, в области проведения экспертиз проектов, оказания консалтинговых услуг, обучении. Производители закрытого кода при работе с потребителями своих продуктов, очевидно, имеют в этом плане огромное преимущество перед всеми остальными, что вызывает неприятие этих «всех остальных».
Производители ПО столкнулись с ситуацией, когда расходы на создание и поддержку закрытого ПО растут, доходность от продаж падает, степень доступности средств разработки все более возрастает, что приводит к появлению все новых и новых разработчиков и росту конкуренции. Пользователи все менее и менее удовлетворены зависимостью от средств обработки информации, которые работают в режиме «черного ящика» и которые пользователь не может ни поддерживать, ни развивать самостоятельно. Важен также следующий, несколько «философский», аспект проблемы, который не вставал со всей очевидностью тогда, когда программ было мало, а производителей и потребителей этих программ - и того меньше. Тогда высокая стоимость программного решения казалась (и была) экономически оправданной и воспринималась, как должное. Но ситуация изменилась. Программу, как и фильм, как и произведение художественной литературы, можно без ущерба для качества тиражировать в любых количествах и очень дешево. Приведем аналогию. Создание фильма обходится очень дорого, но при огромных тиражах его копий на различных носителях для каждого конкретного потребителя стоимость копии очень невелика - она не очень сильно отличается от стоимости самого носителя и затрат на создание копии. Конечно, программа не является произведением искусства (даже массового искусства), но это привносит только одно - более сильную конкуренцию. Высокую стоимость могут сохранить только очень серьезные приложения, ориентированные на корпоративного пользователя, да и то только до тех пор, пока не будут созданы их открытые аналоги.
Наконец, идеология open-source гораздо больше соответствует миру информации, нежели корпоративная коммерческая закрытая среда.
Задачи, для решения которых используются продукты с открытым исходным кодом
Можно условно выделить три области, где используются open-source приложения. Каждая из этих областей имеет собственную специфику, свои проблемы и свои способы решения их.
Важное обстоятельство - изменение места и роли операционных систем.
Еще десять лет назад выбор операционной системы практически определял набор технологий и программных инструментов, которые будут использованы при создании приложения. С наступлением широкого использования распределенных технологий и Web-ориентированных приложений ситуация существенно изменилась. Особенности поведения и возможности ОС стали больше интересовать администраторов, в внимание разработчиков переключилось на возможности middleware-технологий, которые в общем случае слабо зависят от ОС. Особняком стоит семейство Windows, поскольку эта ОС является, по сути, симбиозом ОС в «классическом понимании» и middleware-слоя.
Итак, собственно ОС перестала быть платформой для разработки и превратилась в run-time среду для выполняемых приложений. Это означает, что возросла роль таких характеристик ОС, как надежность, масштабируемость, устойчивость, время простоя, стоимость владения, возможности администрирования, уверенность в долговременной поддержке системы со стороны производителя. Неожиданно остро стал вопрос о степени зависимости пользователя ОС от ее разработчика.
Как ни странно, именно в такой сложной, трудоемкой и традиционно «корпоративной» области, как операционные системы, ПО с открытым кодом достигло наиболее впечатляющих успехов. Объяснять это можно по-разному, но наиболее правдоподобным объяснением будет затребованность качественной операционной системы с открытым исходным кодом очень широким кругом потребителей ПО.
В таких операционных системах оказались заинтересованы крупные потребители ПО - правительственные учреждения, крупные компании, учебные заведения - правда, по разным причинам. Дело здесь не в бесплатности такой ОС, как Linux - стоимость владения операционной системой определяется не только (и не столько) ее ценой при покупке.
Государственные организации привлекает, прежде всего, полный контроль над системой и независимость от технологической, маркетинговой и прочих политик крупных программных компаний, которые по возможностям влияния и финансовым возможностям сопоставимы с правительствами крупных стран.
Фирмы - потребители ПО видят огромное достоинство таких ОС в возможности самостоятельного исправления ошибок и поддержки ОС своими силами в случае каких-либо проблем такого плана, возникших у поставщика.
Образовательные учреждения получают прекрасный полигон для студентов, занимающихся системным программированием, и тесную связь процесса образования с реальными проблемами компьютерной индустрии, а также снижение расходов на приобретение программ для обеспечения учебного процесса.
Но использование операционных систем с открытым исходным кодом подразумевает:
- принятие на себя ответственности за ее применение;
- наличие структуры и людей, обладающих соответствующей квалификацией, для эффективного использования такой ОС.
Middleware
Middleware - это программный слой, который берет на себе решение задач системного уровня при создании приложений.
Возможно, имеет смысл рассмотреть причины появления middleware и роста его использования.
Традиционной, наиболее распространенной архитектурой крупных информационных систем была архитектура «клиент-сервер». Основными частями системы являлись сервера баз данных, которые обеспечивали хранение и доступ к данным, а также реализовывали часть бизнес-логики системы, и клиентские приложения, которые частично реализовывали бизнес-логику, а также обеспечивали представление данных и пользовательский интерфейс. Непосредственной средой для выполнения клиентских приложений была операционная система. При таком подходе системные и прикладные вопросы были четко разнесены, и системные проблемы решались квалифицированными и специально подготовленными программистами, которые создавали системы управления БД и саму ОС. Прикладной программист занимался вопросами, имеющими отношения к его области интересов.
Фундаментальными недостатками архитектуры «клиент-сервер», которые потребовали использования качественно иных подходов, явилась слабая масштабируемость решения, т.е. способность эффективно работать при значительном росте нагрузки - например, радикальном увеличении числа клиентов, а также отсутствие средств для обработки сбоев и перераспределения нагрузки. Чтобы решить эти проблемы, была разработана концепция многозвенных систем, т.е. наличия в системе дополнительных приложений, помимо серверов БД и клиентов.
Как следствие, появилась необходимость написания не только клиентов, но и так называемых серверов приложений, на которые возлагается задача реализации бизнес- и презентационной логики. Проблема состоит в том, что задача написания такого сервера приложений неизбежно ложится на прикладного программиста, но реализация качественного сервера приложений немыслима без решения системных проблем - управления сетевыми соединениями, ресурсами сервера, транзакциями, безопасностью и др. Прикладной программист не может квалифицированно справиться с такой задачей - для этого нужна специальная подготовка.
В данной ситуации возможны были два решения:
1. Создавать сервера приложений силами коллектива разработчиков - как прикладных, так и системных, тесно взаимодействующих друг с другом;
2. Создать дополнительный программный слой, который берет на себя решение системных проблем и который является фундаментом, на котором прокладной программист реализует бизнес-логику приложения.
Достоинства второго подхода очевидны, и именно он стал основной парадигмой при создании современных сложных информационных систем. Платой за такое решение стала привязка собственно приложений к выбранной midlleware-технологии, а не к операционной системе.
Сразу же стало очевидно, что middleware-технологии должны быть универсальными и стандартизованными, так как только это позволит создавать переносимые приложения. В настоящий момент существуют только две таких технологии, которые позволяют решить весь комплекс вопросов при создании любых приложений - .NET от Microsoft и J2EE, создаваемая в рамках консорциума Java Community Process (JCP).
Таким образом, middleware-технология становится важнейшей частью процесса создания современных систем, и эта важность была вполне осознана сообществом разработчиков на принципах использования открытого кода. Сначала (примерно 10 лет назад) был создан Web-сервер Apache, затем его расширение - контейнер Web-компонентов (Tomcat, Jetty) и - совсем недавно - полнофункциональные J2EE-сервера, такие, как JBoss и WebSphere Community Edition. С их появлением разработчики получили в виде бесплатно распространяемых продуктов с открытым кодом все необходимое для создания и развертывания сложных качественных современных приложений - вплоть до приложений корпоративного уровня.
Инструменты разработки (включая проектирование, отладку и пр.)
Строго говоря, операционной системы Linux и полнофункциональной реализации middleware, подобной WebSphere Community Edition, в принципе достаточно. Тем не менее, крайне жесткие требования по срокам создания информационных систем приводят к необходимости использования эффективных и удобных средств разработки и отладки, которые позволяют на порядок уменьшить сроки разработки. Не удивительно, что третьей группой программных продуктов с открытым кодом являются средства проектирования, разработки и отладки, тесно интегрированные с middleware-решениями.
Создаваемые приложения можно условно разделить на серверные и клиентские. При их написании приходится решать совершенно различные задачи.
Разработчик серверных приложений в основном полагается на возможности выбранной middleware-технологии, которая, собственно, и создавалась для этой цели. С клиентскими приложениями дело обстоит даже несколько сложнее.
Примерно 5 лет назад казалось, что абсолютный верх берет тенденция вырождения клиентских придожений в так называемые «сверхтонкие клиентские приложения» - т.е. просто Web-броузеры с соответствующими настройками, которые получают информацию от сервера приложений в готовом для отображения виде. Сейчас видно, что победил сбалансированный подход - каждый вид клиентских приложений используется там, где он наиболее оптимален.
Наиболее сложным для разработки видом приложений является так называемый «толстый клиент» - полноценное приложение, которое позволяет создать наиболее удобный интерфейс пользователя и обеспечить максимально эффективную передачу данных между клиентским и серверным приложениями. В настоящий момент разработчикам доступны решения с открытым исходным кодом, которые фактически являются универсальными платформами для быстрого и эффективного создания клиентских приложений.
Таким образом, в настоящий момент open-source решения «закрывают» все области применения программного обеспечения, причем речь во многих случаях идет о продуктах того же уровня и качества, что и соответствующие коммерческие продукты. Это создает качественно новую ситуацию в области разработки программ.
Перспективы
Оценивать перспективы в области информатики и компьютерной индустрии - дело неблагодарное. Многие еще помнят, как Б. Гейтс говорил, что трудно представить задачу, для которой на ПЭВМ не хватит 640 Kb памяти и о том, что Internet - это не дело Microsoft.
Главная проблема программирования с использованием open-source - это то, что оно является частью мира, построенного на иных принципах. Для его успешного развития - в симбиозе с производством коммерческого закрытого ПО - необходим непрерывный рост числа квалифицированных потребителей программного обеспечения, т.е. все более и более широкого эффективного использования информационных технологий. Рост продаж компьютеров или числа пользователей Internet сами по себе в этом плане ничего не значат. Мир открытого ПО - это мир самоорганизующихся работоспособных коллективов, умеющих находить и реализовывать оптимальную стратегию для решения возникающих задач. Это очень новое явление. Сейчас уже видно, что разработка на основе открытого кода сумела выжить и занять свою нишу. Ее перспективы очень многих впечатляют (а очень многих - пугают). Это первая ласточка «информационного общества». Наивно думать, что принципы этого общества устроят всех - в том числе многих из тех, кто сейчас громче других призывает двигаться в этом направлении. Как все новое, это угроза для тех, кто «хорошо устроился» в сегодняшнем мире и шанс для тех, кто действительно хочет в ближайшем будущем выйти на передовые позиции, оттеснив нынешних лидеров. Уже сейчас видно, что влияние этого направления заставляет меняться тех, кто хочет сохранить свое доминирование. Это - признак жизнеспособного и перспективного процесса.
Сказать, что ПО с открытым исходным годом - это ключ к будущему - явное преувеличение. Но игнорирование перспективных тенденций, неучастие в опробовании новых организационных форм - гарантия вторичности и отставания. Особенно, если речь идет о Высшей школе.
Размещено на Allbest.ru
...Подобные документы
Бесплатная среда разработки программного обеспечения с открытым исходным кодом для компилятора Free Pascal. Почему Lazarus такой популярный. Корректность введенных данных. Использование основных методов визуализации в среде программирования Lazarus.
курсовая работа [695,5 K], добавлен 19.04.2013Понятие и ключевое отличие распределенной разработки программного обеспечения, его достоинства и недостатки. Концептуальное решение и выбор типа разработки. Особенности программного обеспечения с открытым исходным кодом. Идея и развитие Open Source.
курсовая работа [97,7 K], добавлен 14.12.2012OpenCV – библиотека компьютерного зрения с открытым исходным кодом, предоставляющая набор типов данных, функций и численных алгоритмов для обработки изображений. Ее реализация на C/C++. Цели использования технологии. Основные модули библиотек 1-3.
презентация [121,8 K], добавлен 14.12.2013Сферы применения и возможности WordPress - CMS с открытым исходным кодом, распространяемой под GNU GPL. Уязвимости WordPress в плагинах Emaily, FeedList, WP Auctions и Old Post Spinner. Межсайтовый скриптинг WordPress в плагине Page Flip Image Gallery.
реферат [4,1 M], добавлен 12.07.2012PHP (Hypertext Preprocessor) - технология с открытым кодом, позволяющая использовать скриптинг в документах, его специфические функции и методы. Использование базы данных в PHP: авторизация доступа, механизм сессии; форма сбора данных и запись в БД MySQL.
контрольная работа [1,3 M], добавлен 11.06.2013Изучение основных методов и алгоритмов криптографии с открытым ключом и их практического использования. Анализ и практическое применение алгоритмов криптографии с открытым ключом: шифрование данных, конфиденциальность, генерация и управление ключами.
дипломная работа [1,2 M], добавлен 20.06.2011Понятие и история изобретения криптосистемы с открытым ключом. Свойства односторонней функции и сложность раскрытия шифра. Описание алгоритма RSA: шифрование и дешифрование. Возможные атаки, способы взлома, обоснование и практическая реализация RSA.
курсовая работа [45,9 K], добавлен 24.12.2011Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Актуальность и предыстория проблемы построения систем связи с открытым ключом. Алгоритм кодирования, перевода из десятичного числа в двоичное, быстрого возведения числа в степень, поиска взаимно простых чисел. Дешифрование сообщения по криптоалгоритму.
курсовая работа [140,3 K], добавлен 20.06.2017Обмен информации, защищенной от фальсификаций и незаконных пользователей. Распределение секретных ключей с помощью системы с открытым ключом. Разработка модулей системы генерации ключей и обмена конфиденциальной информацией для группы пользователей.
курсовая работа [2,0 M], добавлен 17.11.2011Характеристика рефакторинга как процесса изменения структуры программы. Предпосылки его проведения, основополагающие принципы. Признаки "плохого" кода. Применение кодирования и управления исходным кодом в качестве приема "Экстремального программирования".
контрольная работа [26,2 K], добавлен 29.05.2014Основные интегрированные информационные системы поддержки принятия решений. Обзор и сравнительный анализ программных продуктов инвестиционного проектирования. Программа управления проектами "MS Project". Примеры программных продуктов в ОАО "Криогенмаш".
курсовая работа [776,0 K], добавлен 03.06.2014Этапы технологического процесса разработки программных продуктов, их жизненный цикл. Общая характеристика языков программирования. Виды ошибок и принципы тестирования программ. Установление прав собственности на продукт посредством лицензий и контрактов.
презентация [1,9 M], добавлен 01.05.2011Методика разработки и механизм отладки программы на языке Лисп, реализующей криптографический алгоритм кодирования информации с открытым ключом – RSA. Математические и алгоритмические основы решения задачи, его программная модель, составление блок-схемы.
курсовая работа [675,7 K], добавлен 20.01.2010Утечка конфиденциальных данных как прямая угроза для бизнеса, характеристика ее основных причин. Способы борьбы с утечками конфиденциальных данных на уровнях организационных процедур и программных решений. Программные решения, представленные на рынке.
реферат [1,1 M], добавлен 15.07.2012Проектирование программы в среде Delphi для тестирования знаний студентов по программированию, с выводом оценки по окончанию тестирования. Разработка экранных форм и алгоритма программы. Описание программных модулей. Алгоритм процедуры BitBtn1Click.
курсовая работа [365,0 K], добавлен 18.05.2013Особенности документирования программных средств, стадии разработки продуктов. Классификация обеспечивающего пакета документов. Сущность и основные недостатки Единой системы программной документации. Классификация стандартов, Гост 19.102-77 ЕСПД.
презентация [64,8 K], добавлен 22.03.2014Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.
курсовая работа [1,5 M], добавлен 21.09.2010Преимущества, недостатки и область применения модели быстрой разработки. Планирование и тестирование модели. Рефакторинги и простой дизайн, коллективное владение кодом. Выбор оптимальной последовательности написания кодов. Частые выпуски версий.
презентация [49,0 K], добавлен 07.12.2013Влияние качества программных продуктов на экономические характеристики производства, управление ими. Стандартизированные характеристики качества сложных программных продуктов. Гипотетические примеры определения требований к характеристикам качества.
контрольная работа [22,4 K], добавлен 13.12.2014