The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Перевод документации Eiffel по технологии проектирования по ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Перевод документации Eiffel по технологии проектирования по ..."  +/
Сообщение от opennews (ok) on 11-Мрт-13, 02:23 
Выполнен (http://www.opennet.ru/base/dev/DesignByContract.txt.html) перевод на русский язык документации Eiffel по технологии проектирования  по контракту (Design by Contract).

Широко распространенным способом тестирования программных
   компонент является выполнение юнит-тестов. Юнит-тесты описывают набор
   шагов, которые необходимо выполнить, для получения необходимого
   результата. Однако юнит-тесты трудно писать и поддерживать в актуальном
   состоянии, отсутствие декларативности и интеграции в код затрудняет
   понимание спецификации программного компонента, объём кода юнит-тестов,
   как правило, достаточно велик. Этих недостатков лишены контракты,
   которые накладывают ограничения и обязательства на компоненты класса.
   Контракты являются частью документации программной системы, позволяют
   легко тестировать отдельные компоненты, упрощают повторное
   использование и отладку.


Проектирование по контракту изначально
   поддерживается в языке Eiffel как на уровне инструментов среды
   программирования EiffelStudio, так и во всех стандартных библиотеках,
   поставляемых с этой средой. Систематическое применение проектирования
   по контракту позволяет упростить проектирование программных систем,
   сократить время выявления ошибок, повысить качество кода и надежность
   разработанного ПО.

URL: http://www.opennet.ru/base/dev/DesignByContract.txt.html
Новость: http://www.opennet.ru/opennews/art.shtml?num=36353

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Перевод документации Eiffel по технологии проектирования по ..."  –1 +/
Сообщение от Crazy Alex (ok) on 11-Мрт-13, 02:23 
Я так понимаю, аннотация не с английского переводилась? Потому что в ней, простите, чушь написана.

Контракты и юниттесты - заимно дополняющие друг друга технологии. Хотя бы потому, что контракты проверяются только на том code path, по которому пошло исполнение программы, а юниттесты позволяют прогнать (в идеале) каждый code path (и, в том числе, осбеспечить проверку контрактов при этом).

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Перевод документации Eiffel по технологии проектирования по ..."  +3 +/
Сообщение от Аноним (??) on 11-Мрт-13, 02:51 
> юниттесты позволяют прогнать (в идеале) каждый code path

Юнит-тесты позволяют протестировать валидность поведения кусочков программы ("юнитов"). Протестировать все возможные code paths в мало-мальски крупной программе становится невозможно из-за совершенно дикого количества их всевозможных сочетаний.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Перевод документации Eiffel по технологии проектирования по ..."  –2 +/
Сообщение от Аноним (??) on 11-Мрт-13, 09:38 
> Протестировать все возможные code paths в мало-мальски крупной программе становится невозможно из-за совершенно дикого количества их всевозможных сочетаний.

Протестировав все возможные входа юнитов, а это вполне реально, автоматом покрываются все code path, нэ?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Перевод документации Eiffel по технологии проектирования по ..."  +/
Сообщение от Александр (??) on 11-Мрт-13, 12:41 
Все возможные пути протестировать нельзя, иначе задача об остановке программы была бы разрешима. Возможный подход к полному покрытию - model checking, тем не менее обычно происходит "взрыв" числа состояний, и о применимости к "каждодневному программированию" говорить не приходится.
Другой вариант - статический анализ, верификация. Там от контрактов деваться практически некуда, т.к. на сегодняшний момент инструментарий не настолько силён, чтобы что-то выводить без подсказок.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Перевод документации Eiffel по технологии проектирования по ..."  +/
Сообщение от Аноним (??) on 11-Мрт-13, 12:49 
> Все возможные пути протестировать нельзя, иначе задача об остановке программы была бы
> разрешима. Возможный подход к полному покрытию - model checking, тем не
> менее обычно происходит "взрыв" числа состояний, и о применимости к "каждодневному
> программированию" говорить не приходится.
> Другой вариант - статический анализ, верификация. Там от контрактов деваться практически
> некуда, т.к. на сегодняшний момент инструментарий не настолько силён, чтобы что-то
> выводить без подсказок.

code coverage и задача об остановке никак не связаны.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Перевод документации Eiffel по технологии проектирования по ..."  +/
Сообщение от Александр (??) on 11-Мрт-13, 13:29 
Так ведь code coverage ничего и не гарантирует. Мы можем лишь убедиться, что определённые (все) участки программы достижимы, и на определённых данных вычисляют определённые результаты.
Контракты никак не отменяют юнит-тесты. Но они позволяют реализовывать дополнительные модели тестирования. То, что сейчас поддерживается в EiffelStudio - возможность автоматически генерировать тесты на основе а) выполнения программы, приводящей к нештатной ситуации; б) вызову отдельных компонентов с сгенерированными входными данными, приводящему к нештатной ситуации. В обоих случаях под нештатной ситуацией понимается нарушение контракта или исключение.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Перевод документации Eiffel по технологии проектирования по ..."  –2 +/
Сообщение от Аноним (??) on 11-Мрт-13, 15:57 
Внезапно, я не противопоставляю контракты и юниттесты. Хотя, ассерты на стероидах, как и сам эйфель просто не нужны.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Перевод документации Eiffel по технологии проектирования по ..."  +1 +/
Сообщение от croster (ok) on 11-Мрт-13, 16:42 
>Внезапно, я не противопоставляю контракты и юниттесты.

Они и не противопоставляются, применение контрактов не означает полного отказа от юниттестов, но позволяет существенно уменьшить их количество.

>ассерты на стероидах

Контракты вовсе не являются ассертами на стероидах

>как и сам эйфель просто не нужны.

Обоснование ненужности будет или просто неаргументированная ненависть?

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Перевод документации Eiffel по технологии проектирования по ..."  +/
Сообщение от Александр (??) on 11-Мрт-13, 17:17 
Безусловно, существует много ненужных вещей. Вопрос лишь в контексте, о котором идёт речь. По нелепой случайности Хоар популяризовал свои тройки настолько, что все системы верификации помимо остальных механизмов до сих пор используют их. В виде предусловий, постусловий и инвариантов класса. Видимо, так же по недосмотру всё ещё используются инварианты и варианты циклов.
Но раз есть гораздо лучшая замена, буду раз узнать.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Перевод документации Eiffel по технологии проектирования по ..."  +/
Сообщение от northbear (??) on 11-Мрт-13, 21:20 
Несчастные юнит-тесты. В последнее время про них всё время норовят всякую чушь написать.

Что значит поддерживать юнит-тесты в актуальном состоянии? И почему их вдруг стало трудно писать?
Если три-четыре строчки юнит-теста вызывают проблемы, то может вообще не стоит браться разрабатывать приложения? Тем более на Eiffel...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Перевод документации Eiffel по технологии проектирования по ..."  +/
Сообщение от Crazy Alex (ok) on 11-Мрт-13, 21:43 
Да там просто идиотскую аннотацию написали. Сама дока вполне достойная, как и контракты в целом.
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Перевод документации Eiffel по технологии проектирования по ..."  +/
Сообщение от croster (ok) on 19-Мрт-13, 08:13 
Аннотация обновлена.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру