SlideShare una empresa de Scribd logo
1 de 36
OOO «Ричмедиа»
Шайхутдинов Ринат Гаптрафикович
Студент группы ПС-51
Руководитель: Малов Алексей Николаевич
ст. преподаватель кафедры ИиСП
CodeDrive – ActionScript 3 IDE
ООО «Ричмедиа» , iSpring Solutions, Inc. 2
Редактор
Кода
Управление
проектами
Управление
ресурсами
Отладчик
Система
сборки
…
Постановка задачи
Разработать модуль предоставляющий асинхронное API
для отладки приложений на языке ActionScript 3 и
интегрировать данный модуль с Microsoft Visual Studio
2010 в составе продукта Code Drive.
ООО «Ричмедиа» , iSpring Solutions, Inc. 3
Основные требования к системе:
• Тестируемость
• Гибкость
• Надежность
Инструменты разработки
 .NET Framework 4.0
 C# 4.0
 LINQ
 Code Contracts
 Task Parallel Library (TPL)
 Асинхронность
 Reactive Framework (Rx)
 Интеграция в Visual Studio 2010
 Visual Studio 2010 SDK
 COM Interop
 Тестирование
 Nunit
 Moq
 ActionScript 3
ООО «Ричмедиа» , iSpring Solutions, Inc. 4
Одна из проблем синхронных вычислений
You could get
stuck
C# 4.0 covariance
(В неблокирующем ожидании)
работает
Организация асинхронных вычислений
(Reactive Framework)
 Менталитет Rx - Push-коллекции
 Композиционный стиль + LINQ
 Помогает в разработке асинхронных программ
 Приложений становится “Реактивным”, само
отдает данные, но нужно подписаться на их
получение
ActionScript 3 - объектно-ориентированный язык
программирования, один из диалектов ECMAScript
ООО «Ричмедиа» , iSpring Solutions, Inc. 7
Компилятор
ActionScript 3
Flash Player
Виртуальная
машина
ActionScript 3
Flash-
приложение
Интерактивность
Обработка данных
…
Байт-код
Интерактивные
мультимедиа
приложения
Игры …
Основные функции отладчика
 Управление потоком выполнения
 Управление точками останова
 Просмотр и навигация по стеку вызовов
 Просмотр / изменение данных
 Вычисление выражений
 Обработка исключений
 Вывод отладочных сообщений
ООО «Ричмедиа» , iSpring Solutions, Inc. 8
Debug Flash Player
Debug
Flash Player
Список
переменных
Вызов
функций
Вычисление
выражений
Установка/
Удаление
точек
останова
Конструирование
объектов
Получение
свойств
Стек вызовов
Управление
потоком
выполнения
Взаимодействие с Debug Flash Player
Очередь
задач
Поток
программы
Debug
Flash Player
Задача
Задача
Время
ожидания
истекло
Сообщить о
неудаче
Сокет-соединение.
Обмен сообщениями.
 Работа в режиме запрос ответ
 Недетерминированное время выполнения операций
 Отсутствует кэширование
 Возможен вариант удаленной отладки
 Специфика протокола взаимодействия
Debugger API
Отладчик приложений на языке ActionScript 3
ООО «Ричмедиа» , iSpring Solutions, Inc. 11
Отладчик
ActionScript 3
Интерпретатор
выражений
Debug
Flash Player
Flash-
приложение
Visual Studio
Отладчик
ActionScript 3
API
Интерпретатора
API
Отладчика
Сокет-соединение.
Debug-Flash Player
API
Visual Studio API
Отладчика
Требуется интерпретация
выражений: watch
window, immediate
window, conditional
breakpoints
Примеры задач с вычислением выражений
ООО «Ричмедиа» , iSpring Solutions, Inc. 12
package
{
/**
* ...
* @author
*/
public class Airplanes
{
private var airplanes:Array = newArray();
public function Airplanes()
{
}
public function add(airplane:IAirplane)
{
airplanes.push(airplane);
}
public function remove(airplane:IAirplane)
{
airplanes.push(airplane);
}
}
}
Точка
останова
Посмотреть значение:
this.airplanes[0].toString()
Остановиться если:
airplanes.length == 4
Интерпретатор выражений ActionScript 3
Debug
Flash Player
ActionScript 3
Debugger
Interpreter
Flash-
приложение this.airplanes[0].toString() “[Airplane]”
Вычисление
выражений по
спецификации
ECMA-262
Таблица символов +
вызов функций
Интеграция отладчика с Visual Studio 2010
ООО «Ричмедиа» , iSpring Solutions, Inc. 14
VS Debug
Package
Session
Manager
Process
Debug
Manager
ActionScript 3
Debug Engine
C#
Debug
Engine
ActionScript 3
Expression
Evaluator
Expression
Evaluator
Symbol
Provider
Debug
Flash Player
Symbol
Provider
Модуль
расширения
Управляет
модулями отладки
Управляет
списком
отлаживаемых
программ
Предоставляет
возможности
отладки
Вычислитель
выражений
Для отладки
некоторых программ
требуется таблица
символов
Program
Заключение
Реализован модуль для отладки приложений на
ActionScript 3 в среде Visual Studio 2010 и произведена его
интеграция с продуктом CodeDrive.
Перспективы развития:
 Автодополнение в окнах отладчика(Intellisense)
 Одновременная отладка нескольких приложений (обход
ограничения Debug Flash Player)
 Отладка динамических компонентов (Dynamic Shared
Library)
 Полнофункциональный интерпретатор (ECMA-262 +
ECMA-357)
 Дизассемблер
ООО «Ричмедиа» , iSpring Solutions, Inc. 15
Спасибо за внимание
ООО «Ричмедиа» , iSpring Solutions, Inc. 16
LINQ
Точки останова
ООО «Ричмедиа» , iSpring Solutions, Inc. 18
Задание условий остановки
ООО «Ричмедиа» , iSpring Solutions, Inc. 19
Счетчик срабатыний
ООО «Ричмедиа» , iSpring Solutions, Inc. 20
Окно управления точками останова
ООО «Ричмедиа» , iSpring Solutions, Inc. 21
Окно просмотра локальных переменных (Locals)
ООО «Ричмедиа» , iSpring Solutions, Inc. 22
Окно слежения за переменными (Watch)
ООО «Ричмедиа» , iSpring Solutions, Inc. 23
Окно просмотра стека вызовов (Call Stack)
ООО «Ричмедиа» , iSpring Solutions, Inc. 24
Immediate window
ООО «Ричмедиа» , iSpring Solutions, Inc. 25
Обработка исключений
ООО «Ричмедиа» , iSpring Solutions, Inc. 26
Окно просмотра отладочных сообщений
ООО «Ричмедиа» , iSpring Solutions, Inc. 27
COM Interop
 COM Interop ("Взаимодействие с COM") - технология,
включённая в .NET CLR, позволяющий
объектам COM взаимодействовать с объектами .NET,
и наоборот.
 Задачей COM Interop является обеспечение доступа к
существующим компонентам COM без
необходимости модификации оригинальных
компонентов. Даная технология пытается сделать
типы .NET эквивалентными типам COM. Кроме того,
COM Interop позволяет разработчикам COM получить
доступ к управляемым объектам так же просто, как и
доступ к другим объектам COM.
ООО «Ричмедиа» , iSpring Solutions, Inc. 28
Code Contracts Essential
 Контракты для методов
 Contract.Requires
 Contract.Ensure
 Инварианты для объектов
 Contract.Invariant
 Контракты для интерфейсов
 Утилиты
 Проверки времени выполнения
 Статические проверки
 Генерация unit тестов – Pex
 Генерация документации
 Msbuild Integration
 Visual Studio Addin
ООО «Ричмедиа» , iSpring Solutions, Inc. 29
Пример
ООО «Ричмедиа» , iSpring Solutions, Inc. 30
public WebService(IWarehouse store) {
}
this.store = store;
Contract.Requires(store != null);
Contract.Ensures(this.store != null);
Reactive Framework (Rx) Essential
 C#
 Java
 JavaScript
 ActionScript 3
ООО «Ричмедиа» , iSpring Solutions, Inc. 31
Essential Interfaces
Summary – push versus pull
Environment
MoveNext
Got next?
Application
OnNext
Have next!
IEnumerable<T>
IEnumerator<T>
IObservable<T>
IObserver<T>
Interactive
Reactive
IEnumerable<T>
E.g. LINQ toObjects
IObservable<T>
E.g. LINQ to Events
IQueryable<T>
E.g. LINQ to SQL
Фиксированный
(MSIL)
Транслируемый
(Деревьявыражений)
ToQueryable
ToObservable
ToEnumerable
AsQueryable
AsEnumerable
AsQbservable
AsObservable
Pull
(интерактивный)
Push
(реактивный)
LINQ to *.*
Что?
Как?
Пулы потоков Циклы сообщенийПотоки Распределенные
вычисления
Двойственность
Homo-iconic
IQbservable<T>
E.g. LINQ to PowerShell
ToQbservable
Task Parallel library Essential
 Предподчитетельный способ создания
многопоточного и параллельного кода
 Набор API интерфейсов
 Повышает прозиводительность труда
разработчиков
 Упрощает процесс добавления параллелизма
 Увеличивает степень параллелизма динамечески
ООО «Ричмедиа» , iSpring Solutions, Inc. 34
Visual Studio 2010
Tools / Programming Models / Runtimes
Parallel Pattern
Library
Resource Manager
Task Scheduler
Task Parallel
Library
PLINQ
Managed Library Native LibraryKey:
Threads
Operating System
Concurrency Runtime
Programming Models
Agents
Library
ThreadPool
Task Scheduler
Resource Manager
DataStructures
DataStructures
Integrated
Tooling
Tools
Parallel
Debugger
Toolwindow
s
Profiler
Concurrency
Analysis
Programming Models
Concurrency Runtime
C# 5.0
 C# 1.0 Managed code
 C# 2.0 Iterators / Generics / Anonymous
 C# 3.0 LINQ / Lambda
 C# 4.0 Dynamic / PLINQ
 C# 5.0 TAP (Task based asynchronous pattern)

