- •Раздел 2.7 Использование uml-нотации для разработки баз данных
- •Тема 2.7.1 Основные понятия баз данных. Ключи, триггеры и хранимые процедуры Самостоятельная работа № 32 (2 часа)
- •Теоретические сведенья
- •Тема 2.7.2 Организация реляционной бд. Разновидности баз данных Самостоятельная работа № 33 (2 часа)
- •“Реляционные, древовидные и объектно-ориентированные базы данных” Артур б. Смит m. Computing May/June 1996, V.4 n.2
- •“Проектирование реляционных баз данных. Просто и доступно” Джен л.Харрингтон – издательство “Лори”, 2000.-230 с. Теоретические сведенья
- •Тема 2.7.3 Расширение uml для моделирования базы данных Самостоятельная работа № 34 (2 часа)
- •“Реляционные, древовидные и объектно-ориентированные базы данных” Артур б. Смит m. Computing May/June 1996, V.4 n.2
- •“Проектирование реляционных баз данных. Просто и доступно” Джен л.Харрингтон – издательство “Лори”, 2000.-230 с. Теоретические сведенья
- •Самостоятельная работа № 35 (2 часа)
- •“Реляционные, древовидные и объектно-ориентированные базы данных” Артур б. Смит m. Computing May/June 1996, V.4 n.2
- •“Проектирование реляционных баз данных. Просто и доступно” Джен л.Харрингтон – издательство “Лори”, 2000.-230 с. Теоретические сведенья
- •Тема 2.7.4. Особенности отображения свойств объектов и классов при моделировании баз данных. Моделирование бд. Самостоятельная работа № 36 (2 часа)
- •Теоретические сведенья
- •Раздел 2.8 Унифицированный процесс разработки объектно-ориентированных пс
- •Тема 2.8.1 Управление риском Самостоятельная работа № 37 (2 часа)
- •Теоретические сведенья
- •Идентификация риска
- •Анализ риска
- •Ранжирование риска
- •Планирование управления риском
- •Разрешение и наблюдение риска
- •Тема 2.8.2 Этапы унифицированного процесса разработки Самостоятельная работа № 38 (2 часа) Тема: Основные этапы унифицированного процесса разработки
- •Теоретические сведенья Этап начало (Inception)
- •Этап развитие (Elaboration)
- •Этап конструирование (Construction)
- •Этап переход (Transition)
- •Самостоятельная работа № 39 (4 часа) Тема: Пример объектно-ориентированной разработки
- •Теоретические сведенья
- •Этап начало
- •Этап развитие
- •Этап конструирование
- •Тема 2.8.3 Разработка в стиле экстремального программирования. Самостоятельная работа № 40 (2 часа) Тема: хр-реализация.
- •Теоретические сведенья
- •Элемент хр-разработки
- •Самостоятельная работа № 41 (2 часа)
- •Теоретические сведенья
- •Взаимодействие с заказчиком
- •Стоимость изменения и проектирование
Элемент хр-разработки
Структура элемента ХР-разработки показана на рис. 2.8.16.
День ХР-разработчика начинается с установочной встречи. Ее цели: обсуждение проблем, нахождение решений и определение точки приложения усилий всей команды.
Участники утренней встречи стоят и располагаются по кругу, так можно избежать длинных дискуссий. Все остальные встречи проходят на рабочих местах, за компьютером, где можно просматривать код и обсуждать новые идеи.
Рисунок 2.8.16 - Структура элемента ХР-разработки
Весь день ХР-разработчика проходит под лозунгом коллективного владения кодом программной системы. В результате этого происходит фиксация ошибок и добавление новой функциональности в систему.
Следует удерживаться от соблазна добавлять в продукт функциональность, которая будет востребована позже. Полагают, что только 10% такой функциональности будет когда-либо использовано, а потери составят 90% времени разработчика. В ХР считают, что дополнительная функциональность только замедляет разработку и исчерпывает ресурсы. Предлагается подавлять такие творческие порывы и концентрироваться на текущих, запланированных задачах.
Задание
Студентам необходимо:
ознакомится с теоретическими понятиями;
сделать краткий конспект изложенного материала;
ответить устно на контрольные вопросы.
Контрольные вопросы
Охарактеризуйте содержание ХР-реализации.
В чем разница между пользовательскими историями и обычными требованиями к системе?
Что такое выброс?
Как создаются тесты приемки?
Поясните содержание ХР-итерации.
В чем заключается планирование ХР-итерации?
Что такое скорость проекта?
Поясните структуру элемента ХР-разработки.
Самостоятельная работа № 41 (2 часа)
Тема: Коллективное владение кодом.
Цель: Рассмотреть организацию коллективного владения кодом.
Литература:
Чен П.П. Модель “сущность-связь” – шаг к единому представлению данных. СУБД, N3, 1995 г.
Вендров А.М. CASE-технологии. Современные методы и средства проектирования информационных систем. М., Финансы и статистика, 1998.
Фаулер М., Скотт К. UML в кратком изложении. Применение стандартного языка объектного моделирования. М., Мир, 1999.
Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. 2-е изд. М., Издательство Бином, СПб., Невский диалект, 1999.
Буч Г., Рамбо Д., Джекобсон А. Язык UML: руководство пользователя. М., ДМК, 2000.
Теоретические сведенья
Организацию коллективного владения кодом иллюстрирует рис. 2.8.17.
Коллективное владение кодом позволяет каждому разработчику выдвигать новые идеи в любой части проекта, изменять любую строку программы, добавлять функциональность, фиксировать ошибку и проводить реорганизацию. Один человек просто не в состоянии удержать в голове проект нетривиальной системы. Благодаря коллективному владению кодом снижается риск принятия неверного решения (главным разработчиком) и устраняется нежелательная зависимость проекта от одного человека.
Работа начинается с создания тестов модуля, она должна предшествовать программированию модуля. Тесты необходимо помещать в библиотеку кодов вместе с кодом, который они тестируют. Тесты делают возможным коллективное создание кода и защищают код от неожиданных изменений. В случае обнаружения ошибки также создается тест, чтобы предотвратить ее повторное появление.
Кроме тестов модулей, создаются тесты приемки, они основываются на пользовательских историях. Эти тесты испытывают систему как «черный ящик» и ориентированы на требуемое поведение системы.
Рисунок 2.8.17 - Организация коллективного владения кодом
На основе результатов тестирования разработчики включают в очередную итерацию работу над ошибками. Вообще, следует помнить, что тестирование — один из краеугольных камней ХР.
Все коды в проекте создаются парами программистов, работающими за одним компьютером. Парное программирование приводит к повышению качества без дополнительных затрат времени. А это, в свою очередь, уменьшает расходы на будущее сопровождение программной системы.
Оптимальный вариант для парной работы — одновременно сидеть за компьютером, передавая друг другу клавиатуру и мышь. Пока один человек набирает текст и думает (тактически) о создаваемом методе, второй думает (стратегически) о размещении метода в классе.
Во время очередной итерации всех сотрудников перемещают на новые участки работы. Такие перемещения помогают устранить изоляцию знаний и «узкие места». Особенно полезна смена одного из разработчиков при парном программировании.
Замечено, что программисты очень консервативны. Они продолжают использовать код, который трудно сопровождать, только потому, что он все еще работает. Боязнь модификации кода у них в крови. Это приводит к предельному понижению эффективности систем. В ХР считают, что код нужно постоянно обновлять — удалять лишние части, убирать ненужную функциональность. Этот процесс называют реорганизацией кода (refactoring). Поощряется безжалостная реорганизация, сохраняющая простоту проектных решений. Реорганизация поддерживает прозрачность и целостность кода, обеспечивает его легкое понимание, исправление и расширение. На реорганизацию уходит значительно меньше времени, чем на сопровождение устаревшего кода. Увы, нет ничего вечного — когда-то отличный модуль теперь может быть совершенно не нужен.
И еще одна составляющая коллективного владения кодом — непрерывная интеграция.
Без последовательной и частой интеграции результатов в систему разработчики не могут быть уверены в правильности своих действий. Кроме того, трудно вовремя оценить качество выполненных фрагментов проекта и внести необходимые коррективы.
По возможности ХР-разработчики должны интегрировать и публично отображать, демонстрировать код каждые несколько часов. Интеграция позволяет объединить усилия отдельных пар и стимулирует повторное использование кода.
