Разговоры о патологической глючности софта

Перенос из темы «Статистика: очередной КА убит софтом»
 

Nikita

аксакал

au> И ещё заинтересуйтесь почему 99% софта в Б-777 написано именно на Аде, а скорее на Ravenscar Profile (урезанная Ада).
au> (отгадка: Ада несовместима с макаками)

au завёл свою любимую адаву шарманку... :D

Хорошо, давайте чуть более подробно посмотрим на софт 777-го. Возьмём, например, самый крупный компонент - Airplane Information Management System разработки Honeywell. Это ~600 тысяч строк исходного кода. Для бортового ПО - более чем приличный размер. Помимо AIMS для Boeing 777 данный подрядчик - на той же платформе - делал ещё и софт для Air Data/Inertial Reference System. Про его размер не знаю, хотя практически наверняка он в разы скромнее AIMS, но положим предельный вариант - те же ~600 тысяч строк. А теперь посмотрим сколько народа работало над всем этим делом... ~550(!) только программистов. Грубо усредняя - каждый написал (либо обеспечил написание) всего лишь 2000 строк кода. За весь проект. Который длился свыше четырёх лет. В нынешних зарплатах затраты только на эту толпу составят минимум 200 млн. долларов.

Для сравнения - прямо сейчас я веду проект уже достигший ~100 тысяч строк. Это всего за один год. Можете попробовать угадать сколько программистов над ним работают...
Учитесь читать.  9.09.0
+
-
edit
 

Balancer

администратор
★★★★★
Nikita> Грубо усредняя - каждый написал (либо обеспечил написание) всего лишь 2000 строк кода. За весь проект.

В среднем программист пишет по 10 строк в день. 200 человеко-дней.

Nikita> Который длился свыше четырёх лет.

Получается, «уровень продуманности» в 7 раз выше, чем «в среднем по больнице».

Nikita> Для сравнения - прямо сейчас я веду проект уже достигший ~100 тысяч строк. Это всего за один год. Можете попробовать угадать сколько программистов над ним работают...

Если среднестатистически, то 20…30 человек :)
 
+
-
edit
 

Nikita

аксакал

Balancer> В среднем программист пишет по 10 строк в день. 200 человеко-дней.

Вы описываете весьма не средний случай. За 15+ лет работы в индустрии такой темп лично я видел от силы пару раз...

Balancer> Если среднестатистически, то 20…30 человек :)

Ждём других версий...
Учитесь читать.  9.09.0
+
-
edit
 

Balancer

администратор
★★★★★
Nikita> Вы описываете весьма не средний случай. За 15+ лет работы в индустрии такой темп лично я видел от силы пару раз...

Такой малый или такой большой? :) По моим наблюдениям, как раз, вполне средний темп.
 
RU Алдан-3 #21.11.2011 17:53  @Balancer#21.11.2011 17:34
+
-
edit
 

Алдан-3

аксакал
★★☆
Balancer> В среднем программист пишет по 10 строк в день.

Это с учётом необходимости покрытия кода тестами или без учёта?
Особенно его раздражало то, что его постоянно спрашивали, чем он так раздражен.  8.08.0
+
-
edit
 

Nikita

аксакал

Balancer> Такой малый или такой большой? :) По моим наблюдениям, как раз, вполне средний темп.

Конечно же маленький. Особенно для крайних лет и разработки на современных языках\IDE\технологиях.
Учитесь читать.  9.09.0
RU Серокой #21.11.2011 17:58  @Nikita#21.11.2011 17:56
+
+1 (+2/-1)
-
edit
 

Серокой

координатор
★★★★
Nikita> Конечно же маленький.

Нормальный. Тело-то программы пишется быстро, а вот отладка заставляет долго-долго переписывать при сохранении количества. И она, отладка, длится дольше. Вот и получается, что 10 строк.
А вообще странный показатель, строками мерить...
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
RU Nikita #21.11.2011 18:01  @Серокой#21.11.2011 17:58
+
-
edit
 

Nikita

аксакал

Серокой> Нормальный.

Для задач Вашего типа - да, нормальный. Именно там я такие тормоза и встречал :D Для en mass же - неприемлимый.

Серокой> А вообще странный показатель, строками мерить...

Метрика как метрика. Все её ограничения вполне понятны. Для грубой прикидки вполне сгодится - мы же знаем платформу.
Учитесь читать.  9.09.0
RU Алдан-3 #21.11.2011 18:04  @Nikita#21.11.2011 18:01
+
-
edit
 

Алдан-3

аксакал
★★☆
Nikita> Для en mass же

В массовке же тупо тяп-ляп сборка из максимально больших готовых блоков рулит, нет?
Особенно его раздражало то, что его постоянно спрашивали, чем он так раздражен.  8.08.0
RU Balancer #21.11.2011 18:06  @Алдан-3#21.11.2011 17:53
+
-
edit
 

Balancer

администратор
★★★★★
Balancer>> В среднем программист пишет по 10 строк в день.
Алдан-3> Это с учётом необходимости покрытия кода тестами или без учёта?

Это число строк кода в готовом проекте, поделённое на человеко-дни. Тестирование, отладка, вывод новых версий и т.п.

Понятно, что тупо набивать кода можно на порядок больше. Правда, как в том анекдоте про машинистку получится :D
 
+
-
edit
 

Balancer

администратор
★★★★★
Nikita> Для задач Вашего типа - да, нормальный. Именно там я такие тормоза и встречал :D

Это про Honeywell? :D
 
RU Nikita #21.11.2011 18:13  @Алдан-3#21.11.2011 18:04
+
-
edit
 

Nikita

аксакал

Алдан-3> В массовке же тупо тяп-ляп сборка из максимально больших готовых блоков рулит, нет?

Если бы я добавил в метрику все те "большие блоки", которые использует наш проект, то там счёт пошёл бы на миллионы строк :D

Развитые библиотеки позволяют резко упростить осиливание высокой суммарной сложности. Однако объёмы "чистого" кода тоже постоянно возрастают.
Учитесь читать.  9.09.0
+
-
edit
 

Nikita

аксакал

Balancer> Это про Honeywell? :D

Типа того - мы же знаем чем уважаемый Серокой занимается. В своё время я тоже участвовал в разработке подобного рода вещей.
Учитесь читать.  9.09.0
RU Серокой #21.11.2011 18:15  @Nikita#21.11.2011 18:01
+
+1
-
edit
 

Серокой

координатор
★★★★
Nikita> Для задач Вашего типа - да, нормальный.
Э... HDL ещё медленней пишется, если что. )

Nikita> Метрика как метрика. Все её ограничения вполне понятны.
Говорят, "индусы" бывает таки пишут (условный язык):
ifdef 0
<мусорный код, много строк>
else
<а тут уже нормальный код>
endif
:)
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
RU Nikita #21.11.2011 18:52  @Серокой#21.11.2011 18:15
+
-
edit
 

Nikita

аксакал

Серокой> Говорят, "индусы" бывает таки пишут (условный язык):

В длительных проектах и безо всяких индусов подобного хватает. Нормальные вычислялки метрик всё это умеют учитывать.
Учитесь читать.  9.09.0
LT Bredonosec #22.11.2011 00:03  @AleX413#21.11.2011 23:19
+
-
edit
 
AleX413> Я не верю в просто так и сразу насмерть зависающие системы, тем более с претензией на что-то там. Начисто умирает железо - ОЗУ, ПЗУ, камень... Но тоже не на ровном месте, если оно нормально тестировалось. А от зависов софта есть простое естественное решение - watchdog. Нет активности какое-то время - аппаратный сброс и перезагрузка. И если система может работать - она будет работать. А вот если работать уже нечему...
Я не уверен, что мой пример будет полностью в тему, но есть у меня один писюк, леново 58, при любых тестах, что я с ним проводил, - всё отлично. Ошибок нигде не кидает. Обычно пашет идеально
Но иногда - примерно 0.5-2 раза в месяц (в смысле, может 2 месяца не проявляться, может раз в 2 недели появляться), он вдруг вис. Намертво. Что не спасает ни кнопа ресет, ни тем более клавиатура, ничего. Только отключение шнура питания, с последующим подключением вновь. Зависы также не связаны ни с загрузкой (как при активном пользовании, так и при простое, и даже во время энергосберегающего отрубался), ни с каким-либо приложением, или температурой. Бился я над ним долго, но так и не понял, где глюк. Подменил винты с другим таким же и поставил юзеру. За наверно год юзер заметил 3 случая, но тому это не критично )

собсно пример приведен в защиту довода, что железяка может виснуть напрочь, так, что ресет (перезагрузка) не помогает, но при этом не умирать.
Voeneuch, учи физику, манажор ))  3.0.83.0.8
+
+3
-
edit
 

Mishka

модератор
★★★

AleX413> А от зависов софта есть простое естественное решение - watchdog. Нет активности какое-то время - аппаратный сброс и перезагрузка. И если система может работать - она будет работать. А вот если работать уже нечему...

Что же это за вера такая в watchdog-в? :( А за ними кто смотрит? Watchdog-и — это уже последний рубеж. Ну и даже там — как они помогут, если, как в случае с Ареаном, не те данные поступают?
 7.0.17.0.1
+
-1
-
edit
 

AleX413

опытный

AXT> После чего программа получает те же данные, точно так же виснет, и далее по кругу. Знаем, плавали.
Ну, за такое конечно, только гениталии отрывать ;)

Mishka> Что же это за вера такая в watchdog-в? :( А за ними кто смотрит?
За ними смотрит физика ;) В простейшем случае тупо RC-цепочка с компаратором и парой "исполнительных" транзисторов. При активности компа происходит периодическое дрыгание какой-то линией какого-то порта (программное), или еще какая-то мониторимая активность. Кондюк подзаряжается. Если разрядился ниже порога, значит активности не было - висим - перезапуск. Ломаться нечему.

Bredonosec> примерно 0.5-2 раза в месяц (в смысле, может 2 месяца не проявляться, может раз в 2 недели появляться), он вдруг вис.
У меня ровно такой же экземпляр в качестве файлопомойки ;) В моем случае это однозначно перегрев, на 99% северного моста. Причем да, тесты прожарки проходит, но корреляция с т-рой моста однозначная. Лечение симптоматическое - огрызок пластиковой фановой трубы 75 мм с вентилятором внутри от наружной стенки прямо к мосту. По типу диффузоров охлаждения проца. Хотя проще было выкинуть. Но с момента установки стоит насмерть 24/7...

А чтобы этого не происходило, можно поставить и 2 платы, и 3, да хоть 10 ;) Только не допотопного дерьма на рассыпухе и в корпусе как у Т-90, а таки более современного. Сколько весит нетбучная плата с Атомом? Граммов 100-150. Цена - копейки, 60-80$ в розницу. Жрет мизер. Производительности за глаза.
Так вот и пускай 3 штуки молотят одинаковые задачи и периодически друг за другом присматривают ;) Это реализовать не проблема. Защита - 5 мм свинца и сантиметр полиэтилена. Термостатирование как и остальной аппаратуры. ОСь - Линукс. И со средствами разработки нет проблем.
 8.08.0
+
+2
-
edit
 

Mishka

модератор
★★★

AleX413> За ними смотрит физика ;) В простейшем случае тупо RC-цепочка с компаратором и парой "исполнительных" транзисторов.

Т.е. ещё один watchdog — имплементация другая.

AleX413> При активности компа происходит периодическое дрыгание какой-то линией какого-то порта (программное), или еще какая-то мониторимая активность. Кондюк подзаряжается. Если разрядился ниже порога, значит активности не было - висим - перезапуск. Ломаться нечему.

Ага, как же, нечему. :) Плавали, знаем. Вон в торпеде тоже было нечему, но, как выяснилось, влажность может быть другая и сразу есть чему. :F Ну и активность не всегда должна быть. Бывает и режим экономии, когда надо заткнуться всем, а то батарейки может не хватить.
 7.0.17.0.1

Mishka

модератор
★★★

au> (отгадка: Ада несовместима с макаками)

Ещё как совместима. :F Сам писал немного, и студенты писали. Многословная — да.
 7.0.17.0.1
+
-2
-
edit
 

AleX413

опытный

Mishka> Ну и активность не всегда должна быть. Бывает и режим экономии, когда надо заткнуться всем, а то батарейки может не хватить.
А для этого у x86 есть команда HLT - остановка процессора до прерывания. Используется например в винде в SystemIdle.

Balancer> Не только и не столько (в данном случае). Просто тот случай, когда если что-то напорешь, то не ткнёшься в кнопку reset, или не сгоняешь к хостеру на площадку.
А у них был типа удаленный ресет, которым они пытались воспользоваться. Типа "команд непосредственного исполнения"... (А что это вообще, что их исполняет-то?) Но не вышло... А почему? Орбита низкая - времени на передачу команды мало? Не верю(с)
 8.08.0
SE Bredonosec #22.11.2011 15:02  @AleX413#22.11.2011 02:33
+
-
edit
 
AleX413> За ними смотрит физика ;) В простейшем случае тупо RC-цепочка с компаратором и парой "исполнительных" транзисторов.
или при распараллеливании - ресет одного с другого ))
как один сисад когда-то делал "ресет для бедных" - вторая машина стояла напротив, при зависе первой тот подавал на вторую команду "открыть дисковод" и вторая дисководом нажимала ресет первой )

AleX413> У меня ровно такой же экземпляр в качестве файлопомойки ;) В моем случае это однозначно перегрев, на 99% северного моста.
хых.. да, у тебя хоть что-то. У меня и на холодный (утром включаешь, а он при логине вдруг повисает) было раз или два..

AleX413> А чтобы этого не происходило, можно поставить и 2 платы, и 3, да хоть 10 ;)
согласен. Дублирование 3-4 кратное стало нормой жизни в авиасфере, но разве в космосе не так?
Voeneuch, учи физику, манажор ))  3.0.13.0.1
RU Полл #22.11.2011 17:53  @Bredonosec#22.11.2011 15:02
+
+1
-
edit
 

Полл

литератор
★★★★☆

Bredonosec> как один сисад
Мой кум, к слову сказать. :)
 
+
-
edit
 

Mishka

модератор
★★★

AleX413> А для этого у x86 есть команда HLT - остановка процессора до прерывания. Используется например в винде в SystemIdle.

Команда — это хорошо. И я даже её знаю и пользовался, когда свой диспетчер задач писал. Только это не то, что я сказал.
 7.0.17.0.1
+
-
edit
 

AleX413

опытный

Mishka> Команда — это хорошо. И я даже её знаю и пользовался, когда свой диспетчер задач писал. Только это не то, что я сказал.
Как раз именно то. Вырубился комп совсем и надолго или периодически просыпается на микросекунды и снова вырубается... Разница в плане потребления мала. Да, совсем можно вырубить и ОЗУ, и мосты... Но они в наше время потребляют мало. Зато и реакция на какие-то события будет намного быстрее - не придется восстанавливать содержимое памяти и т.д.
 8.08.0

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru