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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 13
Зарегистрирован: Сб сен 25, 2010 14:57:19

Сообщение konmik »

Если кому-то надо разобраться с определениями в тестинге то рекомендую:
http://www.testingstandards.co.uk/

То сути своей это один из основных "первоисточников" :idea: в тестировании: многие стандарты в области программного обеспечения черпают свои определения от туда.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

однако, в micro-embedded (да позволено мне будет так назвать системы на AVR и подобным им МК) приложениях остается открытым вопрос: как же обрабатывать исключения? ведь чаще всего они служат для информирования пользователя, реже - для автоматического сбора информации, отсылаемой затем разработчику, и уж совсем редко для корректировки поведения программы. первые два варианта явно не для micro-embedded (нет ОС, почти нет интерфейса с пользователем)... и, как мне представляется, все "исправление" поведения программы так или иначе сведется к игнорированию неправильных данных/результатов... ну так Си и без этого игнорирует практически все на свете проблемы.

поэтому надо еще подумать над самой идеологией построения надежных программ.

а все прочие сведения пока не качаю - сначала хочу почитать, что там к чему, раз все далеко не элементарно :)))

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

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

Сообщение Goldsmith »

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

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

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

Корректировка поведения программы с целью минимизации последствий сбоя - наиболее разумная обработка исключительной ситуации. Но разумное требует применения разума, то есть затраты умственного труда гораздо выше, чем в первых двух случаях. Зато и результат получается наилучший.
ARV писал(а):все "исправление" поведения программы так или иначе сведется к игнорированию неправильных данных/результатов...
Если нет более разумных вариантов, то хотя бы прекратить дальнейшее выполнение части программы с бессмысленными данными может быть лучшим выходом. Особенно если программа циклическая и пропуск одного цикла не будет катастрофическим.
ARV писал(а):ну так Си и без этого игнорирует практически все на свете проблемы.
И тем самым попросту перекладывает эти проблемы на наши плечи. Собственно, потому я и задал свой вопрос - как в этих не самых благоприятных условиях создаются более-менее надежные устройства? Обрабатывать коды ошибок "в лоб" слишком трудоемко и чревато новыми ошибками, тестировать вручную - вообще неподъемно (если не считать тестированием единичный прогон программы под отладчиком, как часто бывает). Нужна действенная помощь инструментов, а кое в чем и другие подходы к написанию программ. Кое-что удалось раскопать самому, кое-чему надеюсь научиться у других, - делитесь, кто не жадный.

P.S. Если понравилась статья по CException, то поглядите еще вот эту: http://club.shelek.ru/viewart.php?id=338 . Ее автор, к сожалению, не я; но когда я ее прочитал, понял, что просто обязан ее перевести, не должны такие вещи оставаться незамеченными. Конечно, те, кто привык пользоваться RTOS, имеют возможность организовать кооперативную мультизадачность и без этого; но на "голом" контроллере вполне может пригодиться.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Сб сен 25, 2010 14:57:19

Сообщение konmik »

Загляните еще суда, построено на том же трюке :
http://bsvi.ru/protopotoki-protothreads/
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону

Сообщение Goldsmith »

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

1-я часть, подготовительная: http://club.shelek.ru/viewart.php?id=348
2-я часть, практическая: http://club.shelek.ru/viewart.php?id=349

Кому не терпится начать работу - во 2-й части уже есть что попробовать.

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

Сообщение Goldsmith »

Выполнил свое обещание. Статья по модульному тестированию встроенных систем завершена.

Часть 1: http://club.shelek.ru/viewart.php?id=348
Часть 2: http://club.shelek.ru/viewart.php?id=349
Часть 3: http://club.shelek.ru/viewart.php?id=350

К последней части приложен весь код, относящийся к проекту, включая инструментарий. Так что добро пожаловать. Ну и поделиться мнением о прочитанном тоже не возбраняется, само собой.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Контактная информация:
Реклама
Сверлит текстолит когтями
Сообщения: 1180
Зарегистрирован: Пт авг 21, 2009 03:22:12

Сообщение bolek »

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

Сообщение Goldsmith »

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

Сообщение Goldsmith »

ARV писал(а):если вы перейдете на русский язык, число адекватных собеседников может увеличиться :)
Добросовестно пробовал - не помогло. Прячутся где-то. Или у них летняя спячка, или брачный период, или сезонные миграции, или уж даже и не знаю, что предположить.

В продолжение темы: свеженаписанная статья "Разработка на языке C, управляемая тестированием", буквально чернила не просохли.

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

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

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

Сообщение Goldsmith »

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

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

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

Сообщение Goldsmith »

Вы философию где изучали? Какое она имеет отношение к данному предмету?

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

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

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

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

Сообщение Goldsmith »

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

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

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

Сообщение Goldsmith »

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

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

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

Сообщение Goldsmith »

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

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

Я работаю с железом. Слесарю не обязательно иметь образование. Я начинал с погрузки железа(образовываться небыло времени), далее, так вышло, что мне совершенно случайно стали доверять и более ответсвенные работы, как укладка и расстановка, с которыми я также справлялся. Дальше. больше....
Закрыто

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