Читаем Человеческий фактор в программировании полностью

Утренняя сцена: электронные радиочасы будят в 6.30 утра, и вы тащите себя вниз по кратчайшей траектории до кофеварки. Вы сливаете гущу со дна в кружку, а потом минуту нагреваете это в микроволновке. При этом вы стараетесь найти вечно теряющийся пульт вашего телевизора. Пока вы пьете свой кофе, вам удается пару минут посмотреть основные новости CNN, после чего вы направляетесь к машине, чтобы испытать на себе трудности обычной утренней поездки на работу. К тому времени как вы добираетесь до офиса и щелкаете по кнопке включения своего настольного компьютера, вы, вероятно, уже воспользовались десятком или более компьютеров, в которые загружены миллионы строк кода.

Непризнанные герои, разрабатывающие программное обеспечение, не пишут код ни для мэйнфреймов, ни для PC, ни для рабочих станций. Программное обеспечение, созданное ими, нельзя найти в архивах Staples, CompUSA или Dick Smith. И все же вы пользуетесь их кодом каждый день.

Вездесущие чипы

Конечно, я говорю о повсеместных вычислительных устройствах — о процессорах и программах, скрытых внутри наших радиочасов, в микроволновых печах, в телефонах, в магнитофонах. Они внимательно прислушиваются к нашим капризам и желаниям, выражаемым с помощью кнопок, и переводят их в инфракрасные сигналы управления тем или иным устройством. Если ваш автомобиль представляет собой одну из последних моделей, то только в нем можно обнаружить целую дюжину программных процессоров, не говоря уже о мобильном телефоне, которым вы пользова-лись по пути на работу. Вы нажимаете на кнопку «Разговор» и соединяетесь через длинную цепь скрытых компьютеров, начиная с вышки сотовой связи и заканчивая цифровым телефонным коммутатором, стоящим в офисе вашего клиента. Это мир встроенных системных приложений, в котором компьютеры скрываются под разными масками и, похоже, делают все что угодно, кроме вычислений. В сравнении со встроенными приложениями остальной мир разработки программного обеспечения иногда кажется «низшей лигой».

Компьютеры, на которых работают встроенные приложения, могут выглядеть маленькими и незначительными, будучи скрытыми внутри CD-плейеров или детских игрушек. Другое дело программы. Цветной лазерный копир может содержать миллионы строк на С, а в лабораторном осциллографе тысячи классов, написанных на Smalltalk, ждут своей инициализации. Большинство этих приложений предъявляют высокие требования к точности, безошибочности, повторяемости и надежности. Ошибки могут проявляться самым очевидным образом. Они могут сбивать с толку и даже быть опасными, например в программном обеспечении рентгенологического аппарата, промышленного робота или автомобиля. Добавьте к этому необходимость работы в реальном масштабе времени, что характерно для многих приложений, и планка поднимается еще выше.

Несмотря на эти трудности или даже благодаря им огромное количество встроенных программ имеет впечатляющее качество. Встроенная система, созданная одной компанией для высококлассного офисного продукта, содержала более полутора миллионов строк кода. Во всем этом коде было обнаружено только четыре ошибки. Да, да, именно так, за два с лишним года существования этого продукта было выявлено только четыре ошибки. Почему и как им это удалось?

Стоимость апгрейда

На этот вопрос ответить довольно легко. Например, одна-единственная ошибка во встроенном обеспечении одного из принтеров Hewlett-Packard может помешать этой компании достичь новых успехов. Если достаточно серьезная ошибка обнаруживается после выпуска продукта, то расходы на апгрейд ПЗУ будут больше, чем прибыль, полученная за весь период существования данной серии. Это серьезный стимул не допускать ошибок с самого начала. Так они и делают. Ни одна большая программа не бывает идеальной, однако некоторые программисты встроенных систем создают огромные программы с качеством, настолько близким к безупречному, насколько это вообще возможно. Дальнейшее снижение количества ошибок просто-напросто потребовало бы слишком больших затрат.

Может быть, в этом отчасти и состоит проблема компаний вроде Microsoft и IBM: нет достаточного стимула для того, чтобы делать все правильно, особенно когда покупатели согласны мириться с нелепым программным обеспечением, содержащим ошибки. Поставщики программного обеспечения всегда могут незаметно внести исправления в выпускаемые продукты, или просто выпустить исправленную версию 6.0а по цене CD-дис-ка, или же выложить ее в Интернете, чтобы каждый мог самостоятельно ее скачать.

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

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

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT