Этапы развития технологии программирования

Общие положения

Введение в технологию программирования.

Контрольные вопросы

1. Какова структура программы на языке Си?

2. Что такое алфавит языка программирования? Какие символы входят в алфавит Си?

3. Что такое идентификаторы, служебные слова, комментарии, разделители?

4. Какие есть константы в Си? Как они задаются?

5. Какие есть базовые типы данных в Си?

6. Как объявить переменную в Си?

7. Какие операции определены в Си?

8. Как организовать ветвление в Си?

9. Как организовать цикл в Си?

10. Что такое директивы препроцессора?

11. Перечислите примеры заголовочных файлов стандартных библиотек.

12. Как объявить функцию в Си? Как вызвать функцию?

13. Что такое указатель? Какие над ним определены операции?

14. Как работать с массивами в Си? Как реализовать многомерный массив?

15. Что такое строка в Си? Вспомните некоторые функции обработки строк.

16. Какие классы переменных Вы знаете? Что такое время жизни и область видимости переменной?

17. Что такое поток (stream) в программировании? Вспомните функции работы с потоком.

18. Что такое объектно-ориентированное программирование?

19. Как идеи ООП реализованы в С++?

Технология программирования — совокупность методов и средств, используемых в процессе разработки программных средств.

Технология программирования включает:

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

— перечисление условий, при которых выполняется операция;

— описание самих операций;

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

Рассмотрим этапы становления технологии программирования.

1. Стихийное программирование (С момента появления первых вычислительных машин до середины 60-х годов ХХ в.)

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

С появление ассемблеров стали использовать символические имена данных и мнемонику кодов операций.

Создание языков программирования высокого уровня (Фортран, Алгол) упростило программирование вычислений, увеличило сложность программ.

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

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

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

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

 

2. Структурное программирование (60 — 70-е годы ХХ в.):

Структурный подход к программированию — совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения. В основе подхода — декомпозициясложных систем с целью последующей реализации в виде отдельных небольших (до 40 — 50 операторов) подпрограмм. Это процедурная декомпозиция.

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

Поддержка принципы структурного программирования заложена в основу процедурных языков программирования (PL-1, ALGOL-68, Pascal, C).

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

Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули. Эту технологию поддерживают современные версии языков Pascal и C (C++), языки Ада и Modula.

Структурный подход в сочетании с модульным программированием позволяет получать достаточно надежные программы, размер которых не превышает 100000 операторов. При увеличении размера программы возрастает сложность межмодульных интерфейсов. Для разработки программного обеспечения большого объема предложено использовать объектный подход.

3. Объектный подход (с середины 80-х до конца 90-х годов ХХ в.).

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

Поддерживается в языках программирования Pascal, C++, Modula, Java. Объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. Создаются среды, поддерживающие визуальное программирование (Delphi, Visual C++).

4. Компонентный подход и CASE-технологии.

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

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

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