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

Тема 1. Архитектура приложения (1124435)

Файл №1124435 Тема 1. Архитектура приложения (Практикум - теоретические материалы)Тема 1. Архитектура приложения (1124435)2019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Практикум на 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 октября) и нафоруме к заданию.

Характеристики

Тип файла
PDF-файл
Размер
1,12 Mb
Тип материала
Высшее учебное заведение

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов лабораторной работы

Практикум - теоретические материалы
Статические и динамические библиотеки в Linux_files
navbar_data
postmessageRelay_data
327579480-postmessagerelay.js
corerpcshindig.js
sharebutton_data
rsAItRSTMRYqp_s98-BvXNvUQ5VDPUj9ecXw.
rsAItRSTPXnggOQ8HCgqltGVqgeOWU4GLhsw.
cbgapi.loaded_0
cbgapi.loaded_1
plusone.js
postmessageRelay.htm
sharebutton.htm
2178715077-widgets.js
2775015444-widget_css_bundle.css
blank.htm
cbgapi.loaded_0
cbgapi.loaded_1
cbgapi.loaded_2
cbgapi.loaded_3
google_top_exp.js
navbar.htm
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6508
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее