- •1.Предпосылки возникновения объектно-ориентированного подхода
- •2.Жизненный цикл программного обеспечения
- •2.1.Стандартные модели жизненного цикла
- •2.1.1.Этапы жизненного цикла
- •2.1.2.Модели жизненного цикла
- •2.2.Объектно-ориентированные модели жизненного цикла
- •2.3.Жизненный цикл uml ( Rational Objectory Process )
- •3.Концепции объектно-ориентированного подхода к разработке больших программных систем.
- •3.1.Инкапсуляция
- •3.2.Наследование
- •3.3.Полиморфизм
- •Вариант 1:
- •Вариант 2:
- •3.4.Объекты и экземпляры объектов
- •3.5.Варианты наследования
- •4.Достоинства и недостатки объектно-ориентированного подхода
- •4.1.Преимущества объектно-ориентированного подхода
- •4.2.Недостатки объектно-ориентированного подхода
- •5.Объектно-ориентированный анализ
- •Ооа состоит из пяти главных шагов:
- •5.1.Схема предметной области
- •5.2.Схема объектов
- •5.3.Схема структуры
- •5.4.Схема атрибутов
- •5.5.Схема методов
- •5.6.Контроль корректности
- •Для каждого объекта в схеме объектов:
- •Для структуры:
- •6.Объектно-ориентированное проектирование
- •6.1.Диаграмма классов
- •6.2.Категории классов
- •6.3.Шаблоны для диаграммы классов
- •6.4.Диаграмма объектов
- •6.5.Диаграмма переходов
- •7.Универсальный язык моделирования ( Unified Modeling Language uml )
- •7.1.Пакеты, как средство работы с большими проектами
- •7.2.Диаграммы классов и объектов
- •7.2.1.Классы
- •7.2.2.Интерфейсы
- •7.2.3.Отношения между классами Двухместная связь ( Binary Association )
- •Класс, описывающий связь
- •Композиция, Сборка.
- •Обобщение
- •Зависимость ( Dependency )
- •7.2.4.Пример диаграммы классов
- •7.3.Диаграммы использования
- •Диаграмма состоит из следующих элементов:
- •Выделены следующие виды связей:
- •7.4.Диаграммы последовательностей
- •7.5.Диаграммы сотрудничества
- •7.6.Диаграммы состояний
- •7.6.1.Состояния
- •7.6.2.События
- •7.6.3.Простые переходы между состояниями
- •7.6.4.Составные переходы между состояниями
- •7.6.5.Вложенные автоматы
- •7.7.Диаграммы действий
- •7.7.5.Отношения между действиями и объектами
- •7.7.6.Специальные символы
- •7.8.Диаграммы реализации
- •7.8.1.Диаграммы компонентов
- •7.8.2.Диаграммы развертывания
- •8.Стиль разработки объектно-ориентированных проектов
- •8.1.Общие правила оформления классов
- •8.1.1.Составление атрибутов
- •8.1.2.Необходимое и достаточное количество свойств
- •8.1.3.Конструкторы
- •8.1.4.Независимость от системных библиотек и реализации
- •8.2.Наследование
- •8.2.1.Наследование атрибутов
- •8.2.2.Наследование методов поведения
- •8.3.Необходимые и достаточные свойства классов
- •8.4.Наследование и использование
- •9.Инструментальные средства объектно-ориентированной разработки программных систем
- •9.1.Обзор объектно-ориентированных инструментальных средств
- •9.2.Объектно-ориентированное case средство Rational Rose
- •9.2.1.Принципы разработки программных систем в Rational Rose
- •9.2.2.Проектирование программных средств
- •9.2.3.Построение и сопровождение системы
- •9.2.4.Поддержка этапов разработки
- •9.2.5.Достоинства и недостатки Rational Rose
- •10.Тестирование объектно-ориентированных программных систем
- •10.1.Особенности тестирования объектно-ориентированных программных систем
- •10.2.Методы тестирования объектно-ориентированных систем
2.1.2.Модели жизненного цикла
Исторически, в ходе эволюционного развития теории проектирования программного обеспечения и по мере его усложнения, сложились три основные модели жизненного цикла. Эти модели выражают последовательность этапов жизненного цикла ПО.
Первой, по времени появления, и самой распространенной являлась каскадная модель (рис. 2.1):
Рис. 2.1. Каскадная модель жизненного цикла
Каскадная Модель предполагает следующие свойства взаимодействия этапов:
модель состоит из последовательно расположенных этапов,
каждый этап полностью заканчивается до того как начнется следующий,
этапы не перекрываются во времени, т.е. следующий этап не начинается пока не завершится предыдущий,
возврат к предыдущим этапам не предусматривается или крайне ограничен,
результат появляется только в конце разработки.
Выявление и устранение ошибок в такой модели производится только на стадии тестирования, которая может растянуться во времени, или, вообще ни когда не завершиться.
Следующим шагом явилась итерационная модель, известная также, как поэтапная модель с промежуточным контролем. Это модель разработки ПО с обратными связями между этапами. Проверки и корректировки разрабатываемой ИС проводятся на каждом из этапов, что позволяет существенно снизить трудоемкость отладки по сравнению с каскадной моделью. Итерационность модели проявляется в обработке ошибок выявленных промежуточным контролем. Если на каком-либо из этапов в ходе промежуточной проверки обнаружилась ошибка, допущенная на более ранней стадии разработки, работы этапа, повлекшего ошибку, необходимо провести повторно. При этом анализируются причины ошибки и корректируются, по необходимости, исходные данные этапа или перечень проводимых работ.
В ходе работ над системой могут измениться начальные требования, и в этом случае итерационная модель может оказаться неэффективной.
Спиральная модель поддерживает итерации поэтапной модели, но особое внимание уделяется начальным этапам проектирования: анализу требований, проектированию спецификаций, предварительному проектированию и детальному проектированию. Каждый виток спирали соответствует поэтапной модели создания фрагмента или версии ПО, уточняются цели и требования к ПО, оценивается качество разработанного фрагмента или версии ПО и планируются работы следующего витка. Таким образом, углубляются и конкретизируются все детали проектируемого ПО и в результате получается вариант, который удовлетворяет всем требованиям заказчика.
2.2.Объектно-ориентированные модели жизненного цикла
Сначала появилось объектно-ориентированное программирование и только затем объектно-ориентированное проектирование. Таким образом, применение методологии началось с этапа кодирования. Ранние этапы описания предметной области и разработки архитектуры системы не поддерживались. Первые варианты применения объектно-ориентированной методологии в большой степени являлись чистым повторением принципов объектно-ориентированного программирования. Такие вопросы как декомпозиция предметной области, спецификация требования, интерфейс с пользователем не рассматривались. Но успехи объектно-ориентированного программирования заставили распространить новую технологию на весь жизненный цикл.
Объектно-ориентированная методология должна покрывать весь жизненный цикл для того чтобы использовать все преимущества подхода не только на этапе кодирования, но и на более ранних этапах. Таким образом, это должна быть методология, включающая в себя следующие компоненты:
модель жизненного цикла,
действия,
нотация языка.
