- •Класифікація моделей систем. Роль інструментальної моделі у проектуванні програмного забезпечення.
- •Сучасні підходи до імітаційного моделювання, їх застосування у галузі «Програмна інженерія». Дискретно-подієве та агентне моделювання.
- •Компоненты системы дискретно-событийного моделирования
- •Список событий
- •Мета та задачі програмного проекту, вимоги до пз. Роль вимог у створенні надійного (відмовостійкого) програмного забезпечення.
- •Модель програмного забезпечення, етапи та особливості побудови моделі.
- •Модель зрілості процесів організації, модель cmmі, способи та методи cmmі у вдосконаленні бізнес-процесів розробки пз.
- •Моделі розробки програмного забезпечення. Модель водоспаду та ітеративна модель, застосування елементів даних моделей у сучасних методологіях розробки пз.
- •Моделі розробки програмного забезпечення. Методологія rup – загальна модель. Конус операційних маршрутів програмного проекту.
- •Моделі розробки програмного забезпечення. Методологія OpenUp.
- •Моделі розробки програмного забезпечення. Методології Microsoft Solutions Framework (msf), етапи управління великими програмними проектами.
- •Моделі розробки програмного забезпечення. Методологія fdd, Extreme Programming (xp).
- •Архітектура програмного проекту, керована моделями. Концепція mda.
- •Складові Model Driven Architecture, їх призначення.
- •Моделі розробки програмного забезпечення. Гнучкі методології розробки пз (Agile software development). Методологія Scrum. Ідея ефективного планування робочого навантаження учасників проекту.
- •Роли в скрам-процессе[править | править вики-текст]
- •Основные роли (Core roles) в методологии скрам («Свиньи»)[править | править вики-текст]
- •Дополнительные роли (Ancillary roles) в методологии скрам («Куры»)[править | править вики-текст]
- •Гнучка методологія розробки програмного забезпечення (Agile software development). Основні ідеї Agile.
- •Класифікація програмних проектів за управлінням.
- •Теорія систем. Дослідження рівноважних і нерівноважних систем. Важливість сучасного підходу, що використовується в теорії систем, для програмних проектів.
- •Теорія систем.
- •Теорія процесів. Формальний опис процесів. Специфікація процесу.
- •Теорія процесів. Поняття процесу, основні операції на процесах. Моделювання процесів.
- •Абстрактна та структурна теорії автоматів, їх особливості та приклади застосування.
- •Абстрактний автомат, визначення. Класифікація абстрактних автоматів.
- •Цифровий автомат, загальна структура та способи опису.
- •Динамічне моделювання паралельних програмних систем. Мережа Петрі, загальне визначення.
- •Класифікація мереж Петрі, основні інтерпретації, їх коротка характеристика.
- •Синхронні та асинхронні паралельні процеси, особливості їх моделювання.
- •Паралельний алгоритм, його відмінність від послідовного алгоритму. Моделювання паралельних алгоритмів.
- •Основні елементи мереж Петрі. Способи представлення мереж Петрі.
- •Динамічне та квазідинамічне моделювання програмних систем з паралелізмом. Методологія Business Process Modeling (на основі стандартів idef).
- •Цілі моделювання бізнес-процесів[ред. • ред. Код]
- •Використання[ред. • ред. Код]
- •Історія[ред. • ред. Код]
- •Зовнішнє проектування програмних систем. Принцип концептуальної цілісності.
- •Моделювання програмних систем. Uml-діаграми. Еволюція моделі програмної системи.
- •Нотація[ред. • ред. Код]
- •Діаграми Хареля[ред. • ред. Код]
- •Група uml-діаграм для побудови та уточнення архітектури програмної системи.
- •Докладніше[ред. • ред. Код]
- •Деталізоване проектування пс. Діаграми бізнес-класів та класів.
- •Зв'язки[ред. • ред. Код]
- •Асоціації[ред. • ред. Код]
- •Агрегація[ред. • ред. Код]
- •Композиція[ред. • ред. Код]
- •Відмінності між композицією і агрегацією[ред. • ред. Код]
- •Наслідування
- •Група uml-діаграм для опису поведінки програмної системи.
- •Група uml-діаграм для відображення взаємодії програмних компонентів проектованої системи.
- •Опис[ред. • ред. Код]
- •Метод Model Checking. Загальна характеристика методу.
- •Инструменты[править | править вики-текст]
- •Метод Model Checking. Темпоральні логіки.
- •Приклад[ред. • ред. Код]
- •Темпоральні логіки[ред. • ред. Код]
- •Структури Кріпке. Загальний алгоритм роботи.
- •Формальное определение[править | править вики-текст]
- •Model Checking. Алгоритм методу для ltl та ctl.
- •Середовище Simulink. Формування та імітація функціонування динамічних систем.
Приклад[ред. • ред. Код]
Розглянемо твердження: "Я голодний". Хоча зміст виразу не змінюється з часом, його істинність може змінитися. Твердження в конкретний момент часу може бути істинним, або хибним, але не одночасно. На противагу нетемпоральним логікам, де значення тверджень не змінюються з часом, в темпоральної логіці значення залежить від того, коли воно перевіряється. Темпоральна логіка дозволяє висловити затвердження типу "Я завжди голодний", "Я іноді голодний" або "Я голодний, поки я не поїм".
Темпоральні логіки часто застосовуються для вираження вимог формальної верифікації. Наприклад, властивості типу "Якщо надійшов запит, то на нього обов'язково прийде відповідь" або "Функція викликається не більше одного разу за обчислення" зручно формулювати за допомогою темпоральої логіки. Для перевірки таких властивостей використовуються різні автомати, наприклад, автомати Бюхи для перевірки властивостей, виражених логікою лінійного часу LTL.
Темпоральні логіки[ред. • ред. Код]
Відомі такі темпоральні логіки:
Інтервальна темпоральна логіка
μ-числення
CTL *
Логіка лінійного часу LTL
Логіка дерев обчислень CTL
Структури Кріпке. Загальний алгоритм роботи.
Модель Крипке (англ. Kripke structure) — это один из вариантов недетерминированного конечного автомата, который был предложен Солом Крипке. Этот вид НКА применяется при проверке моделeй для представления поведения системы.
Модель Крипке является простой абстрактной машиной, позволяющей описать идеи вычислительной машины без добавления особых сложностей. Модель представляется ориентированным графом, вершины которого описывают достижимые состояния системы, а ребра — переходы из состояния в состояние.
Функция пометок сопоставляет каждой вершине множество свойств, которые выполняются в соответствующем состоянии.
Формальное определение[править | править вики-текст]
Пусть
множество атомарных
высказываний (булевых
выражений над множеством переменных,
констант и предикатных символов). Моделью
Крипке[1] назовем
четверку
состоящую
из:
конечного множества состояний ;
множества начальных состояний
;отношения перехода
,
где
такое,
что
;функции пометок .
Условие накладываемое на отношение R утверждает, что каждое состояние имеет следующее. Если требуется эмулировать взаимную блокировку, в модель Крипке необходимо просто добавить ребро из состояния блокировки в себя.
Функция пометок L для каждого состояния s ∈ S определяет множество L(s) всех атомарных утверждений верных в s.
Model Checking. Алгоритм методу для ltl та ctl.
Современная темпоральная логика линейного времени (LTL, Linear Time Logic) является наследницей временной логики Tense Logic Артура Прайора. LTL разработана израильским ученым Амиром Пнуэли для спецификации свойств параллельных технических систем. За разработку этой логики и выделение специального класса программ, реагирующих на внешние события (reactive systems) в 1966 г. Амир Пнуэли был награжден премией Тьюринга.
В LTL максимально упрощены все включенные в нее концепции.
Во-первых, в LTL темпоральными операторами расширена простейшая логика высказываний, формулы которой строятся из конечного числа атомарных предикатов (утверждений) и булевых операций над ними.
Определение 2 (атомарный предикат). Атомарный предикат (атомарное утверждение) — это утверждение, которое может принимать истинное или ложное значение, от структуры1 которого мы абстрагируемся.
Во-вторых, в новую логику включено минимальное число темпоральных операторов, которые определяют характеристики истинности высказываний, упорядоченных во времени. Таких операторов только два, U и X. Логика LTL не включает темпоральных операторов прошлого. Основания для этого очевидны: прошлое для технических систем менее важно, чем их будущее поведение, начинающееся с момента их включения, запуска.
В качестве интерпретации формул темпоральной логики рассматривается дискретная во времени бесконечная линейная направленная в будущее последовательность "миров", в каждом из которых существует своя интерпретация атомарных утверждений. Иными словами, формулы LTL принимают истинное или ложное значение на последовательности миров, и в каждом из миров для всех введенных атомарных утверждений определены свои конкретные истинностные значения. Такой взгляд на изменчивость во времени значения истинности атомарных утверждений (атомарных предикатов) имел еще Аристотель, который говорил, что "утверждения и мнения" могут иметь разные значения истинности в зависимости от моментов, в которые они делаются, отражая изменения в объектах, свойства которых они представляют.
Направленность последовательности миров от прошлого к будущему позволяет проводить рассуждения об относительном времени, в терминах "до" и "после".
Логика Вычисление дерево (CTL) является ветвление времени логика, это означает, что его модель времени является древовидная структура, в которой будущее не определено; Есть разные пути в будущем, любой из которых может быть фактический путь, который реализуется. Он используется в формальной верификациипрограммных или аппаратных артефактов, как правило, программных приложений, известных как модели шашки, которые определяют, если данное артефакт обладаетбезопасности или живучести свойства. Например, CTL можно указать, что, когда некоторое начальное условие (например, все программные переменные положительны или нет машин на шоссе не оседлать две полосы), то все возможные казни программы избежать некоторых нежелательных состояние (например, деление на ноль или две машины, сталкивающиеся на шоссе). В этом примере, свойство безопасности может быть проверена с помощью модели проверки, который исследует все возможные переходы из состояний, удовлетворяющих программы начального условия и гарантирует, что все такие казни удовлетворяет свойству. Логика Вычисление дерево в классе временных логик, который включает линейную временной логики (LTL). Хотя есть свойства выражаются только в одной из CTL и LTL, все свойства выражаются либо логики также может быть выражено в CTL *.
