Портал создан при поддержке Федерального агентства по печати и массовым коммуникациям.

Страницы: 1 2 След.
RSS
Модель чекинг, (автоматизированный метод теста кода)
Несколько лет назад была одна на первый взгляд рядовая лекция в вузе, в котором я учился. Кторую я сначала по традиции забыл, но по истечению времени данный материал вспоминается со все большим интересом и сожалением что на практике не применяется.

Все мы знаем что программы - глючат  :evil: . Неосторожное нажатие не той кнопки, неверное значение переменной, конфликт между процессами и просто внезапно возникшая ошибка памяти могут привести к самым плачевным последствиям и компьютер, и неуравновешенного пользователя  :evil: . Конечно, существуют разные методы теста кода. Но большинство из них, например JUnit, сродни попыткам неандертальца разобраться в химическом составе камней, ударяя их друг о друга.
Проблема в том, что нельзя построить тесты, которые охватывали бы все реально возможные значения всех переменных. Это будет очень очень много тестов - (например 2 в степени количества переменных помноженных на число битов в одной переменной). Поэтому ограничиваются небольшим количеством "контрольных" тестов, с определенными входными значениями. В то время как обыкновенная ошибка переполнения ( что не учитывает этот тест) являлась дырой для взламывания серъезных систем.
Фундаментально решить проблему ( протестить все возможные комбинации, но хитро - без перебора) позволяет метод модель чекинга. Суть в том, что по абстрактной модели, которая включает в себя ход программы с описанием, какая переменная какой диапазон чисел может принимать, создается конечный автомат, просчитав который можно узнать где в программе потенциальные глюки и даже сгенерировать код без глюков.
Базовыми компонентами модели являются разные условия. Например, "х может принимать значения от 1 до 400". Временные условия , например "до/ после/ в то время как (условие 1)  (не)должно выполняться (условие 2)". В реале они конечно сложнее и подробнее.
Небольшой инструмент, с которым можно посмотреть эту тему является NuSMV Model Checker. Можно погуглить, скачать и поиграться, если еще живой.
В перспективе можно сделать серъезные инструменты, которые будут создавать этот "контрольный автомат" автоматически из исходного кода или например указанных в исходнике аспектов, или вообще по бинарному коду.
И наконец последний вопрос. Почему на практике так не делают?
Мое мнение - потому что дурни программинг- довольно концервативная вещь, где до сих пор сообщество используют обычный С с доисторическими грубыми макросами...
Цитата
smer4 sssmeeer пишет:
Все мы знаем что программы - глючат . Неосторожное нажатие не той кнопки, неверное значение переменной, конфликт между процессами и просто внезапно возникшая ошибка памяти могут привести к самым плачевным последствиям
Это жадные барыги от компьютерного бизнеса, специально портят нам продукт, чтобы люди страдали. Издеваются.
Все эти Биллы Гейтсы и прочие Возняки десятилетиями навязывают нам, благородным потребителям, свою мерзкую, ни на что негодную, так называемую продукцию. Всё это финансируется Ротшильдами, их яврейский род завсегда потешался над людьми.

Цитата
smer4 sssmeeer пишет:
Проблема в том, что нельзя построить тесты, которые охватывали бы все реально возможные значения всех переменных.
Да нет никаких проблем. Это всё специально делается, чтобы издеваться и косить бабло.

Цитата
smer4 sssmeeer пишет:
Например, "х может принимать значения от 1 до 400". Временные условия , например "до/ после/ в то время как (условие 1) (не)должно выполняться (условие 2)". В реале они конечно сложнее и подробнее.
Небольшой инструмент, с которым можно посмотреть эту тему является NuSMV Model Checker.
Это так специально задумано, понапридумывали ничего незначащие термины.
Иксы какие-то. Забивают людям голову ерундой. А сами продают Россию по кусочкам.

Цитата
smer4 sssmeeer пишет:
В перспективе можно сделать серъезные инструменты, которые будут создавать этот "контрольный автомат" автоматически из исходного кода или например указанных в исходнике аспектов, или вообще по бинарному коду.
Если бы программированием занимались настоящие ученые, а не какие-то программисты, - всё было бы в порядке. А так, всем давно известно, что ради денег они на всё пойдут.
Программисты есть хорошие, но те, кто пишут конечный продукт - самые настоящие барыги.
С вами невозможно разговаривать, вы наверняка оплату получаете за свои посты, рекламируя тут всяких проходимцев.
(я здесь больше Sagittarius пародирую, но и вы тоже молодец)
Просвещение внедрять с умеренностью, по возможности избегая кровопролития.
М.Е.С.Щ.
Главное, - нужно понимать, что любая тема, куда заходит дилетант и начинает там резать своё "видение" и рубить правду-матку, скатывается на самое дно, и любое обсуждение превращается в хлев. Важные вопросы становится невозможным обсудить, зато десятками страниц проходит обсуждение дичайшего бреда, который сидит в голове у дилетанта, и который он с удовольствием выливает в уши всех участников.
Просвещение внедрять с умеренностью, по возможности избегая кровопролития.
М.Е.С.Щ.
Хм... ладно, я то в проблему вникнуть пытаюсь хоть и дилетант. Прикол в том, что поповоду

Цитата
M.Reynolds пишет:
Издеваются. Все эти Биллы Гейтсы и прочие Возняки десятилетиями навязывают нам, благородным потребителям, свою мерзкую, ни на что негодную, так называемую продукцию.

Цитата
M.Reynolds пишет:
Если бы программированием занимались настоящие ученые, а не какие-то программисты, - всё было бы в порядке. А так, всем давно известно, что ради денег они на всё пойдут.
просто хотят полегче и побыстрее не напрягая моск,
прикол, что  я согласен  с этими цитатами   :D  :o
Цитата
smer4 sssmeeer пишет:
прикол, что я согласен с этими цитатами
А, ну тогда ясно, какой вы в программинге "специалист".
Рынок программирования - свободный. Программы пишут все, кто может это делать.
Включая создателей Винды.
Ваши сетования по поводу вышесказанного - не стоят пикселей, которыми они написаны.
Не нравится виндоуз - пишите своё или юзайте линукс.
Дилетантизм был, есть и будет наказан. Программы, возможно, вы писать умеете, но что такое программный рынок - не понимаете. Как и не понимаете, что такое рынок вообще.
Судьба ваша незавидная.
Неучи вынужденны страдать по причине своей глупости.
Просвещение внедрять с умеренностью, по возможности избегая кровопролития.
М.Е.С.Щ.
Ваши заблуждения именно в программинге, как явлении в человеческом обществе.
Вы в целом не понимаете, что это такое. Программы писать научились, но это не даёт понимания о явлении в целом, увы.

Тогда как я программы писать не умею, но рынок программирования знаю хорошо, как и рынок вообще. И по этой причине, я вижу явление правильно, а вы будете исходить слюной от зависти к мелкософту.
Изменено: M.Reynolds - 21.07.2015 10:12:00
Просвещение внедрять с умеренностью, по возможности избегая кровопролития.
М.Е.С.Щ.
Цитата
M.Reynolds пишет:
Ваши заблуждения именно в программинге, как явлении в человеческом обществе.
нет у меня никакого заблуждения. Рынок диктуют ничего не смыслящие юзеры которым надо лиж бы чтоб кнопочки были покрасивее  ( а что тормозит - то нормально) и планктон программеров корпораций, которые по большей части пьют кофе и болтают на работе, а пишут по 20 строк кода в день. Я не исхожу завистью, мне просто обидно. Вроде в других отраслях типа машиностроения, такого же вроде бы нету, там за каждый грамм материала борются.
Что мешает применить принципы модель чекинга в новой Винде, заместа новых дурацких кнопок, и построить нормальный механизм коррекции ошибок ( а не убожество, например в 7-й, которое несколько минут будет че то пережевывать а потом выдает неизвесная ошибка).
Так ну это отклонение от темы.
Дополнение.
- Полученный по методу описанному выше автомат может (должен) быть минимизирован  Например поиск выражений "всегда правда" или "всегда ложь", сокращение по взаимосвязи переменных а потом просто компилируется в автоматон - почти как по теории. Че то тут можно пообсуждать
- А еще немаловажный момент ( который правда на лекциях не рассматривался, но из имеющихся знаний можно вывести) - это контроль состояния при нескольких паралельных процессах. Очевидно, что тогда имеем недетерминисткий аутоматон (НФА), находящийся сразу в нескольких состояниях, не меньших чем количество процессов. НФА вообще компактнее (аналогичный ДФА имел бы 2^n  состояний где n- все состояния НФА. Только реализовывать его несколько сложнее, эффективнее статическим массивом состояний.
А в игрушке NuSMV нет даже оптимизации, например условие x = {0..400} приводит к появлению четырехсот новых состояний автомата, заместо одного с переходом по условию (0 <= x)  И ( x <=400).
Изменено: smer4 sssmeeer - 22.07.2015 01:12:36
Цитата
smer4 sssmeeer пишет:
нет у меня никакого заблуждения.
Очень самонадеянное заявление.
Цитата
smer4 sssmeeer пишет:
Рынок диктуют ничего не смыслящие юзеры которым надо лиж бы чтоб кнопочки были покрасивее  
Я юзер. Мне надо:
- многозадачность (никогда не забуду собственный восторг в 1992 при первом включении Windows и последующий отказ от MS-DOS, это воспринималось как реальное чудо);
- базы данных, начал использовать в том же году, если не ошибаюсь Парадокс
- Microsoft Office
- сама идеология РС + Вин - собрал, зарядил - работай, в отличии от яблочников, которых я никогда не понимал.
- коммерческое использование. Я производитель торговых автоматов. Начал производство в 2004 (чтобы не покупать готовые, которые очень дорогие). Начал с написания софта, а именно на Редхат (чтобы не платить мелкософту). Нанял лучшего в своем городе программиста, писали год, написали, стали работать в тесте, появились глюки. Исправляли полгода, не смогли. Не смогли, Карл! Плюнули, начали писать под Win Embedded, его цена опустилась до смешной - 100 долл. экземпляр на вечное пользование (если вы в курсе, то раньше была накопительная система оценки одной машины на которую мелкософт продавал одну копию - нужно было вести учёт комплектующих по серийным номерам, замена блока питания, отмечаешь, замена оперативки - это уже другой комп, лицензия терялась, замена матери - лицензия терялась, замена винта + блока питания - лицензия терялась). Сейчас всё это кануло в лету с появлением embedded. Программа реализуется по принципу - одна копия, одна машина с любой заменой. Стоит жалких 100 баксов (в последний раз покупал в 2010). Глюки также были, но мы их порешали, тогда как под хваленый линукс просто не смогли
- я могу еще сотни плюсов сюда вписывать, но сам рынок показывает, что в сфере РС - мелкософт безусловный лидер.
Цитата
smer4 sssmeeer пишет:
( а что тормозит - то нормально)
Вы, главное, - сам не тормозите))
Цитата
smer4 sssmeeer пишет:
и планктон программеров корпораций, которые по большей части пьют кофе и болтают на работе, а пишут по 20 строк кода в день. Я не исхожу завистью, мне просто обидно.
Какое вам дело, сколько программеров работает в конторе? это же ваши коллеги, вы радоваться должны, - это именно зависть, а иначе, когда её нет - в чужие карманы не заглядывают))
Цитата
smer4 sssmeeer пишет:
Вроде в других отраслях типа машиностроения, такого же вроде бы нету, там за каждый грамм материала борются.
Везде так. Никто не содержит сотрудников просто так. Тем более, что мелкософт одна из богатейших фирм мира, чего вы за их расходы на сотрудников так распереживались?
Цитата
smer4 sssmeeer пишет:
Что мешает применить принципы модель чекинга в новой Винде,
Вы свои методы применяйте на своём продукте.
Вы не можете указывать другим людям, что и как им делать по одной простой причине - это их труд и их продукт. Тем более, что работают они в условиях жесточайшей конкуренции. В действительности именно из-за огромного количества сотрудников они постоянно выходят в лидеры, - рынок обмануть невозможно, - если появится что-то лучшее - ВСЕ мгновенно перейдут на новый продукт и помашут мелкософту ручкой. Этого не случается, - потому что лучше ничего нет. При всех недостатках окон. А их много, но это совершенно другой вопрос.
Цитата
smer4 sssmeeer пишет:
заместа новых дурацких кнопок, и построить нормальный механизм коррекции ошибок ( а не убожество, например в 7-й, которое несколько минут будет че то пережевывать а потом выдает неизвесная ошибка).
Пишите свою ось и делайте как хотите. Вы зачем другим производителям указываете, это же просто смешно))) они вас не слушают. Капитализация Microsoft превысила 300 миллиардов долларов. Они умеют деньги зарабатывать. Все, кто купил их акции - хлопают в ладоши вот уже 30 лет как. А если вы знаете их недочеты и указываете на ошибки - так выпустите конкурентную ось)) спасите человечество.
Просвещение внедрять с умеренностью, по возможности избегая кровопролития.
М.Е.С.Щ.
Цитата
M.Reynolds пишет:
Пишите свою ось и делайте как хотите.
Проблема в програмном обеспечении которое почти полностью предназначено для винды, а полноценный эмулятор системы пока что не сделало даже линух- сообщество.

