Эффективная разработка ПО: этапы, принципы и инструменты для успеха

Разработчики игр и ПО

Кто пользуется программным обеспечением

В широком смысле с ПО работает каждый, у которого есть компьютер или другой гаджет. Программная начинка есть и в более мелкой технике: смарт-часах и браслетах, «умных» чайниках и пылесосах, наушниках. Задача софта в таких устройствах – выполнять заданные алгоритмы, например, управлять мотором или ставить музыку на паузу при нажатии.

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

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

Как создать программу самостоятельно

Большие команды работают над сложными проектами. Но и в одиночку можно создать сервис или программу, которая окажется полезной людям или просто интересной. Например, известную игру Minecraft создал разработчик-одиночка. А уж утилит для разработки, созданных одним человеком, и вовсе очень много.

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

Другие термины на «П»

ПингПарсерПроксиПрефабПаттернПентестПротоколПайплайнПриложениеПеременнаяПолиморфизмПрограммный кодПрограммированиеПоведенческие факторы
Все термины

Для чего используют ПО

Есть электроника, которая работает без программного обеспечения, но ее мало. Это обычно примитивные устройства вроде настольных ламп – там процессы происходят благодаря непрограммируемым электрическим схемам.

Чаще, чтобы «железо» выполняло свои функции, нужны программы. Программирование дает возможность работать с устройством более гибко и разнообразно, благодаря нему техника стала умнее и функциональнее. А еще программируемые контроллеры часто дешевле, чем непрограммируемые схемы – так что электроника стала еще и более доступной.

Программное обеспечение очень разнообразно. Его используют, чтобы:

  • управлять работой «железных» компонентов;
  • взаимодействовать с компьютером через интерфейс;
  • выходить в сеть и делиться информацией;
  • генерировать, хранить и пересылать данные;
  • выполнять прикладные задачи – писать, считать, рисовать что-то и так далее.

И это только часть примеров. Софт везде: без него компьютер стал бы просто конструкцией из металла и пластика, которая почти ничего не умеет.

Каким бывает ПО по назначению

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

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

Инструментальное. Так называют софт, который нужен для создания других программ. Это профессиональные инструменты айтишников. Компиляторы и интерпретаторы языков программирования, разные библиотеки и фреймворки, среды программирования и редакторы кода – все это инструментальное ПО. Часть таких программ есть на вашем компьютере, даже если вы не занимаетесь IT. Ведь даже некоторое прикладное ПО не запускается, если на компьютере не установлен инструментальный софт для его языка.

Прикладное. Это самая знакомая обычному пользователю группа – программы, которыми мы пользуемся в повседневной жизни, от «Блокнота» до 1С. Сюда же относятся приложения на телефон, разные плагины и надстройки для программ, браузеры и многое другое. Онлайн-сервисы – по сути тоже прикладное ПО. Это такие же программы, только установлены они не на компьютере пользователя, а на удаленных серверах.

Классификация программного обеспечения информационных технологий и систем

Программное обеспечение информационных технологий и систем можно условно разделить на три основные категории:

  • Системные программы. Они осуществляют управление устройствами компьютера, а также вычислительными процессами. Такие программы ещё занимаются поиском и диагностикой различных неисправностей. В свою очередь, программное обеспечение систем управления можно разделить на несколько групп:
    • Операционные системы. Они являются неким посредником между самим пользователем и ПК. С их помощью обеспечивается работа системных и пользовательских программ. ОС – это очень важная составляющая, так как она несёт защитную функцию для любой системы.
    • Утилиты. Это программы, которые обеспечивают решение разных вспомогательных процессов.
    • Драйверы. К этой группе относятся такие программы, с помощью которых ОС способна распознавать любые подключаемые внешние устройства.
  • Инструментальные системы. Сюда относятся различные языки программирования, которые необходимы для создания программ и приложений. Такие системы предоставляют самим разработчикам огромный набор инструментов для работы.
  • Прикладные программы. Это пользовательское программное обеспечение, не относящееся к двум предыдущим группам. С помощью таких программ пользователь способен решать различные задачи, например набирать текст, смотреть фильмы, создавать рисунок, играть в игры, слушать музыку и многое другое.

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

Независимо от того, будет это однозадачное либо многозадачное программное средство, функция тут одна – защита информации, проходящая в несколько этапов. Изначально проверяется совместимость ОС с программами, затем устанавливается сам продукт. После этого происходит проверка, правильно ли работает само ПО.

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

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

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

Ключевые особенности эффективной разработки

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

Но, чтобы гарантированно достичь поставленных целей, важно учитывать основные принципы качественной подготовки и реализации ПО:

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

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

