Чтение онлайн

на главную - закладки

Жанры

Мифический человеко-месяц или как создаются программные системы
Шрифт:

Микрокомпьютерная революция изменила характер разработки программного обеспечения. Технологии разработки программного обеспечения 1970-х сами изменились в результате микрокомпьютерной революции и вызвавших ее технических достижений. Устранена значительная часть второстепенных сложностей технологий разработки программного обеспечения. Быстрые персональные компьютеры стали обычным инструментом разработчика, и время оборачиваемости стало почти устаревшим понятием. Сегодняшний персональный компьютер быстрее не только суперкомпьютера 60-го года, но и Unix-станции 1985-го. Это значит, что компиляция быстро осуществляется даже на скромных по мощности машинах, а благодаря большому объему памяти отпали задержки при компоновке с использованием дисков.

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

За последние 20 лет мы почти покончили с использованием разделения времени как методологией разработки программного обеспечения. В 1975 году разделение времени только-только вытеснило пакетную обработку в качестве наиболее распространенной технологии. Сеть использовалась для того, чтобы дать разработчику программного обеспечения доступ как к общим файлам, так и к большим вычислительным мощностям для компиляции, компоновки и тестирования. Сегодня вычислительную мощность обеспечивает персональная рабочая станция, а сеть используется в основном для обеспечения совместного доступа к файлам бригады, разрабатывающей продукт. Клиент-серверные системы меняют и упрощают технологию общего доступа для загрузки, сборки и выполнения контрольных примеров.

Сходный прогресс произошел с пользовательскими интерфейсами. Интерфейс WIMP обеспечивает гораздо большие удобства при редактировании текстов программ и текстов на естественном языке. Экран размером 24 строки на 72 колонки сменился полностраничным или даже двухстраничным экраном, поэтому программисты могут видеть изменения, которые они делают, в значительно более широком контексте.

Целая новая программная отрасль — коробочные пакеты

Рядом с классической индустрией программных продуктов широко развилась еще одна. Продажи программных продуктов числятся сотнями тысяч и даже миллионами. Целые мощные пакеты можно приобрести по цене меньшей, чем стоимость оплаты одного рабочего дня программиста. Эти две отрасли во многом различны и существуют параллельно.

Классическая программная индустрия. В 1975 году программная индустрия имела несколько отдельных и до некоторой степени различных составных частей, существующих по сей день:

• Производители компьютеров, поставляющие также операционные системы, компиляторы и утилиты для своих продуктов.

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

• Разработчики заказных программ, работающие по контракту с пользователем. Многие из этих подрядчиков специализируются на приложениях для военной сферы, где требования, стандарты и маркетинговые процедуры носят специфический характер.

• Разработчики коммерческих пакетов, в то время разрабатывавшие, в основном, большие приложения для специфических рынков, такие как пакеты статистического анализа и автоматического проектирования.

Том Демарко отмечает фрагментацию классической индустрии разработки программного обеспечения, особенно в части пользователей приложений:

Я не ожидал, что эта область распадется на отдельные ниши. Приемы работы в большей степени определяются нишей, чем использованием общих методов анализа систем, языков программирования и технологий тестирования. Ada был последним из языков общего назначения, и он стал языков ниши.

В нише обычных коммерческих приложений значительный вклад сделан языками четвертого поколения (4GL). Бём пишет, что «наиболее удачные из 4GL явились результатом написания какой-либо части области приложений на языке опций и параметров». Наиболее широко распространенными из этих 4GL являются генераторы приложений и комбинированные пакеты баз данных и связи с языками запросов.

Миры операционных систем объединились. В 1975

году было изобили операционных систем — у каждого производителя компьютеров была, по крайней мере, одна патентованная операционная система для каждой производственной серии, а часто и две. Насколько изменилось положение сегодня! Лозунгом дня стали открытые системы, и осталось лишь пять главных операционных сред, для которых создаются пакеты приложений (в хронологическом порядке):

• IBM MVS и VM

• DEC VMS

• Unix в том или ином варианте

• IBM PC, будь то DOS, OS/2 или Windows

• Apple Macintosh.

Индустрия коробочных продуктов. Экономические законы для разработчиков в этой отрасли совершенно отличны от тех, которые действуют в классической индустрии: стоимость разработки нужно делить на большое количество экземпляров, расходы на упаковку и маркетинг высоки. В классической индустрии при внутрифирменной разработке график работ и набор функций могли быть изменены, в отличие от стоимости разработки. На открытом рынке жесткой конкуренции сроки и функциональность полностью доминируют над затратами на разработку.

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

Покупай и создавай: коробочные продукты в качестве компонентов

Радикально улучшить устойчивость программных продуктов и производительность труда при их создании можно, лишь поднявшись на один уровень и изготавливая программы из модулей или объектов. Особенно многообещающей тенденцией становится использование рыночных пакетов в качестве платформ, на которых создаются более богатые и специализированные продукты. Система управления движением грузовиков создается с помощью коробочной базы данных и коммуникационного пакета, также как и информационная система для студентов. Объявления в журналах предлагают сотни стеков для Hypercard, специализированных шаблонов для Excel, десятки специальных функций на Pascal для MiniCad или функций на AutoLisp для AutoCad.

Метапрограммирование. Стеки для Hypercard, специализированные шаблоны для Excel, функции для MiniCad часто называют метапрограммированием, созданием нового слоя, приспосабливающего функции к нуждам определенной группы пользователей пакета. Идея метапрограммирования не нова, она вернулась и получила свое название. В начале 60-х многие производители компьютеров и вычислительные центры больших информационно-управляющих систем образовывали небольшие группы специалистов, создававших целые языки прикладного программирования с помощью макросов, написанных на ассемблере. В вычислительном центре Eastman Kodak был создан язык прикладного программирования на базе макроассемблера для IBM 7080. Аналогично, в телекоммуникационной программе Queued Telecommunications Access Method для IBM OS/360 можно было на многих страницах кода, написанного предположительно на языке макроассемблера, не найти ни одной команды машинного уровня. Сейчас блоки, создаваемые метапрограммистом, значительно больше, чем тогдашние макроопределения. Такое развитие вторичного рынка очень обнадеживает: пока мы ждали возникновения активного рынка классов C++, незаметно возник рынок метапрограмм многократного использования.

Поделиться:
Популярные книги

Тринадцатый VIII

NikL
8. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VIII

Сирийский рубеж 2

Дорин Михаил
6. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж 2

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи

Совершенно несекретно

Иванов Дмитрий
15. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Совершенно несекретно

На крыльях любви. Лебедь

Грин Эмилия
Любовные романы:
5.00
рейтинг книги
На крыльях любви. Лебедь

Месть Паладина

Юллем Евгений
5. Псевдоним `Испанец`
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Месть Паладина

Законы рода

Андрей Мельник
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Законы рода

Жена по ошибке

Ардова Алиса
Любовные романы:
любовно-фантастические романы
7.71
рейтинг книги
Жена по ошибке

Призыватель нулевого ранга

Дубов Дмитрий
1. Эпоха Гардара
Фантастика:
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга

Проданная Истинная. Месть по-драконьи

Белова Екатерина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Проданная Истинная. Месть по-драконьи

Вечный. Книга I

Рокотов Алексей
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга I

Я разорву эту помолвку!

Джейкобс Хэйли
Любовные романы:
любовно-фантастические романы
7.50
рейтинг книги
Я разорву эту помолвку!

Неправильный солдат Забабашкин

Арх Максим
1. Неправильный солдат Забабашкин
Фантастика:
попаданцы
альтернативная история
5.62
рейтинг книги
Неправильный солдат Забабашкин