Программное обеспечение и его разработка - [6]

Шрифт
Интервал

Разработка программного обеспечения умеренных масштабов представляет собой по большей части историю успехов со счастливым исходом. Многие рассматриваемые нами в дальнейшем определения и приемы, использованные при построении больших систем, заимствованы из более ранних попыток реализации небольших систем или применимы к ним. Мы еще будем обсуждать эти вопросы.

Приведем теперь некоторые не очень очевидные факты, связанные с программным обеспечением, а затем коротко обсудим их. Оставшаяся часть книги будет посвящена более подробному их описанию.


Факты о программном обеспечении

Развитие программного обеспечения происходит одновременно в двух противоположных направлениях.

Жизнь любой программы обычно проходит три стадии, и в своей работе разработчики и проектировщики должны принимать во внимание все эти три стадии. Обычно рассматриваются только стадия разработки и стадия использования. Однако уже на ранних этапах разработки нужно иметь в виду и стадию поддержки (сопровождения) или продолжающейся разработки.

Разработка программного обеспечения проходит следящие шесть этапов: определение требований, проектирование, написание команд, компоновка, тестирование и документирование.

Разработка больших систем программного обеспечения часто зависит от наличной аппаратуры.

Любой процесс может быть выражен несколькими различными «правильными» последовательностями команд.

Программное обеспечение носит абстрактный характер, что усложняет процесс его разработки.

Основным инструментом создания нового программного обеспечения являются вычислительная машина и ее программное обеспечение.

При разработке программного обеспечения основную трудность обычно представляет собой не та функция, которую должна выполнять данная система, а методика взаимодействия с пользователем, которой должна подчиняться эта система.

Некоторые виды программного обеспечения можно разрабатывать теми же методами, что и аппаратуру, другие же так разрабатывать нельзя.

Правильное программное обеспечение не подвержено никаким сбоям. Термин «поддержка» по отношению к программному обеспечению является, следовательно, неправильным.

Разработка больших программ — это весьма многогранная деятельность, отнюдь не связанная только с работой на вычислительной машине.

Большая система программного обеспечения никогда не может быть отлажена до конца, даже после нескольких лет тестирования и использования.

Разработка программного обеспечения часто весьма трудоемкий и дорогостоящий процесс.

Программное обеспечение это не цель, а средство.

Развитие программного обеспечения происходит одновременно в двух противоположных направлениях. В середине 30-х гг. XX столетия английский математик Ален Тьюринг доказал, что любой процесс, который можно описать каким-либо алгоритмом, может быть реализован с помощью простейшей машины, которая выполняет всего шесть различных команд, хотя это может занимать весьма значительное время. Из этого принципа логически следует тот факт, что вычислительная машина — любая вычислительная машина общего назначения — может выполнить все, что только может быть описано с помощью алгоритма. Современное программное обеспечение становится все более сложным, находит все более широкие и сложные приложения и в то же время делается «обыкновенной» продукцией повседневного пользования обывателей.

Огромный прогресс технологии производства интегральных схем драматически понизил цены на аппаратуру, и этот процесс будет еще продолжаться. То, что казалось недоступным еще несколько лет назад из-за цены или нехватки времени, вполне достижимо сегодня.

Одновременное уменьшение стоимости и увеличение мощности машин расширили область применения ЭВМ сразу на верхнем и нижнем уровнях.

На верхнем уровне, связанном с широкомасштабными усилиями, вычислительные машины получают возможность выполнять задачи за требуемое время, и эти задачи стали теперь решаться. А на нижнем уровне простые машины с невысоким быстродействием становятся такими дешевыми, что их теперь экономически выгодно использовать для автоматизации тех процессов, которые еще год или два тому назад не имело смысла автоматизировать.

Это развитие вычислительной техники в двух направлениях вроде бы не должно никого удивлять и смущать, но иногда это происходит. Программное обеспечение для верхнего уровня становится все более сложным, для нижнего же уровня программы постоянно упрощаются.

Программное обеспечение состоит из множества программ различных типов. Программы делают все, что только можно; они бывают маленькими и тривиальными, но бывают также большими и сложными, весьма дорогостоящими. Говорить о программном обеспечении можно только употребляя при этом по крайней мере одно уточняющее слово. О чем мы говорим — о «программном обеспечении проекта» или о «программном обеспечении как продукции»? О «реальном времени» или о «пакете»? А может быть о «диалоге»? Что мы имеем в виду: «помехозащищенность», «помехобезопасность» или просто надежность? О каком программном обеспечении идет речь — о «инструментальном», «системном» или «прикладном»? О «крупномасштабном» или «мелкомасштабном» программном обеспечении? Каждая из этих категорий обладает собственными, характерными только для нее чертами.


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.