Лабораторные работы не требуют выполнение их в строгом порядке.  
Обратите внимание, что каждая из 6 ниже лабораторных требует выполнить определенное задание по определенную роль. Так же для Fullstack-разработчика указывается допустимое время на каждую из лабораторных.  
## Варианты команд
В зависимости от количества человек в команде, распределите обязанности по дальнейшей работе.

|№|Стек технологий|Минимальное количество участников|
|---|---|---|
|1|WPF + MVVM + PRISM + Git|2-3|
|1.1|WPF + MVVM + PRISM + `appsettings.json` + Git|3-3|
|1.5|ASP NET CORE + EF CORE + `.txt` + Git|2-2|
|2|ASP NET CORE + EF CORE + PostgreSQL (Access) + Git|3-5|
|3|ASP NET CORE + MVC + REST API + EF CORE + PostgreSQL (Access) + Git|6+|
|4|BLAZOR + MVC + REST API + EF CORE + PostgreSQL (Access) + Git|6+|
|5|WPF + MVVM + PRISM + ASP NET CORE + EF CORE + PostgreSQL (Access) + Git|10+|
## Лабораторная работа №6: Тимлид
Организация работы в команде, использование системы контроля версий Git (https://git-scm.com).  
Для согласования работы между членами команды вам всем требуется завести аккаунт на GitHub (https://github.com/). Те, кто работают на ноутбуке или дома, могут использовать GitHub Desktop (https://desktop.github.com/). Учтите: на рабочих машинах в аудиториях доступа к GitHub у вас не будет. Все ваши изменения в коде, необходимо будет синхронизировать дома на своем ПК, и крайне желательно как перед началом лабораторной работы, так и по ее завершении.  
Тимлиду (главному по организации командной работы) требуется полностью руководить своей командой, а именно:  
- Отвечать за постановку задач
- Проверять готовые модули, оценивать их качество
- Быть готовым решать вопросы слияний всех ваших изменений в удаленный репозиторий
- Помогать другим
- Сдать проект в срок
## Лабораторная работа №7: Главный разработчик
Основная роль главного разработчика - продумать систему, которая прямо или косвенно отражает вашу проектную деятельность.  
Ваша задача спроектировать и разработать систему так, чтобы она полностью отвечала следующим требованиям:
1. WPF – приложение для Windows c использованием паттерна MVVM (https://habr.com/ru/articles/338518/) или MVVMS
2. Многомодульное приложение, с использованием Фреймворка Prism (https://prismlibrary.com/docs/)
3. Работы с локальной базой данных (хотя бы с файлом конфигурации приложения)
4. Трехуровневая архитектура приложения (https://it-matika.pro/blog/novye-it-terminy/trehurovnevaya-arhitektura-prilozheniya)
5. SOLID (https://it-matika.pro/blog/novye-it-terminy/trehurovnevaya-arhitektura-prilozheniya)
## Лабораторная работа №8: Администратор БД
Задача администратора БД - спроектировать и разработать слой данных для вашего проекта:
- Данные конфигурации приложения, для того чтобы ваша программа была настраиваемой и гибкой для удобства пользования
- Реляционные данные, хранимые в отдельной локальной БД. Организация взаимодействия с этими данными (можно использовать Entity Framework - https://habr.com/ru/companies/otus/articles/500012/)
- Нереляционные данные (NoSQL - https://habr.com/ru/companies/otus/articles/500012/) по желанию. Пример СУБД Redis - https://ru.wikipedia.org/wiki/Redis
## Лабораторная работа №9 - Backend-разработчик
Основная задача - это организация всей бизнес-логики приложения (слой бизнес-логики):
- Обработка, преобразование и обмен данными между уровнем данных и уровнем представления.
  
Для WPF:
- Модели данных
- Сервисы
  
Для Prism:
- Навигация между основными модулями в программе
- Разработка главного модуля (Оболочки)
- Навигация и регионы
- Внедрение зависимостей:
	- Unity Application Block (Unity)
	- Managed Extensibility Framework (MEF)
- Агрегаторы событий
## Лабораторная работа №10 - Frontend-разработчик
Основная задача - это разработка отдельных модулей представлений.  
Для WPF:
- Словари ресурсов (локальные и глобальные)
- Пользовательские элементы управления
- Настраиваемые элементы управления
- ViewModel и View
- Конвертеры для View
- Команды (ICommand)
  
Для Prism:
- Локаторы вью-моделей
- Модули
## Лабораторная работа №11: Тестировщик
Основная задача - это проверка как отдельных модулей на стабильность работы, так и глобальное тестирование всего приложения.
## Критерии оценки проекта
После всех лабораторных работ, организуется мероприятие по представлению результатов ваших работ в виде презентации, живой демонстрации работы программы либо ее видеозаписи.  
Представление оценивается по следующим критериям:

| Корректность | Устойчивость | Юзабилити | Функциональность | ИТОГО     |
| ------------ | ------------ | --------- | ---------------- | --------- |
| 20 баллов    | 10 баллов    | 10 баллов | 20 баллов        | 60 баллов |
  
После этого вам дается время на оформления РПЗ по результатам вашей работы в команде, для каждого члена команды свое РПЗ.  
Содержимое РПЗ оценивается в 40 баллов.