- •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.Методы тестирования объектно-ориентированных систем
1.Предпосылки возникновения объектно-ориентированного подхода
Рассмотрим тенденцию развития какого-либо программного продукта за последние 15 лет. Возьмем в качестве примера, компилятор Pascal фирмы Borland. В 1984 году появился компилятор версии 3.0, дистрибутив которого занимал 37 Кб вместе со всеми необходимыми библиотеками ( включая возможность работы с графикой ). Последняя версия компилятора - Delphi 3.0, дистрибутив которого в простейшем варианте занимает 100 Мб. Т.е. размер программы вырос примерно в 2700 раз за 15 лет. Аналогичную картину можно наблюдать на любом другом программном средстве.
В этой связи можно обратить внимание на следующие две особенности:
во-первых, размер дистрибутива растет в геометрической прогрессии,
во-вторых, в геометрической прогрессии сокращаются сроки между появлением новых версий.
Эти две особенности характеризуют сегодняшнее состояние дел в области разработки программного обеспечения Сроки разработки сверхбольших программных систем сократились до одного года. За такие короткие сроки создавать программы таких объемов можно только при грамотном повторном использовании уже сделанных разработок и, применяя технологии, принципиально новые по отношению к структурному программированию. Такой технологией стал объектно-ориентированный подход, который позволяет создавать проекты или программы с возможностью повторного использования и модификации. Он сложился на основе многолетней практики и вобрал в себя лучшие достижения в технологии программирования. Эти достижения можно проследить по следующим основным этапам:
машинные коды,
ассемблеры,
языки высокого уровня - FORTRAN,
структурное программирование - С,
абстрактные типы, модули и пакеты в ADA,
объектно-ориентированное программирование С++.
Каждый из перечисленных этапов позволял выйти на качественно новый уровень разработки программного обеспечения. Объектно-ориентированный подход явился логическим продолжением всех предыдущих и таким же революционным как и все предшествующие.
2.Жизненный цикл программного обеспечения
В основе деятельности по созданию и использованию программного обеспечения лежит понятие жизненного цикла. Жизненный цикл является моделью создания и использования программного обеспечения, отражающей его различные состояния, начиная с момента возникновения необходимости в данном ПО и заканчивая моментом его полного выхода из употребления у пользователей.
Модель жизненного цикла включает в себя набор этапов и связей между ними. Дается детальное описание действий, моделей и результатов каждого этапа. Может быть предложено несколько моделей жизненного цикла, каждая из которых определяет различную методологию создания систем.
2.1.Стандартные модели жизненного цикла
2.1.1.Этапы жизненного цикла
Традиционно, во всех стандартных моделях, выделяют следующие основные этапы жизненного цикла:
стратегическое планирование;
анализ требований;
проектирование (предварительное и детальное);
кодирование (программирование);
тестирование и отладка;
эксплуатация и сопровождение.
Каждому этапу соответствуют определенный результат и набор документации, являющейся исходными данными для следующего этапа. В заключение каждого этапа производится верификация документов и решений с целью проверки их соответствия первоначальным требованиям заказчика.
Рассмотрим подробнее отдельные этапы жизненного цикла.
Этапы стратегического планирования и анализа используются для определения самых общих требований к программной системе. Данные этапы предполагают решение следующих задач:
определение целесообразности разработки и сравнение с аналогами,
определение необходимых ресурсов для решения задачи,
спецификация требований к системе в виде “что она должна делать”, но не в виде “как это реализовать”,
проверка корректности и реализуемости требований.
На этапе проектирования создается структура будущей программой системы
Можно определить следующие фазы проектирования:
проектирование архитектуры, включает в себя определение состава подсистем,
спецификация подсистем, определяет спецификацию каждой подсистемы,
проектирование интерфейса, определяет интерфейс каждой подсистемы, т.е. метод взаимодействия данной подсистемы с другими,
проектирование компонентов, каждая подсистема разделяется на компоненты,
проектирование структур данных, определяет где и как хранятся данные,
проектирование алгоритмов, определяются алгоритмы обработки данных.
Реализация подразумевает выбор языка программирования и составление текста программы ( кодирование ), а также, возможно, выполнение тестирования и отладки отдельных фрагментов.
Этап тестирования и отладки включает выполнение комплексного тестирования всей программной системы специальной группой и исправление ошибок
На этапе сопровождения и эксплуатации программная система сдается в эксплуатацию, происходит обслуживание пользователей, возможно устранение незначительных ошибок ( сейчас это делается повсеместно с помощью распространения так называемых patсh - файлов ).
