Две роли программного обеспечения
Очевидная роль программного обеспечения — заставить работать аппаратуру! Но давайте заглянем поглубже. Этим роль программного обеспечения не ограничивается. Оно еще должно быть легко модифицируемым.
Никто без серьезных оснований не станет ломать антенну радиолокатора или новый спутник (ценой около 50 млн. долларов). Однако руководители различных систем с легкостью идут на изменения в программном обеспечении! Они должны даже заранее планировать эти изменения. Такая роль была уготована программному обеспечению с самого его возникновения. Изучение истории этого вопроса возвращает нас к понятию запоминаемой программы.
Универсальным устройством вычислительная машина стала с появлением возможности стирать и изменять информацию в своей памяти. Но эта же возможность привела и к тому, что ЭВМ стали гибкими, легко адаптирующимися устройствами. Универсальность и гибкость одинаково связаны с возможностью изменения состояния памяти. Чтобы лучше использовать все выгоды гибкости вычислительных машин, нам необходимо очень тщательно подходить к вопросу контроля программного обеспечения и быть всегда готовыми внести все нужные изменения.
Почему проблема программного обеспечения еще не полностью решена?
Почему разработка программного обеспечения часто так трудна? Ниже изложены причины, всевозможные комбинации которых дают ответ на этот вопрос.
1. Сложность. Внутренняя сложность автоматизируемого процесса, т. е. научная сложность (лунное притяжение и т. д.), или логическая сложность (число ветвей в программе может достичь значения 10 3000), или и та и другая вместе.
2. Абстрактность. Управление и создание его происходит «вслепую», и, для того чтобы «увидеть», что происходит, требуются весьма сложные приспособления.
3. Путаница в требованиях. Руководство обычно убеждено, что вполне понимает все требования пользователей, даже в том случае, если пользователь до того ни разу не видел подобной системы. Кроме того, распространено заблуждение, что первоначально поставленная цель системы (в тех случаях, когда она известна не изменяется. Отсюда часто возникает абсурдное представление, что большая программная система может быть разработана с помощью «большого взрыва».
4. Социальные факторы. Постоянно предпринимаются усилия по снижению стоимости разработки системы. Программная часть системы, как наименее понятная, подвергается наибольшим денежным ограничениям. Именно из-за малопонятности программного обеспечения легче всего доказать необходимость ограничения капиталовложений в него. Программное обеспечение «невидимо».
5. Управление взаимодействием с пользователем с помощью программного обеспечения. Создаваемое для такого взаимодействия программное обеспечение должно выполнять следующее:
а) обеспечивать, чтобы работа системы никогда не прекращалась, т. е. программы должны управлять аппаратурой, данными и другими программами так, чтобы при возникновении ошибок работа возобновлялась без вмешательства человека.
б) обеспечить, чтобы программа выполняла задание за определенный период времени: таким образом, программы должны управлять распределением временных отрезков и состояниями составных частей, меняя, если это необходимо, последовательность выполнения работ.
в) интерфейс с пользователем ориентирован на удобство работы пользователя, а не системы, при этом пользователь может использовать систему с минимумом специальных навыков.
Разрабатывать программное обеспечение очень и очень трудно. Оно имеет весьма запутанную логическую структуру.
Глава 2
Вычислительная машина и способы ее использования
Определение вычислительной машины
Едва ли возможно изучать законы полета, не изучая самого самолета. Обсуждение этих законов обычно проводится в предположении, что слушатели понимают основные принципы действия рулей, закрылков и т. п. К моему ужасу, я часто обнаруживал, что мое представление об аппаратуре вычислительной машины немного, но в главном отличается от представлений моих коллег. Итак, прежде чем заняться более глубоким изучением программного обеспечения, мы просто обязаны изучить ЭВМ и способы ее использования.
Одним из значений слова «определить» является «установить границы». Предлагаемое ниже определение как раз и обрисовывает и устанавливает границы. Определение дается в два этапа, сначала определяется собственно вычислительная машина, а затем запоминаемая программа и универсальная ЭВМ.
Читать дальше