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

ЖАНРЫ

Программное обеспечение и его разработка
Шрифт:

Работа на основе ветвящейся структуры

Руководство и управление конфигурацией

Возможность слежения

Инспекторские проверки (сквозной контроль)

Управление качеством

Верификация

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

Выборочные прослушивания

Руководство проектом

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

Начальник

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

Период разобщенности Работа на дому. Все гончары выполняли весь цикл работ в своей мастерской.
Объединения мастеров Достигается экономия при выполнении вспомогательных работ. Основной производственный процесс не меняется. Но теперь централизованная группа сборщиков глины поставляет материал всем гончарам. Централизованная группа торговцев заведует всей торговлей. Кувшины, однако, изготовляются по старой технологии. Этот шаг не зависит от последующих шагов.
Разделение труда Отдельные функции передаются тем людям, которые особенно хорошо выполняют именно их. Отделка всех кувшинов выполняется специальной группой художников. В книге «Здоровье нации» Адам Смит написал, что 10 неквалифицированных работников, работая независимо друг от друга, с трудом могут изготовить за день всего по одному гвоздю, но при разделении труда те же 10 человек в состоянии изготовить более 48 000 штук. Это начало понятия о сборочной линии.
Автоматизация Значительная экономия средств позволяет выделить фонды на внесение исправлений в основной процесс, проходящий в мастерской. Горны и печи для обжига начинают использоваться с невероятной интенсивностью. Штамповка автоматизируется с помощью использования ветряных мельниц и паровых двигателей.
Сборочная линия Разделение всего процесса на ряд отдельных операций, выполняемых над каждым изделием в установленное время.
Взаимозаменяемые части В конце 1790-х гг. Эли Уитни предпринял попытку изготовить за 2 года 10 000 мушкетов. «Абсурд», — сказали ему. К 1807 г. он делал по 2000 штук в год, в шесть раз больше, чем государственный завод в Спрингфилде, шт. Массачусетс. Секрет заключался во взаимозаменяемости частей, достигнутой благодаря прогрессу в металлургии и металлообработке. Взаимозаменяемость частей стала одной из фундаментальных основ сборочных линий.

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

Да До некоторой степени Началась Начались Еще нет
Коллективный труд Специализация работ Автоматизация Сборочные линии Взаимозаменяемые части

Рис. 8.1. Аналогия между развитием программного обеспечения и ходом промышленной революции.

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

Терминология

Недавно я был представлен новому помощнику секретаря комиссии по вопросам военно-морского флота, в которой я возглавляю комитет по вычислительным машинам,

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

Броских названий немало, и они хороши; они застревают в мозгу и легко запоминаются. Но там, где они вводят в заблуждение, они наносят ощутимый вред.

«Инвертированные файлы» — звучит очень ясно, но ясности никакой нет. Это вовсе не файлы, а просто таблицы, в которых есть

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

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

Организационные требования

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

Что делать?

Необходимо предпринять несколько важнейших действий:

1) назначить единого директора по программному обеспечению;

2) производить в масштабе всей фирмы обучение ведущих специалистов;

3) установить стандарты на программное обеспечение;

4) запретить принятие решений на слишком низких уровнях.

Единый директор по программному обеспечению

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

Этот человек обязан:

1) установить стандарты на программы на уровне данной организации;

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

3) проводить обсуждения;

4) контролировать расходы по определению требований и проектированию программного обеспечения;

5) давать советы высшему руководству по вопросам, касающимся возможностей и направлений развития областей, на которые оказывает влияние программное обеспечение.

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

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

Стандарты

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

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

Поделиться с друзьями: