Microsoft Research представит ряд проектов на Microsoft PDC10

среда, 20 октября 2010, Александр Краковецкий

Research in Software Engineering (RiSE) на предстоящей конференции Microsoft PDC10 продемонстрирует 16 проектов. Рассморим их более подробно.

BEK

Сайт: http://research.microsoft.com/en-us/projects/bek/

BEK - это предметно-ориентированный язык программирования для написания строковых функций общего назначения с примесью анализа.  С помощью BEK можно будет ответить на вопросы типа

  • Вернут ли эти две программы одинаквые строки? ("Do these two programs output the same string?")
  • Может ли эта программа когда-нибудь вернуть некоторою строку? ("Can this program ever output a target string?")
  • Что произойдет, если я объединю эти лве программы? ("What happens if I compose these two programs?")
  • Порядок имеет значение? ("Does the order matter?")

BEK, в отличии от регулярных выражений, поможет более гибче работать со строками.

CodeBook

Сайт: http://research.microsoft.com/en-us/projects/codebook/

Codebook - это платформа, которая использует социальные сети для создания графа связей между людьми и артефактами в репозиториях программного кода.

http://research.microsoft.com/en-us/projects/codebook/codebookgraphschema.jpg
На рисунке показан пример такого графа, где показана связь между Памом и Дейвом. С этой диаграммы мы можем узнать, что Пам - это программный менеджер, который работает с разработчиком Дейвом, так как Пам создал баг #673, который был назначен на Дейва.

Code Contracts

Сайт: http://research.microsoft.com/en-us/projects/contracts/

Этот проект, думаю, никому не нужно представлять. Code Contracts - это новый способ написания и тестирования кода на основе контрактов.

Cuzz - Concurrency Fuzzing

Сайт: http://research.microsoft.com/en-us/projects/cuzz/

Cuzz - это инструмент для поиска ошибок в многопоточных программах. Cuzz позволяет тестировать большие программы, которые создают большое количество потоков.

Больше подробностей в этом видео.

Edge Routing with Ordered Bundles

Сайт: http://research.microsoft.com/en-us/um/people/levnach/orderedBundles.aspx

Перемещение по упорядоченные связям - так можно назвать исследования по оптимизации большого количества связей в ориентированных графах.

Вот один из примеров - карта маршрутов самолетов в США:

Empirical Studies

Сайт: http://research.microsoft.com/en-us/projects/esm/

Эти исследования направлены на анализ проблем при разработке программного обеспечения с эмпирической точки зрения. Проводятся совместно с командами разработчиков Windows и Visual Studio.

Основные направления:

  • надежность систем (Software Reliability): анализ и предсказание сбоев
  • процесс разработки программного обезпечения (Software Process): влияние организационных моментов на качество, методология agile, оценка трудозатрат
  • эмпирические исследования (Empirical Studies): модельное тестирование, TDD и др.

FINE

Сайт: http://research.microsoft.com/en-us/projects/fine/

Программные системы регулируются сложными политикам безопасности. Задача проверки ПО на соответствие эти политикам является сложной задачей. FINE - это новый язык программирования (похожий на F#), система типов которого позволяет проверять выполнение этих политик.

Formula

Moles и Pex

Сайты:

Moles и Pex - новые инструменты для тестирования программного обеспечения. Более детально с этими продуктами можно ознакомиться в нашей статье - Модульное тестирование ASP.NET приложений с использованием Moles и Pex.

Кроме того, есть веб-версия Pex под названием Pex for fun, где можно прямо в онлайне проинспектировать ваш код.

Programming in Stages - Chalice

Сайт: http://research.microsoft.com/en-us/projects/chalice

Хотите писать псевдо-код, который можно скомпилировать? С экспериментальным языком Chalice это возможно. 

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

Poirot

Сайт: http://research.microsoft.com/en-us/projects/poirot/

(Hercule) Poirot известен свои умением решать трудные задачи, находить ошибки в паралелльных программах, которые ускользают от тестеров при обычном тестировании.

Poirot проверяет свойства объектов в мультипоточных приложениях. Он использует техники, которые не зависят от языка программирования, для нахождения сценариев с ошибками. Планируется поддержка C, .Net и JavaScript. Poirot4C доступн для загрузки, Poirot4.NET и Poirot4JS будут вскоре доступны.

Revisions

Сайт: http://research.microsoft.com/en-us/projects/revisions

Как распараллелить конфликтующие задачи поможет ответить проект Revisions,который предоставляет простой, но мощный механизм для выполнения различных задач параллельно, даже если они используют одни и те же данные и могут подчиняться read-write или write-write конфликтам.

Часть наработок уже доступна по адресу http://codebox/orcs.

SymDiff: Static semantic diff

Сайт: http://research.microsoft.com/en-us/projects/symdiff/

SymDiff (Symbolic Differencing) предоставляет инфраструктуру для обеспечения обратной связи при изменениях программы. Инструмент не зависит от языка программирования и может работать с C, C++, .NET, x86 (при этом они транслируются в язык Boogie).

SPUR: A Trace-Based JIT Compiler for CIL

Сайт: http://research.microsoft.com/en-us/projects/spur/

SPUR - это исследовательский прототип для трассировки just-in-time компилятора (TJIT) для CIL. Позволяет увеличивать скорость выполнения .NET и JavaScript кода.

VСС

Сайт: http://vcc.codeplex.com/

VCC - это механизм проверки параллельных C программ.

VCC принимает C программу с различными аннотациями и и пытается доказать, что эти аннотации верные. Если это удается, то VCC сообщает, что программа действительно соответствует своим спецификациям.

Можно легко заметить, что большинство проектов предназначены для работы с параллельными программами, а именно для отладки и тестирования. Если перейти на страницы проектов, то можно увидеть, что практически по всем проектам есть научные публикации и большая исследовательская работа. Думаю, часть из этих проектов мы увидим через несколько лет в новых версиях Visual Studio и других инструментов для разработки программного обеспечения. Это в некоторой мере объясняет, почему R&D важен для софтверных компаний, в отличие от другого мнения, что R&D не связан с доходностью компаний.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии