SlideShare a Scribd company logo
Первый слайд
Code Contracts DimaPasko Murano Software Inc.
Содержание История(Eiffel, Design By Contract, Spec#) Возможности Code Contracts Использование Code Contracts Примеры Вопросы Продолжительность ~ 30-40минут
Eiffel Был создан в 1985 Бернардом Мейером Там появилась концепция Design by Contract
Design by contract (DbC)  Контрактное программирование – это метод проектирования программ, предполагающий четкое специфицирование интерфейсов и описание обязанностей компонентов системы при взаимодействии друг с другом.
Design by contract (DbC) предусловия – обязательства, которые должны быть выполнены вызывающей стороной перед вызовом метода постусловия – обязательства, гарантирующиеся вызываемым методом инварианты класса – обязательства, что свойства класса будут удовлетворять определенным требованиям. Например, инвариантом для класса PositiveNumber, может быть утверждение, что хранимое число всегда больше или равно 0.
Spec# Разработка Microsoft Research Специализированный язык на базе C#
Использование Code Contracts .NET Framework 3.5 Необходимо подключить к проекту Microsoft.Contracts.dll .NET framework 4.0 Часть Base Class Library Не надо дополнительных reference Контракты находятся в System.Diagnostics.Contracts
Возможности Динамическая проверка Статическая проверка Поддержка абстрактных классов и интерфейсов Генерация документации
Демонстрация
По горячим следам Contract.Requires(d > 0); Contract.Ensures(Contract.Result<decimal> > 0); [ContractInvariantMethod]private void ObjectInvariant() { Contract.Invariant(d> 0); } [ContractClass(typeof(IFooContract))]interface IFoo [ContractClassFor(typeof(IFoo))]class IFooContract : IFoo
Выводы Code Contracts привносят Design By Contract в .NET мир Статическая и динамическая проверка Предусловия Постусловия Инварианты класса И это просто хорошая практика, которая позволяет сделать код лучше
Ссылки Code Contracts Project http://research.microsoft.com/en-us/projects/contracts/ MSDN Forum http://social.msdn.microsoft.com/Forums/en-US/codecontracts/threads Spec# Project http://research.microsoft.com/en-us/projects/specsharp
Вопросы?

More Related Content

Similar to Code Contracts

Design by Contract basics
Design by Contract basicsDesign by Contract basics
Design by Contract basics
Sergey Teplyakov
 
Проектирование по контракту
Проектирование по контрактуПроектирование по контракту
Проектирование по контракту
Alexander Byndyu
 
Design by Contract
Design by ContractDesign by Contract
Design by Contract
Kiev ALT.NET
 
Design by Contracts in PHP
Design by Contracts in PHPDesign by Contracts in PHP
Design by Contracts in PHP
Sergei Khaletskiy
 
MSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on ArchitectureMSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on Architecture
Sergey Baranov
 
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Rinat Shaikhutdinov
 
Разработка в долг
Разработка в долгРазработка в долг
Разработка в долг
Vitebsk Miniq
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
Fwdays
 
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation process
Dima Dzuba
 
Encom Aurora - Александр Попов - митап на DevConf
Encom Aurora - Александр Попов - митап на DevConfEncom Aurora - Александр Попов - митап на DevConf
Encom Aurora - Александр Попов - митап на DevConf
chatbotscommunity
 
Dot.net building scalable java script application using react and typescript,...
Dot.net building scalable java script application using react and typescript,...Dot.net building scalable java script application using react and typescript,...
Dot.net building scalable java script application using react and typescript,...
Sigma Software
 
Поддержка сайта Мегафон.ру
Поддержка сайта Мегафон.руПоддержка сайта Мегафон.ру
Поддержка сайта Мегафон.ру
Михаил Горюнов
 
ПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решенийПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решенийВиктор Золотов
 
9 структура компонентных приложений
9 структура компонентных приложений9 структура компонентных приложений
9 структура компонентных приложений
KewpaN
 
SCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max KolodezniySCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max Kolodezniy
Alexey Krivitsky
 
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3
Timur Shemsedinov
 

Similar to Code Contracts (20)

Design by Contract basics
Design by Contract basicsDesign by Contract basics
Design by Contract basics
 
Проектирование по контракту
Проектирование по контрактуПроектирование по контракту
Проектирование по контракту
 
Design by Contract
Design by ContractDesign by Contract
Design by Contract
 
Design by Contracts in PHP
Design by Contracts in PHPDesign by Contracts in PHP
Design by Contracts in PHP
 
MSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on ArchitectureMSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on Architecture
 
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
 
Разработка в долг
Разработка в долгРазработка в долг
Разработка в долг
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation process
 
Sonar quality
Sonar qualitySonar quality
Sonar quality
 
лекция №1
лекция №1лекция №1
лекция №1
 
Encom Aurora - Александр Попов - митап на DevConf
Encom Aurora - Александр Попов - митап на DevConfEncom Aurora - Александр Попов - митап на DevConf
Encom Aurora - Александр Попов - митап на DevConf
 
Dot.net building scalable java script application using react and typescript,...
Dot.net building scalable java script application using react and typescript,...Dot.net building scalable java script application using react and typescript,...
Dot.net building scalable java script application using react and typescript,...
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Поддержка сайта Мегафон.ру
Поддержка сайта Мегафон.руПоддержка сайта Мегафон.ру
Поддержка сайта Мегафон.ру
 
ПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решенийПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решений
 
9 структура компонентных приложений
9 структура компонентных приложений9 структура компонентных приложений
9 структура компонентных приложений
 
SCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max KolodezniySCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max Kolodezniy
 
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3
 

Code Contracts

  • 2. Code Contracts DimaPasko Murano Software Inc.
  • 3. Содержание История(Eiffel, Design By Contract, Spec#) Возможности Code Contracts Использование Code Contracts Примеры Вопросы Продолжительность ~ 30-40минут
  • 4. Eiffel Был создан в 1985 Бернардом Мейером Там появилась концепция Design by Contract
  • 5. Design by contract (DbC) Контрактное программирование – это метод проектирования программ, предполагающий четкое специфицирование интерфейсов и описание обязанностей компонентов системы при взаимодействии друг с другом.
  • 6. Design by contract (DbC) предусловия – обязательства, которые должны быть выполнены вызывающей стороной перед вызовом метода постусловия – обязательства, гарантирующиеся вызываемым методом инварианты класса – обязательства, что свойства класса будут удовлетворять определенным требованиям. Например, инвариантом для класса PositiveNumber, может быть утверждение, что хранимое число всегда больше или равно 0.
  • 7. Spec# Разработка Microsoft Research Специализированный язык на базе C#
  • 8. Использование Code Contracts .NET Framework 3.5 Необходимо подключить к проекту Microsoft.Contracts.dll .NET framework 4.0 Часть Base Class Library Не надо дополнительных reference Контракты находятся в System.Diagnostics.Contracts
  • 9. Возможности Динамическая проверка Статическая проверка Поддержка абстрактных классов и интерфейсов Генерация документации
  • 11. По горячим следам Contract.Requires(d > 0); Contract.Ensures(Contract.Result<decimal> > 0); [ContractInvariantMethod]private void ObjectInvariant() { Contract.Invariant(d> 0); } [ContractClass(typeof(IFooContract))]interface IFoo [ContractClassFor(typeof(IFoo))]class IFooContract : IFoo
  • 12. Выводы Code Contracts привносят Design By Contract в .NET мир Статическая и динамическая проверка Предусловия Постусловия Инварианты класса И это просто хорошая практика, которая позволяет сделать код лучше
  • 13. Ссылки Code Contracts Project http://research.microsoft.com/en-us/projects/contracts/ MSDN Forum http://social.msdn.microsoft.com/Forums/en-US/codecontracts/threads Spec# Project http://research.microsoft.com/en-us/projects/specsharp