
- •1. Жизненный цикл программной системы.
- •2. Классический подход к созданию программных систем.
- •3. Понятия связности модулей и сцепления модулей.
- •4. Структурное программирование.
- •Структурное тестирование программного обеспечения
- •1. Связь процессов тестирования и процессов проектирования.
- •2. Уровни тестирования и виды тестирования.
- •3. Стратегия тестирования.
- •4. Тестирование программного модуля.
- •5. Восходящее и нисходящее тестирование.
- •6. Методы тестирования: модифицированный нисходящий, монолитный, сандвич, модифицированный сандвич.
- •7. Системное тестирование: метод функциональных диаграмм.
- •Объектно-ориентированный подход к разработке по
- •1. Абстрагирование и инкапсуляция
- •2. Модульность программных систем
- •3. Виды иерархий в программных системах.
- •4. Понятие объекта. Состояние, поведение и индивидуальность объекта.
- •5. Отношение между объектами: использование, включение.
- •6. Отношение простого наследования классов.
- •7. Добавление, замещение и уточнение методов класса при наследовании.
- •8. Отношение ассоциации между классами, включая агрегацию.
- •9. Отношение зависимости между классами, отношение реализации.
- •Шаблоны проектирования
- •1. Шаблон «Одиночка» Singleton
- •2. Шаблон «Абстрактная фабрика» Abstract Factory
- •3. Шаблон «Декоратор» Decorator
- •4. Шаблон «Стратегии» Strategy
- •5. Компоновщик.
- •6. Шаблон «Наблюдатель» Observer
- •7. Архитектурные шаблоны. Унифицированный процесс разработки по (rup)
- •1. Основные черты. Фазы и основные потоки работ.
- •2. Документ «Видения». Модель и словарь предметной области.
- •3. Функциональные и нефункциональные требования к системе. Варианты использования системы.
- •4. Прецеденты и отношения между прецедентами.
- •5. Модель анализа и классы анализа.
- •6. Архитектурное представление.
3. Виды иерархий в программных системах.
Значительное упрощение в понимании сложных задач достигается за счет образования из абстракций иерархической структуры. Определим иерархию следующим образом:
Иерархия - это упорядочение абстракций, расположение их по уровням.
Основными видами иерархических структур применительно к сложным системам являются структура классов (иерархия "is-a") и структура объектов (иерархия "part of").
Примеры иерархии: наследование. Важным элементом объектно-ориентированных систем и основным видом иерархии "is-a" является концепция наследования. Наследование означает такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, одиночное и множественное наследование). Иными словами, наследование создает такую иерархию абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. Часто подкласс достраивает или переписывает компоненты вышестоящего класса.
В наследственной иерархии общая часть структуры и поведения сосредоточена в наиболее общем суперклассе. Суперклассы при этом отражают наиболее общие, а подклассы - более специализированные абстракции, в которых члены суперкласса могут быть дополнены, модифицированы и даже скрыты. Принцип наследования позволяет упростить выражение абстракций, делает проект менее громоздким и более выразительным.
Принципы абстрагирования, инкапсуляции и иерархии находятся между собой в некоем здоровом конфликте. Абстрагирование данных создает непрозрачный барьер, скрывающий состояние и функции объекта; принцип наследования требует открыть доступ и к состоянию, и к функциям объекта для производных объектов. Для любого класса обычно существуют два вида клиентов: объекты, которые манипулируют с экземплярами данного класса, и подклассы-наследники. Существуют три способа нарушения инкапсуляции через наследование: подкласс может получить доступ к переменным экземпляра своего суперкласса, вызвать закрытую функцию и, наконец, обратиться напрямую к суперклассу своего суперкласса. В С++ интерфейс класса может быть разделен на три части: закрытую (private), видимую только для самого класса; защищенную (protected), видимую также и для подклассов; и открытую (public), видимую для всех.
Примеры иерархии: агрегация. Если иерархия "is а" определяет отношение "обобщение/ специализация", то отношение "part of" (часть) вводит иерархию агрегации.
В объектно-ориентированном программировании агрегация позволяет физически сгруппировать логически связанные структуры, а наследование с легкостью копирует эти общие группы в различные абстракции.
Время жизни агрегируемого и агрегирующего объектов (пример, колесо и автомобиль) могут не совпадать.
Выводы:
Виды иерархии в программных системах - упорядоченная по принципу старшинства система абстракций, связанных определенными отношениями. Иерархия: классов и объектов. 1) в иерархии классов м.б. несколько отношений: отношение наследования - такое отношение классов, при котором один класс использует структуру и функциональную часть одного или нескольких других классов; отношение использования. 2) Иерархия объектов строится на отношении агрегатирования - т.е. отношении объектов, при кот. один объект содержит в своем составе др. объект (его часть), возможно другого класса. Интерфейс - абстрактный класс, который содержит только объявления методов и не содержит полей. Абстракции поведения - модель внешних свойств объекта; абстрактная функция - метод класса, для которого задана сигнатура, но не задана реализация