Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Эволюция технологий создания программного обеспечения
Можно выделить три основных этапа становления технологии: · 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 с.) |