Эволюция технологий создания программного обеспечения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Эволюция технологий создания программного обеспечения



           Можно выделить три основных этапа становления технологии:

· 70-е и 80-е годы XX века– систематизация и стандартизация процессов создания ПО (структурный подход);

· 90-е годы- начало 21-го века – переход к сборочному, индустриальному способу создания ПО (объектно-ориентированный подход);

· с середины 90-х годов до настоящего времени – развитие компонентного подхода и сетевых технологий, создание CASE-технологий проектирования ПО

  В рамках этих этапов развитие программной инженерии происходило и происходит по многим направлениям (нитям), решая проблемы, возникающие при разработке программного обеспечения в связи с развитием вычислительной техники и возникающими новыми и всё более усложняющими задачами.  В настоящее время выделяют несколько методологий (парадигм[10]/основных подходов/моделей) в программировании[11]:

1. Императивное программирование (императивная парадигма)

2. Декларативное программирование (декларативная парадигма)

3. Функциональное программирование

4. Логическое программирование

5. Структурное программирование

6. Модульное программирование

7. Функциональное программирование

8. Логическое программирование

9. Объектно-ориентированное программирование

10. Программирование, основанное на классах

11. Программирование, основанное на прототипах

12. Субъектно-ориентированное программирование

 

Остановимся на императивном программировании. Императивное программирование – это такой стиль написания исходного кода компьютерной программы, для которого характерно следующее:

· в исходном коде программы записываются инструкции (команды);

· инструкции выполняются последовательно;

· при выполнении инструкции данные, полученные при выполнении предыдущих инструкций, могут читаться из памяти;

· данные, полученные при выполнении инструкций, могут записываться в память

Императивная программа похожа на приказы (англ. imperative — приказ, повелители тельное наклонение), выражаемые повелительным наклонением в естественных языках, то есть представляют собой последовательность команд, которые должен выполнить компьютер.

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

Основные черты императивных языков:

· использование именованных переменных;

· использование оператора присваивания;

· использование составных выражений;

· использование подпрограмм;

· и др.

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

  Первый этап – «стихийное» программирование (от появления первых вычислительных машин до середины 60-х годов XX в). Первые программы имели простейшую структуру. Они состояли из собственно программы на машинном языке и обрабатываемых ею данных (рис. 1.2). Сложность программ в машинных кодах ограничивалась способностью программиста одновременно мысленно отслеживать последовательность выполняемых операций и местонахождение данных при программировании.

Рис 1.2. Структура первых программ

 

Появление ассемблеров позволило вместо двоичных или 16-ричных кодов использовать символические имена данных и мнемоники кодов операций. В результате программы стали более «читаемыми».

Создание языков программирования высокого уровня, таких, как FORTRAN и ALGOL, существенно упростило программирование вычислений, снизив уровень детализации операций, что позволило увеличить сложность программ.

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

Рис.1.3. Архитектура программы с глобальной областью данных

Слабым местом такой архитектуры было то, что при увеличении количества подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой. Например, подпрограмма поиска корней уравнения на заданном интервале по методу деления отрезка пополам меняет величину интервала. Если при выходе из подпрограммы не предусмотреть восстановления первоначального интервала, то в глобальной области окажется неверное значение интервала. Чтобы сократить количество таких ошибок, было предложено в подпрограммах размещать локальные данные (рис. 1.4).

Рис 1.4. Архитектура программы использующей подпрограммы с локальными данными

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

Как отмечалось выше, в начале 60-х разразился «кризис программирования». Фирмы, взявшиеся за разработку сложного программного обеспечения, например, операционных систем, срывали все сроки завершения проектов. Проект устаревал прежде, чем был готов к внедрению, увеличивалась его стоимость, и в результате многие проекты так и не были завершены.

Основной причиной была в основном в том, что вначале проектировали и реализовывали сравнительно простые подпрограммы, из которых затем пытались построить сложную программу, т.е. использовался подход «снизу-вверх» ( восходящее проектирование ). Интерфейсы подпрограмм получались сложными, и при сборке программного продукта выявлялось большое количество ошибок согласования, исправление которых, как правило, требовало серьезного изменения уже разработанных подпрограмм. При этом в программу часто вносились новые ошибки, которые также необходимо было исправлять... В конечном итоге процесс тестирования и отладки программ занимал более 80% времени разработки, если вообще когда-нибудь заканчивался.

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

Второй этап – структурный подход к программированию (60-70-е годы XX в.). В основе структурного подхода лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 40-50 операторов) подпрограмм. При таком подходе задача представляется в виде иерархии подзадач простейшей структуры. Проектирование осуществляется «сверху вниз» и подразумевает реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм (нисходящее проектирование). Одновременно вводятся:

- ограничения на конструкции алгоритмов;

- формальные модели их описания;

- метод пошаговой детализации проектирования алгоритмов.

Поддержка принципов структурного программирования была заложена в основу так называемых процедурных языков программирования. Как правило, они включали основные «структурные» операторы передачи управления, поддерживали вложение подпрограмм, локализацию и ограничение области «видимости» данных. Среди наиболее известных языков этой группы стоит назвать PL/1, ALGOL-68, Pascal, С.

 



Поделиться:


Последнее изменение этой страницы: 2020-12-17; просмотров: 186; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.13.173 (0.008 с.)