10 Оценки
10
Оценки
Оценка – одно из самых простых, но при этом самых рискованных задач, с которыми сталкиваются профессиональные разработчики. От оценки напрямую зависит коммерческая ценность проекта. От нее зависят наши репутации. Неверные оценки становятся причиной наших страхов и провалов. Оценка – это первый клин, вбиваемый между бизнесменами и разработчиками. Это источник почти всего недоверия, связанного с этими отношениями.
В 1978 году я был ведущим программистом для 32-килобайтной встроенной программы Z-80, написанной на языке ассемблера. Программа «прошивалась» на 32 перепрограммируемых микросхемах, которые вставлялись в три платы (до 12 микросхем на каждой).
У нас в эксплуатации были сотни устройств, установленных на центральных телефонных станциях по всем Соединенным Штатам. Каждый раз, когда мы исправляли ошибку или добавляли новую функцию, нам приходилось отправлять техников к каждому устройству для замены всех 32 микросхем!
Это был настоящий кошмар. Микросхемы и платы были непрочными, контакты на микросхемах гнулись и ломались. Нечаянные изгибы плат могли повредить места пайки. Риск ошибок и поломок был огромен, а затраты для компании – слишком высоки.
Мой начальник Кен Файндер пришел ко мне и попросил что-нибудь сделать. Нам был нужен способ замены микросхем, который бы не требовал замены всех остальных микросхем. Если вы читали мои книги или слушали мои лекции, то вы знаете, что я много говорю о возможности независимого развертывания. Именно тогда я впервые усвоил этот урок.
Проблема заключалась в том, что программа представляла собой единый скомпонованный исполняемый файл. Добавление новой строки кода приводило к изменению адресов всех последующих строк. Так как в каждой микросхеме попросту хранился один килобайт адресного пространства, то изменялось содержимое практически всех микросхем.
Решение было довольно простым. Микросхемы нужно было изолировать друг от друга. Содержимое каждой микросхемы преобразовывалось в независимую единицу компиляции, которая могла записываться независимо от всех остальных.
Я определил размеры всех функций в приложении и написал простую программу, которая «укладывала» их, словно фрагменты головоломки, на микросхемах, оставляя 100 байт свободного пространства для расширения. В начале каждой микросхемы размещалась таблица указателей на все функции данной микросхемы. Во время загрузки эти указатели перемещались в память. Весь код системы был изменен таким образом, чтобы функции никогда не вызывались напрямую – только через векторы, хранящиеся в памяти.
Да, вы правильно поняли: микросхемы превратились в аналоги объектов с v-таблицами, а функции вызывались полиморфно. Именно так я узнал некоторые принципы объектно-ориентированного программирования задолго до того, как познакомился с понятием «объект».
Выгода от такого решения была огромной. Мы получили возможность не только ограничиться установкой отдельных микросхем, но и вносить исправления «на месте», перенаправляя векторы в оперативной памяти. Это значительно упростило отладку и «горячие» исправления.
Но я отклоняюсь от темы. Когда Кен пришел ко мне с предложением решить проблему, он предложил подумать об указателях на функции. Я потратил день-два на формальное изложение идеи, а затем представил подробный план. Он спросил, сколько времени займет работа; я сказал, что около месяца.
Мне понадобилось три месяца.
Я напивался только дважды в жизни и только один раз напился основательно. Это произошло на праздновании Рождества в Teradyne в 1978 году. Мне тогда было 26 лет.
Праздник проводился в офисе Teradyne, который в основном состоял из открытого лабораторного пространства. Все пришли рано, а сильная снежная буря не позволила оркестру и фирме выездного обслуживания добраться до нас. К счастью, выпивки было достаточно. Я не очень хорошо помню этот вечер, а то, что помню, предпочел бы забыть. И все же я не могу не поделиться одним важным моментом.
Я сидел по-турецки на полу с Кеном (мой начальник – ему тогда было 29 лет, и он был трезв), сетуя на то, сколько времени у меня заняла векторизация. Алкоголь освободил мои скрытые страхи и неуверенность по поводу исходной оценки. Надеюсь, я не клал голову ему на плечо – впрочем, такие подробности не очень четко отложились у меня в памяти.
Помню, я спросил, не сердится ли он на меня и не считает ли, что работа заняла слишком много времени. И как бы смутно я ни помнил тот вечер, его ответ четко отложился у меня в памяти на последующие десятилетия. Он сказал: «Да, я думаю, что прошло много времени, но я вижу, что ты прилежно трудишься, а работа не стоит на месте. И нам это действительно нужно. Так что я не сержусь».
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Стремление к точности оценки
Стремление к точности оценки Разработчики тоже попадают в ловушку точности. Они знают, что должны выдать оценку системы, и часто думают, что их оценка должна быть точной. Ничего подобного!Во-первых, даже с идеальной информацией в ваших оценках будет наблюдаться огромный
Автоматизированные системы анализа сообщений в Интернете, а также оценки негатива/позитива в публикациях
Автоматизированные системы анализа сообщений в Интернете, а также оценки негатива/позитива в публикациях Поскольку крупным компаниям требуется анализировать большие массивы информации, и при этом они не только финансово способны, но и психологически готовы тратить на
8. Проблема оценки эффективности рекламных и PR-кампаний
8. Проблема оценки эффективности рекламных и PR-кампаний Один из наиболее проблемных вопросов продвижения интернет-ресурсов – оценка эффективности рекламных кампаний, а также отдельных рекламных технологий. Как правило, единственным критерием эффективности ошибочно
4.1. Методы внутренней и внешней оценки производственного процесса
4.1. Методы внутренней и внешней оценки производственного процесса Внутренние оценки нацелены на выявление приоритетных направлений усовершенствования производственного процесса организации. Группы внутренней оценки руководствуются СММ для выявления таких
7.5. Применение профессиональной оценки
7.5. Применение профессиональной оценки Чтобы обеспечить полный набор принципов, применяемых к самым различным ситуациям, в некоторых ключевых практиках изначально заложена возможность гибкой трактовки. В ключевых практиках используются такие размытые фразы, как
9.7. Экспертные оценки
9.7. Экспертные оценки Группа ключевых процессов для уровня 3: определенный уровеньЦель группы ключевых процессов «Экспертные оценки» заключается в эффективном устранении дефектов в промежуточных программных продуктах на ранних стадиях разработки. Важным следствием
Экспертные оценки
Экспертные оценки Цель 1. Планирование работ по проведению экспертных оценок.Цель 2. Выявление и устранение дефектов в промежуточных программных
Критерии оценки программиста
Критерии оценки программиста Увлеченность новыми технологиями. 0 – не желаете узнавать ничего нового, 5 – регулярно читаете статьи о современных средствах разработки, 10 – регулярно применяете все новинки в своей области программирования.Общение с себе подобными. 0 – Вы
13.4.1. Эвристические оценки и алгоритм поиска
13.4.1. Эвристические оценки и алгоритм поиска Базовые процедуры поиска предыдущего раздела производят систематический и полный просмотр И/ИЛИ-дерева, не руководствуясь при этом какими-либо эвристиками. Для сложных задач подобные процедуры весьма не эффективны из-за
5.3.2.3 Определение критерия оценки
5.3.2.3 Определение критерия оценки Для определения качества продукции результаты оценивания различных характеристик должны быть подытожены. Оценщик должен подготовить для этого процедуры, используя, например, таблицы решений или средние взвешенные. Процедура обычно
Глава 17 Обзор автоматизированных средств оценки безопасности
Глава 17 Обзор автоматизированных средств оценки безопасности В этой главе обсуждаются следующие темы: • Краткие сведения об автоматизированных средствах оценки безопасности • Применение автоматизированных инструментальных средств для тестирования на проникновение
Краткие сведения об автоматизированных средствах оценки безопасности
Краткие сведения об автоматизированных средствах оценки безопасности Функциональные возможности автоматизированных инструментальных средств оценки безопасности изменяются в очень широких пределах. Некоторые из них могут сканировать хосты, находясь вне сети и не
8. Компьютерные игры и плохие оценки
8. Компьютерные игры и плохие оценки Игровая приставка (или карманная игровая консоль) — один из самых распространенных подарков для детей. Речь идет о рынке с миллиардным оборотом, где всемирно известные фирмы, такие как Sony, Nintendo или Microsoft, буквально сражаются за
Вопросы для оценки наличия интернет-зависимости
Вопросы для оценки наличия интернет-зависимости 1. Как часто вам бывает трудно закончить сеанс пользования Интернетом, если вы вышли в Сеть?2. Как часто вы продолжаете пользоваться Интернетом, хотя, собственно говоря, хотели закончить сеанс?3. Как часто вам говорят другие