Выбрать главу

Все это верно и для программного обеспечения. Программное обеспечение — это наш автомобиль: это та «вещь», которая выполняет работу. Мы должны тратить много времени на создание сопроводительной документации на программное обеспечение и на процесс взаимодействия пользователей с системой при помощи программного обеспечения.

Одно из наиболее вредных часто встречаемых высказываний состоит в том, что некто «пишет программное обеспечение». Получается так, будто программное обеспечение это что-то вроде письма.

Можно писать программу, но не программное обеспечение. И даже с программами трудности значительно возрастают с ростом их размеров.

Фраза «пишет программное обеспечение» не полностью отражает истинные усилия, затрачиваемые на разработку программного обеспечения.

Программное обеспечение мы создаем. Я намеренно выбрал слово «создаем». Образ действий по созданию программного обеспечения подразумевает много такого, что еще не стало частью научной или инженерной деятельности. Формулировка заданий, решений, проектирование программного обеспечения требует изобретательности и творчества. Как только эти фазы преодолены, процесс становится более механическим.

Разработка программного обеспечения может быть разбита на шесть этапов:

Определение требований и заданий

Проектирование

Написание команд — программирование

Компоновка

Тестирование

Документирование

Относительно новым термином «программно-аппаратное обеспечение» часто обозначается программное обеспечение или просто программа, которая всегда находится в постоянной памяти, работающей только на чтение (ПЗУ), и выполняется непосредственно оттуда. Хотя тот факт, что запись в память исключается, и создает некоторые трудности проектирования и создания программного обеспечения, однако программно-аппаратное обеспечение не столь уж сильно отличается от программного обеспечения, работающего с обычной памятью, чтобы его нужно было выделять и рассматривать отдельно. Здесь применяются те же правила и практические приемы. Таким образом, мы будем рассматривать программно-аппаратное обеспечение как часть программного обеспечения. Мы еще столкнемся с программами, располагающимися в постоянных запоминающих устройствах.

Обзор программного обеспечения

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

Очень часто разработчики программного обеспечения не успевают выдать надежный продукт точно в назначенный срок или просто выходят из бюджета. Какая-либо помощь этим разработчикам практически не увеличивается, и разумного решения тут вообще не видно. Неудачи на поприще программного обеспечения постигают не только начинающих программистов. Случается, что даже самые крупные, самые солидные, самые технологически передовые организации страдают из-за серьезных препятствий, возникающих перед ними. За несколько недель до намеченной сдачи в эксплуатацию новой системы 138 фирма IBM объявила о годовой отсрочке, вызванной трудностями с программным обеспечением. За год до назначенного ввода в действие усовершенствованной системы связи фирма АТТ объявила о 18-месячной задержке.

Пользоваться программным обеспечением легко, разрабатывать его намного сложнее. Разработка программного обеспечения — это выпущенный из «волшебной» (электронной) лампы джинн, который скитается по свету и повсюду отравляет жизнь разработчикам систем.

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

Если мы оглянемся на проделанное нами, то увидим, каких гигантских успехов мы добились. Системы резервирования авиационных билетов работают — и работают прекрасно. Американская система авиалиний к весне 1979 г. обслуживала 13 500 присоединенных терминалов, через которые поступало до 10,6 млн. сообщений в день. Система управления транспортными авиалиниями работает и в США, и за их пределами. Работает спутниковая система. И эти успехи не случайны. На них было затрачено огромное количество ресурсов и усилий, но они работают.