Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1.docx
Скачиваний:
15
Добавлен:
20.06.2023
Размер:
92.62 Кб
Скачать

1.2. Краткая история развития информационных и программных систем

Развитие ИТ и, в частности ИС, самым тесным образом связано с развитием вычислительной техники. Начало современного этапа развития обычно связывают с появлением цифровых вычислительных машин (ЦВМ), в основу построения которых положена машина с хранимой программой (машина фон Неймана). Подобные машины появились еще в 40-е годы прошлого века. В соответствии с общепринятой методикой оценки развития вычислительной техники, ЦВМ принято разделять на поколения. В основу разделения положена используемая элементная база.

К первому поколению относят ламповые компьютеры, ко второму — компьютеры, использующие в качестве элементной базы транзисторы и магнитные сердечники, к третьему — компьютеры на интегральных схемах, а к четвёртому — компьютеры на базе микропроцессоров. Вопрос о том, что такое компьютеры пятого поколения до сих пор не имеет однозначного ответа. Одним и первых проектов компьютеров пятого поколения был японский национальный проект, который был анонсирован в середине 80–х годов прошлого века. Авторы этого проекта считали, что компьютеры пятого поколения – это компьютеры, построенные с использованием сверхбольших интегральных схем (СБИС), ориентированные на работу со знаниями. Предполагалось, что компьютеры пятого поколения будут иметь не-фон Неймановскую, а основным языком программирования станет язык Пролог. В целом, проект оказался неудачным. Развитие ИТ не пошло путем создания специализированных процессоров, язык Пролог не получил широкого применения. После неудачи японского проекта машин пятого поколения стало ясно, что в обозримом будущем развитие ИТ пойдет путем стандартизации архитектур процессоров, наращивания их мощности за счет помещения нескольких процессорных ядер на кристалл. Все прочие задачи решаются на программном уровне, хотя в последние годы возрос интерес к аппаратным решениям, посредством использования технологий система на кристалле.

По мере развития ИТ, наблюдалась устойчивая тенденция роста доли программного компонента в составе ИС. В компьютерах первого и отчасти второго поколения программирование осуществлялось в машинных кодах, а затем на ассемблере. Компьютеров было очень мало, и они были очень дороги, использовались преимущественно в военных и в научных целях. Компьютеры имели крошечную по современным понятиям внутреннюю и внешнюю память и, поэтому сами программы имели очень небольшой размер. Основные усилия разработчиков были направлены на создание самого компьютера. Часто в качестве программистов и сервисных инженеров выступали сами разработчики.

Однако даже на базе транзисторов и памяти на магнитных сердечников удалось создать достаточно мощные компьютеры, обладающие уже значительной оперативной и внешней памятью. Число компьютеров увеличилось в десятки и сотни раз. Они стали применяться не только в научных лабораториях и военных организациях, но и в крупных фирмах для решения задач бизнеса. Сами программы стали значительно более сложными, увеличилось число программистов. Это привело тому, что расходы на разработку прикладного программного обеспечения резко выросли. Стала ощущаться нехватка программистов. Выход из сложившейся ситуации был найден в конце 50-х годов и был связан с использованием языков высокого уровня (ЯВУ). В 1958 году был создан широко известный язык ALGOL, который после доработки стал известен как ALGOL 60. В середине 60-х годов появился используемый до сих пор язык FORTRAN и много ряд других ЯВУ. Появление ЯВУ можно назвать первой революцией в области разработки ПО, что позволило освободить прикладного программиста от необходимости детально знать аппаратную архитектуру компьютера. Теперь программист мог сосредоточиться на решении прикладной задачи. Большинство языков, созданных в этот период можно отнести к процедурно-ориентированным языкам. Господствующим стилем программирования было структурное программирование. Программа должна была иметь четко определенную структуру и состояла из произвольного числа вложенных друг в друга подпрограмм. Это был достаточно удобный подход. Главный программист определял общую структуру программы и интерфейсы отдельных программных модулей и поручал их разработку членам своей команды. Постепенно по мере увеличения мощности и увеличения числа компьютеров стали появляться проблемы, связанные с использованием структурного программирования, основная из которых состояла в том, что, несмотря на все усилия разработчиков, каждое новое приложение приходилось писать «с нуля», что существенно увеличивало стоимость разработки.

Решение было найдено в переходе на объектно-ориентированные языки программирования (ООЯП). Переход к использованию объектно-ориентированного подхода к созданию ПО можно рассматривать как вторую революцию в сфере разработки программного обеспечения. В рамках внедрения объектно-ориентированного подхода в практику проектирования ИС можно выделить 3 фазы: использование ООЯП, использование методологии объектно-ориентированного проектирования (ООП) и использование подхода к разработке, известного как Архитектура, управляемая моделью (Model Driven Architecture, MDA).

Идеи, положенные в основу объектно-ориентированных ООЯП состоят в следующем:

1. Всё является объектом.

2. Вычисления осуществляются путём обмена данными между объектами.

3. Каждый объект имеет независимую память, которая состоит из других объектов.

4. Каждый объект является представителем класса, который выражает общие свойства объектов.

5. В классе задаётся поведение объекта, Все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия.

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

Сила ООЯП состоит в том, программист может использовать готовые классы, создавать из них собственные классы, используя механизмы наследования. ООЯП появились достаточно давно. В частности, еще в 60-х годах появился язык Simula-67, который мог работать с объектами, классами, виртуальными методами и др. Широкого практического применения этот язык не получил. Значительно позже появился другой достаточно известный ООЯП - Smalltalk-80. Широкое распространение ООЯП связано с языком С++, ранние версии которого стали доступны с начала 80-х годов, хотя стандарт на этот язык был согласован только в 1998 году. Успех С++ связан с 2 моментами. Во, первых он построен на базе повсеместно распространенного языка С, в во-вторых, он позволяет пользователю постепенно приобщаться к объектно-ориентированному программированию. В настоящее время наряду с С++ используются много других языков ООЯП, Java, Delphi, C#, Python, Ruby и др.

Второй фазой «объектно-ориентированной революции» можно считать появление объектно-ориентированного проектирования (ООП). Идея ООП состоит в следующем. Объектно-ориентированная парадигма может быть использована не только для создания алгоритмического языка, но и для моделирования поведения объектов реального мира, в частности, с использованием графических языков моделирования. Наибольшее распространение получил Unified Modeling Language (UML) — унифицированный язык моделирования — язык графического описания для объектного моделирования в области разработки программного обеспечения, моделирования бизнес-процессов, системного проектирования и отображения организационных структур. Первая версия UML появилась в 1997 году. Более подробно UML будет рассмотрен ниже. Основная привлекательность данного языка состоит в том, что, используя соответствующие инструментальные средства, от UML-моделей можно перейти к программному коду на ЯВУ. В этом плане UML-модели становятся основным рабочим инструментом прикладного программиста.

Третьей фазой «объектно-ориентированной революции» является использование модельно-ориентированного подхода к разработке ПО, в частности, подхода известного как Архитектура, управляемая моделью (Model Driven Architecture, MDA), суть которого состоит в построении абстрактной метамодели управления и обмена метаданными (моделями) и задании способов ее трансформации в поддерживаемые технологии программирования. Более подробно MDA подход будет рассмотрен ниже.

Третьей революцией в области разработки ПО стал перевод процесса разработки на промышленные рельсы. Если на первых этапах развития ИТ программирование часто считалось уделом избранных и качество создаваемого ПО могло зависеть от квалификации отдельного программиста, а само программирование было сродни искусству, то к концу 80-х годов стала очевидна недопустимость подобного подхода, и осознана необходимость ставить разработку ПО на промышленные рельсы, что разработка ПО должна вестись с использованием сертифицированных технологий, должна существовать система контроля качества. Работы по решению данной проблемы велись в 3 основных направлениях: разработка методологий проектирования ПО, разработка систем контроля качества разрабатываемого ПО и разработка вопросов организации процесса проектирования. Последние 2 аспекта выходят за рамки настоящего учебника. Современные подходы к тестированию ПО достаточно подробно рассмотрены, например, в [7], а вопросы организации процесса проектирования достаточно подробно рассмотрены в [8].

Программные архитектуры являются одним из важных компонентов современного подхода к проектированию программных систем. Термин «программная архитектура» впервые появился в 1991 году [9] и быстро стал очень популярным. В 90-х годах велись интенсивные исследования и разработки в области программных архитектур. Были описаны основные архитектурные стили и паттерны, предложен ряд языков описания архитектур (Architecture Description Languages (ADL). После 2000 года программные архитектуры стали развиваться еще активнее. Если раньше обычно говорили о некоторой архитектурной фазе проектирования, то в 2000-х годах все чаще начинают говорить об архитектурном подходе к проектированию, ставя архитектуру во главу угла процесса проектирования.

Важной вехой на пути программных архитектур послужило появление в 2000 году первого стандарта IEEE 1471-2000. В середине 2003 года вышла первая версия языка объектно-ориентированного моделирования UML. В это же время появляется свободно распространяемая система поддержки архитектурного проектирования ArchStudio.

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

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