Создание блок-схем после разработки ПО (23.02.2018). Печать
2018 - Февраль
23.02.2018 13:29
Save & Share
Взаимодействие программ с железом ведет к взаимодействию программистов с электрониками. В процессе написания ПО это норма. Однако именно после окончания написания ПО подошел ведущий инженер-электроник и сказал: "Нарисуй мне блок-схему своей программы на физическом уровне: алгоритмы, задержки и иные физические величины, времена включений-выключений, циклограммы стимулов-реакций и т.д.". Работа очень кропотливая и не на неделю-две (при условии, что программа огромна по своему функционалу). И он - единственный, кто просил провернуть такое дело вообще за всю жизнь. Оказалось, обаятельный мужчина с прикольными усами еще и тертым калачом оказался; и второй специальностью его могла бы быть "тестировщик ПО".


В этой статье нечего описывать кроме одного-единственного факта: в процессе написания блок-схем на 20 страниц формата A3 происходит тестирование ПО на уровне чтения кода, потому что код читается в прямом смысле построчно. В результате находятся такие ошибки, которые не видны при фактическом тестировании ПО разработчиком, тестировщиком, оператором и даже электроником:
- всплывают абсолютно все косячки, которые были оставлены на потом. Тестирование ПО исправляет косяки, а рисование блок-схем - косячки;
- изменяются устаревшие комментарии к коду, которые спустя полгода могли бы ввести в заблуждение. Удаляются остатки устаревшего закоментированного функционала;
- изменяются сами алгоритмы работы с железом, потому что в процессе написания блок-схем мозг проворачивает информацию в голове и выдает: "А какого хрена здесь взаимодействие именно такое?". И это уже не косячки порой, а косячищи.

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

(добавлено 27.01.2021) Уточнения по определению, как составляются эти блок-схемы с потерей минимума времени и с максимумом выхлопа.

Скорее, стоит назвать блок-схему как "описательную блок-схему алгоритмов". Ее цель: показать взаимодействие ПО с внешним миром: входные данные, выходные данные, взаимодействие с оператором/интернетом/платами и другими реальными объектами.

То есть, в алгоритмах не содержится информация о названиях переменных, создании/обнулении/очистке какого-нибудь массива, принятии решения при изменении значения какой-то там переменной и т.д. Что происходит внутри программы, если это не отражается на реальном мире, - не указывается вообще. Взаимодействие с самой ЭВМ тоже не учитывается: плевать, сколько там было выделено памяти или нагружен процессор. Программа, которая не обрабатывает внешнюю информацию, - может содержать сколько угодно массивов, чисел, жрать оперативной памяти, умножать/делить/вычитать - но такая программа будет иметь нулевую практическую значимость.

Но если программа работает с внешним миром - это описывается. Загрузка настроек - работа с внешним INI-файлом и влияние на оператора в реальном мире. Получение сигнала 5В и принятие решений на основании номинала этого напряжения - работа с физической величиной. Формулы, преобразующие значения напряжений, - также важны. Открытие платы аналогового ввода - взаимодействие с реальным физическим объектом. И т.д.
Обновлено ( 27.01.2021 19:35 )