- •ЛЕКЦИЯ 15. SWEBOK. ОБЛАСТЬ ЗНАНИЙ «ПРОЕКТИРОВАНИЕ ПО» -
- •Источники литературы
- •Ядро знаний SWEBOK
- •Структура SWEBOK - 2004
- •Основные области SWEBOK
- •Дополнительные области SWEBOK
- •Область знаний
- •Область знаний «проектирование ПО» в SWEBOK
- •Область знаний «проектирование ПО» в SWEBOK
- •1. Основы проектирования ПО
- •1. Основы проектирования ПО
- •1.1. Общие концепции проектирования
- •Пример формулировки целей потока работ «Проектирование» в RUP
- •Цели проектирования RUP (1)
- •Цели проектирования RUP (2)
- •Цели проектирования RUP (3)
- •1. Основы проектирования ПО
- •1.2. Контекст проектирования
- •1.3. Процесс проектирования
- •Пример структуры результата проектирования (RUP)
- •1.4. Принципы (техники) проектирования ПО
- •1.4.1.Абстракция
- •1.4.3 Декомпозиция и разбиение на модули (Decomposition and Modularization)
- •1.4.2 Связность и связанность (Cohesion and Coupling)
- •Инкапсуляция/сокрытие
- •1.4.5 Разделение интерфейса и реализации (Separation of interface and implementation)
- •1.4.6 Достаточность, полнота и простота (Sufficiency, completeness and primitiviness)
- •Область знаний «проектирование ПО» в SWEBOK
- •2. Ключевые вопросы проектирования
- •2.1.Параллелизм
- •2.2. Контроль и обработка событий
- •2.3. Распределение компонентов
- •2.4 Обработка ошибок и исключительных ситуаций и обеспечение отказоустойчивости.
- •2.6 Сохраняемость данных (Data Persistence)
- •2.5 Взаимодействие и представление
- •Модель MVС (данные – представления – обработка)
- •Модель MVС (данные – представления – обработка)
- •Область знаний «проектирование ПО» в SWEBOK
- •3. Структура и архитектура программного обеспечения (Software Structure and Architecture)
- •Точки зрения
- •Архитектурные стили
- •3.3. Шаблоны проектирования
- •Классификации архитектур (архитектурных стилей)
- •Классификация Гамма - Брауде
- •Классификация архитектур Show&Garlan
1.4. Принципы (техники) проектирования ПО
1.4.1Абстракция (Abstraction)
1.4.2Связанность и связанность (Coupling and Cohesion)
1.4.3Декомпозиция и разбиение на модули (Decomposition and Modularization)
1.4.4Инкапсуляция/сокрытие информации (Encapsulation/information hiding)
1.4.5Разделение интерфейса и реализации (Separation of interface and implementation)
1.4.6Достаточность, полнота и простота (Sufficiency, completeness and primitiviness)
1.4.1.Абстракция
Процедурная абстракция (динамическая, в отношении поведения);
Абстракция данных
(статическая, в отношении информации);Абстракция контроля
(в отношении управления системой и обрабатываемой ею информации).
1.4.3 Декомпозиция и разбиение на модули (Decomposition and Modularization)
Модуль — фрагмент программного текста, являющийся строительным блоком в структуре системы. Как правило, модуль состоит из интерфейсной части и части- реализации.
Модульность — свойство системы, которая может подвергаться декомпозиции на ряд внутренне связных и слабо зависящих друг от друга модулей., каждый из которых несет свою функциональность.
1.4.2 Связность и связанность (Cohesion and Coupling)
Связность, соединение (Cohesion) модуля
– это мера зависимости его частей.
Чем выше связность модуля, тем лучше результат проектирования (тем «чернее» его ящик (Орлов))
Связанность, сцепление (Coupling) –
определяет силу связи (часто, взаимного влияния) между модулями.
Связанность — внешняя характеристика модуля, которую желательно уменьшать.
Инкапсуляция/сокрытие
информации (Encapsulation/information hiding)
Предполагает группировку и
упаковку (с точки зрения подготовки к развертыванию и эксплуатации)
элементов и внутренних деталей абстракции (то есть модели)
в отношении реализации с тем, чтобы эти детали были недоступны пользователям элементов (компонент).
1.4.5 Разделение интерфейса и реализации (Separation of interface and implementation)
Данная техника предполагает определение компонента через специфицирование интерфейса,
известного (описанного) и доступного клиентам (или другим компонентам),
от непосредственных деталей реализации.
1.4.6 Достаточность, полнота и простота (Sufficiency, completeness and primitiviness)
Этот подход подразумевает, что создаваемые программные компоненты обладают всеми необходимыми характеристиками, определенными абстракцией (моделью), но не более того.
То есть не включают функциональность, отсутствующую в модели.
Данный принципy наиблоее ярко представлен в гибких (agile) подходах к разработке ПО через метафору YAGNI
“You Aren’ t Going to Need It”, то есть “не делай этого, пока не понадобится”.
Область знаний «проектирование ПО» в SWEBOK
1.Основы проектирования
2.Ключевые вопросы проектирования
3.Структура и архитектура ПО
4.Анализ качества и оценка результатов проектирования
5.Нотации проектирования ПО
6.Стратегии и методы проектирования ПО
2. Ключевые вопросы проектирования
2.1Параллелизм (Concurrency)
2.2Контроль и обработка событий (Control and Handling of Events)
2.3Распределение компонентов (Distribution of Components)
2.4Обработка ошибок и исключительных ситуаций и обеспечение отказоустойчивости (Errors and Exception Handling and Fault Tolerance )
2.5Взаимодействие и представление (Interaction and Presentation)
2.6Сохраняемость данных (Data Persistence).
2.1.Параллелизм
Множественные потоки управления
Совместно используемые данные
Синхронизация и конкуренция процессов.