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

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

В 1985 году в Советском Союзе вышла переведенная книга Джозефа Фокса, руководителя проекта из IBM "Программное обеспечение и его разработка".  В этой книге сформулированы основные принципы не только разработки ПО, но и управления программным проектом. Они сформулированы тогда, когда еще не было икон типа PMBOK, ITIL, Agile и прочих. Недавно перечитал эту книгу и с удовольствием обнаружил, что основные положения книги фудаментальны и, без сомнения, оказали влияние на то, что мы сейчас называем гибкими методологиями разработки/ Публикуем две главы этой книги.

Да здравствует классика!

Факты о программном обеспечении

  •  Развитие программного обеспечения происходит одновременно  в двух противоположных направлениях.
  • Жизнь любой программы обычно проходит три стадии, и в своей работе разработчики и проектировщики должны принимать во внимание все эти три стадии. Обычно рассматриваются только стадия разработки и стадия использования. Однако, уже на ранних этапах разработки нужно иметь в виду и стадию поддержки (сопровождения) или продолжающейся разработки.
  • Разработка программного обеспечения проходит следующие шесть этапов: определение требований, проектирование, написание команд, компоновка, тестирование и документирование.
  • Разработка больших систем программного обеспечения часто зависит от наличной аппаратуры.
  • Любой процесс может быть выражен несколькими различными «правильными» последовательностями команд.
  • Программное обеспечение носит абстрактный характер, что усложняет процесс его разработки.
  • Основным инструментом создания нового программного обеспечения являются вычислительная машина и ее программное обеспечение.
  • При разработке программного обеспечения основную трудность обычно представляет собой не та функция, которую должна выполнять данная система, а методика взаимодействия с пользователем, которой должна подчиняться эта система.
  • Некоторые виды программного обеспечения можно разрабатывать теми же методами, что и аппаратуру, другие же так разрабатывать нельзя.
  • Правильное программное обеспечение не подвержено никаким сбоям. Термин «поддержка» по отношению к программному обеспечению является, следовательно, неправильным.
  • Разработка больших программ – это весьма многогранная деятельность, отнюдь не связанная только с работой на вычислительной машине.
  • Большая часть программного обеспечения никогда не может быть отлажено до конца, даже после нескольких лет тестирования и использования.
  • Разработка программного обеспечения часто весьма трудоемкий и дорогостоящий процесс.
  • Программное обеспечение это не цель, а средство.

Полный цикл

Давая поэтапный список процессов, как это сделано на рис. 5.2, мы должны понимать, что реально он никогда не бывает таким простым и понятным.

Идеальный случай разработки программного обеспечения

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

Реальный ход разработки программного обеспечения

В конце 60-х гг. в Гейтсбурге в отделении фирмы IBM мы создали специальный курс лекций под названием КУПП – курс управления программным проектом. Этот курс был предназначен для того, чтобы молодые руководители работ лучше понимали, на что обращать особое внимание, как привести проект к оптимальному результату (см. рис.5.4). Материал мало менялся с годами, я здесь привожу две диаграммы распределения людских ресурсов, использовавшихся на протяжении 5 лет. Рис. 5.4 был в конце концов признан неправильным. Для больших проектов проектирование не кончается никогда. Диаграмма была изменена таким образом, чтобы отразить продолжающееся в течение всего этапа разработки проектирование (см. рис. 5.5).

Диаграмма людских ресурсов (по данным 1975 г.)

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

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

Диаграммы распределения ресурсов

Для маленьких программ в хорошо известных уже полностью автоматизированных областях эта диаграмма вполне пригодна. Но она совершенно не подходит большим программным системам и даже системам небольшого размера, относящимся к области управления процессами! Определение требований и проектирование продолжается гораздо дольше. Рис. 5.7, созданный Э.Ферентино, полнее соответствует реальной ситуации, или, лучше сказать, ситуации, которая должна возникать при разработке крупномасштабного программного обеспечения.

Еще раз взгляните на модель, использованную нами в отделении федеральных систем фирмы IBM в начале 70-х гг. (рис. 5.5). Процесс проектирования, как мы уже видели, отражен вполне удовлетворительно, но совершенно неправильно представлена роль тестирования. Показано, что тестирование начинается только вместе с кодированием.

Как можно видеть из правильной модели, тестирование должно начинаться вскоре после «первого прохода» процесса определения требований.

Выводы

"А вы их сделаете сами !? ", Евгений Пикулев.

Рецензию на эту книгу можно прочитать здесь.

Рассказать друзьям: