Архітектура і проєктування програмного забезпечення

Спеціальність: Інженерія програмного забезпечення
Код дисципліни: 6.121.00.O.036
Кількість кредитів: 4.00
Кафедра: Програмне забезпечення
Лектор: к.пед.н., доцент Фоменко А.В.
Семестр: 7 семестр
Форма навчання: денна
Мета вивчення дисципліни: На основі вивчення теоретичних основ з моделювання, розробки та проектування на основі шаблонів та каркасів програмного забезпечення, а також вивчення основних стандартів, вимог та готових конструкцій, які використовуються при розробці та проектуванні великих програмних додатків, студенти набувають практичних навичок створення архітектури та детального проектування програмних продуктів з використанням сучасних методів та засобів.
Завдання: Вивчення навчальної дисципліни передбачає формування у студентів необхідних компетентностей: Інтегральна компетентність: ІНТ Здатність розв’язувати складні спеціалізовані завдання або практичні проблеми інженерії програмного забезпечення, що характеризуються комплексністю та невизначеністю умов, із застосуванням теорій та методів інформаційних технологій. загальні компетентності: ? К02. Здатність застосовувати знання у практичних ситуаціях. фахові компетентності: ? СК2. Здатність приймати участь у проектуванні програмного забезпечення, включаючи проведення моделювання (формальний опис) його структури, поведінки та процесів функціонування. ? CК3. Здатність розробляти архітектури, модулі та компоненти програмних систем. ? CК5. Здатність дотримуватися специфікацій, стандартів, правил і рекомендацій в професійній галузі при реалізації процесів життєвого циклу. ? СК13. Здатність обґрунтовано обирати та освоювати інструментарій з розробки та супроводження програмного забезпечення.
Результати навчання: Результати навчання відповідно до освітньої програми, методи навчання і викладання, методи оцінювання досягнення результатів навчання У результаті вивчення навчальної дисципліни студент повинен бути здатним продемонструвати такі результати навчання: Результати навчання ПР03. Знати основні процеси, фази та ітерації життєвого циклу програмного забезпечення. ПР04. Знати і застосовувати професійні стандарти і інші нормативно-правові документи в галузі інженерії програмного забезпечення. ПР05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення. ПР07. Знати і застосовувати на практиці фундаментальні концепції, парадигми і основні принципи функціонування мовних, інструментальних і обчислювальних засобів інженерії програмного забезпечення ПР10. Проводити передпроектне обстеження предметної області, системний аналіз об’єкта проектування. ПР11. Вибирати вихідні дані для проектування, керуючись формальними методами опису вимог та моделювання. ПР12. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення. ПР14. Застосовувати на практиці інструментальні програмні засоби доменного аналізу, проектування, тестування, візуалізації, вимірювань та документування програмного забезпечення. ПР15. Мотивовано обирати мови програмування та технології розробки для розв’язання завдань створення і супроводження програмного забезпечення ПР16. Мати навички командної розробки, погодження, оформлення і випуску всіх видів програмної документації. ПР17. Вміти застосовувати методи компонентної розробки програмного забезпечення. ПР18. Знати та вміти застосовувати інформаційні технології обробки, зберігання та пере5дачі даних. ПР19. Знати та вміти застосовувати методи верифікації та валідації програмного забезпечення. ПР23. Вміти документувати та презентувати результати розробки програмного забезпечення. Знати: • - поняття архітектури програмних засобів, підходи до її аналізу та побудови; • - основні існуючі архітектури програмних засобів, їх характеристики та особливості, а також застосування архитектур на практиці; • - мету та задачі проектування програмних засобів; • - мову моделювання UML • Знати типові архітектурні стилі та рішення для створення ПЗ, особливості їх застосування; • Володіти методами об’єктно-орієнтованого проектування програмних систем, а також знати шаблони об’єктно-орієнтованого проектування; • Знати загальну архітектуру корпоративних систем на базі платформ Java і .NET та вміти проектувати корпоративне ПЗ для цих платформ; • Вміти документувати архітектуру та дизайн програмних систем з використанням стандартних засобів та нотацій. Вміти: • користуватись методами структурного та об'єктно-орієнтованого проектування програмного забезпечення та застосовувати ці методи на практиці; • володіти засобами проектування програмного забезпечення; • використовувати мову моделювання UML для проектування програмного забезпечення; • користуватися архітектурними шаблонами проектування та розуміти їх роль в програмуванні; • використовувати патерни проектування при створенні програмних продуктів.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Попередні навчальні дисципліни КР Бази даних Конструювання програмного забезпечення Супутні і наступні навчальні дисципліни Людино-машинна взаємодія
Короткий зміст навчальної програми: Розробка програмного забезпечення є складним багатоетапним процесом. Складність програмних систем вимагає створення проектної документації. Існує багато підходів до проектування архітектури програмних систем. Опанування методиками проектування програмного забезпечення дозволяє майбутньому програмісту працювати в командах по створенню складного програмного забезпечення. Метою дисципліни є освоєння сучасних методик та підходів до проектування програмних систем та формування їх архітектури. Набуття практичних вмінь та навичок з проектування програмних рішень різного масштабу та призначення на основі сучасних інформаційних технологій та програмних каркасів.
Опис: Лекційні заняття направлені на вивчення наступних тем: 1. Вступ. Роль та місце проектування в процесі розробки ПЗ. Поняття архітектури ПЗ. Зміст проектування. Software Design SWEBOK 2. Архітектури програмних систем.Поняття архітектури програмної системи. Що визначає і на що впливає архітектура. Архітектурні структури і представлення. Модульні структури. Структури "компонент і з'єднувач". Структури розподілення. Відносини між структурами. Варіанти архітектур програмних систем. Архітектура, заснована на рівнях абстракцій. Архітектури, засновані на портах. Архітектури незалежних компонентів. архітектури, засновані на потоках даних. 3. CASE системи та редактори проектування, використання для створення моделей архітектури системи. 4. Проектування програмних систем. Аналіз вимог і розробка зовнішніх специфікацій. Методологія SADT. Діаграми IDEF 0. 5. Проектування програмних систем. Методологія SADT. Діаграми DFD, IDEF3. 6. Проектування програмних систем. Методологія ARIS. Діаграми eEPC, DataFloat. 7. Проектування програмних систем. Методологія BPMN 2.0. Діаграми BPMN. 8. Проектування програмних систем. Методологія UML. Діаграми прецедентів, кооперації. 9. Проектування програмних систем. Методологія UML. Діаграми послідовності, дій. Діаграми переходів станів. 10. Об’єктно-орієнтований підхід до побудови ПЗ. Основні елементи ООП. Проектування програмних систем діаграми класів, об’єктів. 11. Проектування баз даних. Діаграми IDEF 1Х. 12. Методи об’єктно-орієнтованого аналізу та проектування. Шаблони об’єктно-орієнтованого проектування. Застосування шаблонів 13. Типові архітектурні рішення. Їх реалізація. 14. Загальна архітектура корпоративного ПЗ на платформах Java та .NET 15. Документування результатів етапу проектування. Розробка попереднього зовнішнього проекту. Процес зовнішнього проектування. Проектування взаємодії з користувачем. Підготовка зовнішніх специфікацій. На практичних заняттях студенти отримають практичні навички з проектування програмної системи методами групової роботи з наступних тем: • Розробка проекту системи та модуля системи у різних нотаціях, а саме: SADT (IDEF0, DFD, IDEF3), ARIS, BPMN 2, UML 2. • Побудова моделі баз даних DataFlow (ARIS), IDEF 1X (SADT). • Створення проектної документації та захист проекту • Розробка модулю складної системи (робота в групі) з використанням архітектурних шаблонів проектування. • Розробка графічного інтерфейсу (групова робота) та вбудова в нього свого модулю. • Захист свого модулю у проекті системи. 4.Результатом дисципліни є групова розробка проектної документації складної системи, індивідуальна розробка проекту модулю системи, розробка ПЗ, а саме модулю системи, адаптування модулю системи у загальному проекті.
Методи та критерії оцінювання: Лабораторні роботи: мінімальна оцінка 0 балів (робота є, виконана індивідуально, але не захищена), максимальна – 1,5 бали (робота є виконана повністю, всі моделі правильні, були всі необхідні пояснення). Оцінка в межах від 0 до 1,5 виставляється в залежності від кількості помилок в моделях і при відповідях на питання) Бали за проект приводяться до 45 балів за формулою: Бали за індивідуальну роботу= Отримана кількість балів / 120 * 45
Критерії оцінювання результатів навчання: Лабораторні роботи (1 роб.-1,5 бала). Всього 22,5 бала Індивідуальні завдання (захист групового проекту) 22,5 бала Іспит - 55 балів, включно: - письмова компонента - 10 балів, - усна компонента - 45 балів.
Порядок та критерії виставляння балів та оцінок: 100-88 балів - атестований з оцінкою «відмінно» - Високий рівень: здобувач освіти демонструє поглиблене володіння поняттєвим та категорійним апаратом навчальної дисципліни, системні знання, вміння і навички їх практичного застосування. Освоєні знання, вміння і навички забезпечують можливість самостійного формулювання цілей та організації навчальної діяльності, пошуку та знаходження рішень у нестандартних, нетипових навчальних і професійних ситуаціях. Здобувач освіти демонструє здатність робити узагальнення на основі критичного аналізу фактичного матеріалу, ідей, теорій і концепцій, формулювати на їх основі висновки. Його діяльності ґрунтується на зацікавленості та мотивації до саморозвитку, неперервного професійного розвитку, самостійної науково-дослідної діяльності, що реалізується за підтримки та під керівництвом викладача. 87-71 балів - атестований з оцінкою «добре» - Достатній рівень: передбачає володіння поняттєвим та категорійним апаратом навчальної дисципліни на підвищеному рівні, усвідомлене використання знань, умінь і навичок з метою розкриття суті питання. Володіння частково-структурованим комплексом знань забезпечує можливість їх застосування у знайомих ситуаціях освітнього та професійного характеру. Усвідомлюючи специфіку задач та навчальних ситуацій, здобувач освіти демонструє здатність здійснювати пошук та вибір їх розв’язання за поданим зразком, аргументувати застосування певного способу розв’язання задачі. Його діяльності ґрунтується на зацікавленості та мотивації до саморозвитку, неперервного професійного розвитку. 70-50 балів - атестований з оцінкою «задовільно» - Задовільний рівень: окреслює володіння поняттєвим та категорійним апаратом навчальної дисципліни на середньому рівні, часткове усвідомлення навчальних і професійних задач, завдань і ситуацій, знання про способи розв’язання типових задач і завдань. Здобувач освіти демонструє середній рівень умінь і навичок застосування знань на практиці, а розв’язання задач потребує допомоги, опори на зразок. В основу навчальної діяльності покладено ситуативність та евристичність, домінування мотивів обов’язку, неусвідомлене застосування можливостей для саморозвитку. 49-00 балів - атестований з оцінкою «незадовільно» - Незадовільний рівень: свідчить про елементарне володіння поняттєвим та категорійним апаратом навчальної дисципліни, загальне уявлення про зміст навчального матеріалу, часткове використання знань, умінь і навичок. В основу навчальної діяльності покладено ситуативно-прагматичний інтерес.
Рекомендована література: Навчально-методичні матеріали Навчальна дисципліна забезпечена сертифікованим навчально-методичним комплексом 8. Рекомендована література Базова 1. ЕНМК дисципліни «Архітектура та проектування програмного забезпечення». Сертифікат про визнання інформаційного ресурсу у ВС ЛП методичною працею № 04068. [Електронний ресурс]. Режим доступу: https://vns.lpnu.ua/course/view.php?id=63 2. Мартін Роберт. Чиста архітектура. Мистецтво розробки програмного забезпечення. "Фабула", 2019. - 416с. 3. Мартин Роберт. Чиста архітектура: мистецтво розробки програмного забезпечення, "Фабула", 2019. - 352с. 4. Мартин Роберт. Чистий Agile. Основи гибкости. "Питер", 2020. - 272с. 5. Мартин Роберт. - Чистий код. Створення і рефакторинг за допомогою Agile "Фабула", 2019. – 416c. 6. Software architecture : foundations, theory, and practice / Richard N. Taylor, Nenad Medvidovic, Eric M. Dashofy. - Hoboken (N.J.) : Wiley, 2010.- 425с. 7. The Software Engineering Institute (SEI) Architecture Website -architecture definitions, offers a good example. Режим доступу:http://www.sei.cmu.edu/architecture/definitions.html 8. IEEE Computer Society, IEEE Recommended Practice for Architectural Description of Software-Intensive Systems: IEEE Std 1472000. 2000. 9. Pattern Oriented Software Architecture: On Patterns and Pattern Languages / Buschmann F.Schmidt D.C.Henney K. - John Wiley & Sons, Inc, Vol. 5.- 2007. - 389с. …………………………………………………………………………………………………………… Допоміжна 1. Learn Software Architecture & Design. [Електронний ресурс]. Режим доступу: https://www.tutorialspoint.com/software_architecture_design/index.htm. 2. The Elements of UML(TM) 2.0 Style. Scott W. Ambler. Cambridge University Press, 2005 9. Інформаційні ресурси 1. Names of Classes, Structs, and Interfaces http://msdn.microsoft.com/en-us/library/ms229002.aspx 2. Code Conventions for the Java Programming Language. http://www.oracle.com/technetwork/java/codeconv-138413.html 3. Object Management Group – UML http://www.uml.org/ 4. List of Unified Modeling Language tools – Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools 5. ArgoUML – argouml.tigris.org http://argouml.tigris.org/ 6. StarUML – The Open Source UML/MDA Platform http://staruml.sourceforge.net/ 7. Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Addison-Wesley Professional, 1994. 8. Hibernate - JBoss Community http://www.hibernate.org/hibernate 9. HSQLDB http://hsqldb.org/ 10. Hibernate Tutorial http://www.vaannila.com/hibernate/hibernate-tutorial/hibernate-tutorial.html 11. ASP.NET MVC: The Official Microsoft ASP.NET Site http://www.asp.net/mvc 12. InfoQ: ASP.NET MVC Example with Northwind and Entity Framework Published http://www.infoq.com/news/2008/02/mvc-framework-example 13. ADO.NET Entity Framework http://msdn.microsoft.com/en-us/data/aa937723 14. The Official Microsoft IIS Site http://www.iis.net/ 15. Visual Web Developer 2010 Express | Microsoft Visual Studio http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-web-developer-express 16. Free Database Software | Database Applications | SQL Server Express http://www.microsoft.com/sqlserver/en/us/editions/express.aspx
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з інвалідністю на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу студентів з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою: вул. Карпінського, 2/4, І-й н.к., кімн. 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).