Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Тема 1. Архитектура приложения

Тема 1. Архитектура приложения (Практикум - теоретические материалы)

PDF-файл Тема 1. Архитектура приложения (Практикум - теоретические материалы) Инженерная графика (38978): Лабораторная работа - 5 семестрТема 1. Архитектура приложения (Практикум - теоретические материалы) - PDF (38978) - СтудИзба2019-05-11СтудИзба

Описание файла

Файл "Тема 1. Архитектура приложения" внутри архива находится в папке "Практикум - теоретические материалы". PDF-файл из архива "Практикум - теоретические материалы", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 5 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Практикум на 3м курсе (осенний семестр) длякафедры АСВК ведет лаборатория компьютернойграфики и мультимедиа◦ Зав. лабораторией Ю.М. БаяковскийЗадания по практикуму дополняют задания покурсу компьютерной графикиСтраница практикумаhttp://courses.graphics.cs.msu.ru/user/index.php?id=8◦ Задания◦ ОценкиПолучение навыков разработки и реализацииархитектуры программного обеспеченияПрименение современных программныхтехнологий в практических задачах реального мираПараллельно – консультации по выполнениюзадания по курсу компьютерной графикиРазработка трехслойной архитектуры программы◦ Разделение GUI/Logic/Database◦ Вызов уровня логики из Native/.NET кода (GUI)Разработка открытой архитектуры программы (наоснове плагинов)Методы автодокументации исходного кодаМетоды сериализации объектовПрименение многопоточности для обработкимультимедийных данных…Вторник, 10:30, ауд.

607Для каждого задания – один семинар собъяснениемВ конце каждого семинара консультация позаданиюИногда возможен только необязательный семинар консультация24.09 Вводная часть, объяснение темы I08.10 Консультация по заданию I, объяснение темы II22.10 Консультация по заданию II5.11 Апелляция по заданиям I и II, объяснение темы III19.11 Консультация по заданию III, объяснение темыIV3.12 Консультация по заданию IV, апелляция позаданию III17.12 Апелляция по заданию IV, решение всехвопросов, проставление зачета (?)Задания по практикуму АСВК проверяются отдельно Выставляются дополнительные оценки Учитываются отдельно от оценок за машграф В случае вопросов к программе у проверяющихможет быть назначена апелляция на вечернеевремя (вместе с апелляцией по машграфу) По согласованию апелляция может проводиться иво время консультацийВсего 4 задания.

За каждое задание практикумавыставляется оценка от 0 до 5.◦ 0 – ничего не сделано◦ 5 – задание выполнено полностьюНа выполнение задания дается 3 недели. Междузаданиями перерывов нет. Опоздание штрафуется:первый день -0.5, за последующие дни -1, -2 ...В конце семестра подсчитываются полученные баллы◦◦◦◦15 баллов – отлично10-14 баллов – хорошо5-9 баллов – удовлетворительно< 5 баллов неудhttp://courses.graphics.cs.msu.ru/mod/assign/view.php?id=117 Состоит из двух частей Необходимо реализовать разделение GUI и логики:реализовать графический и консольный интерфейсбез дублирования кода Реализовать часть функционала в виде отдельныхмодулей-плагиновОбработка и совмещение каналов изображенияBGRЗагрузка и разделение изображения на цветовыеканалыУдаление рамок плёнки:◦ Детектор границ CannyФильтр Гаусса.Вычисление градиентов с помощью фильтра Собеля.Подавление немаксимумов.Отсечение по двум порогам: получение сильных и слабыхграниц. Отслеживание границ по гистерезису (поиск связныхкомпонент)◦ Найти линии рамки◦ Удалить рамкуЗагрузка и разделение изображения на цветовыеканалыУдаление рамок плёнки:◦ Детектор границ Canny◦ Найти линии рамки (выбирается второй максимум с края,обязательно применить подавление немаксимумов)◦ Удалить рамкуПоиск преобразования сдвига для совмещенияканаловПрименение фильтров постобработкиЗагрузка и разделение изображения на цветовыеканалыУдаление рамок плёнкиПоиск преобразования сдвига для совмещенияканалов:◦ выбрать подходящую метрику: кросс-корреляция илисреднеквадратичное отклонение◦ реализовать пирамиду изображений для ускорения(применить билинейную интерполяцию, бонус:бикубическая интерполяция)◦ Бонусы: поиск в регионе интереса, субпиксельная точностьПрименение фильтров постобработкиЗагрузка и разделение изображения на цветовыеканалыУдаление рамок плёнкиПоиск преобразования сдвига для совмещенияканаловПрименение фильтров постобработки◦◦◦◦◦Серый мирПовышение резкостиАвтоконтрастМедианная фильтрацияБаланс белого1.

Логика \ взаимодействие с пользователем(оконный и консольный интерфейс)2. Фильтр Гаусса, фильтр Собеля, билинейнаяинтерполяция - ядро алгоритма. Плагины: Фильтрыпостобработки, а также другие дополнительныефильтры (бонусы). Программа должна работать ибез плагинов, сообщив об ограниченнойфункциональности пользователю.повышается возможность повторногоиспользования модели возможность использовать несколькопредставлений (интерфейсов) для одной и той желогики приложения (модели) возможность раздельной разработки (2 человека),компиляции, обновления ядра и представления впроектеУдобно студентам АСВК (вам): пишите фильтры + делаете GUI. Ошибки приосвоении чего-то одного не влияют на другое.Придумана при разработке языка SmalltalkПассивная модель (структурноепрограммирование). Модель = данные, контроллеротвечает за логикуАктивная модель (ООП) — модель оповещаетпредставление об изменениях(подписка\оповещение).Модель: данные и методы, не связана свизуализациейПредставление: визуализация (GUI)Контроллер: обработка пользовательского ввода,обновление моделиМоdel-View-Presenter◦ Model - модель предметной области◦ Presenter - посредник, обрабатывает события от мыши иклавиатуры, содержит много логикиModel-View-ViewModel (связывание данных):Silverlight, Windows Presentation FoundationModel-View-AdapterКонтроллер – посредникВ классическом MVC между моделью ипредставлением существует поток данных внеконтроллера.

В MVA все общение ТОЛЬКО черезконтроллер.То, что описано в задании – модель.Консольный интерфейс – представление: выводсостояния программы на экран.Парсинг коммандной строки – контроллер\адаптер.GUI: Какой формы кнопочки, как представлятьдоступные фильтры: раскрывающимся списком,набором галочек\кнопок? – Представление.Что делать, если выбрана галочка «Серый мир»? –Контроллер\адаптер.QTVisual Studio .NETVisual Studio MFCWPFSilverlight…Собственный GUI OpenGL\DirectX Независимый программный модуль,подключаемый на этапе выполнения программыОбычно расширяет возможности приложения,иногда приложение может практически полностьюсостоять из сборных модулей (плагинов)Примеры приложений с такой архитектурой: FarManager, Mozilla Firefox, Microsoft Visual Studio,Notepad++, Adobe Photoshop …Работа с аудио и видео контентом в разныхформатахОбработка изображения с помощью фильтраСпам-фильтрыПлагины для CMSУлучшение качества и однородности кода• Четкая инкапсуляция деталей реализации за интерфейсами• Инкапсуляция сторонних библиотекУлучшение модульности проекта• В каждый момент времени идет работа с небольшим подмножеством файлов• Лучший способ организации больших проектовРадикальное уменьшение времени сборки• Не производится обработка внутренних заголовочных файлов для других компонент• Не требуется пересборка других компонентВозможность замены компонентов• Возможность обновления не всей программы, а только набора компонент• Возможность выбора из нескольких однотипных компонент (конфигурация)Возможность использования компонент с различными открытыми/закрытыми лицензиями• Таким образом можно использовать GPL-компоненты и раскрывать их код, не нарушая лицензииОбщий проект разделяется на набор компонентКомпоненты помещаются в отдельные DLLВ процессе выделения создаются интерфейсы,которые используется в основном проекте (SDK)DLL с компонентам подгружаются на этапевыполненияlibNAME.c (или .cpp)#include <dynamic.h>extern "C" int func_name() //импортируемая функция{cout<<"Hello world!\n I'm function hello()"<<endl;return 0;}Компиляция:gсс(++) -fPIC -c libNAME.cpp -o libNAME.oПолучение разделяемого модуля:gсс(++) -shared –o libNAME.so libNAME.oМожно определить _init() и _fini() (зарезервированные имена).main.c (или .cpp)#include <dlfcn.h> //этот заголовок содержит интерфейс функций для подключениябиблиотеки…void *handle = dlopen(«libNAME.so",FLAG); //загружает в память библиотеку с именемlibNAME.soint(*fun)(void) = dlsym(handle,“func_name"); //возвращает указатель на импортируемуюфункцию func_name…int x = (*fun)(); //пример вызова импортированной функции…dlclose(handle); //библиотека выгружается из памяти…Компиляция: gсс(++) -ldl main.c// myfirstdll.c#include <stdio.h>// Ключевое слово __declspec(dllexport) делает функцию экспортируемой__declspec(dllexport) void func_name(char *str){…}// DynCall.c#include <windows.h>// Загружаем MyFirstDLLHINSTANCE h=LoadLibrary("MyFirstDLL.dll");//получаем указатель на функциюvoid (*DllFunc) (char *str) = (void (*) (char *str)) GetProcAddress(h,“func_name");// Вызов функции Demo из DLLDllFunc("Test");// Выгрузка динамической библиотеки из памятиFreeLibrary(h);…Обычные DLL связываются наэтапе компиляцииКомпоненты подгружаются вовремя выполнения в два этапа:• Поиск всех компонент (вопределенном каталоге)• Регистрация найденных компонент вопределенном месте системыDLL:◦ IPlugin *createInstance(const char *);Application:◦ IPlugin* pluginInstance = createInstance(“RendererPlugin”);◦ IRenderer* renderer = dynamic_cast<IRenderer>(pluginInstance)Одно из трех:◦ Нарушается безопасность типов static_cast◦ Ограничивается применение плагинов dynamic_cast◦ Необходима разработка сложной и ломкой кастомной RTTI QueryInterfaceНеобходимы дополнительные соглашения дляпоиска однотипных плагинов (по имени, например)Интерфейсы определяется в приложенииДля интерфейсов применяются соглашения COM(С++ интерфейс = АТД)Плагины регистрируются сами в нужном местесистемыApplication:DLL:Система разрабатывается с нуля дляподдержки плагиновА нужно ли поддерживать возможность работы изразных сред?Версии интерфейсов / библиотекСуперклассы - да/нетПриведение типовПодсчет ссылокКак искать плагины?СобытияСпецификация Microsoft для любого ЯПОО модель: инкапсуляция, наследование,полиморфизмКлиент и компонент, взаимодействие черезинтерфейс (набор функций)Идентификация по GUID ( Globally Unique IDentifier)– в реестреЛюбой интерфейс – производный от IUnknown.Минимум 3 метода:QueryInterface(), AddRef(),Release() .Если нет требований, чтобы плагины и/илиосновное приложение работали из разных сред,нет смысла поддерживать соглашения COM.

