27 октября, 2009
Автор: Сергей Веренеев (smolina_maria@mail.ru)
Исповедь программиста для заложников Билла Гейтса.
«DVR бесполезно - PC-based ненадежно», - этот спор можно продлевать до бесконечности. Так сложилось исторически, что персональные компьютеры на несколько порядков мощнее других доступных процессоров. И так уж получилось, что большие возможности чаще всего плохо уживаются с надежностью. Не менее очевидно и другое: небольшие мощности микропроцессоров не обеспечивают постоянно растущих задач.
Через пару-тройку лет читающий эту статью скажет, что это обсуждение сравнимо с вопросом: менять ли пишущую машинку на компьютер или нет? Но сегодня логика вещей все еще подсказывает, что надо бы выбрать надежность, пусть и «люминивую», но надежность. Еще десять лет назад спорили, можно ли доверять компьютерам продажу авиабилетов, сопровождение самолетов, даже оформление штрафов. При всех «против» прогресс все равно шел своим путем. Господа, кто бы ни был прав, последнее слово все равно за ПК. Да и пора прекратить гнобить их за гигантоманию Windows, обычные телефоны виснут не реже.
Нет смысла заниматься демагогией, результат известен, под шумное бормотание мы все равно пойдем за более мощными технологиями. Лучше подумать, как добавить надежности PC-based системам. Чтобы не было недопонимания, некоторым эта статья может показаться заступничеством за Билла, сразу крупными буквами напишу:
Программ без ошибок не бывает! И не только в Windows. Какой бы простой ни был код, на каком бы простеньком процессоре он ни выполнялся, все равно в каких-то других условиях в какой-то другой ситуации в нем проявится сбойный момент. Это закон!
Самое отвратное в этом, что данный закон не такой уж уникальный, в этой жизни и на этом свете нет ни одной абсолютно надежной вещи. Поэтому хватит бурчать по поводу глюков, если они некритичны. Ошибки неизбежны, но их количество не должно мешать пользователю жить. Поэтому этой статьей дается лишь руководство к их сокращению, а не уникальное средство от всех проблем.
Чтобы понимать, с кем бороться, нужно выделить основные деструктивные факторы:
Занимаясь этими проблемами многие годы, мы можем обнадежить, что сегодняшняя проблема надежности не мешает жить, а некоторым и зарабатывать деньги. Статистика показывает, что подавляющее число систем на ПК все-таки успешно работают, иначе бы у нас и таких как мы не было денежек на существование. Но обо всем по порядку.
1. Проблема глючных компьютерных комплектующих конечно есть, но в 90% она выявляется на стадии первоначальной настройки компьютеров. Еще 9% - в первые один - два месяца работы системы. И на выходе мы имеем вполне приемлемый допустимый процент недовольных клиентов.
2. Не так страшен черт, как его малюют. Тем более что с «нечистой» тоже можно договориться. Windows отлично поддается контролю по множеству ключевых параметров. Просто этим мало кто заморачивается, ведь, как правило, компьютер включается лишь на короткую сессию, да и под рукой всегда есть кнопки Ctrl+Alt+Del. В основном только сетевым серверам и системам безопасности требуется непрерываемая многолетняя работа. Но на самом деле безотказная (почти) работа винды – это возможно. Как минимум, на столько, чтобы это не мешало жить.
Мы здесь не изобрели ничего особенно нового, да и вообще эта статья не об изобретениях, а лишь об удачной практике применения в одном конкретно взятом софте. Поэтому не надо перефразировать каждое слово на предмет изобретение колеса. Впрочем, за колесо все еще бьются гениальные умы: когда-то оно было деревянным, потом на резине, недавно BMW выпустил модификацию, на которой можно ездить даже после прокола.
Практически каждую критическую ситуацию винды можно предсказать и вовремя предотвратить, начиная с опасного расхода виртуальной памяти, заканчивая утечкой сетевых сокетов. Ничто не происходит внезапно, если это конечно не дефект драйвера какого-либо устройства. Но это обычно распознается во время первых дней работы. При длительной же эксплуатации умная программа всегда может вовремя скорректировать расход системных ресурсов, хирургически вырезав какой-нибудь наросший и незакрытый штатно элемент, поубивать сокеты, повыгружать неиспользуемую память, произвести дефрагментацию отдельных ее участков…
На край произвести перезагрузку всей ОС или только отдельной программы.
3. Если уж вы решились таки использовать компьютер, то обычную «записывалку» типа DVR покупать нет смысла - пушка по воробьям, просто нет смысла возиться со всеми виндами и железами ради простенькой операции. К компьютеру нужна многофункциональная система с большими возможностями. Однако оттестировать огроменное число функций – задача непосильная даже для Microsoft, где работает 20 000 программистов, и весь процесс построен по науке. Вы думаете, что Билл Гейтс специально выпускает глючные продукты, чтобы подорвать мировую экономику? К сожалению, большое число проблем не диагностируется даже в самых современных лабораториях, они выявляются только на стадии реального использования клиентами. И иногда настолько сильно проявляются, что становится очевидным несостоятельность всего проекта, как стало с Вистой и другими. А главная подрывающая сила – совместимость. Неимоверно большое число компьютерных комплектующих, драйверов и программ не так-то просто протестировать на любовь друг к другу даже самой большой в мире компании.
Но мы углубились в измышлизмы. Все-таки несколько миллионов строк программного кода Спецлаба далеки от мультимиллионов Майкрософт. Надежный софт написать можно, если правильно расставить принципы, на которых строить прочное здание.
а) Главное условие надежности – это длительное время тестирования. Если разработанный алгоритм испытывается давно и на большом числе пользователей, то при отсутствии критических ошибок его можно назвать надежным.
Нельзя заявлять клиенту о надежности, если не прошло хотя бы полгода массового тестирования основополагающих процедур. Клиенту нельзя покупать программу, со дня выпуска которой не прошло и полгода! А честному производителю нельзя такую продавать без предупреждения о коротком сроке. Конечно, этот вариант предполагает работу с большим числом добровольных бэта-тестеров. И тут как повезет, не с каждым будут сотрудничать хорошие специалисты, да и вообще не всем такая идея может понравиться. Но, слава Богу, в нашей стране не без добрых людей. Нужно просто перестать скрывать свои недостатки, и народ, видя, что его не дурят, потянется. Конечно, сначала это нелегко, психологически трудно переступить черту откровенной критики. Есть те, кто пользуется открытыми данными о проблемах и строит на этом свою конкурентную войну. Но тут надо найти мужество принять нелегкое решение: или пудрить мозги или делать хороший софт.
б) Автоматическая система сбора информации. Обычно ошибки программы можно найти только под специальными отладчиками языков программирования, которыми способны пользоваться лишь сами программисты. Такой способ совсем не годится для массового тестирования непосвященными в математические языки людьми. Не каждый пользователь вообще может запомнить или объяснить свою последовательность действий или реакцию софта. К основной программе нужно написать еще одну не менее важную – автоматического сбора данных и статистики. Во-первых, туда надо сохранять каждое действие пользователя, во-вторых, все выполняемые в это время процессы программы, в третьих, все параметры операционной системы в динамике и данные об оборудовании (в статике :). Но и это еще не все (все мы не расскажем :). Иногда даже всех этих данных недостаточно, чтобы понять все тонкости взаимосвязей, например влияния софта от устройства бесперебойного питания на аудиоканал. Как минимум, в такой информатор нужно включить систему сбора дампов, это на сегодняшний день самый глубокий способ проникновения в «винду». Глубже только исходные тексты, которые тоже иногда необходимо доставать через многочисленных знакомых программистов Microsoft и Intel, чтобы разобраться в каком-нибудь неподдающемся модуле.
По сути, без такого информатора ни одну программу вообще нельзя запускать в продажу. Без него на вопрос клиента, почему не работает, вы можете только пожимать плечами и все валить на нелицензионную винду. Лишь имея средства получения доскональной инфы о всех проделках на компьютере, вы имеете право общаться с клиентом на равных.
Здесь главное не переборщить, конечно же. Все-таки 90% всех вопросов исходят из неправильных действий самого клиента, и надо аккуратно без обид пояснить, что нужно сделать для избегания проблем. Владея подробной информацией, собранной программным сборщиком, иногда хочется крикнуть: возьми мышку другой стороной. Но надо следить за собой :!
в) Другое ограничение – это отказ от глючных достопримечательностей. Каков бы ни был соблазн загнать в программу нечто модное и гламурное, нельзя идти на поводу улюлюканья «у вас этого нет». Все что на деле имеет сомнительную надежность или низкий КПД в реальных условиях, надо резать по сердцу и извиняющимся голосом объяснять «а нам это и не надо».
4. Интеграция. Она по определению не может быть быстрой. Ежедневное припаривание к себе кодов чужого глючного железа ни к чему полезному не приведет. Хотя и создаст на первых порах маркетинговый ореол идущего впереди. Беспорядочные софтверные связи – 30% всех проблем с надежностью. Как только вы сказали себе «стоп» и с каждым начали заниматься плотнее (иногда по нескольку лет), так сразу разгрузили ТП от головной боли.
Есть еще путь изолированных модулей для самых распространенных протоколов, как например, IP-камер, но все равно нужно тестировать сами IP-камеры. Сколько их всяких ни перебывало в наших руках, и самых известных марок! Пока общая оценка их глюкозащищенности на 3 с минусом. Все надо тестить, прежде чем предлагать.
5. Теперь о ЧЕЛОВЕКЕ. Надо сразу определиться, как он будет общаться с компьютером на предмет надежности. Ему требуется удобный способ получения информации. Это может быть просто лампочка над головой, светодиод у двери, телефонный звонок, SMS-сообщение, Е-mail, ICQ… Главное, чтобы этот канал контроля надежности был выбран и существовал как класс, о чем все забывают. Достаточно два типа сообщения: экстренная неисправность и неисправность в рамках планируемого обслуживания. В зависимости от категории объекта каждый сам определяет критичность. Например, перекрытие обзора камеры снегом можно отнести ко второй категории, а выход из строя после многолетней работы диска - к первой. Главное, чтобы неисправность висела над человеком. Это конечно, его дело, когда ее устранять, главное, чтобы он быстро мог получить эту информацию. Поэтому надо выбирать наиболее назойливый канал. Для домоседа – лампочка, для компьютерщика – аська, для занятого человека – телефон и т.д. Можно, конечно и все вместе, но от перебора повторяющейся информации может быть отрицательный эффект.
еисправность может быть в любой технике, наша задача – быстро и надежно довести информацию об этом. А еще лучше и получить обратную реакцию, например, нажатием какой-нибудь кнопочки на двери или телефоне. Надавил клиент на тоновую клавишу своего мобильника – отстаем от него. Нет – продолжаем долбить по всем каналам.
Тут конечно лучше не переусердствовать с критицизмом. Неисправность какого-нибудь одного элемента, например, камеры, лучше заводить во вторую категорию, чтобы клиент не стал дерганным из-за обрывов проводов в ветреной местности. Кроме того, часто приходится иметь дело с самовосстанавливающейся неисправностью. Будет глупо, если клиент созреет на техобслуживание, а обслуживать будет «нечего».
Но оповещение о неисправности быть должно! На сегодняшний день мало кто об этом вообще задумывается. Все сводится к нерегулярной проверке техники. Зашел через месяцок, глянул. Если все работает – хорошая система!
Господа, систем без проблем не бывает! Даже если проблем нет, все равно надо иметь этот канал «из преисподней». А дальше все по накатанной. Если видеосигнал пропал, проверяем контакт, если что-то умерло, отсылаем лог сборщика информации о надежности. Не нужно думать, что такое придется делать каждый день. Чаще всего ничего не ломается. Но мы просто хотим людей заставить выучить фразу: Аппаратуры без сбоев не бывает. Даже, если бывает, все равно ее надо выучить! Или иметь канал связи с надежностью.
Мы считаем, что 5 этих основополагающих принципов дают возможность создать такую систему, теоретическая степень ненадежности которой не мешает жить пользователю.
Но еще один придется прибавить. Даже продавая вылизанную по всем меркам программу, необходимо содержать службу технической поддержки. Как вы думаете, почему? Потому что ЗАКОН гласит: Программ без ошибок не бывает! И действительно - мы уже, как видите, совсем отошли от условностей и влегкую рассказываем все свои проблемы – уже после официального выпуска Пегали один бэта-тестер обратился с неразрешимой проблемой: одна камера не хочет работать! Сначала был шок, уже полгода как вроде все «критические» сняли, и давно тишина в эфире, а тут!.. Засада оказалась в транскрипции, программа не понимала служебные символы типа «\» в написания имени камеры. Конечно, мало кто бы вообще мог такое изобразить, все обычно пишут «Камера 1», «Вход в здание» и проч. Этот случай один может быть на сто тысяч. Но, если он возник у клиента, не пошлешь его к Гейтцу. Поэтому ТП должна дежурить и держать нос по ветру.
В общем, если честно, не надо думать, что те, кто не встраивает таких модулей надежности в свои программы, обязательно имеют проблемы с надежностью. На самом деле про наличие большого числа ошибок мало кто знает. Виндовое приложение это такая вещь, которая может и казаться пушистой, и в принципе выполнять свою основную задачу. Эта статья для особо увлеченных в вопросах надежности. Кто-то же увлекается марками….

(Голосов: 5, Рейтинг: 3.42) |
Специалисты кафедры информационных технологий Нижегородского института развития образования (НИР ...
Центральный районный суд Комсомольска-на-Амуре решил перенять опыт китайских коллег и обязал местног ...
Известный православный священник Александр Шумский призывает государство прекратить беспредел в Сети ...
Священнослужителям следует заходить в социальные сети только для того, чтобы нести слово Божие, заяв ...
Сегодня компания Blizzard официально выпустила в продажу вторую версию легендарной стратегии Starcra ...
Популярная CMS Wordpress, распространяемая под лицензией GPL оказалась в центре скандала. Система уп ...
Российские власти озвучили план создания национальной операционной системы на базе существующей ОС L ...
Информация о группе из шести человек, которые могут перезагрузить мировой Интернет, не соответствует ...
Росохранкультура завершила прием заявок на сбор авторских отчислений с производителей и импортеров а ...
Рекордные результаты квартала, объявленные корпорацией Microsoft в четверг, не позволили Apple обой ...
Теодор Тсо, один из ключевых разработчиков Linux-ядра, высказал мнение, что пользователям операционн ...
Американские ученые подсчитали, что при нынешних темпах роста Сети оставшихся незанятыми IP-адресов ...
не вешайте людям лапшу на уши... даже за деньги!
Ребята зачем врать? Эти несовместимые слова в одном предложении как "Надежный Window" это тоже самое как "Надежные Жигули" или "Качественный Российский автомобиль". Этого нет, и не надо рассказывать сказки про то что Windows %version% надежен, любой мало мальский администратор это подтвердит если он конечно не долбаный фанатик.
Осмелюсь посоветовать г-ну Веренееву сменить род деятельности. Не ваше это, с таким-то подходом. Сколько уже насмотрелся на "программистов" с зашкаливающим ЧСВ, которому не дай б-г сказать что в его "гИнеальном" модуле присутствуют злобные баги. Тебе тут-же начинают петь, что программ без ошибок не бывает, что нужно разработать подсистему для детального логирования, что заказчик "билан", а его работники дубы, и коллеги сплошные бездари, с которыми работать не возможно.
Не первый год работаю "аудитором" всяческих серваков.
И когда покупают китайские поделки, в которых даже баги скопированы.
Очень неприятно становится.
А ведь они заверяют что ихние игровые серваки самые лучшие, и самые массовые. В чём и мелкософт никуда не ушёл.
ЗЫ: На самом деле, безбажный код существует. называется "Hello World".
Теперь по теме - когда проектом занимается отдельная группа людей, и границы ответственности обозначены однозначно - продукт получается "безглючный" - будь то железяка или софтина - хлеб с маслом и чай
Хотя в программах типа:
print("Hello, world!")
ошибку конечно найти сложно :)))
http://sourceforge.net/pr ojects/unrarextractrec/fi les/
http://sourceforge.net/projects/sevenzip/files/
И чего?
Капча согласна, вот она машет рукой: 55502
После вот этой фразы (второе предложение) "персональные компьютеры на несколько порядков мощнее других доступных процессоров" статью уже дальше не читал. Понятно что бред слабоумного, знающего много слов. Нормальный человек так "опечататься" не сможет.
В любом случае данную статью необходимо удалить безвозвратно, чтобы репутация www.securitylab.ru не подпортилась ;)
> Так сложилось исторически, что персональные компьютеры на несколько порядков мощнее других доступных процессоров....
> ...Обычно ошибки программы можно найти только под специальными отладчиками языков программирования, которыми способны пользоваться
> лишь сами программисты
> Ежедневное припаривание к себе кодов чужого глючного железа ни к чему полезному не приведет.
и т.д.
Безграмотный опус непонятно о чём. Абсолютно нечитабельное изложение статьи (?) не совсем понятно о чём..
Жаль потраченное время на прочтение и попытке понять "что он хотел сказать?".
По моему в этой статье написано о необходимости сбора данных о багах.
Или я ничего не понял?
Да, не кто не догадался что это Маша!!! мастер конспирации!!! :!:
Позволю себе напомнить некоторые ключевые результаты, полученные на Западе (и давно) отн. надёжности.
1. Никто никогда не написал безглючную программу длиннее 50 строк (независимо от языка программирования). Отсюда требования структурности, модульности, 30 строк на модуль и т п
2. Пользователь довольно лояльно относится к багам, которые проявляются всегда одинаково. К непредсказуемому же поведению системы он относится нехорошо.
(продолжение далее)
Предлагаю обдумывать проблему более конкретно. Например, Вам приходилось видеть сообщения в СМИ об "утечках памяти" в винде-7. Изготовитель типа согласился и заявил, что зато готовится винда-8 и 9. Что же это такое, утечка памяти? Кто читал основные западные книжки по теории операц систем иили учился хотя бы 3 курса хотя бы 5 лет назад, знают, что алгоритмы управления памятью придуманы и реализованы в той же IBM360 и DEC давным-давно. Точно так же и другие основные алгоритмы и технологии ОС: виртуальная память, синхронизация и др. Что же, гейтсовцы не учились, что ли, в школе, и основ не знают? Перечислим кратко те задачи построения ОС, которые ни в одной винде хронически не решены:
(продолжение далее)
1. Динамическое выделение и освобождение ОП. Построение пулов памяти. Сборка мусора (при необходимости)
2. Работа с виртуальной памятью на внешнем носителе как распространение подходов (1) или отдельно. В винде страничный обмен с диском существует в отрыве и в конфликте с управлением ОП
3. Обеспечение совместного доступа к ресурсам.
4. Система программных прерываний и полномочий супервизора, пользователя и т п. Аппаратная защита памяти (т н защищённый режим) фактически не реализован.
5. Хотя т н "реестр" уже представляет собой БД с СУБД, технологии построения БД как будто не известны разработчикам.
6. Некорректно релизованы все сетевые протоколы (кроме, опять-таки, отменённого NetBeui)
7. Всё, что связано с кэшированием, также работает без увязки с (1),(2) и несистематизировано.
7. Зато есть явно советскообразные псевдонаучные динозавры вроде COM.
1) кадровая организация памяти в процессоре. Фактически как имели дело с 64К памяти, в пределах которых только и возможна прямая адресация, так и имеем. Сюда примыкает проблема совместимости систем команд на разных вариантах процессора. Естественное желание разработчиков - игнорировать всю эту маркетинговую туфту, но и разумного минимума в системе не просматривается.
2) кадровая организация памяти в видеосистеме. Полная несовместимость памяти видеосистем. По-видимому, полная невозможность сделать желанные "окошки" в такой обстановке.
3) сложности работы с DMA и защищённым режимом.
4) сама шинная архитектура. Фактически, работа ВУ плавно соединена с работой памяти, даже регенерации памяти, выполнением команд и т п, причём всё это либо глючно, либо не описано, либо влияние всего, что подключено к шине, шинам (в т ч чипсета) велико и при этом сумбурно. Для примера почитайте техруководства по чипсетам интел.
Достаточно безглючные системы есть!
Но дело в том, что винды и не ставят целью быть безглючными. Это другой товар - это наклейки на окна и диски, тюнинг автомобилей, это не та игра, которой вожделеют унылые бухгалтеры:)
кто хочет заказать: e-vi@list.ru
Evil Is Tru
Рад, что Вам понравилось. Вот мои записки математика почти по теме: http://www.proza.ru/2008/02/03/240
PS да-да, теория заговора, я параноик.
В тюнинге, модинге, loadiнге новых версий и обсуждайнинге нюансов версий :)
в работе нигде никакой не применяется.
Исключение: ЗАПАДНАЯ (не наша!!!) бухгалтерия. Это, кстати, один из чудесных островов стабильности: EXCEL (и Суперкалк). Про "решения" вроде 1С там и не слыхивали :)
2. Проснитесь, видеопамять давно представляет собой непрерывный участок памяти. VESA используется только в safe-mode.
впрочем, учитывая уровень секлаба, призы как раз по уровню статей )