Привет, Хабр! Часто приходится разрабатывать информационные системы разной сложности и в один момент решил написать порядок действий (инструкцию) для данного действа . Я прекрасно понимаю, что она неполная и написана c точки зрения системного аналитика, но надеюсь ,что конструктивная критика поможет её расширить, добавить мнения специалистов других областей и привести к конечному виду.
P.S. Заранее спасибо и прошу сильно не пинать, но буду очень рад дополнениям или правкам :)

P.P.S. для удобного чтения так же прикладываю ссылку на Docs

  1. Определение бизнес-требований:

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

  1. Проведение встреч с заказчиком и заинтересованными сторонами:

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

  2. Понимание целей и потребностей системы:

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

  3. Формулирование бизнес-требований:

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

  4. Структурирование бизнес-требований:

    1. Бизнес требования описывают пожелания пользователей с точки зрения задач бизнеса. Примеры бизнес требований:. 

      1. Ускорение обработки заказов на 30 %. 

      2.  Снижение издержек ведения бухгалтерии на 200 тыс. рублей в год. .

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

  5. Документирование бизнес-требований:

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

  6. Инструменты

    1. Встречи и интервью с заказчиком и заинтересованными сторонами.

    2. Протоколирование встреч.

    3. Методы анализа бизнес-процессов (например, BPMN, UML).

    4. Документирование бизнес-требований в текстовой и/или диаграммной форме.

  1. Анализ текущих процессов:

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

  1. Изучение существующих бизнес-процессов:

    1. На этом этапе системный аналитик анализирует существующие в организации процессы, которые подлежат автоматизации или оптимизации.

    2. Это может включать в себя:

      1. Идентификацию ключевых шагов, действий и ресурсов, участвующих в процессе.

      2. Определение последовательности этапов процесса и связей между ними.

      3. Оценка времени, затрачиваемого на выполнение каждого этапа.

      4. Выявление потенциальных проблем и узких мест в существующих процессах.

  2. Выявление узких мест:

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

  3. Потенциальные улучшения:

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

  4. Документирование результатов анализа:

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

  5. Взаимодействие с заказчиком:

    1. Важно обсудить с заказчиком результаты анализа. Это позволяет уточнить приоритеты и согласовать дальнейшие шаги в процессе разработки.

  6. Определение требований к новой системе:

    1. На основе анализа текущих процессов и выявленных узких мест, системный аналитик формулирует требования к новой информационной системе, которая должна решать обнаруженные проблемы и оптимизировать процессы.

  7. Инструменты

    1. Инструменты для моделирования бизнес-процессов (например, Bizagi, Lucidchart).

    2. Инструменты для анализа данных (например, Microsoft Excel, Google Sheets).

  1. Определение функциональных требований:

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

  1. Описание основных функций:

    1. Примеры основных функций могут включать в себя:

      1. Управление данными и их обработка.

      2. Взаимодействие с пользователями и другими системами.

      3. Поддержка бизнес-процессов и автоматизация операций.

  2. Разделение функционала на блоки и подсистемы:

    1. Для более наглядного и управляемого процесса разработки, функционал информационной системы разделяется на логические блоки и подсистемы.

      1. Примеры блоков функционала могут включать в себя:

        1. Модуль управления пользователями.

        2. Модуль аналитики данных.

        3. Модуль отчетности и др.

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

  1. Определение взаимодействий между блоками:

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

  2. Документирование функциональных требований:

    1. Результаты анализа и разделения функционала описываются в виде документа с функциональными требованиями. Каждая функция и блок должны быть четко описаны, включая входные и выходные данные, условия выполнения, требования к производительности и так далее.

  3. Приоритизация функциональных требований:

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

  4. Взаимодействие с заказчиком:

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

  5. Инструменты 

    1. Диаграммы вариантов использования (Use Case Diagrams).

    2. Описание требований в текстовой форме (например, в таблицах, в формате User Stories).

    3. Схемы данных (например, Entity-Relationship Diagrams).

  1. Формирование структуры данных:

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

  1. Проектирование баз данных, включая сущности, их атрибуты и связи между ними:

    1. В этом этапе системный аналитик определяет структуру базы данных, которая будет использоваться информационной системой.

      1. Сущности: Это представления о конкретных объектах или событиях, которые будут храниться в базе данных. Например, для системы управления заказами, сущности могут включать "Клиенты", "Заказы", "Товары" и т.д.

      2. Атрибуты: Каждая сущность имеет характеристики или атрибуты, которые описывают эту сущность. Например, у сущности "Клиенты" атрибутами могут быть "Имя", "Фамилия", "Электронная почта" и т.д.

      3. Связи: Связи определяют, как сущности взаимодействуют друг с другом. Например, связь между "Клиентами" и "Заказами" может указывать на то, что один клиент может сделать несколько заказов.

  2. Определение необходимых хранилищ данных:

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

      1. Реляционные базы данных: Которые используются для хранения данных в виде таблиц с установленными связями между ними.

      2. Документ-ориентированные базы данных: Которые подходят для хранения документов, имеющих сложную структуру.

      3. NoSQL базы данных: Которые позволяют хранить и обрабатывать неструктурированные данные.

      4. Хранилища данных для аналитики: Оптимизированные для выполнения аналитических запросов.

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

  3. Проектирование схемы данных:

    1. На основе определенных сущностей, атрибутов и связей, системный аналитик разрабатывает схему базы данных, которая определяет, как данные будут организованы и связаны между собой.

  4. Нормализация и оптимизация баз данных:

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

  5. Документирование структуры данных:

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

  6. Взаимодействие с разработчиками:

    1. Системный аналитик сотрудничает с командой разработчиков, предоставляя им необходимую информацию для создания и настройки базы данных в соответствии с требованиями.

  7. Инструменты

    1. Инструменты проектирования баз данных (например, MySQL Workbench, Microsoft Visio).

  1. Разработка архитектуры системы:

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

  1. Выбор технологических платформ и инструментов:

    1. Это включает в себя:

      1. Языки программирования: Определение языков, на которых будет разрабатываться система.

      2. Базы данных и хранилища данных: Выбор технологии для хранения и управления данными.

      3. Фреймворки и библиотеки: Использование готовых инструментов для разработки определенных функций.

      4. Инструменты разработки и среды разработки: Определение средств, которые будут использоваться для написания, тестирования и отладки кода.

  2. Проектирование архитектуры, включая модели данных, компоненты и интерфейсы:

    1. Модели данных: На этом этапе системный аналитик и архитекторы разрабатывают детальные модели данных, которые включают в себя структуру и типы данных, а также связи между различными элементами данных. Примеры включают ER-диаграммы (сущность-связь) и UML-диаграммы классов.

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

    3. Интерфейсы: Определение способов взаимодействия между компонентами системы, а также внешними системами и пользователями. Это включает в себя разработку API (Application Programming Interface) для взаимодействия между различными частями системы.

  3. Учет архитектурных паттернов:

    1. Системный аналитик учитывает применение архитектурных паттернов, таких как MVC (Model-View-Controller), MVVM (Model-View-ViewModel) и других, для обеспечения лучшей организации кода и разделения ответственности между компонентами системы.

  4. Уточнение технических деталей:

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

  5. Документирование архитектуры:

    1. Вся полученная информация о выбранных технологиях, моделях данных, компонентах и интерфейсах документируется в виде технической спецификации или архитектурного документа.

  6. Обсуждение с заказчиком:

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

  7. Инструменты

    1. Инструменты для создания архитектурных диаграмм (например, draw.io, Visual Paradigm).

    2. Инструменты для выбора технологических платформ и инструментов 

      1. StackShare: Платформа, позволяющая сравнивать и анализировать технологические стеки различных компаний.

      2. AlternativeTo: Позволяет искать альтернативные программы, инструменты и платформы.

  1. Определение требований к безопасности:

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

  1. Разработка мер по обеспечению конфиденциальности, целостности и доступности данных:

    1. Конфиденциальность данных: Этот аспект требует предотвращения несанкционированного доступа к чувствительным данным. Для этого могут использоваться шифрование данных, контроль доступа и другие методы.

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

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

    4. Аудит и мониторинг: Важно вести наблюдение за событиями в системе, анализировать их и вовремя реагировать на потенциальные угрозы безопасности.

    5. Обработка и хранение паролей: Разработка политики управления паролями, хранение их в зашифрованном виде, а также применение современных методов хеширования.

    6. Защита от злонамеренных программ и вирусов: Использование антивирусных программ, фильтрации трафика и других технических средств.

    7. Защита от атак: Включает в себя меры для предотвращения атак, таких как SQL-инъекции, кросс-сайт скрипты, атаки на сетевой уровень и др.

  2. Установление правил доступа и аутентификации пользователей:

    1. Аутентификация: Определение процедуры проверки подлинности пользователей перед предоставлением им доступа к системе. Это может включать в себя пароли, двухфакторную аутентификацию, биометрические данные и т.д.

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

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

    4. Обработка ошибочных или неудачных попыток аутентификации: Необходимо определить, как система реагирует на неудачные попытки входа в систему и какие меры предпринимаются для предотвращения атак.

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

    6. Журналирование событий безопасности: Ведение журнала событий для регистрации всех действий пользователей и администраторов в системе с целью выявления несанкционированных действий.

    7. Шифрование данных в пути и в покое: Защита данных во время передачи и хранения с использованием криптографических методов.

  3. Инструменты

    1. Инструменты для анализа угроз и рисков (например, Threat Modeling Tools , OWASP и т.д.).

    2. Средства для разработки политик безопасности и контроль доступа (например, Active Directory, LDAP и т.д.).

  1. Разработка пользовательского интерфейса:

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

  1. Проектирование интерфейсов для взаимодействия пользователей с системой:

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

    2. Определение типов пользовательских интерфейсов: В зависимости от специфики системы, это может быть веб-интерфейс, мобильное приложение, десктопное приложение и т.д.

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

    4. Учет дизайн-принципов и пользовательского опыта (UI/UX): Разработчики интерфейса учитывают принципы удобства использования и эстетики, чтобы создать приятный и интуитивно понятный пользовательский опыт.

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

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

  2. Создание прототипов и макетов:

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

    2. Использование инструментов дизайна и прототипирования: Разработчики могут использовать специальные программы и инструменты, такие как Figma, Adobe XD, Sketch и др., для создания прототипов.

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

    4. Уточнение и доработка: На основе обратной связи от заказчика и тестирования прототипов, они могут быть уточнены и доработаны.

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

    6. Документирование интерфейсных решений: Все принятые решения по дизайну и функционалу фиксируются в специальной документации.

  3. Инструменты

    1. Инструменты для прототипирования и дизайна интерфейса (например, Sketch, Figma).

    2. Графические редакторы (например, Adobe XD, Photoshop).

  1. Формирование требований к надежности и масштабируемости:

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

  1. Определение требований к надежности работы системы:

    1. Механизмы резервного копирования и восстановления:

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

      2. Определение частоты и методов резервирования (полные, инкрементальные, дифференциальные).

      3. План восстановления в случае сбоя или потери данных.

      4. Определение места хранения резервных копий (локальное хранилище, облачные сервисы).

    2. Мониторинг и оповещение о сбоях:

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

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

      3. Разработка механизмов оповещения администраторов в случае сбоев или неполадок.

    3. Управление отказоустойчивостью:

      1. Включает в себя определение архитектурных решений и мер, направленных на минимизацию воздействия отказов в работе системы.

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

    4. Обновления и патчи:

      1. Определение процедур и методов для внедрения обновлений, патчей и исправлений без прерывания работы системы.

  2. Учёт возможности расширения системы при необходимости:

    1. Горизонтальное и вертикальное масштабирование:

      1. Горизонтальное масштабирование - это увеличение количества физических серверов или узлов для распределения нагрузки.

      2. Вертикальное масштабирование - это увеличение ресурсов (памяти, процессора) на одном сервере или узле.

    2. Архитектурные решения для расширения:

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

    3. Управление нагрузкой:

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

    4. Планирование роста и масштабируемость:

      1. Разработка стратегии поэтапного масштабирования системы в зависимости от ожидаемого роста бизнеса и нагрузки.

    5. Тестирование на масштабируемость:

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

    6. Мониторинг масштабируемости:

      1. Разработка системы мониторинга, которая позволяет отслеживать производительность системы при разных нагрузках и анализировать, когда необходимо провести масштабирование.

  3. Инструменты

    1. Инструменты для резервного копирования и восстановления (например, Veeam Backup & Replication,Acronis Backup,Commvault,Ansible,Jenkins,Nagios,Zabbix и т.д.).

    2. Средства для оценки производительности и масштабируемости(Locust,Apache JMeter(с учетом Distributed Testing),Profiler,LoadRunner (Micro Focus),Gatling,Prometheus,Grafana,New Relic и т.д.).

  1. Составление технического задания:

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

  1. Формализация всех требований и аспектов проектирования:

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

  2. Структура технического задания:

    1. Введение:

      1. Краткое описание проекта, его цели и основные характеристики.

    2. Общее описание системы:

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

    3. Требования к функционалу:

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

    4. Требования к интерфейсам:

      1. Описание пользовательского интерфейса, его элементов и способов взаимодействия с пользователем.

    5. Требования к надежности и масштабируемости:

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

    6. Требования к безопасности:

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

    7. Требования к производительности:

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

    8. Требования к тестированию и качеству:

      1. Определяют процедуры тестирования, критерии приемки, а также требования к качеству кода и документации.

    9. Требования к документированию:

      1. Описывают необходимость и форматы документации, которая должна быть создана в процессе разработки и поддержки системы.

    10. Требования к сопровождению:

      1. Указывают требования к поддержке и обновлению системы после ее внедрения.

    11. Архитектура системы:

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

    12. Методы тестирования:

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

    13. Утверждение и согласование технического задания:

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

    14. Использование технического задания в процессе разработки:

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

    15. Документация и отчетность:

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

  3. Инструменты

    1. Системы управления документацией (например, Microsoft Word, Google Docs).

    2. Инструменты для создания структурированных документов (например, LaTeX).

  1. Проверка и утверждение технического задания:

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

  1. Предоставление технического задания заказчику и заинтересованным сторонам:

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

  2. Рецензия технического задания:

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

  3. Внесение коррективов:

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

  4. Утверждение технического задания:

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

  5. Формализация утверждения:

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

  6. Сохранение утвержденного технического задания:

    1. Утвержденное ТЗ становится базой для дальнейшей разработки. Оно используется как основа для создания и тестирования информационной системы.

  7. Инструменты

    1. Электронные системы управления документами и версиями (например, Git, SVN).

  1. Контроль реализации:

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

  1. Следить за учетом всех требований из технического задания:

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

  2. Проведение регулярных проверок согласно этапам разработки:

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

  3. Обратная связь и корректировки:

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

  4. Документирование результатов контроля:

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

  5. Управление изменениями:

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

  1. Тестирование и валидация:

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

  1. Проверка работы системы на соответствие заявленным требованиям:

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

  2. Выявление несоответствий и ошибок:

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

  3. Внесение необходимых корректировок и доработок:

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

  4. Повторное тестирование и валидация:

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

  5. Утверждение готовности к внедрению:

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

  1. Документирование:

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

  1. Создание технической документации:

    1. Примеры таких документов включают:

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

      2. Описание баз данных: Здесь описываются основные сущности, их атрибуты, связи и структура базы данных.

      3. Технические спецификации: Эти документы содержат технические детали, такие как используемые технологии, программные библиотеки, алгоритмы и прочее.

      4. Документация по коду: Комментарии в коде, описывающие его работу, логику и особенности.

      5. Документация по интерфейсу: Описание элементов пользовательского интерфейса, их функции и принципы взаимодействия с пользователем.

  2. Инструкции по эксплуатации и администрированию системы:

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

      1. Инструкции по установке и запуску: Описываются шаги по установке системы, включая необходимые предустановки и конфигурации.

      2. Инструкции по использованию: Разъясняются основные функции и возможности системы. Это может включать в себя работу с интерфейсом, создание, редактирование и удаление данных, выполнение операций и т.д.

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

      4. Инструкции по обслуживанию и поддержке: Здесь описываются действия, необходимые для поддержания и обновления системы, включая внедрение патчей, обновлений, решение проблем и т.д.

  3. Актуализация и поддержание документации:

    1. Важно обновлять документацию в соответствии с изменениями в системе. Новые функции, изменения архитектуры, улучшения и т.д. должны быть отражены в документах.

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

  1. Внедрение и поддержка:

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

  1. Помощь в развертывании системы и обучение пользователей:

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

    2. На этом этапе команда разработчиков может оказать содействие технической поддержкой при установке и конфигурации.

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

  2. Постоянная поддержка и мониторинг работы системы:

    1. После внедрения системы начинается период постоянной поддержки и мониторинга:

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

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

  3. Анализ и улучшение системы:

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

  4. Регулярные обновления и патчи:

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

  5. Обучение и поддержка новых сотрудников:

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

