збыточные ограничения в спецификации
Мы обсудили проблемы надежности, обусловленные неоднозначностью спецификаций. Спецификации, страдающие излишней подробностью, ничуть не лучше. Чрезмерная детализация требований часто приводит к тому, что спецификация противоречит цели оптимизации. Спецификация, содержащая определенные требования к повышению производительности программы одновременно с повышением на 10 пунктов коэффициента попаданий в кэш буферов, может оказаться просто невыполнимой. Вполне может получиться так, что повышение производительности определенной программы приведет к резкому снижению коэффициента попаданий в кэш для системы в целом. Соответствующий пример приведен в [Millsap (2001b)].
Еще один забавный случай имел место, когда я работал в Oracle. Спецификация производительности требовала, чтобы в некотором клиент-серверном приложении переход с одного поля формы на другое занимал не более 0,5 секунды. Далее шло требование о расположении клиента системы в Сингапуре, а сервера - в Чикаго. Более того, спецификация запрещала модификацию имевшегося приложения, которое выполняло в среднем шесть синхронных обращений к базе данных по глобальной сети (WAN) для каждого поля.
Цель в том виде, как она была поставлена в спецификации, была недостижима в силу избыточных ограничений. Фактически она противоречила физическим законам нашей вселенной. Нет никакой возможности за полсекунды шесть раз передать сообщение по сети из Сингапура в Чикаго и обратно. Даже при исключении всех составляющих времени отклика, за исключением минимального теоретически возможного времени распространения сигнала с максимальной теоретически возможной скоростью (т. е. без учета всех задержек в кабелях, концентраторах, маршрутизаторах, базах данных и т. д.), шестикратное прохождение сигнала туда и обратно заняло бы не менее 0,6 секунды.
Доказательство: Допустим, что на время перехода от поля к полю не оказывают влияния никакие факторы, кроме скорости света. Скорость света в вакууме составляет приблизительно 299 792 458 метров в секунду. Расстояние между Сингапуром и Чикаго по поверхности Земли приблизительно 15 000 000 метров. Следовательно, расстояние пройденное при шести запросах составит 2 х 6 х 15 000 000, т. е. приблизительно 180 000 000 метров для каждого поля. Из соотношения d = rt получаем t = d/r« 0,6 секунды на каждое поле. Если же учесть все отброшенные ранее факторы задержки, время отклика будет еще больше. Следовательно, требования спецификации не могут быть выполнены. ЧТД.
Не существует способа выполнить требования спецификации, не ослабив хотя бы одно из условий. Главный кандидат на сокращение - условие, согласно которому переход к каждому полю должен сопровождаться в среднем шестью обращениями клиента к серверу. Основной задачей этого проекта повышения производительности стало доказательство того, что проект с такой спецификацией обречен на неудачу. До тех пор, пока доказательство не было представлено, люди продолжали тратить время и деньги в погоне за недостижимой целью.
Хорошие проекты не рождаются из плохих спецификаций. Будь то нечеткая формулировка проблемы или невыполнимые условия в спецификации - в любом случае проект улучшения производительности не может быть основан на спецификации, содержащей ошибки.
< Предыдущая | Следующая > |
---|