Программное обеспечение и его разработка - Фокс Джозеф М.
Шрифт:
Интервал:
Закладка:
В табл. 4.14 приведены примеры различных программ и их распределение по категориям в соответствии с таксономией. В дополнение к этому дается грубая оценка трудности работы с данной программой на каждом из трех этапов жизненного цикла программы.
Стоимость программного обеспеченияВ гл.2 мы уже отмечали, что стоимость больших программ может достигать 90 % общей стоимости проекта.
Существуют и такие применения программного обеспечения, в которых стоимость программ неизмеримо мала по сравнению со стоимостью аппаратуры. Разработчики таких программ могут совершенно не замечать кризиса программного обеспечения.
Если от нас требуют разработать основную программу, используемую на одной и только одной вычислительной машине, например программу управления информационной системой для компании XYZ мы будем не вправе делить стоимость программы на число пользователей. К тому же число это равно 1, и вся стоимость накладывается на одного пользователя. Если же нам нужно вставить нашу программу в маленькую вычислительную машину внутри телевизора, мы разделим стоимость программ, написанных для этой машины, на общее число телевизоров, которые будут выпущены в эксплуатацию. Если разработка программ обошлась в 200 тыс. долларов, то после деления на 500 тысяч телевизоров получим удельную стоимость всего 40 центов. Все очень просто! О чем же волноваться? Пока программа правильна, никаких проблем и не существует. В табл. 4.15 представлено все многообразие «тиражей» различных вычислительных машин.
При разработке системного и прикладного обеспечения в рамках некоторого проекта, скажем для управляющего центра общенациональной системы связи, стоимость этого обеспечения может легко достичь 30 или даже 60 млн. долларов в расчете на одну станцию связи. Стоимость же программ для одного микропроцессора, встроенного в телевизор, как мы уже подсчитали, может оказаться в диапазоне 40 центов на штуку.
Словарь программного обеспеченияЕсли мы говорим о программном обеспечении и не употребляем рядом с этим термином никаких добавочных определений, то должны четко понимать, что при этом мы все очень сильно упрощаем. Лишь самые общие замечания, сделанные по поводу аппаратно-интенсивных приложений программного обеспечения, можно отнести также и на счет программно-интенсивных приложений, и наоборот.
Программное обеспечение Системное обеспечение Обеспечение как продукция Обеспечение проектов Инструментальное обеспечение Тестирующее обеспечение Большое обеспечение Обеспечение для реального времени Пакетное обеспечение Прикладное обеспечение Диалоговое обеспечение и т. д.Мы не должны допускать предложений типа «70 % стоимости программного обеспечения приходится на этап продолжающейся разработки». Во многих случаях это правда; во многих — нет. Это слишком общее высказывание. Мы должны добиваться большей точности, использовать уточняющие определения. Люди, не являющиеся специалистами в области вычислительной техники, не только введены в заблуждение относительно вычислительных машин и их программного обеспечения, но также возмущены жаргоном и небрежностью, царящими в нашей отрасли[11]. Если профессионал не настаивает на точности высказываний, является ли он подлинным профессионалом?
Глава 5
Разработка программного обеспечения
Разделив все программное обеспечение на категории, изучим теперь подробнее процесс его разработки. Именно эта область доставляет в настоящее время наибольшие неприятности.
Свойства, присущие всем программам, дают нам возможность глубже проникнуть в более тонкие и более важные характеристики программ. Имеется по крайней мере 12 таких свойств или характеристик. Взгляните на табл. 5.1.
Таблица 5.1
Характеристики программ Обычно носят название 1. Заставляет вычислительную машину выполнить задание Функция 2. Занимает память машины Размер 3. Тратит ресурсы ЦП Эффективность 4. Легкость использования Практичность 5. Легкость восстановления после сбоя Устойчивость; восстанавливаемость 6. Содержит ошибки Правильность 7. Требует времени для создания График разработки 8. Требует людей для создания Людские ресурсы на разработку 9. Требует специального инструментария для разработки Материальные ресурсы на разработку 10. Требует денег для создания Стоимость 11. Модифицируема Архитектура, структура 12. Существует по крайней мере в одной форме, а нужны две Документация Характеристики программСтремление воплотить эти характеристики в программу приводит к конфликтам. В программах, написанных очень быстро (характеристика 7), обычно крайне неэкономно используется память и машинное время (характеристики 2 и 3) по сравнению с программами, которые писались медленнее. Быстро написанные программы часто не выполняют на все 100 % функции, которые они, по предположению, должны были выполнять (1). Программа может печатать почти любую ведомость, однако нам все же приходится держать двух сотрудников для выполнения функций, которые должна была бы (и могла бы) выполнять машина, но которые не были вовремя запрограммированы. Такое случается очень часто.
Если программа печати ведомости нужна нам к 1 июня будущего года, мы можем на этот срок включить дополнительно в группу разработки нескольких программистов, чтобы они помогли сократить время работы. Очевидно, что если на создание программы требуется 100 чел. — мес., то мы могли бы выделить на ее создание 10 программистов, которые будут работать в течение 10 мес. Но сделать эту же работу за один месяц, бросив на нее 100 человек, невозможно.
Укороченные графики могут совершенно разрушить попытки построить стройную, легко модифицируемую структуру (11). Малая стоимость разработки (10) находится в явном противоречии со всеми другими аспектами. (См. табл. 5.2.)
Таблица 5.2. Двенадцать характеристик программы
Фаза разработки Требует времени для создания График разработки Требует людей для создания Группа разработки Требует специального инструментария для создания Средства разработки Требует денег для создания Стоимость Фаза использования Заставляет машину выполнить задание Функция Занимает память машины Размер Использует ресурсы ЦП Эффективность Легка для использования Практичность Легко восстанавливается до рабочего состояния Восстанавливаемость Содержит ошибки Правильность Фаза сопровождения Модифицируема Архитектура Существует по крайней мере в одной форме, а нужны две Документация