Комментарии (15)


  1. ErshoffPeter
    24.10.2023 07:08
    +1

    Дочитал до момента 'бизнес-требования = функциональные требования' и задумался - стоит ли читать дальше? ????


    1. xngel Автор
      24.10.2023 07:08

      Правда косяк , неправильно сформулировал мысль. сейчас перепишу


  1. sshmakov
    24.10.2023 07:08
    +1

    Все это круто, здорово и замечательно, если у заказчика есть время, а для вас деньги. Куда чаще надо сделать что-то, быстро и дешево.

    Я прекрасно понимаю, что она неполная и написана c точки зрения системного аналитика,

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


    1. xngel Автор
      24.10.2023 07:08
      +1

      Да согласен по поводу времени и денег, заказчику всегда нужно еще вчера и бесплатно, но никто нам не мешает пропускать этапы, объединять их или на худой конец ТЗ записать на салфетке со слов заказчика и использовать его как конечный "посыл".

      Я описываю свой опыт и в итоге этот план может выполнять не один человек, а команда)


  1. a_nick
    24.10.2023 07:08
    +3

    По п. 9 "Составление технического задания": зачем изобретать свой собственный велосипед, когда есть ГОСТ 34.602-2020, в котором приведены состав и содержание документа. Необязательно целиком следовать ГОСТу, можно адаптировать под себя.

    То же самое относится и к п.13 - есть ГОСТ Р 59795-2021, в котором приведены состав и содержание самых разных документов, разрабатываемых для ИС - берите, адаптируйте под себя и пользуйтесь.

    Еще странность - тестирование системы есть, а сдачи/приемки - нет. Сдача/приемка, по опыту, отдельная песня, особенно в случаях, когда у заказчика собственная служба эксплуатации.

    ИБ - не включает требования и этапы работ по аттестации ИС.

    Можно и еще накидать, но, в общем и целом, получилась этакая смесь 34-ого ГОСТа (ныне ГОСТ Р 59793-2021) и 676-ого ПП. Работать конечно будет, но далеко не для всех систем и не для всех заказчиков.


    1. xngel Автор
      24.10.2023 07:08

      Замечания в целом оправданы, но я писал исходя из своего опыта.

      По поводу ГОСТов подумаю ,что можно еще включить.

      Этапы Сдачи и Приёмки реально отдельная песня и как-то унифицировать сложно , но я попробую дописать.

      Аттестацию ИС хотел включить , но это в первую очередь для ГОС систем.


    1. igorts
      24.10.2023 07:08

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

      Когда мы ведем речь об информационных системах, тут я бы еще посмотрел в сторону ЕСПД - ГОСТ 19


  1. mishamota
    24.10.2023 07:08
    +1

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

    А так да, есть же 34 ГОСТ, как тут уже написали, он подойдёт в большинстве случаев как основа, которую можно адаптировать.

    Начинайте требки с 3х пунктов:

    Цели

    Назначение

    Ограничения

    и дальше само пойдет ))


    1. xngel Автор
      24.10.2023 07:08

      Спасибо )


  1. 0pauc0
    24.10.2023 07:08
    +1

    Тоже пару слов вставлю.

    1. Техническое задание задание всегда пишет заказчик. А потом открыто публикует или распространяет между ограниченным составом проектировщиков. Затем проектировщик проектирует, с учетом ГОСТов, регламентов, с применением кусков/узлов уже ранее кем-то разработанных и опробованных в реальном деле, на выходе - проект информационной системы/автоматизации/и т.п., именно проект, в том числе со сметой, в том числе календарным планом и самое главное - с доказательствами надежности, повторяемости/отсутствия эвристики, устойчивости, (по аналогии с проектом строительства - конструктивные и архитектурные решения обеспечивающие все разделы безопасности, соответствие требованиям энергоэффективности, малобильных граждан и прочее).

    Заказчик может заказать проект одному или нескольким проектировщикам.

    Затем выбранный проект заказчик передает в работу нанятому на открытом конкурсе или взятому по знакомству изготовителю-разработчику, который и делает работы (кодит в вашем случае). Авторский надзор осуществляет вышеупомянутый проектировщик - решает возникающие вопросы проекта (если облажался на стадии проектирования - сам и вносит корректировки) и не дает разработчику испортить/завалить проект, подтверждает на каждом крупном этапе результаты работ и подписывается на приемке работ.

    Вот как это работает. То что написали вы, работать эффективно не может априори.

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


    1. Vorchun
      24.10.2023 07:08

      Техническое задание задание всегда пишет заказчик.

      Что-то непонятное )


      1. 0pauc0
        24.10.2023 07:08

        Ага, задвоилось задание. Вот же как оно.


  1. 0pauc0
    24.10.2023 07:08
    +2

    Вторая пара слов.

    2. Прямо первый заголовок - "Определение бизнес-требований". Эти мусорные слова везде - и к месту и не к месту (запретить их надо). Бизнес - это использование добавленной стоимости (нанял землекопов, берут больше кидают дальше - хорошо, лопата плохая сил нет - плохо). Бизнес-требования - это требования К бизнесу или требования самого бизнеса? И то и другое - в рассматриваемом случае нонсенс.

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

    Но - такие требования выставляются для людей, которые хорошо понимают, что от них требуется.

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


  1. 0pauc0
    24.10.2023 07:08
    +1

    Ну и напоследок.

    3. Кто (сторонний, независимый и профессиональный) подтвердит заказчику, что подготовленное вами техническое задание исполнимо и адекватно по деньгам и силам?


  1. Vorchun
    24.10.2023 07:08

    Вот объясните простыми словами в 2 предложениях - чем отличаются между собой бизнес аналитик и системный аналитик? Дочитал до момента, когда системный аналитик должен что-то там сделать с интерфейсом и запутался окончательно.