Más contenido relacionado

La actualidad más candente

Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...QA Club Minsk
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Tatyanazaxarova
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”GlobalLogic Ukraine
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Alexander Babich
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...QA Club Minsk
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаTatyanazaxarova
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеYakubovichDA
 

La actualidad más candente (9)

Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
 
Net framework
Net frameworkNet framework
Net framework
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программирование
 

Destacado

Какие сайты бывают
Какие сайты бываютКакие сайты бывают
Какие сайты бываютRinat Shaikhutdinov
 
Контент маркетинг
Контент маркетингКонтент маркетинг
Контент маркетингRinat Shaikhutdinov
 
Веб аналитика и оценка эффективности сайта
Веб аналитика и оценка эффективности сайтаВеб аналитика и оценка эффективности сайта
Веб аналитика и оценка эффективности сайтаRinat Shaikhutdinov
 
Контекстная реклама
Контекстная рекламаКонтекстная реклама
Контекстная рекламаRinat Shaikhutdinov
 
Маркетинг в социальных сетях
Маркетинг в социальных сетяхМаркетинг в социальных сетях
Маркетинг в социальных сетяхRinat Shaikhutdinov
 
Быстрое прототипирование сайтов
Быстрое прототипирование сайтовБыстрое прототипирование сайтов
Быстрое прототипирование сайтовRinat Shaikhutdinov
 
Что почитать по интернет маркетингу
Что почитать по интернет маркетингуЧто почитать по интернет маркетингу
Что почитать по интернет маркетингуRinat Shaikhutdinov
 
Основные принципы дизайна
Основные принципы дизайнаОсновные принципы дизайна
Основные принципы дизайнаRinat Shaikhutdinov
 
Построение бизнес-моделей
Построение бизнес-моделейПостроение бизнес-моделей
Построение бизнес-моделейRinat Shaikhutdinov
 
Портрет потенциального клиента
Портрет потенциального клиентаПортрет потенциального клиента
Портрет потенциального клиентаRinat Shaikhutdinov
 

Destacado (11)

Какие сайты бывают
Какие сайты бываютКакие сайты бывают
Какие сайты бывают
 
Контент маркетинг
Контент маркетингКонтент маркетинг
Контент маркетинг
 
Веб аналитика и оценка эффективности сайта
Веб аналитика и оценка эффективности сайтаВеб аналитика и оценка эффективности сайта
Веб аналитика и оценка эффективности сайта
 
Контекстная реклама
Контекстная рекламаКонтекстная реклама
Контекстная реклама
 
Search engine optimization
Search engine optimizationSearch engine optimization
Search engine optimization
 
Маркетинг в социальных сетях
Маркетинг в социальных сетяхМаркетинг в социальных сетях
Маркетинг в социальных сетях
 
Быстрое прототипирование сайтов
Быстрое прототипирование сайтовБыстрое прототипирование сайтов
Быстрое прототипирование сайтов
 
Что почитать по интернет маркетингу
Что почитать по интернет маркетингуЧто почитать по интернет маркетингу
Что почитать по интернет маркетингу
 
Основные принципы дизайна
Основные принципы дизайнаОсновные принципы дизайна
Основные принципы дизайна
 
Построение бизнес-моделей
Построение бизнес-моделейПостроение бизнес-моделей
Построение бизнес-моделей
 
Портрет потенциального клиента
Портрет потенциального клиентаПортрет потенциального клиента
Портрет потенциального клиента
 

Similar a Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visual Studio 2010

Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюSQALab
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими рукамиRoman Dvornov
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Fwdays
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)Alexander Bausk
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"MskDotNet Community
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5Dima Dzuba
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад ПлотникСоздаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад ПлотникSigma Software
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияElias Fofanov
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 

Similar a Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visual Studio 2010 (20)

Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решению
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Описание и архитектура TFS 2008
Описание и архитектура TFS 2008Описание и архитектура TFS 2008
Описание и архитектура TFS 2008
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
C#5 What's new?
C#5 What's new?C#5 What's new?
C#5 What's new?
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5
 
Aspect Oriented Approach
Aspect Oriented ApproachAspect Oriented Approach
Aspect Oriented Approach
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Appery.io Ukraine_2016
Appery.io Ukraine_2016Appery.io Ukraine_2016
Appery.io Ukraine_2016
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад ПлотникСоздаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 

Más de Rinat Shaikhutdinov

Гештальт-принципы дизайна для разработчиков
Гештальт-принципы дизайна для разработчиковГештальт-принципы дизайна для разработчиков
Гештальт-принципы дизайна для разработчиковRinat Shaikhutdinov
 
