Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Серебряная пуляНесмотря на появление новых инструментов и технологий, разработка программного обеспечения была и остается плохо предсказуемым и непрозрачным процессом. Тому есть несколько причин. На первый взгляд, нижележащие слои (аппаратура, ОС, драйверы, компиляторы, фреймворки и пр.) абстрагируют программиста от множества проблем и рутины. Однако все преимущества абстрагирования исчезают, как только проявляется некоторая проблема в нижележащих слоях (что в эпоху рыночной конкуренции и спешки с выпуском новых версий продуктов становится не таким уж редким событием). В таких случаях невольно приходится изучать технологии нижележащих слоев, вникать в детали их реализации и взаимодействия, но даже это не всегда доступно, поскольку часто нижележащие слои представляют собой «черный ящик». Очевидно, что никто не может гарантировать отсутствие подобных проблем, не менее трудно спрогнозировать затраты на их решение. В подобных ситуациях особенно ценны специалисты, в совершенстве владеющие множеством технологий. Однако встречаются они очень редко и, к сожалению, их чаще всего используют для поиска и устранения чужих ошибок. Для большей гарантии результата разработчики не редко используют пусть устаревший, но проверенный стек технологий. Вторая причина заключается в том, что компоненты современных сложных систем осуществляют семантическое (смысловое) взаимодействие друг с другом на программном уровне. Проблемы доставки данных и пр. реализуются нижележащими слоями более-менее стандартно, но семантика сообщений, их смысл всегда уникальны. Другими словами на плечи программиста ложатся нестандартные проблемы увязки компонент большой системы. Эта задача – одна из самых сложных, поэтому плохо прогнозируема. Индустрия также вставляет свои палки в колеса программистов, плодя новые и новые технологии (нередко тупиковые), поставляя их на рынок в незрелом виде, не стесняясь при этом рекламировать их, как очередной прорыв человечества. Еще одна проблема заключается в том, что руководству и заказчикам трудно оценивать затраты на программирование, не видя физически осязаемого результата в виде некоторого прибора, устройства и т.п. Им нередко представляется удивительным, что коллектив трудился целый год, а результат их труда помещается на флешке или компакт-диске. Особенно эта проблема распространена в странах, где руководство предприятий формируется по указанию из вышестоящих инстанций. Руководство, не ощущая проблем программирования, не может самостоятельно планировать разработку и раздражается, когда узнает, что программисты и сами не могут указать четких сроков выпуска продукта (по совершенно объективным причинам). В результате, назначаемые директивно сроки нередко срываются, что служит причиной многих конфликтов. Приведенный неполный перечень проблем специфичен именно для разработчиков программного обеспечения и делает их труд весьма незавидным. Многих программистов объединяет радужная мечта, что индустрия вот-вот разработает некоторый замечательный инструмент или технологию, которые в одночасье решат большинство их проблем. Такое волшебное средство на жаргоне называют серебряной пулей [14]. Однако проходят десятилетия, а серебряная пуля так и не появляется. Разумеется, появляются новые средства, упрощающие работу программистов, делающие ее более эффективной, но таких средств, которые смогли бы на порядок повысить эффективность разработки программ (именно по этому параметру принято отличать серебряную пулю) в программировании не появляется. Такое положение дел Фредерик Брукс предвидел еще в 1986 году [15]. По его мнению, после появления языков высокого уровня технологии программирования стали настолько абстрагированы от компьютера и приближены к прикладным задачам, что сложность проекта определяется уже не столько тонкостями программной реализации, сколько самой прикладной проблемой. При этом не отрицается, что технологии совершенствуются и за десять лет могут на порядок повысить производительность разработок. С данным мнением можно соглашаться или нет, но даже если серебряная пуля будет изобретена, можно утверждать, что жизнь разработчиков программного обеспечения не упростится. Просто перед ними встанут новые, более сложные проблемы.
|