Microsoft Research представит ряд проектов на Microsoft PDC10
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 - это платформа, которая использует социальные сети для создания графа связей между людьми и артефактами в репозиториях программного кода.
На рисунке показан пример такого графа, где показана связь между Памом и Дейвом. С этой диаграммы мы можем узнать, что Пам - это программный менеджер, который работает с разработчиком Дейвом, так как Пам создал баг #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 Украина | Украинское подразделение компании Microsoft. |