Структурирование информации. Краткая вводная
Структурирование информации. Краткая вводнаяСтруктурирование информации. Краткая вводная
Структурирование информации. Краткая вводнаяRinat Shaikhutdinov
 
Что такое цифровой продукт, и почему интерфейс теперь очень важен
Что такое цифровой продукт, и почему интерфейс теперь очень важенЧто такое цифровой продукт, и почему интерфейс теперь очень важен
Что такое цифровой продукт, и почему интерфейс теперь очень важенRinat Shaikhutdinov
 
Методы монетизации интернет-проектов
Методы монетизации интернет-проектовМетоды монетизации интернет-проектов
Методы монетизации интернет-проектовRinat Shaikhutdinov
 
Алгоритм привлечения клиентов
Алгоритм привлечения клиентовАлгоритм привлечения клиентов
Алгоритм привлечения клиентовRinat Shaikhutdinov
 
Технические моменты создания сайта
Технические моменты создания сайтаТехнические моменты создания сайта
Технические моменты создания сайтаRinat Shaikhutdinov
 
Правила юзабилити
Правила юзабилитиПравила юзабилити
Правила юзабилитиRinat Shaikhutdinov
 
Видение, миссия, цель, стратегия, план
Видение, миссия, цель, стратегия, планВидение, миссия, цель, стратегия, план
Видение, миссия, цель, стратегия, планRinat Shaikhutdinov
 
Сколько стоит создание сайта
Сколько стоит создание сайтаСколько стоит создание сайта
Сколько стоит создание сайтаRinat Shaikhutdinov
 
Введение в сайтостроение
Введение в сайтостроениеВведение в сайтостроение
Введение в сайтостроениеRinat Shaikhutdinov
 
Основные ошибки при создании сайта
Основные ошибки при создании сайтаОсновные ошибки при создании сайта
Основные ошибки при создании сайтаRinat Shaikhutdinov
 
Top 7 Элементов Landing Page
Top 7 Элементов Landing PageTop 7 Элементов Landing Page
Top 7 Элементов Landing PageRinat Shaikhutdinov
 
Как делают современный Web design
Как делают современный Web designКак делают современный Web design
Как делают современный Web designRinat Shaikhutdinov
 
Расширение арсенала PowerPoint для online-презентаций и продвижения идей
Расширение арсенала PowerPoint для online-презентаций и продвижения идейРасширение арсенала PowerPoint для online-презентаций и продвижения идей
Расширение арсенала PowerPoint для online-презентаций и продвижения идейRinat Shaikhutdinov
 
Эмоциональный web-дизайн
Эмоциональный web-дизайнЭмоциональный web-дизайн
Эмоциональный web-дизайнRinat Shaikhutdinov
 
Элементы дизайна сайтов
Элементы дизайна сайтовЭлементы дизайна сайтов
Элементы дизайна сайтовRinat Shaikhutdinov
 

Más de Rinat Shaikhutdinov (19)

Гештальт-принципы дизайна для разработчиков
Гештальт-принципы дизайна для разработчиковГештальт-принципы дизайна для разработчиков
Гештальт-принципы дизайна для разработчиков
 
Структурирование информации. Краткая вводная
Структурирование информации. Краткая вводнаяСтруктурирование информации. Краткая вводная
Структурирование информации. Краткая вводная
 
Что такое цифровой продукт, и почему интерфейс теперь очень важен
Что такое цифровой продукт, и почему интерфейс теперь очень важенЧто такое цифровой продукт, и почему интерфейс теперь очень важен
Что такое цифровой продукт, и почему интерфейс теперь очень важен
 
Методы монетизации интернет-проектов
Методы монетизации интернет-проектовМетоды монетизации интернет-проектов
Методы монетизации интернет-проектов
 
Алгоритм привлечения клиентов
Алгоритм привлечения клиентовАлгоритм привлечения клиентов
Алгоритм привлечения клиентов
 
Технические моменты создания сайта
Технические моменты создания сайтаТехнические моменты создания сайта
Технические моменты создания сайта
 
Правила юзабилити
Правила юзабилитиПравила юзабилити
Правила юзабилити
 
Правила дизайна
Правила дизайнаПравила дизайна
Правила дизайна
 
Видение, миссия, цель, стратегия, план
Видение, миссия, цель, стратегия, планВидение, миссия, цель, стратегия, план
Видение, миссия, цель, стратегия, план
 
Сколько стоит создание сайта
Сколько стоит создание сайтаСколько стоит создание сайта
Сколько стоит создание сайта
 
Введение в сайтостроение
Введение в сайтостроениеВведение в сайтостроение
Введение в сайтостроение
 
Сайтостроение
СайтостроениеСайтостроение
Сайтостроение
 
Основные ошибки при создании сайта
Основные ошибки при создании сайтаОсновные ошибки при создании сайта
Основные ошибки при создании сайта
 
Top 7 Элементов Landing Page
Top 7 Элементов Landing PageTop 7 Элементов Landing Page
Top 7 Элементов Landing Page
 
Как делают современный Web design
Как делают современный Web designКак делают современный Web design
Как делают современный Web design
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Расширение арсенала PowerPoint для online-презентаций и продвижения идей
Расширение арсенала PowerPoint для online-презентаций и продвижения идейРасширение арсенала PowerPoint для online-презентаций и продвижения идей
Расширение арсенала PowerPoint для online-презентаций и продвижения идей
 
Эмоциональный web-дизайн
Эмоциональный web-дизайнЭмоциональный web-дизайн
Эмоциональный web-дизайн
 
Элементы дизайна сайтов
Элементы дизайна сайтовЭлементы дизайна сайтов
Элементы дизайна сайтов
 

Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visual Studio 2010

  • 1. OOO «Ричмедиа» Шайхутдинов Ринат Гаптрафикович Студент группы ПС-51 Руководитель: Малов Алексей Николаевич ст. преподаватель кафедры ИиСП
  • 2. CodeDrive – ActionScript 3 IDE ООО «Ричмедиа» , iSpring Solutions, Inc. 2 Редактор Кода Управление проектами Управление ресурсами Отладчик Система сборки …
  • 3. Постановка задачи Разработать модуль предоставляющий асинхронное API для отладки приложений на языке ActionScript 3 и интегрировать данный модуль с Microsoft Visual Studio 2010 в составе продукта Code Drive. ООО «Ричмедиа» , iSpring Solutions, Inc. 3 Основные требования к системе: • Тестируемость • Гибкость • Надежность
  • 4. Инструменты разработки  .NET Framework 4.0  C# 4.0  LINQ  Code Contracts  Task Parallel Library (TPL)  Асинхронность  Reactive Framework (Rx)  Интеграция в Visual Studio 2010  Visual Studio 2010 SDK  COM Interop  Тестирование  Nunit  Moq  ActionScript 3 ООО «Ричмедиа» , iSpring Solutions, Inc. 4
  • 5. Одна из проблем синхронных вычислений You could get stuck C# 4.0 covariance (В неблокирующем ожидании) работает
  • 6. Организация асинхронных вычислений (Reactive Framework)  Менталитет Rx - Push-коллекции  Композиционный стиль + LINQ  Помогает в разработке асинхронных программ  Приложений становится “Реактивным”, само отдает данные, но нужно подписаться на их получение
  • 7. ActionScript 3 - объектно-ориентированный язык программирования, один из диалектов ECMAScript ООО «Ричмедиа» , iSpring Solutions, Inc. 7 Компилятор ActionScript 3 Flash Player Виртуальная машина ActionScript 3 Flash- приложение Интерактивность Обработка данных … Байт-код Интерактивные мультимедиа приложения Игры …
  • 8. Основные функции отладчика  Управление потоком выполнения  Управление точками останова  Просмотр и навигация по стеку вызовов  Просмотр / изменение данных  Вычисление выражений  Обработка исключений  Вывод отладочных сообщений ООО «Ричмедиа» , iSpring Solutions, Inc. 8
  • 9. Debug Flash Player Debug Flash Player Список переменных Вызов функций Вычисление выражений Установка/ Удаление точек останова Конструирование объектов Получение свойств Стек вызовов Управление потоком выполнения
  • 10. Взаимодействие с Debug Flash Player Очередь задач Поток программы Debug Flash Player Задача Задача Время ожидания истекло Сообщить о неудаче Сокет-соединение. Обмен сообщениями.  Работа в режиме запрос ответ  Недетерминированное время выполнения операций  Отсутствует кэширование  Возможен вариант удаленной отладки  Специфика протокола взаимодействия Debugger API
  • 11. Отладчик приложений на языке ActionScript 3 ООО «Ричмедиа» , iSpring Solutions, Inc. 11 Отладчик ActionScript 3 Интерпретатор выражений Debug Flash Player Flash- приложение Visual Studio Отладчик ActionScript 3 API Интерпретатора API Отладчика Сокет-соединение. Debug-Flash Player API Visual Studio API Отладчика Требуется интерпретация выражений: watch window, immediate window, conditional breakpoints
  • 12. Примеры задач с вычислением выражений ООО «Ричмедиа» , iSpring Solutions, Inc. 12 package { /** * ... * @author */ public class Airplanes { private var airplanes:Array = newArray(); public function Airplanes() { } public function add(airplane:IAirplane) { airplanes.push(airplane); } public function remove(airplane:IAirplane) { airplanes.push(airplane); } } } Точка останова Посмотреть значение: this.airplanes[0].toString() Остановиться если: airplanes.length == 4
  • 13. Интерпретатор выражений ActionScript 3 Debug Flash Player ActionScript 3 Debugger Interpreter Flash- приложение this.airplanes[0].toString() “[Airplane]” Вычисление выражений по спецификации ECMA-262 Таблица символов + вызов функций
  • 14. Интеграция отладчика с Visual Studio 2010 ООО «Ричмедиа» , iSpring Solutions, Inc. 14 VS Debug Package Session Manager Process Debug Manager ActionScript 3 Debug Engine C# Debug Engine ActionScript 3 Expression Evaluator Expression Evaluator Symbol Provider Debug Flash Player Symbol Provider Модуль расширения Управляет модулями отладки Управляет списком отлаживаемых программ Предоставляет возможности отладки Вычислитель выражений Для отладки некоторых программ требуется таблица символов Program
  • 15. Заключение Реализован модуль для отладки приложений на ActionScript 3 в среде Visual Studio 2010 и произведена его интеграция с продуктом CodeDrive. Перспективы развития:  Автодополнение в окнах отладчика(Intellisense)  Одновременная отладка нескольких приложений (обход ограничения Debug Flash Player)  Отладка динамических компонентов (Dynamic Shared Library)  Полнофункциональный интерпретатор (ECMA-262 + ECMA-357)  Дизассемблер ООО «Ричмедиа» , iSpring Solutions, Inc. 15
  • 16. Спасибо за внимание ООО «Ричмедиа» , iSpring Solutions, Inc. 16
  • 17. LINQ
  • 19. Задание условий остановки ООО «Ричмедиа» , iSpring Solutions, Inc. 19
  • 21. Окно управления точками останова ООО «Ричмедиа» , iSpring Solutions, Inc. 21
  • 22. Окно просмотра локальных переменных (Locals) ООО «Ричмедиа» , iSpring Solutions, Inc. 22
  • 23. Окно слежения за переменными (Watch) ООО «Ричмедиа» , iSpring Solutions, Inc. 23
  • 24. Окно просмотра стека вызовов (Call Stack) ООО «Ричмедиа» , iSpring Solutions, Inc. 24
  • 25. Immediate window ООО «Ричмедиа» , iSpring Solutions, Inc. 25
  • 27. Окно просмотра отладочных сообщений ООО «Ричмедиа» , iSpring Solutions, Inc. 27
  • 28. COM Interop  COM Interop ("Взаимодействие с COM") - технология, включённая в .NET CLR, позволяющий объектам COM взаимодействовать с объектами .NET, и наоборот.  Задачей COM Interop является обеспечение доступа к существующим компонентам COM без необходимости модификации оригинальных компонентов. Даная технология пытается сделать типы .NET эквивалентными типам COM. Кроме того, COM Interop позволяет разработчикам COM получить доступ к управляемым объектам так же просто, как и доступ к другим объектам COM. ООО «Ричмедиа» , iSpring Solutions, Inc. 28
  • 29. Code Contracts Essential  Контракты для методов  Contract.Requires  Contract.Ensure  Инварианты для объектов  Contract.Invariant  Контракты для интерфейсов  Утилиты  Проверки времени выполнения  Статические проверки  Генерация unit тестов – Pex  Генерация документации  Msbuild Integration  Visual Studio Addin ООО «Ричмедиа» , iSpring Solutions, Inc. 29
  • 30. Пример ООО «Ричмедиа» , iSpring Solutions, Inc. 30 public WebService(IWarehouse store) { } this.store = store; Contract.Requires(store != null); Contract.Ensures(this.store != null);
  • 31. Reactive Framework (Rx) Essential  C#  Java  JavaScript  ActionScript 3 ООО «Ричмедиа» , iSpring Solutions, Inc. 31
  • 32. Essential Interfaces Summary – push versus pull Environment MoveNext Got next? Application OnNext Have next! IEnumerable<T> IEnumerator<T> IObservable<T> IObserver<T> Interactive Reactive
  • 33. IEnumerable<T> E.g. LINQ toObjects IObservable<T> E.g. LINQ to Events IQueryable<T> E.g. LINQ to SQL Фиксированный (MSIL) Транслируемый (Деревьявыражений) ToQueryable ToObservable ToEnumerable AsQueryable AsEnumerable AsQbservable AsObservable Pull (интерактивный) Push (реактивный) LINQ to *.* Что? Как? Пулы потоков Циклы сообщенийПотоки Распределенные вычисления Двойственность Homo-iconic IQbservable<T> E.g. LINQ to PowerShell ToQbservable
  • 34. Task Parallel library Essential  Предподчитетельный способ создания многопоточного и параллельного кода  Набор API интерфейсов  Повышает прозиводительность труда разработчиков  Упрощает процесс добавления параллелизма  Увеличивает степень параллелизма динамечески ООО «Ричмедиа» , iSpring Solutions, Inc. 34
  • 35. Visual Studio 2010 Tools / Programming Models / Runtimes Parallel Pattern Library Resource Manager Task Scheduler Task Parallel Library PLINQ Managed Library Native LibraryKey: Threads Operating System Concurrency Runtime Programming Models Agents Library ThreadPool Task Scheduler Resource Manager DataStructures DataStructures Integrated Tooling Tools Parallel Debugger Toolwindow s Profiler Concurrency Analysis Programming Models Concurrency Runtime
  • 36. C# 5.0  C# 1.0 Managed code  C# 2.0 Iterators / Generics / Anonymous  C# 3.0 LINQ / Lambda  C# 4.0 Dynamic / PLINQ  C# 5.0 TAP (Task based asynchronous pattern)

