Разнообразие инструментов создания программ и программного обеспечения (ПО) позволяет выбирать подходящий язык реализации (Паскаль, Пайтон, Си++ и др.). Для системного обеспечения подойдет Си++, для прикладного, инженерно-технического обеспечения и обучения – Паскаль. Веб-мастерам нравится Пайтон.
В программировании применяют различные методы и подходы: функциональный, объектно-ориентированный, экстремальный и «на лету», по ходу получения данных в реальном режиме. Программный продукт – это результат компетенций, усилий разработчиков и использования хорошей системы программирования, интерфейсной поддержки разработки. Для мобильных приложений используют потоковое программирование, например, в системе POSIX.
Примеры актуальных задач программиста
В список таких задач можно включить, согласно эвристическим оценкам профи-программистов такие задачи:
• обеспечение дистанционной работы;
• разработка серверной подсистемы системы «клиент-сервер»;
• визуализация сценариев событий, процессов, например, в реальном режиме;
• реализация интеллектуального чат-бота;
• создание сайта-визитки или мультиязычного портала холдинга;
• использование IDE-ориентированного обеспечения;
• развитие API-ориентированного обеспечения;
• разработка геймификационного WindowsForms-приложения;
• моделирование системы конечных автоматов;
• визуализация и 3D-моделирование процессов;
• поддержка функционала «Умного дома» и др.
Важно, чтобы задачи сами развивали программистские навыки, умения, интерактивные действия, инновационный подход, последовательное распределенное выполнение и взаимодействие с ОС. Вырабатывается реакция на аварийное завершение процессов, отслеживается перехват управления злоумышленником для доступа к выполняемому процессу. Применяются исполнение в браузере, библиотеки плагинов, обнаружение утечек ресурсов (памяти, времени), тестирование на уязвимость. Обязанностью тестировщика является нахождение, сообщение программистам об ошибках, анализ ПО как «черный ящик», разработка плана тестирования и формирование отчета тестировщика.
Планирование проектов и модулей ПО
Все методы разработки программ должны ориентироваться на автоматизацию или интеллектуализацию. Нужен коллектив программистов от 4 до 7 человек. Автоматизация потребует технологического, инфраструктурного обновления. Это по силам компаниям, имеющим доступ к Open Codes (открытым кодам программ) или Open-Sourse Soft (OSS, открыто распространяемому ПО).
ПО формируется из модулей, независимых функционально программ. Сложное ПО разрабатывает команда, где программистов, возможно, даже больше семи человек. Управляется разработка ПО с помощью принципов:
• модульное исполнение с гарантией применения тестирования;
• стандартизация, унификация и контроля затрат;
• модульное разбиение проекта (структурно, логически, интерфейсно);
• независимая настройка модулей и проверка их устойчивости.
В индустрии массового ПО важны критические задачи, в частности, защита интеллектуальной собственности, сопровождение и мульти-платформенное использование ПО (т. е. переносимость программ в иные среды). При этом клиентская подсистема (программа) отвечает за отображение процесса на ПК пользователя, а серверная подсистема – за всё остальное, часто скрытое от клиента, например, браузерные приложения.
Важные программы переносятся на сервер, клиентские приложения копируются без прямого доступа и безопасно. Право модифицировать имеет администратор или аутсорсинг. Программист концентрируется на платформе, остальное (интерфейс, информация, тестирование) можно отдать аутсорсингу, согласно модели взаимодействий типа SaaS («Софт как Сервис»).
Открытое ПО имеет код, доступный всем по лицензии, который размещается на официальном форуме компании-разработчика. Оно доступно для модификации, доработки и удаления уязвимостей. Его можно использовать законным способом, можно анализировать, распространять копии кода, не ущемляя лицензионных прав, улучшать со ссылкой на оригинал и публикацией улучшений в СМИ.
Есть непрозрачные (как «черный ящик») программы OSS, например, VirtualBox (Oracle). Закрытые компоненты могут стать системообразующими для программного продукта и при отсутствии поддержки. В частности, American Library Association считает, что не нужно полагаться только на дорогое ПО.
Правовое регулирование ПО
В РФ правовое регулирование ОSS осуществляется Законом и актами, например, Распоряжением от 18 октября 2007 года (№1447-р), ч.4 ГК (о лицензионном договоре), публичной офертой или договором присоединения.
ОSS создается массовой программной деятельностью, инновациями. Закрытое ПО (CSS) недоступно всем, оно зашифровано, а права принадлежат разработчику. Есть ограничения по копированию кода, его модификации и распространению. Есть ПО и свободное (FOSS), но с защитой прав (OSI). Есть бесплатные лицензии, допускающие продажу (GPL и др.). В частности, популярны лицензии:
• MIT (разрешено модифицировать);
• GNU (разрешена модификация);
• SUSE (разрешено распространение).
OSS нельзя путать с бесплатным или условно бесплатным ПО. Последнее предоставляется бесплатно в компилированном виде, без «исходников», возможно с ограниченным использованием. Часто оно предоставляется возмездным способом, но без права модифицирования.
Бриф и дизайн ПО
Бриф или краткая инструкция по разработке содержит ключевые условия, требования для ПО. Затем, в техническом задании (ТЗ) они дополняются, уточняются с учётом анализа возможностей и статистики (поведенческой, рыночной, маркетинговой, рекламной). На этой основе вырабатывается дизайн-концепция.
Реализуется дизайн ключевыми задачами:
• макетирование;
• гипермедиа-поддержка;
• цветовое решение.
ПО модернизируется либо «косметически», либо существенно, с изменением дизайна, «прикруткой» новых плагинов для увеличения конкурентных преимуществ. К ПО предъявляются высокие требования по производительности, устойчивости, реализации, уязвимости, эволюции. Популярна модель Agile с итеративной разработкой.
Характеристики качества ПО
Ключевых классы характеристик акцентируют:
1) функциональную полноту ПО;
2) пиковую производительность;
3) комплексную совместимость;
4) отказоустойчивость;
5) защищенность;
6) дружественность (доступность, удобность, для сайта – юзабилити);
7) модифицируемость и адаптивность (управляемость, переносимость).
ПО имеет различные критерии отказоустойчивости, например, наработка на отказ. Разнообразие характеристик ПО позволяет эффективно тестировать, верифицировать его. Также учитываем, что исправление ошибок требуют намного больше начальных затрат.
Качество ПО определяют наиболее важные его критерии: устойчивость (самовосстановление после сбоя), эффективность (соотношение выгод и затрат), сложность (трудоёмкость разработки).
Важно иметь качественное описание ПО. Пользователь должен быть заинтересован использовать программу, программист – уметь составлять документацию. Заказчик не будет вникать в нужное ему ПО, он лишь прочтет документацию.
Положения ISO/IEC-стандарта носят лишь рекомендательный характер, поэтому каждая компания имеет свои требования к документации ПО.
Документация рассчитана на среднего уровня программиста, на «супер-кодера» не следует ориентироваться.