Using SSL for connection to database server¶
It is recommended to use SSL when connecting to remote database server. There
are several configuration options involved in the SSL setup:
- Defines whether to use SSL at all. If you enable only this, the connection
will be encrypted, but there is not authentication of the connection — you
can not verify that you are talking to the right server. - and
- This is used for authentication of client to the server.
- and
- The certificate authorities you trust for server certificates.
This is used to ensure that you are talking to a trusted server. - This configuration disables server certificate verification. Use with
caution.
When the database server is using a local connection or private network and SSL can not be configured
you can use to explicitly list the hostnames that are considered secure.
Панель управления
Интерфейс приложения разделен на логические блоки, объединённые по общему принципу.
Слева находится панель для быстрого перехода между базами и таблицами. Здесь же можно создать новый экземпляр того или иного формата.
Верхнее меню содержит пункты для перехода к настройкам таблиц, а также к дополнительному функционалу:
- базы данных. Практически дублирует меню слева, то есть содержит перечень имеющихся баз;
- SQL. Очень интересный пункт для тех, кто знает, как правильно составлять запросы, и активно пользуется ими. Можно вручную выполнить выборку, удаление, сортировку и прочие функции SQL;
- состояние. Текущее положение в базах. Их общий объём, трафик, количество принятых и отправленных данных;
- учётные записи пользователей. Все сохранённые данные о пользователях, с указанием их привилегий, адресах и паролях;
- экспорт и импорт. Очень удобные функции для осуществления обмена между базой и другим программным обеспечением. Например, для обновления сайта вручную, если возникла такая необходимость. К тому же это очень удобный инструмент для создания резервной копии важных данных, если автоматически такая возможность отсутствует;
- настройки. Множество различных параметров, так или иначе связанных с работой phpMyAdmin, баз, запросов и многого другого;
- репликация. Связь с другими серверами для одновременного изменения на репликах — то есть повторных экземплярах текущего сервера баз данных;
- переменные. Как понятно из названия, раздел содержит значения для внутренних нужд сервера и системы. Без надобности ими, как правило, не пользуются;
- кодировки. Показывает все имеющиеся в системе варианты отображения шрифтов;
- сведения об используемых в phpMyAdmin видах хранения данных;
- расширения. Перечень дополнений phpMyAdmin, увеличивающих функционал системы.
Общие настройки прямо по центру позволяют сменить пароль или установить используемую кодировку текста.
Параметры отображения помогут изменить язык, тему, размер шрифта и прочие настройки внешнего вида системы.
Справа находится информационная панель со сведениями о сервере баз данных и веб-сервере, а также несколько ссылок для справки по phpMyAdmin.
К сожалению, приложение часто используют злоумышленники для получения несанкционированного доступа, поэтому нужно знать, как оградиться от этого.
Как сделать экспорт в phpMyAdmin
Вход в phpMyAdmin обычно делается для выполнения определенной операции. Например, для экспорта или импорта базы, или баз данных с сервера. Как это сделать? Для этого есть специальные пункты меню в верхней панели phpMyAdmin. Операция зависит от места выполнения нажатия кнопок, например, если нажать при открытой базе данных – будет предложено сделать операцию только для выбранной базы, а если нажать на главной – будет предложено сделать операцию для всех или выбранных баз данных. Тоже самое справедливо и для таблиц. Краткое обобщение:
- экспорт всех БД – нажать экспорт на главной странице;
- экспорт конкретной БД – открыть нужную БД, подождать пока отобразятся ее таблицы и нажать экспорт;
- экспорт отдельной таблицы – открыть эту таблицу и нажать экспорт.
После нажатия на экспорт, будет выведено окно, в котором можно указать нужные параметры экспорта phpMyAdmin. Обычно это: «Метод экспорта», «Формат», «Вывод». Можно просто нажать кнопку внизу этой страницы – будет сгенерирован и загружен файл, который и является файлом экспорта.
Но иногда может понадобится не использовать параметры экспорта по умолчанию, а настроить их для себя. Для этого нужно выбрать метод экспорта обычный, взамен быстрого. Будут показаны настройки, их содержимое зависит от того, что экспортируется. Например, можно:
- выбрать сущности экспорта (БД, таблицы и т.д.) – тогда будут экспортированы только выбранные элементы;
- в подразделе «Вывод» указать кодировку и компрессию (zip, gzip) – файл экспорта будет сжат и помещен в архив;
- в подразделе «Параметры формата» выбрать как экспортировать – только структуру, только данные или структуру и данные;
- в подразделе «Параметры создания объектов» указать необходимые выражения;
- в подразделе «Параметры создания данных» указать различные настройки, которые могут быть полезны и т.д.
После указания настроек останется нажать кнопку «Вперед» или аналогичную внизу страницы – будет загружен файл. Этот файл следует сохранить и в будущем его можно использовать для разных операций, например, для восстановления БД. Также данный файл можно отредактировать вручную, если Вы разбираетесь в SQL-синтаксисе. Ведь полученный файл содержит обычные запросы к серверу БД – таким образом, данные воссоздаются в том виде, в каком они прописаны в файле.
Трехуровневая и n-уровневая системы
Так выглядит трехуровневая архитектура
Такие архитектуры обладают высокой масштабируемостью как по горизонтали, так и по вертикали. Реализация n-уровневой системы, как правило, обходится дороже, но обеспечивает высокую производительность. Поэтому она обычно применяется в крупных и комплексных программных решениях.
Этот подход можно сочетать с современной сервис-ориентированной архитектурой, чтобы создавать сложнейшие модели. Поскольку реализация может оказаться дорогостоящей с точки зрения времени и ресурсов, рекомендуется использовать его для сложных ПО, требующих производительности и масштабируемости.
Сервис-ориентированная архитектура (SOA)
Эта архитектурная модель состоит из компонентов и приложений, которые связываются друг с другом с помощью четко определенных сервисов.
Она состоит из 5 элементов:
- сервисы (Services);
- сервисная шина (Service Bus);
- сервисный репозиторий (Service Repository );
- безопасность SOA (SOA Security);
- управление SOA (SOA Governance).
Клиент отправляет запрос с использованием стандартного протокола и формата данных по сети. Этот запрос обрабатывается ESB (enterprise service bus — сервисная шина предприятия), которая считается сердцем сервис-ориентированной архитектуры и отвечает за оркестровку и маршрутизацию. С помощью сервисного репозитория ESB направляет запрос в специальный сервис, который может взаимодействовать с другими сервисами и базами данных, чтобы составить полезную нагрузку (данные) ответа.
Полный вызов ответа на запрос согласуется с правилами управления и безопасности SOA для выполнения безопасной и корректной транзакции.
Как правило, сервисы делятся на два вида.
- Атомарные сервисы (Atomic services) предоставляют функциональности, которые не подлежат дальнейшей декомпозиции.
- Композиционные сервисы (Composite services) сочетают в себе несколько атомарных сервисов, чтобы предоставлять сложную составную функциональность.
Организационные процессы жизненного цикла программного продукта
Существует и проводится ряд мер, направленных на повышение организации и качества разработки программного обеспечения. Они называются организационными процессами жизненного цикла. Обычно их выделяют четыре вида, и мы рассмотрим каждый.
Организационные процессы жизненного цикла программного обеспечения включают:
- Процесс управления, который направлен на грамотное и эффективное управлением персоналом компании-исполнителя. За это отвечают люди, находящиеся на руководящих постах, а также специальный отдел в фирме.
- Процесс создания инфраструктуры. Разработка программных продуктов требует наличия огромного количества инфраструктурных компонентов: компьютеров, серверов, специальных программ для разработки и т.д. Кроме того, готовый продукт требует наличия определённых единиц для его работы. Данный процесс необходим для подготовки оборудования и ПО для разработчиков, а также для успешного функционирования готового ПП у заказчика.
- Процесс усовершенствования. Направлен на усовершенствование всех остальных процессов жизненного цикла программного обеспечения. Усовершенствование может повысить производительность разработчиков и добиться большей выгоды от выполнения заказа на производство программы.
- Процесс обучения. Постоянное обучение сотрудников и повышение их квалификации – это залог производства качественных продуктов и программ. Процесс обучения направлен на организацию мероприятий для повышения уровня и получения новых навыков сотрудниками компании-разработчика.
Шаг 6 — Тестирование подключения к базе данных для PHP (необязательно)
Если вы хотите проверить, может ли PHP подключаться к MySQL и выполнять запросы для базы данных, вы можете создать тестовую таблицу с шаблонными данными и запрашивать ее содержимое из скрипта PHP. Прежде чем сделать это, нам нужно создать тестовую базу данных и нового пользователя MySQL с правильной настройкой для доступа к ней.
На момент написания этого руководства родная библиотека MySQL PHP не поддерживает , метод аутентификации по умолчанию для MySQL 8. Мы должны создать нового пользователя с помощью метода аутентификации для подключения к базе данных MySQL из PHP.
Мы создадим базу данных с именем example_database и пользователя с именем example_user, но вы можете использовать и другие имена.
Вначале необходимо подключиться к консоли MySQL с помощью учетной записи root:
Чтобы создать новую базу данных, запустите следующую команду в консоли MySQL:
Теперь вы можете создать нового пользователя и предоставить ему полный набор прав для только что созданной вами базы данных.
Следующая команда создает нового пользователя с именем , используя в качестве метода аутентификации по умолчанию. Следующая команда определяет пароль этого пользователя как , но вы можете заменить его на безопасный пароль по вашему выбору.
Теперь нам нужно предоставить этому пользователю разрешение для базы данных :
В результате пользователь example_user получит полный набор привилегий для базы данных example_database, но не будет обладать возможностью создания или изменения других баз данных на сервере.
Теперь закройте оболочку MySQL:
Вы можете проверить наличие у нового пользователя необходимых разрешений, выполнив повторный вход в консоль MySQL, на этот раз используя учетные данные вашего собственного пользователя:
Обратите внимание на флаг в этой команде, который будет запрашивать пароль, который вы задаете при создании пользователя example_user. После входа в консоль MySQL убедитесь, что у вас есть доступ к базе данных example_database:. Результат будет выглядеть следующим образом:
Результат будет выглядеть следующим образом:
Далее мы создадим тестовую таблицу с именем todo_list. Из консоли MySQL запустите следующее выражение:
Теперь добавьте несколько строк содержимого в тестовую таблицу. Возможно, вам потребуется несколько раз повторить следующую команду, используя разные значения:
Чтобы подтвердить, что данные были успешно сохранены в таблицу, запустите следующую команду:
Вывод должен выглядеть так:
Убедившись в том, что у вас есть надлежащие данные в тестовой таблице, вы можете закрыть консоль MySQL:
Теперь вы можете создать скрипт PHP, который будет подключаться к MySQL и запрашивать ваше содержимое. Создайте новый файл PHP в пользовательской корневой веб-директории в предпочитаемом вами редакторе. Мы будем использовать :
Следующий скрипт PHP подключается к базе данных MySQL и запросам по содержимому таблицы todo_list, выводя результаты в список. Если существует проблема подключения к базе данных, будет выдана ошибка. Скопируйте это содержимое в скрипт :
/var/www/your_domain/todo_list.php
Сохраните и закройте файл после завершения редактирования.
Теперь вы можете получить доступ к этой странице в веб-браузере, посетив доменное имя или публичный IP-адрес, настроенный для вашего веб-сайта, добавив в конце:
Вы должны увидеть примерно следующую страницу, отображающую содержимое, которое вы добавили в тестовую таблицу:
Это означает, что ваша среда PHP готова к подключению и взаимодействию с вашим сервером MySQL.
Linux distributions¶
phpMyAdmin is included in most Linux distributions. It is recommended to use
distribution packages when possible — they usually provide integration to your
distribution and you will automatically get security updates from your distribution.
Debian and Ubuntu
Most Debian and Ubuntu versions include a phpMyAdmin package, but be aware that
the configuration file is maintained in and may differ in
some ways from the official phpMyAdmin documentation. Specifically, it does:
- Configuration of a web server (works for Apache and lighttpd).
- Creating of using dbconfig-common.
- Securing setup script, see .
More specific details about installing Debian or Ubuntu packages are available
in our wiki.
See also
More information can be found in README.Debian
(it is installed as with the package).
Gentoo
Gentoo ships the phpMyAdmin package, both in a near-stock configuration as well
as in a configuration. Use to
install.
Fedora
Fedora ships the phpMyAdmin package, but be aware that the configuration file
is maintained in and may differ in some ways from the
official phpMyAdmin documentation.
Возможности phpMyAdmin
- интуитивно понятный веб-интерфейс
- поддержка большинства функций MySQL:
- — просмотр и удаление баз данных, таблиц, вьюшек, полей и индексов
- — создание, копирование, удаление, переименование и изменение баз данных, таблиц, полей и индексов
- — управление сервером, базами данных и таблицами, с советами по настройке сервера
- — выполнение, редакция и сохранение любого SQL-выражения, включая пакетные запросы
- — управление пользователями MySQL и их привилегиями
- — работа с хранимыми процедурами и триггерами
- поддержка импорта данных из CSV и SQL
- поддержка экспорта в различные форматы CSV, SQL, XML, PDF, ISO/IEC 26300 — OpenDocument текст и таблицы, Word, Excel, LATEX и другие
- администрирование нескольких серверов
- генерирование наглядных схем баз данных в виде PDF
- создание комплексных запросов с помощью функции Запрос по шаблону
- глобальный или частичный поиск в базе данных
- трансформация данных в любой формат, используя набор предназначенных функций вроде отображения BLOB-данных в виде картинки или ссылки для скачивания
- это не все, лишь часть возможностей phpMyAdmin которых, впрочем, достаточно чтобы объяснить его международную популярнсть.
Похвальные грамоты
В то время как вышеупомянутые 10 твиков phpMyAdmin мои любимые, есть несколько других, которые могут быть полезны для других. Так же, как вышеупомянутые настройки, добавьте каждую строку в конце . Сохраните, выйдите и перезагрузите Apache, чтобы настройки вступили в силу. Возможно, вам придется выйти и заново войти в phpMyAdmin.
Если вы хотите отменить любой из вышеперечисленных изменений, просто удалите строку или закомментируйте ее, добавив перед ней.
Надеюсь, эти твики phpMyAdmin пригодятся вам. Вы можете найти больше настроек в phpMyAdmin Wiki. Наслаждайтесь!
Источник записи: https://www.smarthomebeginner.com
Upgrading from an older version¶
Warning
Never extract the new version over an existing installation of
phpMyAdmin, always first remove the old files keeping just the
configuration.
This way, you will not leave any old or outdated files in the directory,
which can have severe security implications or can cause various breakages.
Simply copy from your previous installation into
the newly unpacked one. Configuration files from old versions may
require some tweaking as some options have been changed or removed.
For compatibility with PHP 5.3 and later, remove a
statement that you might find near
the end of your configuration file.
You should not copy over
because the default configuration file is version-
specific.
The complete upgrade can be performed in a few simple steps:
- Download the latest phpMyAdmin version from <https://www.phpmyadmin.net/downloads/>.
- Rename existing phpMyAdmin folder (for example to ).
- Unpack freshly downloaded phpMyAdmin to the desired location (for example ).
- Copy from old location () to the new one ().
- Test that everything works properly.
- Remove backup of a previous version ().
If you have upgraded your MySQL server from a version previous to 4.1.2 to
version 5.x or newer and if you use the phpMyAdmin configuration storage, you
should run the script found in
.
If you have upgraded your phpMyAdmin to 4.3.0 or newer from 2.5.0 or
newer (<= 4.2.x) and if you use the phpMyAdmin configuration storage, you
should run the script found in
.
Команда разработчиков
Над проектом в разное время трудились 669 человек.
Инициатором является немецкий разработчик Тобиас Ратшиллер (Tobias Ratschiller) и основывается так же как и phpPgAdmin на аналогичном приложении MySQL — Webadmin, возникшем в 1997 году.
С 2001 года проект phpMyAdmin у основателя Тобиаса Ратшиллера перенял Марк Делисл (Marc Delisle), начав вместе с Оливером Мюллером (Olivier Müller) и Лоик Шапо (Loïc Chapeaux) новую эру phpMyAdmin.
На сегодняшний день Марк Делисл является администратором проекта и имеет самый большой вклад в phpMyAdmin в виде написанного кода. Основными помощниками проекта являются Михал Чихарж (Michal Čihař), Себастьян Мендель (Sebastian Mendel) и Герман ван Ринк (Herman van Rink).
Модели жизненного цикла
Модель жизненного цикла программного обеспечения характеризует подход команды к разработке ПП. Она отражает акценты и приоритеты во всём процессе изготовления программы, а самое главное, порядок следования этапов создания программных продуктов.
На сегодняшний день существует множество моделей жизненного цикла разработки программного продукта. Мы кратко рассмотрим основные из них и выделим их ключевые особенности.
Каскадная (водопадная) модель
Каскадная (водопадная) модель строго следует последовательности всех этапов разработки ПО и не предполагает возвращения с текущего этапа на предыдущий. Сейчас данная модель практически не используется, разве что в очень малых проектах.
V-образная модель разработки
По рисунку можно проследить, что в V-образной модели имеется возможность вернуться на некоторые этапы разработки и уточнить нужные требования.
Модель прототипирования
Прототипирование предполагает создание на протяжении всего процесса разработки несколько рабочих версий программы (прототипов) с неполным функционалом. В первом прототипе может быть реализован исключительно один интерфейс приложения.
Модель быстрой разработки (RAD-модель)
RAD-модель (rapid application development — быстрая разработка приложений) ориентирована в первую очередь на быстроту и удобство программирования. Команда делает акцент именно на разработке, а большая часть работы по составлению требований и описанию пользователей возлагается на заказчика.
Итерационная модель
В итерационной модели всегда имеется возможность вернуться на любой предыдущий этап разработки ПО для уточнений требований и исправления компонентов. Здесь главное вовремя остановиться, ведь итерации не могут продолжаться бесконечно.
Спиральная модель
В спиральной модели все этапы разработки последовательно повторяются по кругу до тех пор, пока текущая версия программы не станет полностью соответствовать требованиям. Здесь также нужно иметь предел и вовремя остановиться.
Гибкие методологии
Гибкие методологии (Agile) олицетворяют современные подходы к разработке ПО. Они используются обычно в небольших командах разработчиков. Среди них такие модели жизненного цикла программного продукта, как Scrum, DSDM, XP, FDD и другие. Вы можете посмотреть видео про одну из гибких методологий: экстремальное программирование.
Поделиться в соц. сетях:
Шаг 2 — Установка MySQL
Мы запустили веб-сервер, и теперь нам нужно установить СУБД, которая может хранить данные вашего сайта и управлять ими. MySQL — популярная СУБД, используемая в средах PHP.
Используйте для получения и установки этого программного обеспечения:
Для подтверждения установки введите , а затем нажмите .
После завершения установки рекомендуется запустить скрипт безопасности, предустановленный в MySQL. Этот скрипт будет удалять некоторые небезопасные настройки по умолчанию и блокировать доступ к системе управления базы данных. Для запуска интерактивного скрипта введите следующую команду:
Скрипт предложит настроить плагин .
Примечание. Эту функцию следует активировать при наличии разумных оснований. Если она активирована, MySQL будет отклонять пароли, не соответствующие определенным критериям, и выводить сообщение об ошибке. Оставить проверку отключенной достаточно безопасно, но для входа в базу данных всегда нужно использовать надежные уникальные пароли.
Выберите для активации или любой другой вариант, чтобы продолжить без активации этой функции.
Если вы ответите утвердительно, вам будет предложено выбрать уровень проверки пароля. Если вы укажете самый высокий уровень , система будет выводить сообщения об ошибке при попытке установки пароля, который не будет содержать цифры, буквы в верхнем и нижнем регистре и специальные символы или будет содержать распространенные словарные слова.
Вне зависимости от того, будете ли вы использовать плагин , ваш сервер предложит вам выбрать и подтвердить пароль для пользователя root в MySQL. Не нужно путать его с системным пользователем root. Пользователь root базы данных — это пользователь с правами администратора, который имеет все права для работы с системой управления базы данных. Хотя в MySQL метод аутентификации пользователя root по умолчанию не требует использования пароля даже при его наличии, задайте надежный пароль для обеспечения дополнительной безопасности. Чуть дальше мы расскажем об этом подробнее.
Если вы включили использование паролей, вы увидите уровень надежности введенного пароля root, и ваш сервер запросит у вас подтверждение дальнейшего использования этого пароля. Если вас устраивает текущий пароль, введите в диалоге для подтверждения:
Для всех остальных вопросов нужно выбирать и нажимать в каждом диалоге. Выбрав эти ответы, вы удалите ряд анонимных пользователей и тестовую базу данных, отключите возможность удаленного входа пользователя root и загрузите новые правила, чтобы внесенные изменения немедленно активировались в MySQL.
Завершив настройку, проверьте возможность входа в консоль MySQL, набрав следующую команду:
В результате будет установлено подключение к серверу MySQL с помощью пользователя root базы данных с правами администратора, который логически выводится в результате использования при запуске данной команды. Результат должен выглядеть следующим образом:
Для выхода из консоли MySQL введите следующую команду:
Обратите внимание, что для подключения под именем пользователя root не требуется вводить пароль, хотя вы и задали его при запуске скрипта. Это происходит, поскольку используемый по умолчанию метод аутентификации для пользователя MySQL с правами администратора — , а не
Хотя это может выглядеть как возможный источник проблем с безопасностью, на самом деле эти действия делают сервер базы данных более защищенным, поскольку единственные пользователи, которые могут выполнять вход в систему с правами доступа root для MySQL — это пользователи системы с привилегиями sudo, подключенные с использованием консоли или через приложение, использующее аналогичные привилегии. На практике это означает, что вы не сможете использовать пользователя root базы данных с правами администратора для подключения из вашего приложения PHP. Настройка пароля учетной записи root MySQL работает как гарантия, если метод аутентификации по умолчанию меняется с на .
Для дополнительной безопасности рекомендуется иметь специальные учетные записи пользователей с менее обширными привилегиями, особенно если вы планируете использовать несколько баз данных на сервере.
Примечание. На момент написания этого руководства родная библиотека MySQL PHP не поддерживает , метод аутентификации MySQL 8 по умолчанию. Поэтому при создании пользователей базы данных для приложений PHP на MySQL 8 вам нужно убедиться, что вместо этого пароля они настроены на использование . Мы расскажем об этом в .
Теперь ваш сервер MySQL установлен и защищен. Далее мы выполним установку PHP, последнего компонента стека LEMP.
Как я делал систему управления VDS-сервером
Следующий качественный скачок случился, когда я отошёл от веб-разработки и углубился в бэкенд. Мне пришлось проектировать и разрабатывать сложную систему управления VDS-сервером. Там были API, плагины, менеджер зависимостей для плагинов, асинхронный код, много режимов работы, связь с операционной системой и разным софтом. Основная задача проекта — чтобы у системы было ядро и самостоятельные плагины, которые бы умели работать вместе.
В сложной системе нельзя передавать все данные через один контроллер, поэтому каждый плагин отдельно реализовывал веб- и API-интерфейсы, доступ к данным и бизнес-логику, вынесенную в пакеты для переиспользования.
Получилось так: HTML ⟷ JavaScript (модели, общение с API) ⟷ API ⟷ переиспользуемые пакеты ⟷ бизнес-логика и доступ к данным. Всё это не было похоже на MVC.
Этапы создания программных продуктов
Приведём все основные этапы создания программного продукта. Всего их пять. Они так или иначе характерны для любой методологии разработки ПО: будь то классическая водопадная, либо современные гибкие методологии (Agile software development) – во всех из них разработчики проходят через следующие этапы создания программного обеспечения:
Составление требований заказчика. На данном эта производится работа с заказчиком и документирование его видения и его требований к программе. В подавляющем большинстве случаев данный этап проходит трудно
Поскольку, слабо разбираясь в особенностях разработки ПО, заказчик плохо представляет себе, что нужно знать разработчикам и (самое главное!), что им нужно сообщить о продукте.Выработка требований чрезвычайно важное мероприятие. Убедитесь, что все требования полностью понятны вам и вашей команде.
Проектирование программного продукта
Разобравшись в предметной области, разработчики приступают к проектированию. На данном этапе создания программного продукта разрабатывается архитектура компонентов ПО, выбираются нужные шаблоны проектирования (паттерны) и составляется схема информационной базы данных системы.
Разработка. Когда требования сформулированы и архитектура готова – команда начинает разработку ПП. На этапе разработки также выполняется документирование системы.
Тестирование. После разработки необходимо произвести тестирование системы в целом, тем самым подтвердить её соответствие требованиям заказчика.
Здесь стоит сказать, что модульные тесты (unit-тесты; т.е. тесты отдельных частей программы) обычно выполняются на этапе разработки программистом, разрабатывавшем конкретный модуль.
Когда все тесты пройдены, программное обеспечение готово к выпуску.
Сопровождение ПП. После выпуска фирма-разработчик отвечает за поддержку программного продукта и выпуска новых версий, которые исправляют ошибки и привносят новый функционал. Также необходимо осуществлять поддержку пользователей разработанного ПО.
Примечание 1: Следует как можно тщательнее подходить к формированию предварительных требований и проектированию, поскольку стоимость исправления ошибок после выпуска ПО, допущенных на этих этапах, обычно в 2-10 (!) раз выше, чем стоимость исправления ошибок сделанных на этапе программирования (Стив Макконнелл “Совершенный код”).
Примечание 2: Очень часто случается, что заказчик уже после составления требований к ПО (т.е. во время проектирования и разработки) объявляется и радостно сообщает исполнителю свои новые идеи или рассказывает о какой-нибудь “классной” функции, которую нужно добавить в приложение… Бывают случаи, когда это труднореализуемо и сопряжено с пересмотром архитектуры. В данной ситуации можно посоветовать сказать разработчику примерно следующее: “Отлично придумано! Мне нравится! Тогда я пересмотрю свою смету и сроки работы и потом сообщу Вам!”. Практически всегда это срабатывает и гасит пыл заказчика, и он отказывается от новых идей и изменений в проекте.