Должны ли мы переписать наше программное обеспечение с нуля?
У нас есть проект, написанный на языке Си, это около 70 тысяч строк кода, и он был написан более десяти лет. Функции и опции были добавлены к оригинальной функциональности на протяжении многих лет. Приложение представляет собой прошивку реального времени для работы на микроконтроллере, и в нем есть некоторые очень тщательно разработанные обработчики прерываний и другой критический код. Часть кода была оптимизирована для работы с задержкой 2us.
Некоторые из модулей теперь имеют около 3 функций в них, так как функции росли с годами. Некоторые модули и общая структура теперь запутались. Это могло бы сделать больше комментариев, и новый программист сказал, что трудно проникнуть в код.
Над прошивкой постоянно работают около 2 инженеров, и поэтому она эффективно запускается и тестируется каждый день по мере создания функций или специальных версий клиента.
Есть несколько известных ошибок, с которыми мы работаем, когда у нас есть время. Кроме того, примерно раз в год клиент сообщает нам об ошибке, о которой мы не знали.
Эта прошивка используется в количестве около 1000 штук в год.
Менеджер (который не является техническим специалистом) сказал, что прошивка слишком глючная и ее нужно переписать с нуля, используя такую методологию, как Misra. Они говорят, что, сделав это, код будет свободен от ошибок, и у нас будет более надежный и ремонтопригодный код.
***
Разумно ли это?
Вы бы переписали с нуля? Это самое лучшее, что можно сделать? Есть ли лучшая стратегия?
Если мы перепишем с нуля, как вы думаете, сможем ли мы устранить все ошибки?
Как вы думаете, сколько времени потребуется, чтобы переписать 70 тысяч строк с использованием стандарта кодирования Misra?
Является ли чрезмерным один отчет об ошибке клиента в год на 70 тысяч строк кода? Что другие люди считают ошибкой?
Я в этом деле полный новичок. Я надеюсь, что это подходящий пост.
Что я уже пробовал:
Я спросил, каковы рыночные требования к Мисре, и мне ответили, что если бы мы это сделали, то, если бы кто-то попросил об этом, мы могли бы сказать, что у него это есть. Я никогда не слышал, чтобы кто-то просил нас о стандарте Мисры.
jeron1
Является ли это "критическим для жизни" типом приложения?
bhagman
Лучший вопрос. Это оборудование автоматизации фабрики. Он обычно используется интегратором, использующим одну или две части более крупной машины.
jeron1
Трудно сказать, если код - это нечитаемый кошмар для обслуживания, «только один человек в мире может с ним работать», fustercluck, тогда, возможно, следует переписать. Если эти ошибки влияют на способность продавать ваш продукт или отрицательно (в значительной степени) влияют на бизнес, возможно, стоит переписать. Тем не менее, выполнение перезаписи не обязательно является решением проблемы. Он может быть переписан плохо, так что у вас будет больше проблем, чем раньше, многое зависит от опыта команды разработчиков. Ошибки в каждой строке кода действительно не имеют значения, пользователя меньше заботят строки кода. Может случиться так, что обзор кода (и добавление большого количества документации) и какое-либо изменение тестирования приведет к большему, чем полное переписывание. Только мои 0,02 доллара.
[no name]
Есть ли какие-то планы по обновлению оборудования?