27.10.2009

Где взять надежный Windows?

image

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

Автор: Сергей Веренеев (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», «Вход в здание» и проч. Этот случай один может быть на сто тысяч. Но, если он возник у клиента, не пошлешь его к Гейтцу. Поэтому ТП должна дежурить и держать нос по ветру.

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

или введите имя

CAPTCHA
Страницы: 1  2  3  4  5  6  
null
27-10-2009 06:43:05
Ошибся, ёклмн: Автор: Сергей Веренеев (smolina_maria@mail.ru)
0 |
Бред
27-10-2009 08:18:48
Это закон!не вешайте людям лапшу на уши... даже за деньги!
0 |
%name%
30-10-2009 14:39:46
+1 Бред бредом... Ребята зачем врать? Эти несовместимые слова в одном предложении как "Надежный Window" это тоже самое как "Надежные Жигули" или "Качественный Российский автомобиль". Этого нет, и не надо рассказывать сказки про то что Windows %version% надежен, любой мало мальский администратор это подтвердит если он конечно не долбаный фанатик.
0 |
Савраска
27-10-2009 09:27:58
С таким стилем изложения автору лучше тихонько сидеть в уголке с отладчиком наперевес и выковыривать баги. К общению с людьми (особенно с заказчиками) и написанию документации НЕ подпускать ни в коем случае. Осмелюсь посоветовать г-ну Веренееву сменить род деятельности. Не ваше это, с таким-то подходом. Сколько уже насмотрелся на "программистов" с зашкаливающим ЧСВ, которому не дай б-г сказать что в его "гИнеальном" модуле присутствуют злобные баги. Тебе тут-же начинают петь, что программ без ошибок не бывает, что нужно разработать подсистему для детального логирования, что заказчик "билан", а его работники дубы, и коллеги сплошные бездари, с которыми работать не возможно.
0 |
Шуршаков
27-10-2009 10:58:06
Абсолютно согласен. Не первый год работаю "аудитором" всяческих серваков. И когда покупают китайские поделки, в которых даже баги скопированы. Очень неприятно становится. А ведь они заверяют что ихние игровые серваки самые лучшие, и самые массовые. В чём и мелкософт никуда не ушёл. ЗЫ: На самом деле, безбажный код существует. называется "Hello World".
0 |
27-10-2009 10:08:00
Скорее всего автор женщина, просто ИХ (гуманитариев) учат кучи "премудростей" типа того, что в вопросах техники ползун прислушается к мнению мужчины - стереотипы у ползунов как их не крути. Теперь по теме - когда проектом занимается отдельная группа людей, и границы ответственности обозначены однозначно - продукт получается "безглючный" - будь то железяка или софтина - хлеб с маслом и чай
0 |
27-10-2009 10:13:01
с сахаром для высококвалифицированых спецов еще ни кто не отменял... а если к поделке каждый прикручивает что-то свое и валит глюки на другой модуль то результат как в басне "Лебедь, рак и щука"... Потому что ЗАКОН гласит: Программ без ошибок не бывает!- женский бред для гламурных журналов. БЫВАЕТ! вот самое простое - WinRAR или 7z ??? еслиб там были ошибки то сколько архивов бы было бы запорото безвозвратно? и пользовались бы ими? - а ими пользуются все!
0 |
zbI
27-10-2009 10:59:46
Я бы сказал что в подавляющем большинстве программ ошибки таки есть. Их просто ещё не нашли, либо ошибки не вызывают сбоев самой программы. WinRAR или 7z в качестве примера не годятся. Вы видели их исходный код? Хотя в программах типа: print("Hello, world!") ошибку конечно найти сложно ))
0 |
220202
27-10-2009 17:41:31
Да. На смотри: http://sourceforge.net/projects/unrarextractrec/files/ http://sourceforge.net/projects/sevenzip/files/ И чего?
0 |
220202
27-10-2009 17:43:19
Проще простого. Ты забыл поставить точку с запятой, кроме этого у твоей программы нет начала и конца, а также обязательного заголовка. В таком виде она даже компилироваться не будет. Капча согласна, вот она машет рукой: 55502
0 |
фетиш-мастер [Малиновые штаны]
28-10-2009 11:22:20
так сплойты не принятно в рабочем виде публиковать
0 |
ha
05-11-2009 13:07:18
В 7z точно есть одна критическая ошибка. Просто пока он не используется на серверах нет смысла ее использовать. Ну и разумеется ошибка происходит на файле, который 7z-архивом не является.
0 |
sdv
01-11-2009 16:30:08
Может и женщина. Только зачем рассуждать о высоких материях, путая самые базовые понятия? После вот этой фразы (второе предложение) "персональные компьютеры на несколько порядков мощнее других доступных процессоров" статью уже дальше не читал. Понятно что бред слабоумного, знающего много слов. Нормальный человек так "опечататься" не сможет.
0 |
...
04-11-2009 06:17:58
Да, это какая-то ахинея, серьёзно сей опус воспринимать не получается.
0 |
...
04-11-2009 06:23:23
Даже в названии статьи ошибка, Windows не может быть надёжным, скорее уж надёжной, так как это ОС, женский род.
0 |
Влад
27-10-2009 10:38:13
...может быть это не умело переведенная статья с англицкого?! В любом случае данную статью необходимо удалить безвозвратно, чтобы репутация www.securitylab.ru не подпортилась
0 |
Страницы: 1  2  3  4  5  6