Ненужны STDMETHODCALLTYPE, BSTR и т.п.Можно выделять и удалять память в разных DLL(это стоит проверить)Более того: можно использовать набор базовыхнеабстрактных классов и подключать общуюбиблиотеку ко всем плагинам◦ Внимание: но нужно очень четко работать с версиями вэтом случае!Проверять версии◦ 1) У библиотеки (DLL)◦ 2) У плагина (интерфейса)Как проверять?Как поддерживать совместимость?◦ Старые плагины должны работать с новымиинтерфейсами?◦ Новые плагины должны работать со старымиинтерфейсами?Суперкласс:◦ запрос на информацию без создания экземпляра◦ = статические функции◦ Накладные расходы на создание/поддержкуПриведение типов◦ Dynamic_cast◦ QueryInterfaceПодсчет ссылок◦ AddRef/ReleaseПеребор файлов в папкахКонфигурационный файл (XML)В реестре (пишется инсталлятором)Предложить указать путь пользователюКак минимум должно быть 2 плагина, любой фильтр постпроцессингаи любой бонус должен быть в плагинеМожно вынести фильтр Гаусса, фильтр Собеля, фильтр Canny вотдельные компоненты (тогда базовая часть – разбить картинку на 3канала)Допускается (но будут накладные расходы на виртуальность)class IFilter{virtual tuple<uint, uint, uint> operator () (const Image &m) const = 0;}class BoxFilterOp: IFilter {…}Альтернатива: определить другой объемлющий фильтр над MatrixАльтернатива: не использовать шаблон, использовать свои илибиблиотечные классы для работы с изображением14 октября – крайний срок без потери балловСдавать только на сайт, только в курс практикумаЗа реализацию разделения логики и интерфейса(при выполнении требований) дается 2 балла, зареализацию плагинов (при выполнениитребований) 3 баллаЕсли часть требований не выполнена, оценкаснижаетсяДробные баллы не ставятсяВопросы – на следующем занятии (8 октября) и нафоруме к заданию.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
427
Средний доход
с одного платного файла
Обучение Подробнее