- •Класифікація моделей систем. Роль інструментальної моделі у проектуванні програмного забезпечення.
- •Сучасні підходи до імітаційного моделювання, їх застосування у галузі «Програмна інженерія». Дискретно-подієве та агентне моделювання.
- •Компоненты системы дискретно-событийного моделирования
- •Список событий
- •Мета та задачі програмного проекту, вимоги до пз. Роль вимог у створенні надійного (відмовостійкого) програмного забезпечення.
- •Модель програмного забезпечення, етапи та особливості побудови моделі.
- •Модель зрілості процесів організації, модель 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. Формування та імітація функціонування динамічних систем.
Моделі розробки програмного забезпечення. Методологія fdd, Extreme Programming (xp).
7. FDD (Feature Driven Development) – функціонально-орієнтована розробка. Використовуване в FDD поняття функції чи властивості (feature) системи достатньо близько до поняття прецеденту використання, що використовується в RUP, істотна відмінність – це додаткове обмеження: «кожна функція має допускати реалізацію не більш, ніж за два тижні». Тобто якщо сценарій використання достатньо малий, його можна вважати функцією. Якщо ж великий, то його треба розбити на кілька відносно незалежних функцій.
FDD передбачає п‘ять процесів, останні два з яких повторюються для кожної функції:
Розробка загальної моделі;
Складання списку необхідних функцій системи;
Планування роботи над кожною функцією;
Проектування функцій;
Конструювання функцій.
Розробники в FDD поділяються на «хазяїв класів» та «головних програмістів». Головні програмісти залучають хазяїв задіяних класів до роботи над черговою властивістю. Робота над проектом передбачає часті зборки та ділиться на ітерації, кожна з яких передбачає реалізацію певного набору функцій.
Нажаль, такі області, як забезпечення якості, оцінка ризиків дана модель обходить стороною. FDD підходить для невеликих проектів, термін реалізації яких складає кілька місяців. Для довгострокових проектів, з терміном виробництва рік чи більше, бажано обирати іншу, більш формалізовану модель.
5. Модель екстремального програмування (XP). Extreme Programming – екстремальне програмування – є найбільш відомим з гнучких методологій. Вона будується на 12 принципах, які можна об‘єднати у 4 групи [1]:
1) Короткий цикл зворотного зв‘язку:
Розробка через тестування
Гра в планування
Замовник завжди поряд
Парне програмування
2) Неперервний, а не пакетний процес:
Неперервна інтеграція
Рефакторінг
Часті невеликі релізи
3) Розуміння, що поділяється всіма
Простота
Метафора системи
Колективне володіння кодом чи вибраними шаблонами проектування
Стандарт кодування
4) Соціальна захищеність програміста
40-годинний робочий тиждень
XP, без сумніву, дуже популярне і дозволяє розробляти проекти достатньо успішно, але тільки в ідеальному варіанті. В реальності все набагато складніше [1]:
замовник, як правило, буває доступний дуже обмежений час, і він не може присвячувати роботі в проекті стільки ж часу, скільки програміст чи менеджер. Це значить, що отримання відгуку та уточнення вимог будуть проходити зі значною затримкою.
Рефакторінг – це не панацея. Зміна існуючого коду може потребувати значно більше часу, чим розробка нового. Програміст може витрачати багато часу на покращення того, що вже є, а не на створення нового функціоналу.
Колективне володіння кодом — ще один спірний момент. За кожен клас має відповідати тільки один розробник: при колективному володінні можливі неочікувані правки, і клас стане працювати не так, як було заплановано розробником класу.
Колективне володіння кодом, і парне програмування передбачає витрати на вивчення коду іншого розробника, але про них звичайно ніде не згадується: вважається, що для цього достатньо всім програмістам знаходитися в одній кімнаті і час від часу обмінюватися репліками. Ця позиція не має якихось строгих обґрунтувань, і зовсім немає впевненості, що такого обміну інформацією буде достатньо. Навіть якщо у організації прийняті стандарти кодування і вони строго виконуються, вивчення чужого коду може займати велику кількість часу.