коммуникация и сотрудничество — члены команды должны быть в состоянии общаться и работать вместе для достижения общих целей и четкого понимать свои роли и зоны ответственности;

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

контроль качества — имеет ключевое значение для успешной эксплуатации ПО, поэтому должен включаться в процесс разработки с самого начала;

постоянное обучение и развитие — члены команды должны непрерывно изучать новые инструмент и технологии, чтобы быть в курсе последних тенденций и актуальных отраслевых требований;

управление изменениями — важно выстроить такую систему, которая позволит быстро и продуктивно реагировать на любые корректировки ТЗ и принимать соответствующие меры;

тестирование и отладка — при проведении на всех этапах разработки позволяет оперативно обнаруживать и устранить ошибки и несоответствия требованиям.

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

Связь между различными моделями процесса разработки и рассмотренной схемой

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

Если рассматривать существующие подходы и классификации, то в них основное внимание уделяется этапам, а не их содержанию (речь идет о схемах, а не их детализации). В частности, в представленной на рисунке 14 водопадной модели четко выделены основные этапы процесса разработки, с каждым из которых связан свой комплекс работ и распределение ролей

Рисунок 14 – Водопадная (каскадная) модель разработки ПО

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

Рисунок 15 – Связь с водопадной моделью разработки ПО

Аналогичным образом можно интерпретировать и итерационную (возвратную, спиральную) модель (рисунок 16). Каждая очередная итерация заключается в повторении этапов разработки на каждом из которых выполняется расширение функциональности программного продукта.

Рисунок 16 – Итерационная (возвратная) модель разработки ПО

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

Рисунок 17 – Связь с итерационной моделью разработки ПО

В целом следует отметить, что аналогичным образом можно взгляд модельный взгляд можно накладывать на различные модификации двух основны (рассмотренных выше) процессов разработки

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

Программное обеспечение по типу доступа

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

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

Свободное. Такое ПО дает пользователю больше свободы. Он может запускать, изучать, улучшать и распространять программу – в отличие от проприетарного софта, который можно только запускать. У создателя свободного ПО остаются авторские права, его разработка выпускается под одной из специальных «свободных» лицензий. Исходный код в таких программах обычно открыт, его можно посмотреть и отредактировать. Пользователи могут дорабатывать свободный софт, выпускать свои «версии» и «сборки» – но на развитие основного продукта не влияют.

Открытое. Свободное и открытое ПО иногда путают. На самом деле эти понятия различаются, хоть и похожи. Открытым, или open-source, называют софт с открытым исходным кодом – любой может просмотреть этот код и внести в него свои правки. Хотя у свободного софта исходный код чаще всего тоже открыт, есть разница: классический open-source полностью общедоступен. Это значит, что даже владелец не имеет исключительных прав на такую программу, а помогать в ее разработке могут и сами пользователи.

Прикладное, описание

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

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

Выделяют несколько типов прикладного ПО:

1. Общего назначения. Их задача состоит в автоматизации пользовательских задач различного направления. Набор таких программ имеется на каждом компьютере. К ним относят:

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

2. Методо-ориентированные пакеты прикладных программ реализуют экономико-математические методы выполнения задач. Среди них:

  • математическая статистика;
  • математическое программирование;
  • сетевое планирование и управление;
  • теория массового обслуживания.

3. Проблемно-ориентированные используются для выполнения конкретной задачи в определенной области. К ним относят пакеты:

  • бухгалтерского учета;
  • банковские;
  • правовых справочных систем и финансового менеджмента.

4. Сервисные программные средства предназначены для удобной организации рабочего пространства пользователя и оказывают вспомогательное действие.

  • переводчики;
  • информационные менеджеры.

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

Вопросы

  1. Опишите известную Вам предметную область. Какие модели необходимо задать для ее описания перед переходом к разработке программного продукта.
  2. Приведите характеристики компьютерных архитектур, используемых для выполнения программного обеспечения в известной Вам предметной области.
  3. Как проявляется семантический разрыв при разработке программного обеспечения? Какие существуют подходы для его сокращения?
  4. Приведите примеры известных Вам предметных областей, в которых применяютс методы формализаци.
  5. Какие из известных Вам методов формализации реализованы в виде систем или языков программирования?
  6. Приведите примеры предметно-ориентированных или специализированных языков, ориентированных на какую-либо предметную область. Как в этих языках отражается формализация предметной области?
  7. Приведите примеры библиотек, ориентированных на разработку компьютерных игр. На каких языках программирования написаны эти библиотеки? Какие языки программирования они поддерживают?
  8. К каком виду методических приемов относятся паттерны проектирования?
  9. Отыщите инструментальные средства, обеспечивающие техническую поддержку методических приемов.
  10. Приведите примеры специализированных моделей, которые можно было бы сопоставить с различными этапами водпадного (каскадного) проектирования.
  11. Наряду с водопадной и итерационной моделями разработки существуют различные их модификации. Приведите примеры таких моделей и опишите их особенности.

Жизненный цикл программного обеспечения

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

Стадии создания и работы с продуктом можно условно разделить на три части.

Написание. На этом этапе программа еще не готова. Есть какая-то идея, которую нужно реализовать. Возможно, есть и планы, как это сделать. Планы и идеи – зона ответственности менеджеров или тех, кто придумал проект.

А вот реализацией занимаются специалисты. Разработчики пишут код, дизайнеры создают интерфейс, тестировщики ищут ошибки. Есть и люди, которые руководят процессом: тимлиды, проджект-менеджеры и продуктовые менеджеры.

Не всегда работает именно такая команда. Есть проекты, созданные 1-2 людьми – это обычно ПО, которое придумали и разработали «по зову души». Яркий пример – инди-игры.

В зависимости от размера проекта разработка может занимать как несколько недель, так и несколько лет. Например, высокобюджетные игры создают годами. А, скажем, небольшой плагин можно набросать за несколько дней.

Запуск и работа. Рано или поздно программа оказывается готова, и наступает следующий этап. Продукт нужно запустить и вывести на рынок. Тут тоже много работы: рассказать пользователям о продукте, развернуть его в нужной среде или дать инструкции для установки на локальный компьютер. А еще маркетинг, выбор площадки и многое другое.

После релиза – так называется выпуск программы – она остается работать. И тут обязанности создателей не заканчиваются

ПО, которое только что выпустили, часто «сырое», недоработанное, в нем есть ошибки – чем-то неудобно пользоваться, какой-то важной функции нет. Разработчики доделывают программу: если она работает не сервере, дописывают ее и разворачивают снова, а если это ПО для локальной установки – выпускают патчи или новые версии

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

Но поддержка – это не только выпуск обновлений. Это еще и работа с клиентами, ответы на их вопросы: кто-то спросил, как исправить ошибку, у кого-то проблемы с новой функцией. Кстати, так монетизируют некоторые open-source проекты: бесплатное и открытое ПО, но платная техподдержка.

Другие классификации программного обеспечения

Классификаций программ очень много. Вот только несколько видов.

По режиму использования. Бывают персональные программы для работы в одиночку, коллективные – для работы в команде, и сетевые, где доступ есть у каждого, кого пригласят через сеть.

По стабильности. Стабильные программы – те, которые редко сбоят. Они предсказуемы и удобны. Еще есть ПО средней стабильности и нестабильное – оно чаще «падает» и ведет себя некорректно. Обычно это софт, который вышел недавно.

По масштабу. Бывает малое, среднее и большое ПО. Масштаб измеряется в том, сколько ресурсов потребляет программа и сколько функций реализует. «Блокнот» – малое ПО, ERP-система – большое.

По языку и среде. Программы различаются еще и тем, на каком языке программирования они написаны и для какой среды предназначены. Например, приложение для Android не запустится в Windows. А программа на языке C++ будет отличаться от программы на Python и логикой, и быстродействием.

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

Факторы, определяющие процесс разработки программного обеспечения

Среди множества факторов, от которых зависит процесс разработки программного обеспечения, можно выделить:

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

Разнообразие этих факторов определяет множество вариантов, связанных с организацией процесса разработки. Определим его основные составляющие.

Цель процесса разработки – создание программы, обеспечивающей решение поставленной задачи некоторым исполнителем и удовлетворяющей при этом требуемым критериям качества. Решаемая задача описывается совокупностью формальных и эмпирических (неформальных) моделей, определяющих как протекающие в программе процессы, так и используемые при этом данные.

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

Специализированная модель – модель, предназначенная для описания определенных параметров рассматриваемого явления. Используется для акцентирования внимания на частных характеристиках.

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

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

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

Рисунок 1 – Процесс разработки программного обеспечения как отображение модели задачи на модель исполнителя

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

Рисунок 2 – Влияние сложности задачи на процесс преобразования исходных моделей в модели исполнителя

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

Рисунок 3 – Отображение объема работ и времени их выполнения в ходе разработки ПО

Этапы процесса разработки ПО

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

    1. Планирование

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

    1. Анализ (подготовка)

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

    1. Проектирование

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

требования — важно убедиться, что запланированный функционал соответствуют реальным потребностям пользователей;

архитектура — как настроить совместную работу всех компонентов системы, как обеспечить безопасность и масштабируемость продукта, какие технологии и инструменты использовать при программировании и тестировании;

UI/UX дизайн — как пользователи станут взаимодействовать с программным продуктом и какие элементы управления будут использоваться — учитываются принципы дизайна, такие как согласованность, простота и удобство;

