
- •Основи програмної інженерії Тема 1. Поняття програмної інженерії. Вступ
- •Процес створення програмного забезпечення
- •Моделі технологічного процесу створення пз
- •Моделі процесу розробки по
- •Характеристики якісного пз
- •Тема 2. Види моделей систем. Поняття і класифікація вимог до програмної системи.
- •Способи запису специфікацій вимог.
- •Види моделей систем.
- •Мова моделювання uml.
- •Об'єктні моделі
- •Інструментальні case-засоби.
- •Тема 3. Поняття архітектурного проектування. Архітектурні моделі.
- •Архітектурний шаблон mvc.
- •Особливості шаблону mvc.
- •Модель проблемної сфери.
- •Тема 4. Важливі функціональні засоби мови c#. Автоматично реалізовані властивості.
- •Ініціалізатори об'єктів та колекцій.
- •Автоматичне виведення типу.
- •Анонімні типи.
- •Використання методів розширення Методи розширення
- •Застосування методів розширення до інтерфейсу
- •Створення фільтруючих методів розширення
- •Тема 5. Лямбда-вирази. Мова linq. Лямбда-вирази.
- •Мова linq.
- •Методи розширення linq.
- •Відкладені запити linq.
- •Тема 6. Створення слабо зв'язаних компонентів. Впровадження залежності.
- •Контейнери впровадження залежності.
- •Бібліотека Ninject.
- •Порядок роботи з Ninject.
- •Тема 7. Засоби доступу до даних. Технологія ado.Net.
- •Реалізація доступу до даних.
- •Робота з даними.
- •Тема 8. Тестування пз. Розробка через тестування. Автоматизоване тестування пз та його види.
- •Розробка через тестування. Робочий потік "червоний-зелений-рефакторинг".
- •Модель "організація.Дія.Твердження".
- •Використання бібліотеки Moq
- •Тема 9. Проектування інтерфейсу користувача. Інтерфейс користувача.
- •Переваги графічного інтерфейсу.
- •Процес проектування графічного інтерфейсу.
- •Принципи проектування інтерфейсів користувача.
- •Шаблони.
- •Тема 10. Основи інженерії вимог. Розробка вимог.
- •Формування і аналіз вимог.
- •Опорні точки зору.
- •Сценарії.
- •Атестація вимог.
- •Тема 11. Прототипування програмних систем. Поняття прототипування.
- •Переваги прототипування.
- •Види прототипування.
- •Технології швидкого прототипування.
- •Тема 12. Покомпонентна розробка. Компоненти і класи об'єктів.
- •Компоненти як постачальники послуг.
- •Рівні абстракції компонентів.
- •Вимоги до компонентів.
- •Тема 13. Шаблони проектування. Структурні шаблони.
- •Поняття шаблону проектування.
- •Основні елементи шаблону.
- •Механізми повторного використання.
- •Структурні шаблони проектування.
Тема 13. Шаблони проектування. Структурні шаблони.
Спроби повторно використовувати діючі компоненти постійно обмежуються конкретними рішеннями, прийнятими системними розробниками. Рішення можуть відноситись до окремих алгоритмів, що використовуються в процесі реалізації компонентів, до об'єктів і до типів даних в інтерфейсах компонентів. Якщо рішення суперечать конкретним вимогам до компонентів, то повторне використання компонентів або неможливе, або робить систему неефективною.
Один із способів вирішення даної проблеми – це повторне використання більш абстрактних структур, які не містять деталей реалізації. Перші реалізації цього підходу привели до документування і опублікування фундаментальних алгоритмів [201. Knuth D. E. The Art of Computer Programming: Fundamental Algorithms. — Reading, MA: Addison-Wesley, 1971. (Русский перевод: Кнут Д. Искусство программирования. Т. 1. Основные алгоритмы. — M.: Изд. дом "Вильямс", 2000.) ] , а потім до документування абстрактних типів даних, таких як стеки , дерева та списки [Booch G. Software Components with Ada: Structures Tools and Subsystems. — Menlo Park, CA : Benjamin Cummings, 1987.]. Пізніше такий спосіб повторного використання узагальнено в понятті патерну.
Поняття шаблону проектування.
Проектні патерни (design patterns) [Gamma E., Helm R. et aL Design Patterns: Elements of Reusable ObjectOriented Software. — Reading, MA : Addison-Wesley, 1995. (Русский перевод: Гамма Э., Хелм Р., Джонсон Р., Влассидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб. : Питер, 2001.)] з'явилися з ідей, висунутих Крістофером Александером [Alexander C., Ishikawa S. at aL A Pattern Language. — Oxford : Oxford University Press, 1977.], який запропонував зручні та ефективні узагальнені патерни розробки конкретних проектів . Патерн – це опис проблеми та методу її рішення, який дозволяє в подальшому використовувати це рішення в різних умовах. Патерн не є детальною специфікацією. Швидше, він являє собою опис, в якому акумульовані знання і досвід.
Патерн – це гарантоване вирішення загальної проблеми.
При створенні ПО проектні патерни завжди пов'язані з об'єктно-орієнтованим проектуванням. Щоб забезпечити загальність, патерни часто використовують такі об'єктно-орієнтовані поняття, як успадкування і поліморфізм. Однак загальний принцип використання патернів однаково застосовний при будь-якому підході до проектування ПЗ.
Основні елементи шаблону.
В [Gamma E., Helm R. et aL Design Patterns] визначено чотири основних елементи проектного патерну .
Змістовне ім'я, яке є посиланням на патерн.
Опис проблемної області з перерахуванням всіх ситуацій, в яких можна використовувати патерн.
Опис рішень з окремим описом різних частин рішення та їх взаємовідносин. Це не опис конкретного проекту, а шаблон проектних рішень, який можна використовувати різними способами. В описі рішень часто використовуються графічні представлення, які показують взаємини між об'єктами і класами об'єктів у даному рішенні.
Опис "вихідних" результатів – це опис результатів і компромісів, необхідних для застосування патернів. Зазвичай використовується для того, щоб допомогти розробникам оцінити конкретну ситуацію і вибрати для неї патерн, що найбільше підходить.
Часто в опис паттерна вводяться також розділи мотивації (обгрунтування корисності патерну ) і застосовності (опис ситуацій, в яких можна використовувати патерн).