Конвейер – разновидности
• Пакетная обработка (batch processing)
F1
F2
F3
F4
F5 
• Замкнутый цикл управления (closed-loop control)
F2
F5
F6 
F1
F3 
F4
F7 
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
11 |
Конвейер – варианты работы компонентов
• Фильтры |
Filter 1 |
|
||
|
|
send |
||
• Проталкивающие (push) |
|
|
||
|
|
data |
||
|
|
|
||
|
|
|
|
|
•Вытягивающие (pull)
•Синхронизующие каналы для разнотипных фильтров
Filter 2 |
|
Filter 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
process |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
data |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
send |
|
|
|
|
Filter 1 |
|
|
Filter 2 |
|
|
Filter 3 |
|||||||||
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
data |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
get data |
|
|
|
|
get data |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
process |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Filter 1 |
|
Pipe |
|
|
Filter 2 |
|
||||||||||||
|
|
|
|
process |
|
|
|
|
read |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data |
|
|
|
|
data |
|
|
|
|
|||||
|
|
|
|
write |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
data |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
process |
|
|
|
|
|
|
|
|
|
|
process |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
data |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
write |
|
|
|
|
read |
|
|
|
data |
|||||
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
data |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
data |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
12 |
Хранилище – разновидности
• Репозиторий |
|
|
T |
|
|
• Выделяются такие типы компонентов |
|
|
|
|
|
I |
|
R |
O |
||
|
|
||||
•Репозиторий – хранилище данных
•Обработчики – получатели данных
•Обработчики – потребители данных
•Обработчики – преобразователи данных
•Порядок работы обработчиков определен некоторой процедурой (и ее параметрами), не зависит от текущего состояния репозитория
•Классная доска
•Включение/выключение обработчиков зависит от шаблонов данных в репозитории
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
13 |
Интерактивные системы – разновидности
• Model-View-Controller |
C |
||
• |
Компоненты делятся на три вида |
M |
|
V |
|||
|
• Модель/данные – хранит определенный набор данных |
||
|
|
||
|
• Вид/представление – реализует определенное представление данных в UI |
||
|
• Контроллер – реализует команды по модификации данных и связанного |
||
представления
• Возможно «слипание» VC – Document-View
• Presentation-Abstraction-Control
• Компоненты MVC для одного представления объединяются в один агент, его внешний интерфейс совпадает с контроллером
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
14 |
Интерпретатор
•Используется разбиение данных на правила/процедуры работы и параметры/данные для непосредственной обработки
•Выделяются компоненты
•Набор правил/программа (rules)
•Входные данные/текущее состояние программы (data)
•Состояние интерпретатора (interpreter state)
•Интерпретатор/движок (engine)
D R
E
S
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
15 |
Образцы анализа
•Образцы организации групп связанных понятий в виде элементов программ (классов, интерфейсов, и пр.)
•Используются чаще в ОО моделях предметных областей
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
16 |
Пример образца анализа – наблюдения
Object
PhenomType
Области использования
•Научные наблюдения
•Медицина
•Финансы
Observation
Time
from
TimePnt
Interval to
CatObservtn 
Measurement
Quantity
Number
Phenomenon |
|
|
|
|
|
to |
|
|
|
|
|
Unit |
|
Convert |
|||
|
|
|
|
|
||||
|
|
|
|
|
from |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
direct |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PrimeUn |
CompUn |
|||||
inverse
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
17 |
Образцы проектирования
•Типовые решения для задач организации компонентов в рамках отдельных групп/подсистем
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
18 |
Пример – подписчик-издатель (наблюдатель)
Publisher-subscriber, observer, listener, dependents
•Используется для организации реагирования многих компонентов на события, связанные с одним
|
|
observers |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Publisher |
AbsSubscriber |
|
|
Publisher |
|
|
Subscriber1 |
|
|
Subscriber1 |
||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
attach(..) |
|
|
update() |
|
|
|
|
|
|
|
notify() |
|
|
|
|
|
|
|
|
|||
|
detach(..) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
O |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
notify() |
|
|
|
|
|
|
|
|
|
|
O |
|
update() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
O |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
O |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
Subscriber1 |
|
Subscriber2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
update() |
|
|
|
|
|
|
|
|
|
При большом количестве издателей и |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
O |
|
|
|
|
get_data() |
O |
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
подписчиков, для управления их связями и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
упорядочивания обновлений вводится |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
change manager |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
19 |
Идиомы
•Типовые решения по организации кода в рамках отдельных компонентов или двух-трех тесно связанных компонентов
•Зависят от используемого языка или группы языков
•Часто превращаются в синтаксические конструкции при развитии языков
•Таблицы виртуальных методов для поддержки перегрузки
•Свойства и обработчики событий как специальные методы
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
20 |
