
- •«Гибкое управление»
- •Организация проектной команды
- •Рождение uml
- •Объекты uml
- •Структура uml
- •Объектно-ориентированное моделирование
- •Объектно-ориентированная разработка
- •Объектно-ориентированная методология
- •Концептуализация системы
- •Проектирование системы
- •Проектирование классов
- •Реализация
- •Три модели
- •Итеративная разработка
- •Управление изменениями
- •Преимущества итеративной разработки
- •Длительность итерации
- •Итеративное планирование на основе рисков и с учетом потребностей пользователей
- •Гибкие методы разработки
- •Некоторые практические советы для анализа и моделирования
- •Фазы унифицированного процесса
- •Дисциплины унифицированного процесса
- •Описание прецедента
- •Три типа исполнителей
- •Основные форматы прецедентов
- •Выделение прецедентов
- •Модели предметной области
- •Диаграммы взаимодействия
- •Требования и бизнес-правила
- •Пример Дополнительной спецификации (фрагмент)
- •Фрагмент документа Видение
- •Словарь терминов
- •Диаграммы видов деятельности (Activity diagram)
- •Диаграммы классов
- •Объекты и классы
- •Обмен сообщениями
- •Нотация объектов в uml
- •Классы и объекты
- •Нотация классов в uml
- •Ячейка имени
- •Ячейка атрибутов
- •Видимость
- •Кратность
- •Начальное значение
- •Ячейка операций
- •Логическая архитектура и развертывание
- •Уровень интерфейса пользователя
- •Диаграммы пакетов
- •Взаимосвязь уровня и модели предметной области
- •Реализация архитектуры
- •Диаграмма развертывания
- •Артефакты
Современные технологии анализа
08.02.10
Лекция 1. Введение в программную инженерию
Программная инженерия – это применение определенного систематического измеримого подхода при разработке эксплуатации и поддержки программного обеспечения.
В 2004 году было создано руководство к своду знаний по программной инженерии.
Программная инженерия включает в себя 10 основных и 7 дополнительных областей знаний, на которых базируются процессы разработки ПО.
{Здесь могли быть ваши комментарии}
Software requirements – программные требования
Software design
Software construction
Software testing
Software maintenance
Software configuration management
Software engineering management
Software engineering process
Software engineering tools and methods
Software …
При анализе разработки десятков тысяч проектов, связанных с разработкой ПО, выяснилось:
35% проектов завершились в срок, не превысили бюджет, реализовали все требуемые функции
46% проектов – завершились с опозданием, расходы превысили бюджет, требуемые функции не реализовались в полном объеме
Среднее превышение сроков – 120%
Среднее превышение затрат – 100%
19% проектов – полностью провалилось
Кто виноват? Как правило, никто…
Эволюция подходов к управлению программными проектами.
За 50 лет развития программной инженерии накопилось большое количество моделей разработки ПО, но мы среди этого большинства моделей можем выделить главные:
Подход «как получится»
Разомкнутая система управления
Полное доверие техническим лидерам
Представители бизнеса практически не участвуют в проекте
Планирование неформальное и словесное
Время и бюджет, как правило, не контролируются
Подход «водопад» или «каскадная модель»
Жесткая последовательная схема управления, переход на каждый следующий этап только после завершения предыдущего
Лучше предыдущего, но не эффективно
«Гибкое управление»
Создание опорного базового проекта, включающего основные требования, изменения отклонений, новый расчет
Гибкие методы позволяют учитывать внесение изменений и добавлений в программную реализацию
«ГОСТы»
По ГОСТам разработка производится по этапам, каждый из которых предполагает выполнение строго определенного набора работ – «каскадная модель».
«RUP» – Rational Unified Process – унифицированный процесс, разработанный сотрудниками компании Rational Software в качестве дополнения к языку UML.
Модель RUP описывает стандартный общий процесс, на основе которого проектная команда должна создать конкретный специализированный проект, ориентированный на конечного потребителя.
Выбор модели процесса
Тяжелые процессы (каскадная модель)
ПЛЮСЫ:
Рассчитаны на среднюю квалификацию исполнителей
Большая специализация исполнителей
Низкие требования к стабильности команды
МИНУСЫ:
Требуют существенной управленческой надстройки
Более длительные стадии анализа и проектирования
Более формализованные коммуникации (большое количество документации, которое передается от одного человека к другому)
Легкие модели
ПЛЮСЫ:
Меньше непроизводительных расходов, связанных с управлением проектом, рисками, изменениями, конфигурацией
Упрощенные стадии анализа и проектирования
Основной упор на разработку функциональности, совмещение ролей
Неформальные коммуникации
НЕДОСТАТКИ:
Эффективность разработки сильно зависит от индивидуальных способностей, требуют более квалифицированной, универсальной и стабильной команды
Объемы и сложность выполняемых объектов ограничены
Успешность проекта
Для успешности программного проекта необходимо:
Четко ставить цели
Определять способ достижения целей
Контролировать и управлять реализацией
Анализировать угрозы и противодействовать им
Создавать команду
Существует тест программного проекта на выживание. Так называемый check-лист из 33 пунктов. Каждый пункт этого теста оценивается от 0 до 3, применяются поправочные компоненты: для малых проектов 1,5 , для средних (от 5 до 20 человек) – 1,25.
Организация проектной команды
Роли и ответственности участников типового проекта разработки ПО можно условно разделить на 5 групп:
АНАЛИЗ
Извлечение, документирование и сопровождение требований к продукту.
Группа анализа включает следующие роли:
Бизнес-аналитик (построение модели предметной области)
Бизнес-архитектор (разработка бизнес-концепции системы, определение общего видения продукта, его интерфейсы, поведение и ограничение)
Системный аналитик (отвечает за перевод требований к продукту в функциональные требования к ПО)
Специалист по требованиям (документирование и сопровождение требований к продукту)
Менеджер продукта/функциональный заказчик (представляет интересы пользователей к продукту)