Управление качеством разработки микроконтроллерных систем

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

ARV писал(а):любая программа потенциально может содержать ошибки. что будет, если спустя год существования какого-то автоматизированного инструментария тестирования вдруг выяснится, что в нем нашелся баг, который может поставить под сомнение результаты всех тестов, которые были сделаны с его помощью?
Аналогично могут обнаружиться ошибки в компиляторе и операционной системе, которые поставят под сомнение весь ранее произведенный с их помощью софт и результаты его работы. А помните не столь давнюю историю с ошибкой в процессоре "Пентиум", которая приводила к неправильным результатам вычислений? Причем ошибку допустила отнюдь не китайская безымянная фирмочка... Никто не даст гарантии от повторения подобных ошибок в будущем для новых контроллеров.

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

P.S. Если серьезно, то системы автоматизированного тестирования сами тестируются либо с собственной помощью, либо тестируют друг друга. Вероятность проворонить серьезную ошибку весьма невелика.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти

Сообщение DimanVIP »

Ув. Goldsmith, не могли бы Вы поделиться информацией по системам автоматического тестирования.

А то у меня намедни как раз закончились три недели бешеного креатива по разработке одной автоматизированной системы. Погонял её как положено, вроде все баги повыковыривал, но думаю дополнительная проверка лишней не будет.

Заранее большущее спасибо!
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Контактная информация:
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57

Сообщение O-LED »

ну у вас парни действительно хвост пистолетом :)) я раньше и не думал что инженеры насса, аэробус и другие тусуются на ради окоте.
а мы, простые любители :roll: делаем так, пишем код, паяем, исправляем то что сразу вылезло, и если вещь полезная - эксплуатируем её. если что-то опять вылезло, бегим к компу, открываем исходник, правим в том месте где вылезло, шьём и возвращаем вещь на место.
Конечно конструкторам космических кораблей этот метод не подходит, у них из-за ошибки корабль с орбиты отклонится может, да и программатор в космосе не всегда может быть, а вот для конструкторов часов и мигалок - идеальный метод :)))
KIT
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

konmik писал(а):Прежде чем рассуждать на эту тему, хотелось бы опредлиться с типом ситемы
Давайте возьмем для примера системы, доступные кустарям-одиночкам: малая автоматизация для домашнего хозяйства (теплицы/парники/инкубаторы...), инструменты (самопальные сверлилки/фрезеры/токарки...), приборы и т.п.
konmik писал(а):и трбованиям к ее надежности
Сбой контроллера теплицы или инкубатора в принципе может запороть урожай или выводок. Потери времени, труда и вложенных денег.
Сбой сверлилки для плат приведет к порче заготовки. Один раз не смертельно, но если отверстий много, а сбои часты, то инструмент становится бесполезен.
konmik писал(а):а бывает даже и безопасности.
На кардиостимуляторы и т.п. пока не замахиваемся. Требования к безопасности минимальны.
konmik писал(а):Кроме того надо еще помнить о жизненном цикле ситемы, т.е. сколько времени вы ее обязаны сопровождать, развивать и т.д.
Скажем, года 3 для определенности.
konmik писал(а):Я предлагаю ограничить круг обсуждения проблемы для начала. Как вам такое предложение?
Гораздо конструктивнее, чем мотив "я этого никогда не делал и не знаю как, следовательно, это вообще никому не нужно".
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

DimanVIP писал(а):Ув. Goldsmith, не могли бы Вы поделиться информацией по системам автоматического тестирования.
...
Заранее большущее спасибо!
Конечно.

Пара статей, с которых я начал входить в тему:
http://www2.enel.ucalgary.ca/People/Smi ... _paper.pdf
http://www.atomicobject.com/files/EIT20 ... dedTDD.pdf

На всякий случай для тех, кто интересуется темой, но имеет трудности с английским, я их перевел и выложил здесь:
http://club.shelek.ru/viewart.php?id=335
http://club.shelek.ru/viewart.php?id=337

Еще пара не менее интересных статей, которые я пока еще не переводил:
http://www.atomicobject.com/files/ESC-4 ... lliams.pdf
http://www.objectmentor.com/resources/a ... TDDinC.pdf

Некоторое время назад начал вести тему-дневничок о попавшихся под руку книгах, среди них много по теме качества: http://forum.shelek.ru/index.php/topic,26526.0.html

Обратите особенное внимание на эти: http://forum.shelek.ru/index.php/topic, ... #msg254387 и http://forum.shelek.ru/index.php/topic, ... #msg263114

Еще одна неплохая книга: http://forum.shelek.ru/index.php/topic, ... #msg254379 (но более общая, чем предыдущие). Ну и остальные аннотации поглядите, там кое-что попадается (и скоро будут еще).

В принципе могу подбросить еще литературы, я темой качества занимаюсь не первый день, но только для "больших" корпоративных систем.

Надеюсь, модераторы не сочтут это рекламой. Если сочтут, тогда могу скинуть список литературы в личку или на почту.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Goldsmith писал(а):
konmik писал(а):Я предлагаю ограничить круг обсуждения проблемы для начала. Как вам такое предложение?
Гораздо конструктивнее, чем мотив "я этого никогда не делал и не знаю как, следовательно, это вообще никому не нужно".
что касается меня, то я уверен, что подобные системы нужны. однако, лично для себя я не могу их использовать по неожиданной (возможно) причине: затраты на освоение этого инструмента (т.е. мои личные усилия) не оправдаются результатами. был случай, когда я хотел поиспользовать систему анализа исходника - рефакторинг, что ли это называется... знающие люди поймут, о чем я. скачал какую-то версию (т.к. профан - просто скачал по ссылке из статьи в журнале) - не пошла, не сказала почему. другая оказалась с интерфейсом командной строки - список команд страниц на 10. третья вроде пошла, но я так и не понял, что к чему - все термины абсолютно незнакомые... в общем, дилетантский подход не прошел... а напрягаться что-то не захотелось: пока я освою эту систему, да сделаю с ее помощью что-то полезное, уже и на пенсию будет пора :)

думаю, если бы знатоки провели небольшой ликбез в теме и по системам - возможно, чайникам стал бы лучше виден смысл всего этого... а то "синтетический тест" - да кто тут в курсе, что это такое?! :))) читать википупию не предлагать, только словесный обмен между разумами :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6321
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

ARV писал(а): что касается меня, то я уверен, что подобные системы нужны. однако, лично для себя я не могу их использовать по неожиданной (возможно) причине: затраты на освоение этого инструмента (т.е. мои личные усилия) не оправдаются результатами.
Ну вот, есть и у меня товарищи по несчастью :)
думаю, если бы знатоки провели небольшой ликбез в теме и по системам - возможно, чайникам стал бы лучше виден смысл всего этого... а то "синтетический тест" - да кто тут в курсе, что это такое?! :))) читать википупию не предлагать, только словесный обмен между разумами :)))
Я -- за.
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

ARV писал(а):что касается меня, то я уверен, что подобные системы нужны. однако, лично для себя я не могу их использовать по неожиданной (возможно) причине: затраты на освоение этого инструмента (т.е. мои личные усилия) не оправдаются результатами.
Вы явно недооцениваете и свои возможности, и потенциальные результаты. Эти технологии на самом деле очень просты. А результат - практически отпадает необходимость в отладчике. Система просто не позволяет вам писать неправильный код так же, как Word немедленно предупреждает о грамматических ошибках.
ARV писал(а):был случай, когда я хотел поиспользовать систему анализа исходника - рефакторинг, что ли это называется... знающие люди поймут, о чем я.
Скорее, наверное, программу статического анализа - либо lint, либо кого-то из его наследников (сейчас популярен splint). Рефакторинг - это улучшение структуры грязного, но при этом рабочего кода без изменения функциональности. Кстати, тоже важнейший инструмент повышения качества кода. Если обратили внимание, в 5-й Студии от Atmel рефакторингу отведено целое меню, и неспроста.
ARV писал(а):думаю, если бы знатоки провели небольшой ликбез в теме и по системам - возможно, чайникам стал бы лучше виден смысл всего этого... а то "синтетический тест" - да кто тут в курсе, что это такое?! :)))
Есть у меня одна "зависшая" статейка на тему обработки исключительных ситуаций в среде "чистого" С: http://club.shelek.ru/viewart.php?id=343 . Набросал ее в начале года, планировал довести до ума в плане покрытия нехитрого кода тестами. Пожалуй, поборю-таки лень да и добью до конца.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Друг Кота
Сообщения: 4918
Зарегистрирован: Ср июл 14, 2010 18:27:52