Цитата
Начал с написания софта,
непонятно, какой именно софт писали? Поповоду линуха на необычном железе в первую очередь думается о драйверах, которые вы сами написать не сможете и можете даже нигде не найти
Цитата
smer4 sssmeeer пишет:
Проблема в програмном обеспечении которое почти полностью предназначено для винды, а полноценный эмулятор системы пока что не сделало даже линух- сообщество.
Т.е. догнать мелкософт не такая уж и простая задача?
Давайте говорить честно - непосильная задача.
Хотя конкуренты так или иначе сидят на хвосте и дышат в спину. В принципе, винды сейчас довольно неплохая система. Я вот дома юзаю семерку и почти без нареканий.
Программисты конечно же найдут недостатки, но так везде.
Не бывает совершенства.
Цитата
smer4 sssmeeer пишет:
непонятно, какой именно софт писали?
Обычная прога по управлению, сбору статистики, финансовый учет с фискальным регистратором.
Цитата
smer4 sssmeeer пишет:
Поповоду линуха на необычном железе в первую очередь думается о драйверах, которые вы сами написать не сможете
Дрова пишутся элементарно. Мой кодер вообще на всё дрова пишет, на принтеры, на всякую шнягу, просто ради удовольствия.
Была сложность с кодеками, тоже пришлось покупать под коммерческое использование.
Там просто воспроизводится обычный мп3 при некоторых событиях, и я не стал рисковать, купил. Кодеки он не умеет писать)) а дрова запросто.
Конкретно дрова под контроллер клавиш управления. У меня не сенсорные автоматы, но тем не менее, пришлось писать дрова.
Изменено: M.Reynolds - 22.07.2015 13:47:02
Просвещение внедрять с умеренностью, по возможности избегая кровопролития.
М.Е.С.Щ.
Страницы: 1 2 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)

Модель чекинг