- •Методологии разработки программного обеспечения. Введение Структура методологии разработки/внедрения программного обеспечения
- •Часть 1
- •От редакции
- •Введение
- •Этапы жизненного цикла по
- •Стратегия
- •Проектирование
- •Реализация
- •Тестирование
- •Внедрение
- •Эксплуатация и техническая поддержка
- •Каскадная модель
- •Поэтапная модель с промежуточным контролем
- •Спиральная модель
- •. Экстремальное программирование часть 2
- •Ускоренная и совместная разработка приложений
- •Экстремальное программирование Принципы xp и используемые методы ускорения разработки
- •Практики
- •Rational Unified Process Часть 3.
- •Введение
- •Структура rup
- •Продукты, поддерживающие rup
- •Артефакты и роли
- •Business modeling
- •Requirements
- •Analysis and design
- •Implementation
- •Deployment
- •Unified Modelling Language Часть 4.
- •История uml
- •Средства uml-моделирования
- •Для чего применяется uml
- •Элементы языка
- •Сущности
- •Отношения
- •Диаграммы uml
- •Microsoft Solutions Framework Часть 5.
- •Введение
- •Основные компоненты и модели msf
- •Процесс msf
- •Модель команды
- •Модель приложения
- •Проектирование компонентного по
- •Планирование архитектуры предприятия
- •Обзор методологии scrum
- •Product Owner
- •Команда (Team)
- •Артефакты Product Backlog
- •Sprint Backlog
- •Спринт (Sprint)
- •Жизненный цикл спринта Планирование спринта
- •Планирование спринта, митинг первый
- •Планирование спринта, митинг второй
- •Остановка спринта (Sprint Abnormal Termination)
- •Daily Scrum Meeting
- •Демо и ревью спринта
. Экстремальное программирование часть 2
Ускоренная и совместная разработка приложений
Экстремальное программирование
Принципы XP и используемые методы ускорения разработки
Практики
аверное,
каждый проектировщик или аналитик хотя
бы раз в жизни сталкивался с заказчиком,
стремящимся получить свой проект как
можно дешевле и вдобавок в максимально
сжатые сроки. Но если стоимость проекта
— вполне реальный предмет торга, то
вести переговоры о корректировке сроков
сдачи проекта куда сложнее. Нетерпеливых
клиентов сегодня становится все больше
и больше, что объясняется и состоянием
современного динамичного рынка, и
падающим уровнем доверия между
исполнителями и заказчиками, и поведением
инвесторов, у которых аппетит приходит
во время еды (при наличии более или менее
работающей версии продукта деньги на
дальнейшую разработку дают намного
охотнее), и т.д. В связи с этим классические
методологии разработки (при которых
долгий цикл собственно проектирования
и сбора информации, когда клиент
вкладывает значительные средства, а
реального результата довольно долго
не получает) вступают в весьма жесткое
противоречие с интересами нетерпеливого
заказчика. Все это и дало толчок развитию
альтернативных методологий проектирования
в двух основных направлениях: повышение
доверия заказчика путем предоставления
реальных доказательств успешно
развивающегося процесса разработки и
резкое сокращение сроков разработки
продукта. Группа таких методологий
получила название «активное
программирование».
Ускоренная и совместная разработка приложений
ак
правило, конечные пользователи и
представители руководства компании-заказчика
полагают, что процесс проектирования
не увенчался успехом, если отсутствуют
реальные готовые компоненты. Зачастую
заказчик настаивает на досрочном
проведении этапа реализации проекта,
чтобы как можно быстрее получить
конкретный результат и продемонстрировать
его. В таком случае существует большой
соблазн выбрать ускоренную разработку
приложений (УРП) или совместную разработку
приложений (СРП). Подобные методы
предусматривают разработку рабочего
прототипа с последующей демонстрацией
его пользователям, которые отмечают,
что им нравится, а что нет. После этого
проектировщик дорабатывает прототип
с учетом сделанных замечаний, а затем
снова демонстрирует то, что получилось.
Процесс повторяется до тех пор, пока
пользователи не будут удовлетворены
тем, что они видят, а прототип не станет
рабочим приложением. Обычно устанавливаются
лимит времени и количество итераций,
ибо в противном случае пользователи
будут бесконечно требовать новых
совершенствований прототипа. Теоретически
это позволяет получить именно ту систему,
которая необходима пользователям.
Итак, здесь мы наблюдаем итеративную модель разработки с очень короткими циклами спирали в обоих случаях. И в том и в другом методе сокращено время, затрачиваемое на начальные этапы проектирования: стратегию (либо опускается вообще, либо сливается с анализом), анализ (в большинстве случаев ограничивается первичной выборкой информации и анализом форм — как правило, отчетов, по которым и пытаются восстановить структуру функций системы), проектирование (нацелено на как можно более быстрое получение первичного прототипа). Результатом разработки является прототип, который затем подлежит промышленной реализации. В данном случае тестирование производится при активном участии заказчика, либо заказчик становится тестером (в лучшем случае бета-тестером).
На практике подобный подход к разработке приложений сопряжен с проблемами, перечисленными ниже:
• Все внимание сконцентрировано на экранных формах, а все, что касается правил обработки данных и системных функций, остается за кадром. Существует искушение начать работу с отчетов, в то время как отчет является не стартовым, а производным продуктом информационной системы.
• Пользователи полагают, что если вариант прототипа согласован, то модуль готов. На самом деле это может быть всего лишь картинка с набором «заглушек» для вызовов системных функций и взаимодействия с другими модулями.
• Модули проектируются изолированно друг от друга. Следствием этого являются противоречия модулей, дублирование функций и данных, что может быть выявлено только при тестировании комплекса модулей.
• Функциональные возможности наращиваются параллельно в нескольких направлениях, поэтому структура хранилища данных должна контролироваться. При УРП схема базы данных напоминает свалку, где таблицы лепятся на скорую руку, а результат — набор противоречивых и дублирующихся данных.
• Документация при использовании метода УРП, как правило, отсутствует по двум причинам: не хватает времени и создается иллюзия, что пользователь способен без документов поняв суть происходящего. Когда же приложение начинает работать не так, как ожидал пользователь, возникают проблемы.
• Способы обработки исключительных ситуаций оказываются различными для разных модулей.
• Возникает проблема интеграции модулей: целостной системы, как правило, не получается, потому что изначально она проектировалась как набор компонентов, которые впоследствии были наспех связаны между собой.
• Контроль качества продукта вступает в жесткое противоречие со сроками разработки проекта, в результате чего стадии тестирования и внедрения очередной версии продукта практически сливаются и переносятся непосредственно на полигон заказчика. Понятно, что в этом случае происходит с заказчиком, который крайне недоволен качеством продукта; иными словами, сор из избы выносится абсолютно не вовремя.
Возникает вопрос: можно ли решить подобные проблемы и каким образом? Ведь так хочется получить проект максимально быстро! В какой-то мере экстремальное программирование (eXtreme Programming, XP) можно считать эволюцией, а возможно, и революцией в сфере более молодых методологий активного программирования. Подойдет ли данная методология конкретно для вашего коллектива разработчиков — решать вам и только вам, поскольку, например, далеко не все приходят в восторг от экстремальных видов спорта.