Сообщение Слесарь »

Большинство вопросов рассматриваемых в теме не существенны, по сравнению с вопросами архитектурного, алгоритмического и стилистического плана. Наверняка качество будущей программы в основном зависит от правильно выбранной парадигмы и методологии.
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

Слесарь писал(а):Большинство вопросов рассматриваемых в теме не существенны, по сравнению с вопросами архитектурного, алгоритмического и стилистического плана. Наверняка качество будущей программы в основном зависит от правильно выбранной парадигмы и методологии.
Безусловно, это очень важные вопросы, и мы (возьму на себя наглость говорить от лица участников данной темы, вряд ли кто-то будет против) с удовольствием ознакомимся с ними в соответствующей теме. И статьи почитаем, если дадите ссылки (или даже напишете лично).

Расскажите нам о парадигмах и методологиях, которые лично вы применяете при разработке программ для микроконтроллеров.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Друг Кота
Сообщения: 4918
Зарегистрирован: Ср июл 14, 2010 18:27:52

Сообщение Слесарь »

Goldsmith писал(а): Расскажите нам о парадигмах и методологиях, которые лично вы применяете при разработке программ для микроконтроллеров.
Я не пишу программы в которых будут разбираться другие люди, по этому, пишу как в голову взбредет, иногда изящно, иногда наляписто, в зависимости от душевного благорасположения.
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

Слесарь писал(а):пишу как в голову взбредет, иногда изящно, иногда наляписто, в зависимости от душевного благорасположения.
Спасибо.

Похоже, с парадигмами и методологиями мы разобрались. Можно возвращаться к основной теме.

Как-то уж очень быстро исчерпали тему...
На уроке истории учитель диктует: «История мидян... история... мидян... точка и подчеркнуть. С новой строки: введение в историю мидян... Точка и подчеркнуть. С красной строки: история мидян... история мидян... темна и непонятна... темна и непонятна. С красной строки: конец истории мидян. Точка и подчеркнуть».
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Goldsmith писал(а):
На уроке истории учитель диктует: «История мидян... история... мидян... точка и подчеркнуть. С новой строки: введение в историю мидян... Точка и подчеркнуть. С красной строки: история мидян... история мидян... темна и непонятна... темна и непонятна. С красной строки: конец истории мидян. Точка и подчеркнуть».
извините, чуть пооффтоплю - просто не могу сдержаться :) тоже анекдот про школу (эпоха моего детства).

ввели урок полового просвещения в школе. учительница:
- Дети! Сегодня мы поговорим о любви. Все знают про любовь мужчины и женщины - это просто и всем ясно, эту тему не станем обсуждать. Еще бывает любовь женщины к женщине - эта тема очень тонка, в ней много чувственных нюансов, и для детского восприятия она недоступна, ее мы тоже не будем рассматривать. Еще есть любовь мужчины к мужчине, но это уголовно наказуемо, и естественно, нам это учить не придется. А поговорим мы, дети, о великой любви советского народа к коммунистической партии!

:)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57

Сообщение O-LED »

Как-то уж очень быстро исчерпали тему...
вот как только в студии или еще где появится кнопочка Quality check :)) вот тогда появится и обсуждение. а пока для многих (кроме аксакалов коих на форуме по моим наблюдениям всего десятка два) это конь в вакууме да еще и сферический.....
KIT
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

O-LED писал(а):
Как-то уж очень быстро исчерпали тему...
вот как только в студии или еще где появится кнопочка Quality check :)) вот тогда появится и обсуждение.
Это я по поводу исчерпания темы "парадигм и методологий", которая промелькнула "как мимолетное виденье" и оказалась, как и история мидян, темна и непонятна. Тема тестирования пока только начинается.

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

Кнопочка такая уже есть, но с ней нужно уметь обращаться. Об этом сейчас и речь.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57

Сообщение O-LED »

Кнопочка такая уже есть, но с ней нужно уметь обращаться. Об этом сейчас и речь.
а по подробней о кнопочке можно??