функциональность — какие возможности нужно реализованы в софте и как они будут взаимодействовать друг с другом — разработчики учитывают требования заказчика и пользователей и описывают функции с помощью диаграмм UML;

документация, которая описывает архитектуру, дизайн, функциональность и характеристики продукта — в будущем она может быть использована для поддержки, обслуживания и обучения новых пользователей;

прототипирование — проверка концепции и идеи перед началом реализации продукта, в частности, создание простых моделей пользовательского интерфейса, которые помогут проверить логику и взаимодействие между элементами софта;

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

Грамотное проектирование позволяет создать продукт, который соответствует требованиям, имеет возможность масштабирования и обеспечивает высокую производительность и надежность.

    1. Создание (программирование)

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

    1. Тестирование

На этом этапе проводится проверка программного обеспечения на функциональность, удобство использования, производительность и безопасность. Команда проекта должна провести модульное, интеграционное и системное тестирование, чтобы убедиться, что готовый софт соответствует установленным требованиям и пожеланиям заказчика. 

    1. Внедрение

Подразумевает развертывание готового цифрового продукта в производственной среде

Здесь важно четко следовать некоторым правилам, таким как использование контроля версий, создание резервных копий и выполнение плана отката. 

    1. Сопровождение

Эта фаза включает поддержку реализованного решения, чтобы после развертывания и начал использования оно продолжало соответствовать требованиям заказчика и пользователей. Команда проекта регулярно выполняет такие действия по сопровождению, как обновление софта, исправление ошибок и настройку безопасности.

План обеспечения качества ПО

SQAP (Software Quality Assurance Plan), он же план обеспечения качества программного обеспечения, включает в себя процедуры, методы и инструменты, которые используются для того, чтобы убедиться, что продукт или услуга соответствуют требованиям, определенным в SRS (Software Requirements Specification, спецификация требований к ПО).

План определяет обязанности QA команды и перечисляет области, которые необходимо протестировать. Он также определяет артефакты SQA.

Документ плана SQA состоит из следующих разделов:

  • Цели.
  • Ссылки.
  • Управление конфигурацией программного обеспечения.
  • Сообщение о проблемах и корректирующие действия.
  • Инструменты, технологии и методологии.
  • Контроль кода.
  • Документы и артефакты: Сбор, ведение и хранение.
  • Методология тестирования.

Инструментальное

Инструментальное ПО (системы программирования) предназначено для использования разработчиками в процессе проектирования и создания программ. 

Элементами системы программирования являются:

  1. Текстовые редакторы помогают создавать, редактировать и объединять тексты. 
  2. Транслятор преобразовывает алгоритмический язык программы в машинный (двоичные коды), создавая при этом объектный модуль. Интерпретатор осуществляет перевод построчно, не создавая объектный модуль. 
  3. Средства отладки (отладчик) обеспечивают пошаговое выполнение программ с предоставлением данных о результатах исполнения. 
  4. Библиотеки подпрограмм.

Системное, что включает

Системное ПО (System Software) — группы программ и их систем, которые обеспечивают работу компьютера. 

СПО предназначается для:

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

Продукты данного вида ПО являются неотъемлемой частью компьютера и рассчитаны на опытных пользователей — оператора, администратора сети или системного программиста. 

СПО состоит из системных программ управляющих и обрабатывающих.

Управляющие системные программы обеспечивают корректную работу всех механизмов системы и выполняют функции:

  1. Руководство вычислительными комплексами.
  2. Взаимодействие с внутренними данными операционной системы.

В зависимости от местонахождения управляющие программные средства делятся на:

  • резидентные составляют ядро ОС и расположены в основной памяти;
  • транзитные загружаются в память компьютера только перед исполнением.

Компании-разработчики предоставляют управляющие системные программы в виде драйверов специальных устройств и инсталляционных пакетов ОС.

Обрабатывающие системные программы представляют собой дистрибутивные пакеты, в состав которых входит ПО (приложения, программы инсталляции). 

По другой классификации в структуру ПО включают:

1. Базовое – минимальный комплекс программ, который обеспечивает работу компьютера. К ним относят:

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

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

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

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

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

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

Для обозначения сервисных программ часто используют понятие «утилиты».

Заключение

SQA – это комплексная деятельность, которая применяется на протяжении всего жизненного цикла ПО.

Обеспечение качества программного обеспечения имеет решающее значение для успеха вашего программного продукта на рынке и соответствия ожиданиям клиентов.

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

Надеемся, благодаря этой статье, вы получили четкое представление о концепции обеспечения качества ПО!

Перевод статьи «What is Software Quality Assurance (SQA): A Guide for Beginners».

Rate article