Notas del editor

  1. Здравствуйте, уважаемая дипломная комиссия, меня зовут Шайхутдинов Ринат, разрешите представить вашему вниманию дипломную работу, темой которой является разработка Модуля для отладки приложений на языке ActionScript 3 в среде Visual Studio 2010. Руководителем проекта является Малов Алексей Николаевич, работа выполнена по заказу компании ООО «Ричмедиа», в которой ятеперь работаю.
  2. Одним из направлений деятельности организация ООО «Ричмедиа» является разработка программного продукта CodeDrive, выполненного в виде расширениядля среды разработки Microsoft Visual Studio 2010, позволяющего вести разработкуFlash-приложений на языке ActionScript 3.Модуль расширения реализует:Редактор кодаКомпиляторСредства автоматизации сборкиУправление проектамии т.дНо отсутствовал отладчик.
  3. Постановка задачиРазработать модуль предоставляющий асинхронное API для отладки приложенийна языке ActionScript 3 и интегрировать данный модуль с Microsoft Visual Studio 2010 в составе продукта Code Drive.Тестируемость – модуль взаимодействия с Debug Flash Player (он же ActionScript 3 Debugger) должен быть спроектированс учетом возможности покрытия модульными тестами и интеграционными тестами, чтобы при дальнейших модификациях системы не повредить существующий функционал.Гибкость – зависимость между элементами системы должна быть минимальной, чтобы эффективнее вносить изменения в систему для дальнейшего ее развития.Надежность – модуль отладки являетсяодним из компонентов продукта CodeDrive и Visual Studio, и не должен нарушать работу множества других подсистем.
  4. Для решения поставлены задачи были выбраны следующие инструменты.C# 4.0 + LINQ + .NET Framework 4.0 – мощные инструменты для создания современного ПОTaskParallelLibrary – библиотека параллельных задач, потребовалась для организации асинхронности с помощью RxReactiveFramework – библиотека для организации асинхронного кодаCodeContracts – библиотека развившая идею программирования по контрактуVisual Studio SDK – предназначенадля расширения Visual StudioCOM – лежит в основе модулей расширения для Visual StudioNunit + Moq + ActionScript использовалисьдля тестирования
  5. Каждый из нас хотя бы раз сталкилвался с состоянием программыКак на данном экране (видим Режим ожидания)Это пример того как внутренняя логика приложения блокирует интерфейс пользователя (UI)Избежать окон подобного рода призвана асинхронность.
  6. ReactiveExtensions или Rx (по аналигии с PFX) или “реактивные расширения” –это набор библиотек, которые позволяют работать с событиями и асинхронными вызовамив композиционном стиле, в т.ч. через Linq.Цель этого фреймворка – помочь разработчикам писать код в котором фигурирует асинхронное взаимодействие.
  7. ActionScript — объектно-ориентированный язык программирования, один из диалектов ECMAScript, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений. ActionScript исполняется виртуальной машиной (ActionScript VirtualMachine), которая является составной частью FlashPlayer. ActionScript компилируется в байткод, который включается в SWF-файл.SWF-файлы исполняются FlashPlayer-ом. FlashPlayer существует в виде плагина к веб-браузеру, а также как самостоятельное исполняемое приложение (standalone). Во втором случае возможно создание исполняемых exe-файлов (projector), когда swf-файл включается во FlashPlayer.
  8. Отладчик должен обладать следующим минимальным функционалом:Управление потоком выполнения:Пошаговая трассировка:Шаги с заходом, обходом, выходом, запуск, остановка и т.дУправление точками останова: Установка и удаление контрольных точек или условий остановкиПросмотр / изменение данных:Отслеживание, установка и изменение значения переменных в процессе работы программыВычисление выражений – иногда пользователи нуждаются в вычислении каких либо выражений в каком либо контексте программыОбработка исключенийвозникающих в отлаживаемой программе
  9. Debug Flash Player – специальная версия программы Adobe Flash Player,предоставляющая помимо проигрывания Flash-файлов возможностьдоступа к текущему состоянию виртуальной машины Flash-плеера.Debug Flash Player предоставляет набор операцийиспользуя которыеможно осуществлять отладку приложений на ActionScript 3.
  10. Debug Flash Player не обладает достаточно развитым протоколом взаимодействияСледовательно требуется дополнительный модуль для управления Debug Flash Player, controllerDebug Flash Player и протокол общения с нимтребуют работы в режиме запрос ответDebug Flash Player не гарантирует завершения операции за какое либо время; некоторые операции иногда могут длиться несколько секундВозможен вариант удаленной отладкиНеобходим дополнительный модуль, скрывающий особенности работы Debug Flash Player призван решить данные проблемы.
  11. Для решения поставленной задачи потребовалосьРазработать модуль осуществляющий взаимодействие с Debug Flash Playerпо специальному протоколу посредством сокетовА также интегрировать данный модуль с Visual Studio в составе продукта CodeDriveVisual Studio предоставляет API для интеграции отладчиков а взаимодействуя с модулемотладки через предоставляемое им асинхронное API можно осуществлять отладку приложений ActionScript 3Некоторые элементы пользовательского интерфейса Visual Studio требуют вычисления выраженийДля достижения этой цели нужно было разработать интерпретатор выражений.
  12. Примеры задач для вычисления выражений:Срабатывание точки останова и последующее вычисление выраженияСоздание точек останова с условием
  13. Выражения необходимо вычислять по спецификации ECMA-262 иECMA-357Выражения самая сложная часть данных спецификаций.В некоторых случаях для вычисления выраженийНеобходим Runtime контекст Debug Flash PlayerНа данный момент интерпретатор не реализует все выраженияИз всех выражений были выбраны наиболее востребованные:(бинарные операции, вызовы функций, обращение к интедку массива, кобочные выражения)
  14. В основе модулей расширения Visual Studio 2010 лежит технология COM.COM -Технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих компонентов, каждый из которых может использоваться во многих программах одновременно. COM Interop (&quot;Взаимодействие с COM&quot;) - технология, включённая в .NET CLR, позволяющий объектам COM взаимодействовать с объектами .NET, и наоборот.VSPackage – представляют собой программные модули c помощью которых можно расширить Visual Studio дополнительными функциональными возможностями: элементами пользовательского интерофейса, сервисами, новыми типами проектов, редакторами кода, дизайнерами.Session Debug Manager предназанчен для управления модулям отладки, реализуется Visual StudioProcess Debug Manager – управляет программами и процессами, и предоставляет возможность их отладки с помощью DebugEngine,Также реализуется Visual StudioDebugEngine – является компонентом реализуя который, можно осуществлять отладку новых типов программ.ExpressionEvaluatorпредназначен разбора и вычисления значений переменных и выраженийДля отображения их в соответсвующих окнах Visual StudioЭтапы интеграцииРегистрация Debug Engine вVisual Studio (Фабрика класса - COM)Реализация механизма загрузки Debug Engine и присоединения к программе для отладкиРеализация интерфейсов для управления потоком выполнения, просмотра данных, вычисления выраженийРеализация механизма событий для связи Debug Engine c отладчиком ActionScript 3Реализация интерфейсов для завершения отладки
  15. Speaker tips:The essential difference is who controls how the data is received.Philosophically this is nothing but how the application and the environment work together.Looking from the application’s point of view:Does it ask the environment – interactively – for data?  enumerableDoes it passively wait for the environment to send data and react to it?  observableBoth are complementary models. One doesn’t (aim to) replace the other.Matter of which one aligns more closely to which model:SQL’ s TDS protocol is pull-based, hence IE&lt;T&gt; is the best fit.Stock broker services may be push-based, hence IO&lt;T&gt; is a better match.Will see how one can convert between those.
  16. Практический эффектМенталитет Rx сводится к так называемым push-коллекциям. Разница следуюшщая: pull-коллекции предоставляют свое содержимое по запросу. Push-коллекции сами “толкают” элементы,нужно подписаться на выдачу элементов. При этом “элементами” являются не только элементы коллекций. Например, если происходит событие, то push-коллекция в контексте Rx может выдавать аргументы события. Или результат асинхронного вызова. Приложение становится “реактивным”, то есть учится реагировать на события и аггрегировать их для более удобного использования.1. Мы получили способ комбинирования событий. В реальных приложениях довольно частно нужно иметь обработчик на комбинацию событий, причем не просто на комбинацию, а на комбинацию со сложными условиями, например, когда одно событие возникает только после другого и если этому не предшествовало третье. С помощю Rx, такая задача решается одним запросом.2. Но самое крутое, что мы получили единый (!) механизм работы не только с событиями, но и со всеми асинхронными операциями. То есть, все события, асинхронные паттерны, TPL и любая другая параллельно-асинхронная конструкция – отлично покрываются этой моделью и все это тоже можно комбинировать между собой линковскими запросами посредством Rx.
  17. Библиотека параллельных задач (TPL) представляет собой набор открытых типов и API-интерфейсов в пространствах имен System.Threading и System.Threading.Tasks в .NET Framework 4. TPL предназначен для того, чтобы повысить производительность труда разработчиков, упрощая процесс добавления параллелизма и одновременного доступа к приложениям. TPL увеличивает степень параллелизма динамически, чтобы наиболее эффективно использовать все процессоры, которые доступны. Кроме того, в библиотеке параллельных задач осуществляется секционирование работы, планирование потоков в пуле ThreadPool, поддержка отмены, управление состоянием и выполняются другие низкоуровневые задачи. Используя библиотеку параллельных задач, можно повысить производительность кода, сосредоточившись на работе, для которой предназначена программа.Начиная с .NET Framework 4 библиотека параллельных задач является предпочтительным способом создания многопоточного и параллельного кода.