кстати, вы приводили пример что "проверка качества" это что то типа проверки орфографии в ворде. В корне не верно. Проверку орфографии в ворде можно сравнить с такой же проверкой орфографии при компиляции. И там и здесь отлавливаются только грамматические ошибки(а иногда и добавляются :wink: ) а осмыслить что ты написал, правильно ли, и не дадут ли тебе в лоб из-за твоей писанины ворд не подскажет. тут только либо умственный штурм в поисках "кривых фраз", либо дать почитать(потестить) людям и посмотреть на их реакцию. :)
KIT
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

O-LED писал(а):а по подробней о кнопочке можно??
Можно. Запустите кнопочкой набор тестов на выполнение - это и есть проверка качества.
O-LED писал(а):кстати, вы приводили пример что "проверка качества" это что то типа проверки орфографии в ворде. В корне не верно. Проверку орфографии в ворде можно сравнить с такой же проверкой орфографии при компиляции. И там и здесь отлавливаются только грамматические ошибки(а иногда и добавляются :wink: ) а осмыслить что ты написал, правильно ли, и не дадут ли тебе в лоб из-за твоей писанины ворд не подскажет.
Аналогия полнейшая. И в том, и в другом случае данные сравниваются с некоторым ожидаемым эталоном. В случае Word это словарь + набор грамматических правил. В случае тестов это - формализованная спецификация требований к программе. Насчет того, что Word не понимает смысла вводимого текста, вы подметили верно. Но точно так же система тестирования не понимает, для чего нужна ваша программа или устройство в целом. Она просто сличает желаемый результат с фактическим и бьет тревогу в случае несовпадения.

Было бы наивно ожидать, что элементарная система тестирования будет умнее разработчика. (Хотя, конечно, смотря какой разработчик попадется...)
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Сб сен 25, 2010 14:57:19

Сообщение konmik »

Доброго всем дня, Уважаемые Коты!
Основными составляющими качества разработки из моего опыта, в краце являются:

1. Понятность чего и _почему_ вы хотите сделать.
2. Использование проверенных и понятных вам, по возможности, алгоритмов.
3. Качественное написание кода, оно очень экономит вам время при доработке, переиспользовании и поддержке. Меры тут простые:
- следование выбранному вами стандарту оформления кода - аналог правильно оформленного документа, который приятно взять в руки.
- комментарии, например каждый оператор ветвления, цикл, расчетная константа ит.п. должны быть описаны,тогда легче следить за логикой и не надо
напрягать память
- разбивка на функциональные модули, т.е. не валим все в одну кучу
4. Использование ситемы контроля версий, чтобы понять что, когда и хорошо бы еще и почему делалось. Так же это очень полезно для ситуации
"Ну вот, а пять минут назад работало...".
5. Обсуждение(речью) написанного Вами с кем-то другим. (Здесь на форуме частенько попадаются вопросы поправить написанный автором код :)
6. _Регулярное_ тестирование позволяющее найти ошибку как можно раньше. Тут тема такая же большая как и разработка и о ней можно беседовать отдельно, если кому интересно, я бы точно умных людей послушал - поучился.

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

P.S.
Да и еще "Управление качеством" термин опасный, и лучше его в суе :dont_know: , а особенно перед руководством не упоминать
Родился
Сообщения: 13
Зарегистрирован: Сб сен 25, 2010 14:57:19

Сообщение konmik »

Ошибся, не досмотрел, должно быть : Обсуждение(ревью) .
Впрочем это и есть подтверждение #5 :)

А что касается тестов - их тоже проверять нужно, что они действительно делают то, что от них ожидаешь, а не просто возвращают "ОК!".
Был у меня такой случай с Индийскими товарищами.
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

konmik писал(а):что касается тестов - их тоже проверять нужно, что они действительно делают то, что от них ожидаешь, а не просто возвращают "ОК!".
Конечно. Никто ведь не мешает написать пустой тест, который на самом деле ничего не проверяет и всегда проходит успешно.

Я всегда сочетаю модульное тестирование с TDD. По этой методике при первом запуске тест всегда завершается ошибкой, и можно убедиться, что там не пустышка. Ну и плюс к тому тесты очень простые, особенно если придерживаться четырехфазного паттерна. Ошибиться почти негде.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»