Если от нас требуют разработать основную программу, используемую на одной и только одной вычислительной машине, например программу управления информационной системой для компании 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. Существует по крайней мере в одной форме, а нужны две | Документация |