Овде је описан садржај предавања за предмет Развој софтвера 2. У оквиру овог курса се проучавају поједини аспекти софтверског инжењерства, управљања пројектима и разматрају нека питања архитектуре, дизајна и имплементације софтверских система.
1. Информације о курсу презентација
1.1. Веб страна курса
1.2. Семинарски радови
1.3. Садржај курса
1.3.1. Теме које се проучавају
1.3.2. Литература
2. Карактеристике програмског језика C# делом различите од програмског језика Јава презентација
2.1. Функције
2.1.1. Именовани аргументи
2.1.2. Опционални параметри
2.1.3. Параметри out
2.1.4. Параметри ref
2.1.5. Методи проширења
2.2. Класе
2.2.1. Модификатори приступа
Модификатор public
Модификатор protected
Модификатор internal
Модификатор private
2.2.2. Превазилажење метода, витрулени методи
2.2.3. Сакривање метода наткласе, new
метод
2.2.4. Превазилажење оператора
2.2.5. Парцијалне класе
2.3. Интерфејси
2.3.1. Имплементација интерфејса
2.3.2. Експлицитна имплементација
2.4. Особине
2.4.1. Имплементација особина, поље за подршку особине
2.4.2. Сакривање особина
2.4.3. Апстрактне особине
2.4.4. Аутоматски имплементиране особине
2.5. Енумерисани типови
2.5.1. Реализација енумерисаних типова
2.5.2. Конверзија код енумерисаних типова
2.6. Генерички типови
2.6.1. Реализација генеричких типова
2.6.2. Имплементација генеричких интерфејса
2.6.3. Ограничења над генеричким типовима
2.7. Индексери
2.7.1. Реализација индексера
2.7.2. Преоптерећење индексера
2.8. Делегати
2.8.1. Реализација делегата
2.8.2. Делегати као параметри метода
2.8.3. Делегати и симултано покретање
2.8.4. Анонимни методи као делегати
2.8.5. Генерички делегати
2.8.6. Предефинисани делегати
Делегат Func
Делегат Action
Делегат Predicate
2.9. Догађаји
2.9.1. Реализација догађаја
2.9.2. Руковање догађајем
2.9.3. Параметри придружени догађају
2.10. Структуре
2.10.1. Реализација структура
2.10.2. Структуре, методи и особине
2.10.3. Структуре и догађаји
2.11. Ламбда-изрази
2.11.1. Реализација ламбда-израза
2.11.2. Ламбда-изрази и особине
2.11.3. Ламбда-изрази и делегати
2.11.4. Ламбда-изрази и догађаји
2.11.5. Ламбда-изрази и индексери
2.11.6. Ламбда изрази за иницијализацију
2.12. Торке
2.12.1. Реализација торки
2.12.2. Угњеждене торке
2.12.3. Торке и методи
2.12.4. Реализација вредносних торки
2.12.5. Вреднсоне торке и методи
2.12.6. Деконструкција код вредносних торки
2.13. Асинхроно програмирање
2.13.1. Реализација асинхроног програмирања помоћу async
, await
и класе Task
2.13.2. Синхронизација више конкурентних активности
2.14. LINQ
2.14.1. Реализација LINQ
2.14.2. LINQ синтакса упита и LINQ синтакса метода
2.14.3. LINQ упити над једним извором података
2.14.4. LINQ упити над спојем више извора података
2.15. Нулабилни типови
2.15.1. Реализација нулабилних типова
2.15.2. Методи, особине и оператори за нулабилне типове
2.16. Слогови
2.16.1. Реализација слогова
2.16.2. Слогови и init
особине
2.16.3. Слогови и деконструкција
2.16.4. Слогови и наслеђивање
3. Софтверске грешке презентација
3.1. Грешке, откази, кварови
3.2. Врсте софтврских грешака
3.2.1. “Смешне” грешке
3.2.2. Грешке са мањим последицама
3.2.3. Грешке са великим последицама
3.2.4. Грешке са катастрофалним последицама
3.3. Закључци анализе софтверских грешака
4. Развој управљан доменом презентација
4.1. Опис развоја управљаног доменом
4.1.1. Изградња доменског знања
4.2. Свеобухватни језик
4.2.1. Потреба за заједничким језиком
4.2.2. Изградња свеобухватног језика
4.3. Дизајн управљан доменом
4.3.1. Градивни блокови за дизајн управљан доменом
Слојевита архитектура
Ентитети
Вредносни објекти
Сервиси
Модули
Агрегати
Фабрике
Складишта
4.3.2. Рефакторизација ради остварења дубљег увида
Непрекидна рефакторизација
Истицање кључних појмова
4.3.3. Заштита интегритета модела
Ограничени контексти
Непрекидна интеграција
Контекстна мапа
Механизми заштите и сарадње
Дељено језгро
Корисник-снадбевач
Конформиста
Антикорупцијски слој
Раздвојени путеви
Отворени хост сервиси
Дестилација
5. Разматрања софтверских архитектура
5.1. Апстракције код архитектуре. Чиста архитектура презентација
5.2. Архитектура са доменом у центру презентација
5.3. Слојеви код софтверске архитектуре презентација
5.4. Команде и упити презентација
5.5. Функционална организација презентација
6. Микросервиси
6.1. Опис микросервиса презентација
6.1.1. Карактеристике микросервиса
6.1.2. Однос између микросервиса и архитектуре орјенитсане према севисима
6.1.3. Однос између микросервиса и дргуих методлогија декомпозиције
6.1.4. Нема универзалног најбољег решења
6.2. Реализација микросервиса презентација
6.2.1. Потрага за најбољом технологијом
6.2.2. Интерфејс према корисницома
6.2.3. Комуникаџија између микросервиса
Дељена база података
Синхрона наспрам асинхроне
Оркестрација наспрам кореографије
6.2.4. Технологије комуникације између микросервиса
RPC
REST
Имплементација асинхроне сарадње засноване на догађајима
6.2.5. Скалабилност код микросервиса
Основни проблеми скалабилности микросервиса
Архитектонске сигурносне мере
Организација која спречава лом
Идемпотентност
Скалирање
Скалирање код база података
Кеширање
Аутоскалирање
6.2.7. Откривање сервиса
6.2.8. Динамичка регистрација сервиса
6.2.9. Документовање сервиса
6.3. CAP тероема презентација
7. Архитектура заснована на микросервисима и контејнерима na .NET Core платформи
7.1. Контејнери - Docker, Kybernetis
7.2. .NET платформа
7.3. Карактеристике разматраних решења
Примери из књиге “Architecting Modern Web Applications with ASP.NET Core and Azure”
Примери из књиге “Modernize Existing .NET applications with Azure cloud and Windows Containers”
Примери из књиге “.NET Microservices Architecture for Containerized .NET Applications”
Овај садржај је заштићен лиценцом Creative Commons Attribution-NonCommercial 3.0 Unported License.
За програмски код који се односи на садржај овог курса се може сматрати да је заштићен MIT лиценцом.