Программное обеспечение и его разработка - Фокс Джозеф М.
Шрифт:
Интервал:
Закладка:
Таблица 4.13 Характеристики программного обеспечения проектов и программного обеспечения как продукции
Проекты — - - — - - — - - —> <- - — - -Продукция Расчет налоговых отчислений Хьюстон Инструментальные программы мин. обороны Контроль авиаперевозок FAA Бортовые навигационные системы на кораблях «Wizard of Avis» Сопровождение ракет Телевизоры Компилятор с Кобола для IBM 370 Обработка текстов Число пользователей 1 1 1 десятки сотни сотни тысячи тысячи тысячи тысячи Число разраб. организаций 1 1 1 1 неск. 1 1 1 1 1 Посредники между пользователем и разработчиком Нет Нет Да Да Да Да Да Да Да Да Параллельная разработка Нет Да Да Да Да Нет Да Да Нет Да, затем Heт Требования пользователя или рынка Пользователь Пользователь Пользователь Пользователь Пользователь Пользователь Пользователь Рынок Рынок Рынок Конкуренция после построения программного обеспечения Нет Нет Нет Нет Нет Нет Нет Нет Да Да Финансовый риск Нет Нет Нет Нет Нет Нет Нет Нет Да Да Сопровождение программного обеспечения В В В В В Н Н Апп. — инт Аппар. прод. с прогр. обесп. В Прогр. — инт. Товарное прогр. обесп. В Прогр. — Инт.Требования к проектам и продукции. Выработать требования к системе «Аполлон» гораздо легче, чем к системе управления процессом обработки слов. Дело заключается в том, что ошибки при определении требований исправлять в первом случае значительно легче. Руководство программой Аполлон имело тесный контакт со всеми, кто будет пользоваться программным обеспечением, и вполне способно управлять ими.
Рис. 4.23. Препятствия на пути руководства программным обеспечением.Такая тесная связь позволяла легче справляться с некоторыми не очень грубыми ошибками. Если бы о каждой незначительной ошибке или изменении приходилось сообщать сотне или более пользователям, очевидно, что работа по их извещению отняла бы много сил.
Для выработки хорошо составленных требований к разрабатываемому программному обеспечению, предназначенному для продажи многим пользователям, необходимо проводить исчерпывающее исследование их нужд и пожеланий, а затем еще выяснять конъюнктуру рынка. Нам нужно не просто удовлетворить требованиям большого числа пользователей, нам нужно выиграть соревнование с другими системами.
В случае проектов конкурентная борьба разворачивается только в момент выбора группы разработчиков. Определение требований к товарному программному обеспечению — это сложный процесс, которым длительное время вынуждены заниматься большие коллективы людей.
Размах работ при разработке проектов и товарных программ.
В большинстве проектов для построения высоконадежных или высокоскоростных систем приходится разрабатывать уникальные программы. Для многих проектов необходимо создавать специальные средства для их разработки. С другой стороны, условия создания товарных программ носят более ограниченный характер. Продукция обычно более четко очерчена, все интерфейсы, используемые для связи с другими частями программного обеспечения, детально проработаны. Если, например, мне нужно разрабатывать транслятор с Кобола или программу печати платежных ведомостей, то совершенно необязательно начинать с разработки новой операционной системы. Писать команды, образующие интерфейс с операционной системой, безусловно, необходимо, но разрабатывать саму систему нет нужды. Напротив, шансы на разработку операционной системы резко увеличиваются, если поступает задание разработать программу для штурманского дела. (См. рис. 4.23.)
Доведение программы до товарного уровняСуществует много процессов, позволяющих некоторую часть программного обеспечения, работающую всего в одном месте, превратить в «стандартное» программное обеспечение, годное к продаже в сотни организаций. Такой процесс иногда называется доведением программы до товарного уровня. Создание продукции на основе обычной программы походит на процесс инженерного сопровождения, имеющий место при разработке аппаратуры.
Часто рассказываемая с иронией апокрифическая история о группе из трех гениев, за один вечер работы где-то в гараже написавших программу, за разработку которой некая компания обещала потом около 300 тыс. долларов, однако весьма поверхностна. Конечный результат этих двух процессов просто невозможно сравнивать. Чтобы по-настоящему понять эту разницу, давайте предположим, что некто обращается к нам — большой компании — с работающей программой и предлагает продавать эту программу тысячам пользователей и поддерживать ее. Предположим, мы действительно верим, что на этом можно что-то заработать. Составим список того, что нам необходимо будет проделать с этой программой. Список этот, далеко не исчерпывающий, приведен ниже.