Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 280; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.) |