Разработка ПО — это род деятельности (профессия) и процесс, направленный на создание и поддержание работоспособности, качества и надежности программного обеспечения, используя технологии, методологию и практики из информатики, управления проектами, математики, инженерии и других областей знания.
Надежность и качества программ для ЭВМ
Надежность программ для ЭВМ - это одно из основных качеств не только программ для ЭВМ, но и любого типа техники, приборов, машин и устройств, используемых в быту, в жизни, транспорте, связи и на производстве.
Основные критерии надежности в технике:
- отказоустойчивость,
- ремонтопригодность,
- живучесть.
Отказоустойчивость - это отсутствие отказов и сбоев в работе машин, приборов и устройств. В том числе - отсутствие сбоев и отказов в работе ЭВМ - электронных вычислительных машин (компьютеров). Наличие сбоев и отказов в работе машин, приборов и устройств говорит о их недостаточной или низкой надежности.Как DevOps-сервис помогает «разгрузить» высоконагруженные системы BPMSoft
Ремонтопригодность - возможность внесения исправлений в машины, приборы и устройства при обнаружении в них сбоев, отказов или других дефектов. В том числе - в компьютерах, вычислительных устройствах, машинах, системах и комплексах.
Особенности программ для ЭВМ - программы не ломаются и не подлежат износу в отличии от всей остальной техники, приборов, машин и устройств. В этом смысле программы для ЭВМ обладают исключительной жизнестойкостью.
Наличие сбоев и отказов в работе ЭВМ при выполнении программ являются их конструктивными ошибками и дефектами, закладываемых при разработке или отладке программ на ЭВМ. Количество ошибок и продолжительность отладки программ обычно считается неизвестным.
Ни в одном виде науки и техники нет такого положения с выявлением и исправлением ошибок и дефектов, как в программировании и разработке программного обеспечения для ЭВМ. Одна из крупнейших иностранных фирм объявила о появлении в их программной продукции неисправимых ошибок ???
Программная продукция
Программная продукция - это программы для ЭВМ, поставляемые потребителям для ее установки и использования на ЭВМ или в сетях ЭВМ. Программная продукция должна являться одним из видов промышленной продукции и отвечать требованиям международных стандартов ISO.
Одно из основных требований международных стандартов ISO к промышленной продукции - это ее надежность поставляемых приборов, машин и устройств и в частности и в первую очередь - отказоустойчивость и отсутствие конструктивных ошибок и дефектов в поставляемой промышленной продукции.
Согласно Закону РФ "О защите прав потребителей" любой товар при обнаружении в нем дефектов подлежит замена либо возврату денежных средств за его приобретение и сопутствующие издержки.
Программный продукт в соответствии с международными требованиями ISO не должен содержат ошибок и дефектов, которые приводят к сбоям и отказам при выполнении этих программ на ЭВМ либо в сети ЭВМ.
Программы с дефектами и ошибками - это не продукт.
- ВАК, проф.,док.комп.наук 11:34, 3 августа 2009 (UTC)
Основные этапы разработки программ
разработка ПО имеет дело с проблемами качества, стоимости и надёжности. Некоторые программы содержат миллионы строк исходного кода, которые, как ожидается, должны правильно исполняться в изменяющихся условиях. Сложность ПО сравнима со сложностью наиболее сложных из современных машин и космических проектов.
Технологии программирование включают:
- Анализ и постановка задач
- Проектирование - разработка спецификаций
- Проектирование — разработка алгоритмов
- Написание исходных текстов программ
- Тестирование и отладка программ
- Испытания и сдача программ
- Сопровождение программ
Основная часть работы программистов связана с написанием исходных текстов программ на одном из языков программирования, а также тестированием и отладкой программ на ЭВМ .
Исходные тексты программ, а также исполняемые файлы являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей.
Структурное проектирование программ
Информатика как научная дисциплина предлагает и использует на базе методов структурного программирования технологию надежной разработки программного обеспечения, используя тестирование программ и их верификацию на основе методов доказательного программирования для систематического анализа правильности алгоритмов и разработки программ без алгоритмических ошибок.
Данная методология программирования направлена на решение задач на ЭВМ, аналогичной технологии разработки алгоритмов и программ, используемой на олимпиадах по программированию отечественными студентами и программистами с использованием тестирования и структурного псевдокода для документирования программ в корпорации IBM с 70-х годов.
Методология структурного проектирования программного обеспечения может использоваться с применением самых различных языков и средств программирования для разработки надежных программ самого различного назначения.
Одним из больших проектов надежной разработки надежного ПО была разработка бортового программного обеспечения для космического корабля «Буран», в котором впервые использовался бортовой компьютер для автоматического управления аппарата, совершившего успешный старт и посадку космического корабля.
Обучение технологиям программирования
Обучение технологиям разработки ПО на основе методологии структурного проектирования программ была начата в начале 80-ых годов в МИЭМ при подготовке инженеров-математиков по специальности "Программное обеспечение ЭВМ" и изложена в наших учебниках информатики и программирования.
Наибольший успех - разработка базовых пакетов программ по информатике для отечественных и импортных персональных ЭВМ - БК, Корвет, УКНЦ, Ямаха и IBM PC, которые разошлись по всей стране в виде свободного и открытого ПО в конце 80-ых гг.
Все студенты МИЭМ с начала первого курса осваивали и осваивают псевдокод для описания алгоритмов и документирования всех разрабатываемых программ на языках Паскаль, Бейсик, Си, Фортан, ПЛ/1 и т.д. и т.п., а с третьего или даже второго курса приступают к разработкам ПО.
Наибольший успех достигался при обучении инженеров-математиков в МИЭМ и инженеров-экономистов в МАТИ, которые уже на первом курсе начинали разработки программ с доказательствами правильности составляемых алгоритмов относительно математических постановок решаемых задач.
Примеры решения задач с разработками алгоритмов и доказательствами их правильности изложены в вузовсих и школьных учебниках информатики Каймина, которые разошлись по всей нашей стране миллионным тиражом и вошли в стандарты образования в качестве спецификаций ЕГЭ по информатике.
50 тысяч школьников в 2009г. успешно сдали экзамены ЕГЭ по информатике, в спецификациях которых заложены основы алгоритмизации, логика, анализ правильности алгоритмов и элементы технологии программирования - основы современного профессионального программирования.
Монолит или микросервисы. Какую ИТ-архитектуру предпочитают крупные компании в России
Монолиты и микросервисы — воплощение двух противоположных подходов к построению архитектуры приложения. Первые представляют собой единый продукт с общей кодовой базой. Вторые — «содружество» независимых модулей. Плюсы и минусы есть у каждого, и о них TAdviser поговорил с участниками ИТ-рынка.
В дебатах о том, какой подход к архитектуре ИТ-систем выбрать, — монолитный или микросервисный — однозначного ответа нет. По словам опрошенных TAdviser экспертов, выбор подходящей архитектуры зависит от конкретных бизнес-целей и технических требований. Например, для ПО используемого на кораблях, спутниках, в АСУ ТП или программно-аппаратных комплексах высокая скорость обновления не требуется, поэтому можно очень хорошо и качественно реализовать функциональной на простой платформе в виде монолита, говорит руководитель Лаборатории стратегического развития продуктов кибербезопасности Аналитического центра кибербезопасности «Газинформсервис» Дмитрий Овчинников.
Преимущества микросервисов заключаются в том, что ИТ-продукт может создаваться из разных модулей, которые могут быть реализованы отдельно, на разных языках программирования, разных фреймворках и разными командами программистов.
Все это позволяет применять разные технологии и при необходимости менять их на другие. Получается своего рода конструктор-лего, в котором можно менять кирпичики. Минус тут только один: для такой скорости работы надо организовывать нормальный CI/CD, брать в штат девопса и организовывать грамотные пайплайны, - отметил Овчинников. |
В ИТ-компании «Девелоника» (ГК Softline), говоря о плюсах микросервисов, отметили, что они снижают риски заказчика, связанные с отказоустойчивостью его систем, жизненно-важные процессы не останавливаются. Появляется больше свободы в выборе инструментария заказной разработки.
Приверженцами монолитных моделей остаются компании, для которых главное – это контролируемость, надежность и безопасность. Основой целевой аудиторией монолита являются предприятия в сфере промышленности (особенно в системах АСУТП, САПР и PLM), энергетики и транспорт, отмечает руководитель практики комплексной цифровизации процессов Naumen Никита Кардашин.
Монолит также применяется в системах управления предприятием ERP (SAP, 1С и т. п.). Если вокруг таких платформ появляются система учета заработной платы, корпоративный портал и сервис электронного документооборота, то эту архитектуру уже нельзя назвать микросервисной, так как каждый компонент, входящий в ее состав, является отдельным крупным монолитом, выполняющим целый комплекс бизнес-задач и сервисов, пояснил архитектор информационных систем в IBS Сергей Политыко.
Основной недостаток монолотных систем связан с масштабируемостью. Системы растут, появляется больше пользователей, требуется больше услуг и сервисов, а монолит не приспособлен к быстрой эволюции, считает директор департамента разработки программных решений ИТ-компании «Инфосистемы Джет» Павел Иванов. Если монолитная система падает, все перестает работать, а при выходе из строя одного микросервиса, пользователь даже не замечает проблем с платформой.
Однако микросервисная архитектура требует дополнительных затрат на обслуживание, дополнительную инфраструктуру и дорогих специалистов. Как рассказал Павел Иванов, крупные компании из сферы ретейла или финансов, которым нужно быстро решить задачи бизнеса, нанимают сразу 5–7 команд, которые быстро делают множество отдельных фрагментов большой системы, чтобы запустить продукт разработки в нужные сроки.
Проблема микросервисного подхода заключается в том, что при нем собираются «вертикальные» независимые команды для запуска и развития каждого цифрового продукта, имеющие в составе бизнес и ИТ-экспертов. Это создает необходимость бизнес-экспертам иметь определенный уровень понимания в особенностях ИТ-внедрений, понимать методологии, уметь коммуницировать с ИТ-экспертами на одном языке, сообщил ИТ-архитектор практики «Технологическая трансформация» компании «Рексофт Консалтинг» Григорий Гашников.
По мнению инженера по автоматизации процесса разработки, тестирования и развёртывания ПО ICL Services Максима Павлюкевича, при всех минусах микросервисов (сложность в управлении и тестировании, высокие затраты на ИТ-инфраструктуру и управление проектами) для крупных компаний данная модель является практически безальтернативной на данный момент и является, фактически, промышленным стандартом.
Крупные ИТ-компании, вроде «Яндекса» и Ozon, в основном выбирают микросервисную архитектуру, знает сооснователь Pragmatic Tools Андрей Арефьев. По его словам, такой выбор обусловлен тем, что работающие на B2C-рынке компании заранее не знают какое количество мощностей нужно выделить под обработку данных и какое количество данных придется обрабатывать.
Некоторые ведущие банки используют микросервисную архитектуру в своих продуктах. Среди них - ВТБ, Сбербанк, ОТП Банк и МКБ, сообщил исполнительный директор ITFB Group Вадим Казанцев. По его словам, крупные кредитные организации видят в микросервисах пользу для интеграции с внешними сервисами, такими как дедупликация клиентских данных или распознавание речи.
Большинство крупных компаний по-прежнему делают выбор в пользу монолита, поскольку для внедрения микросервисов нужны большой опыт и глубокая экспертиза, говорит директор продукта «Нота Модус» (холдинг Т1) Владимир Вигура. Тем не менее ключевые игроки рынка стараются выбирать разную архитектуру, отталкиваясь от особенностей ИТ-ландшафта, частоты вносимых изменений в продукты и ограниченности ресурсов, добавил он.
По словам гендиректора ИТ-компании Mad Brains (разработчик мобильных приложений и сервисов) Олега Чебулаева, крупные компании в РФ выбирают PaaS-микросервисы, но с уже настроенными интеграционными инструментами. Идея в том, что все компоненты, которые нужны для создания приложения, упаковывают в отдельные виртуальные контейнеры. Их можно быстро вызывать, запускать и при необходимости добавлять вычислительные мощности, чтобы масштабировать проект, пояснил Чебулаев.
Также в России набирают популярность технологии, сочетающие в себе преимущества монолитной архитектуры и модульности. Среди них - Spring Modulith. Как пояснил TAdviser заместитель директора по работе с ключевыми клиентами компании «Синимекс» Павел Мышев, основная идея заключается в том, чтобы разрабатывать приложение как единый монолит, но с чётко определёнными модулями, которые могут быть разработаны, тестированы и развернуты независимо друг от друга.
Смешанная архитектура применяется в тех случаях, когда нужно разработать какой-либо отдельный кастомный сервис, который будет связан с другим монолитным приложением, сообщил директор компании Дмитрий Россихин RDN Group. Он добавил, что крупные клиенты RDN Group, как правило, выбирают монолит.
Хроника
2023
10% разработчиков ПО в мире пользуются ИИ-помощниками по программированию
По состоянию на 2023 год различными помощниками по программированию на базе искусственного интеллекта пользуются приблизительно 10% разработчиков программного обеспечения в глобальном масштабе. А примерно 63% организаций в мире тестируют или внедряют ИИ-инструменты по созданию кода. Об этом говорится в исследовании Gartner, результаты которого опубликованы 11 апреля 2024 года.
Аналитики подчеркивают, что ассистенты по написанию кода на основе ИИ предоставляют ряд преимуществ, которые выходят за рамки собственно генерации и завершения программных строк. Такие инструменты, в частности, повышают эффективность процесса разработки, стимулируя мозговые штурмы. В результате, улучшается квалификация программистов. Кроме того, растет удовлетворенность работой, что способствует сохранению сотрудников: это позволяет компаниям сокращать затраты, связанные с текучестью кадров. Вместе с тем повышается качество программного кода благодаря автоматизированному поиску ошибок и возможных проблемных алгоритмов: это способствует улучшению надежности и безопасности. ИИ-технологии, как отмечается, помогают ускорить вывод программных продуктов на коммерческий рынок и поднять удовлетворенность клиентов.
Вместе с тем в исследовании Gartner говорится о необходимости переосмысления показателей рентабельности инвестиций при внедрении ИИ-ассистентов по созданию кода. По мнению экспертов, традиционные подходы по оценке эффективности не способны охватить всю ценность помощников на базе ИИ. Среди ключевых преимуществ таких инструментов называются ускорение программирования, сокращение времени на разработку и экономия средств.
Традиционные подходы к оценке рентабельности инвестиций подталкивают руководителей к анализу показателей, ориентированных на снижение затрат. Это узкое направление не позволяет в полной мере оценить отдачу от внедрения помощников по написанию кода на основе ИИ, — говорит Филип Уолш (Philip Walsh), старший аналитик Gartner. |
Инструменты ИИ внедряются компаниями для поиска и исправление ошибок в коде (автоматическая проверка кода, предложения по изменениям в коде по текстовым комментариям и др.), а также для генерации черновых версий кода. По оценкам компании «Яков и Партнёры», ассистент написания кода на основе генеративного ИИ (ГенИИ) может увеличить продуктивность разработчиков и избавить их от 10–15% рутинных задач с помощью различных функций — от подсказки к одной строке кода до проведения оптимизации всего скрипта. Внедряются ИИ-модели, способные писать код на разных языках программирования. Такие инструменты способны генерировать код из обычного текстового задания, описывающего работу функции, класса или скрипта, которые собирается написать программист. Одновременно развиваются мультиагентные системы с совокупностью нескольких небольших ИИ-моделей. Эти агенты взаимодействуют друг с другом через естественно-языковые сообщения для выполнения различных задач. Например, один агент генерирует программный код на основе запросов пользователя, а второй выступает рецензентом кода, устраняя в нем неточности и повышая его эффективность.
Аналитики Gartner полагают, что в перспективе востребованность ИИ-помощников по программированию будет быстро расти. Согласно прогнозам, к 2028 году соответствующие инструменты будут применять примерно 75% корпоративных инженеров-программистов. Технологии ГенИИ возьмут на себя выполнение рутинных операций, а высвободившееся в результате время разработчики смогут использовать для решения более сложных задач.[1]
Как новые инструменты программирования меняют рынок разработки - McKinsey
Инструменты программирования нового поколения меняют возможности специалистов и инженеров на каждом этапе жизненного цикла разработки софта — от планирования и тестирования до развертывания и обслуживания. Об этом говорится в исследовании компании McKinsey, результаты которого были обнародованы 20 июля 2023 года.
Речь идет о платформах с низким кодом (low-code) и без кода (no-code), средствах генеративного искусственного интеллекта, концепции «инфраструктура как код», инструментах автоматической интеграции и пр. Применение таких решений позволяет упростить сложные задачи, а также помогает в выявлении ошибок и оптимизации приложений. Вместе с тем генеративный ИИ способен самостоятельно создавать отдельные фрагменты кода, снижая потребность в ручном труде.
По оценкам McKinsey, в 2022 году инвестиции на рынке новых инструментов программирования составили приблизительно $2 млрд. Быстро растет количество вакансий в соответствующей сфере: в течение 2022-го оно увеличилось на 29% по сравнению с предыдущим годом. При этом самый высокий рост приходится на должности разработчиков-программистов и инженеров по данным.
Отмечается, что софт нового поколения может использовать ИИ для автоматизации тестирования, что помогает сократить время, которое разработчики тратят на эту задачу. С другой стороны, отказ от традиционных проверок людьми может привести к увеличению количества ошибок в ПО. Еще одной проблемой при внедрении новых методов программирования является то, что комплексный мониторинг и контроль версий могут усложниться из-за нескоординированных изменений и обновлений, вносимых разными командами разработчиков. Внедрение новых инструментов может требовать много времени из-за технических сложностей, необходимости масштабной переподготовки разработчиков и инженеров, а также других организационных препятствий.[2]
Облачные и другие технологии влияют на составы ИТ-команд - IDC
Широкое распространение облачных вычислений и современных технологий разработки окажет существенное влияние на состав ИТ-команд в самых разных сферах глобального рынка. Об этом говорится в отчёте IDC, опубликованном 5 июня 2023 года.
Аналитики отмечают, что резкий рост востребованности сервисов, предоставляемых по модели «как услуга», а также конвергенция современных платформ разработки приводят к формированию «гибридных» должностей. В частности, многие из разработчиков исполняют не только свои непосредственные обязанности, но и отвечают за другие операционные функции. Это способствует комплексной трансформации ИТ-подразделений. Нечто подобное наблюдалось в эпоху зарождения коммерческого интернета и бурного развития веб-сайтов.
IDC выделяет ряд ключевых направлений в области ИТ-разработки. Это, в частности, DevOps — методология активного взаимодействия разработчиков со специалистами по информационно-технологическому обслуживанию и взаимная интеграция их рабочих процессов друг в друга для повышения качества продукта. Большое значение также имеет DataOps — концепция управления корпоративными данными в эпоху ИИ: она позволяет перенести опыт DevOps на управление данными и аналитику. Кроме того, растёт влияние DevSecOps — расширенная практика DevOps, включающая технологии информационной безопасности.
Называются также ITOps и MLOps. Первое из двух направлений охватывают множество различных областей ИТ, включая администрирование серверов и ПК, управление сетями, предоставление поддержки конечным пользователям и пр. MLOps — набор практик, нацеленных на надёжное и эффективное развёртывание и поддержание моделей машинного обучения. Среди других важных ролей аналитики IDC выделяют инжиниринг платформ (нацелен на самообслуживание бизнес-подразделений, партнёров и клиентов), обеспечение бесперебойной работы высоконагруженных сервисов (SRE, одна из форм реализации DevOps) и системное администрирование.
IDC прогнозирует, что в период с 2022-го по 2027 год востребованность специалистов в сферах DataOps и MLOps будет демонстрировать среднегодовой темп роста в сложных процентах (CAGR) на уровне 17,9% и 20,1% соответственно. Аналитики полагают, что также будет увеличиваться значимость ролей DevOps и DevSecOps, причём в случае DevSecOps в течение рассматриваемого периода ожидается рост на двузначные числа процентов. Данный сегмент ждёт бурное развитие на фоне ухудшения ситуации в сфере информационной безопасности: конкурентоспособность и эффективность работы организаций всё больше зависят от возможностей применяемого ПО. Внедрение средств защиты на раннем этапе в долгосрочной перспективе поможет сократить затраты и повысить качество продуктов и сервисов. Вместе с тем рост в сегменте DevOps будет не столь значительным, поскольку некоторые из функций таких специалистов возьмут на себя сотрудники подразделений по инжинирингу платформ.
В целом, отмечает IDC, к 2027 году на макроуровне произойдёт существенное изменение обязанностей ИТ-специалистов. При этом значимость ролей в областях ITOps и системного администрирования будет сокращаться с показателем CAGR на уровне -8,2% и -7,8% соответственно.
Результаты исследования говорят о том, что ИТ-специалисты, выполняющие традиционные операционные функции, всё чаще сталкиваются с переходом на должности, которые требуют наличия определённых технических навыков. Во многих случаях это означает некоторый опыт разработки программного обеспечения, — говорится в отчёте IDC.[3] |
См. также
- суперкомпьютеры
- Алгоритмизация
- Программирование
- Структурный псевдокод
- Методология программирования
- Управление ИТ-проектами
- открытое программное обеспечение
- доказательное Программирование
Литература
- Наур. Наука программирования. М., Мир, 1982.
- Турский М. Методология программирования. М., Мир, 1981.
- Дейкстра Э. Дисциплина программирования = A discipline of programming. — 1-е изд. — М.: Мир, 1978. — С. 275.
- Роберт В Себеста «Основные концепции языков программирования», 5-е издание : Пер. с англ. — М. : 2001. — 672 стр. с ил., «Вильямс»
- Иан Соммервилл «Инженерия программного обеспечения», 6-е издание : Пер. с англ. — М. : 2002. — 624 стр. с ил., «Вильямс»
- Каймин В. А. Методы разработки программ на языках высокого уровня. М., МИЭМ, 1985.
- Каймин В. А. Основы доказательного программирования. М., МИЭМ, 1987.
- Каймин В. А. Информатика. Учебник для студентов. М., ИНФРА-М, 1998—2009.
- Каймин В. А. Информатика. Учебник для школьников. М., Прогресс, 2007—2009.
Интернет-источники
- Технологии Доказательного Программирования
- Пролог и Логическое программирование
- Информатика в Школах и Вузах
- Олимпиады по информатике и программированию
- Информатика: ЕГЭ и экзамены на ЭВМ
- Программное обеспечение для Linux