Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Серебряная пуля





Несмотря на появление новых инструментов и технологий, разработка программного обеспечения была и остается плохо предсказуемым и непрозрачным процессом. Тому есть несколько причин.

На первый взгляд, нижележащие слои (аппаратура, ОС, драйверы, компиляторы, фреймворки и пр.) абстрагируют программиста от множества проблем и рутины. Однако все преимущества абстрагирования исчезают, как только проявляется некоторая проблема в нижележащих слоях (что в эпоху рыночной конкуренции и спешки с выпуском новых версий продуктов становится не таким уж редким событием). В таких случаях невольно приходится изучать технологии нижележащих слоев, вникать в детали их реализации и взаимодействия, но даже это не всегда доступно, поскольку часто нижележащие слои представляют собой «черный ящик». Очевидно, что никто не может гарантировать отсутствие подобных проблем, не менее трудно спрогнозировать затраты на их решение. В подобных ситуациях особенно ценны специалисты, в совершенстве владеющие множеством технологий. Однако встречаются они очень редко и, к сожалению, их чаще всего используют для поиска и устранения чужих ошибок. Для большей гарантии результата разработчики не редко используют пусть устаревший, но проверенный стек технологий.

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

Индустрия также вставляет свои палки в колеса программистов, плодя новые и новые технологии (нередко тупиковые), поставляя их на рынок в незрелом виде, не стесняясь при этом рекламировать их, как очередной прорыв человечества.

Еще одна проблема заключается в том, что руководству и заказчикам трудно оценивать затраты на программирование, не видя физически осязаемого результата в виде некоторого прибора, устройства и т.п. Им нередко представляется удивительным, что коллектив трудился целый год, а результат их труда помещается на флешке или компакт-диске. Особенно эта проблема распространена в странах, где руководство предприятий формируется по указанию из вышестоящих инстанций. Руководство, не ощущая проблем программирования, не может самостоятельно планировать разработку и раздражается, когда узнает, что программисты и сами не могут указать четких сроков выпуска продукта (по совершенно объективным причинам). В результате, назначаемые директивно сроки нередко срываются, что служит причиной многих конфликтов.

Приведенный неполный перечень проблем специфичен именно для разработчиков программного обеспечения и делает их труд весьма незавидным. Многих программистов объединяет радужная мечта, что индустрия вот-вот разработает некоторый замечательный инструмент или технологию, которые в одночасье решат большинство их проблем. Такое волшебное средство на жаргоне называют серебряной пулей [14].

Однако проходят десятилетия, а серебряная пуля так и не появляется. Разумеется, появляются новые средства, упрощающие работу программистов, делающие ее более эффективной, но таких средств, которые смогли бы на порядок повысить эффективность разработки программ (именно по этому параметру принято отличать серебряную пулю) в программировании не появляется. Такое положение дел Фредерик Брукс предвидел еще в 1986 году [15]. По его мнению, после появления языков высокого уровня технологии программирования стали настолько абстрагированы от компьютера и приближены к прикладным задачам, что сложность проекта определяется уже не столько тонкостями программной реализации, сколько самой прикладной проблемой. При этом не отрицается, что технологии совершенствуются и за десять лет могут на порядок повысить производительность разработок.

С данным мнением можно соглашаться или нет, но даже если серебряная пуля будет изобретена, можно утверждать, что жизнь разработчиков программного обеспечения не упростится. Просто перед ними встанут новые, более сложные проблемы.

Date: 2015-09-24; view: 491; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию