345.94K

Управление программными проектами

1.

Управление
программными проектами
К.т.н., доц. кафедры ПОУТС Коняева Ольга
Сергеевна

2.

ОБЩИЕ
ПОНЯТИЯ,
СВЯЗАННЫЕ С
РАЗРАБОТКОЙ
ПРОГРАММНОГ
О
ОБЕСПЕЧЕНИЯ

3.

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

4.

Программное
обеспечение
(ПО)
Все программное
обеспечение разделяется на
три группы:
• системное;
• прикладное;
• инструментальное.

5.

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

6.

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

7.

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

8.

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

9.

Процесс разработки ПО определяет действия и
организационные процедуры, направленные на
усиление совместной работы в бригаде разработчиков
с целью поставки заказчикам высококачественных
программных продуктов. На модель процесса
возлагаются следующие функции:
Разработка
1. Установление порядка выполнения действий.
программног 2. Определение состава и времени поставки
артефактов, создаваемых в процессе разработки.
о
3. Закрепление действий и артефактов за
разработчиками.
обеспечения
4. Введение критериев отслеживания хода проекта,
измерение результатов и планирование будущих
(ПО)
проектов.

10.

Разработка
программног
о
обеспечения
(ПО)
Технология разработки программного
обеспечения (ПО) – это комплекс мер по
созданию программных продуктов (ПП).
Данная деятельность включает в себя
несколько этапов, с которыми так или
иначе придётся столкнуться при
разработке достаточно крупного ПО.
Ключевым понятием в технологии
разработки ПО является
понятие жизненного цикла
программного продукта. С его
рассмотрения мы и начнём.

11.

Заказчики – формируют требования к продукту,
верхнеуровнево описывают задачу на языке бизнес
целей и выгоды.
Участники
разработки
ПО
Архитекторы – разрабатывают архитектурное
решение продукта, схему интеграций с другими
системами.
Аналитики – бизнес аналитики и системные
аналитики. Бизнес аналитики отвечают за
проработку бизнес задач и формирование основных
функциональных и нефункциональных (если они
критичны для заказчика) требований к ПО.
Системные аналитики детализируют и переводят в
техническую плоскость (на уровень таблиц,
функций, классов, интерфейсов и т.п.) бизнес
требования, формируют техническое задание для
команды разработки.

12.

Разработчики – разрабатывают и документируют код ПО,
занимаются отладкой и исправлением ошибок, проверяют
код при помощи Unit-тестирования, собирают билды и
поставки, готовят инструкции по установке.
Участники
разработк
и ПО
Тестировщики (QA специалисты) – отвечают за качество
ПО, выполняя для этого анализ требований, разработку
планов и сценариев тестирования, выполняя
тестирование ПО и т.д.
Команда поддержки – занимаются выводом ПО в
эксплуатацию, установками и настройкой среды для
пользователей.
Пользователи – являются конечными потребителями
ПО, в рамках процесса разработки могут привлекаться к
приемочному тестированию.

13.

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

14.

Анализ требований
Жизненный цикл разработки ПО начинается со стадии анализа, во время которого
участники процесса обсуждают требования, предъявляемые к конечному продукту.
Цель этой стадии – определение детальных требований к системе. Кроме этого,
необходимо убедиться в том, что все участники правильно поняли поставленные
задачи и то, как именно каждое требование будет реализовано на практике.
Зачастую, в обсуждении участвуют также и специалисты по тестированию, которые уже
на стадии разработки требований могут вносить собственные пожелания и, при
необходимости, корректировать процесс.
В зависимости от выбранной модели разработки, могут отличаться подходы к
определению момента перехода с одной стадии на другую.
Таким образом, этот этап предполагает сбор требований к разрабатываемому
программному обеспечению, их систематизацию, документирование, анализ, а
также выявление и разрешение противоречий.

15.

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

16.

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

17.

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

18.

Проектирование
Утвержденный дизайн системы определяет перечень разрабатываемых программных
компонентов, взаимодействие с третьими сторонами, функциональные характеристики
программы, используемые базы данных и многое другое. Дизайн, как правило,
закрепляется отдельным документом – дизайн-спецификацией
(Design Specification Document, DSD).
На этом этапе для упрощения визуализации процесса проектирования используются
так называемые нотации – схематическое выражение характеристик разрабатываемой
системы. Основные используемые нотации:
– Блок-схемы;
– ER-диаграммы;
– UML-диаграммы;
– Макеты – например, нарисованный в фотошопе прототип сайта.

19.

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

20.

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

21.

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

22.

Разработка и программирование
Программирование предполагает четыре основных стадии:
1) Разработка алгоритмов – фактически, создание логики
работы программы;
2) Написание исходного кода;
3) Компиляция – преобразование в машинный код;
4) Тестирование и отладка – речь, главным образом, о юниттестировании.

23.

Тестирование
Тестирование гарантирует, что код соответствует
требованиям спецификации, а ошибки искоренены.
Независимая команда разработчиков программного
обеспечения, не участвующая в разработке и внедрении
продукта, обычно проводит такое тестирование.

24.

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

25.

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

26.

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

27.

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

28.

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

29.

Планирование – формируется бизнес идея и определяются функциональные требования к ПО.
Проектирование – разрабатывается архитектурное решение системы и выполняется системный
анализ, готовится техническое задание для разработки.
Разработка – непосредственно написание программного продукта.
Тестирование – выполняется проверка и отладка ПО в соответствии с требованиями. Сюда же
относиться UAT (User Acceptance Testing) – пользовательское тестирование и прием ПО
заказчиком.
Внедрение – предварительная тестовая установка релиза – DryRun, подготовка всех необходимых
инструкций, настройка окружения и установка ПО.
Поддержка – консультирование пользователей, исправление ошибок, внедрение доработок.
English     Русский Правила