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