Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Сопровождение - это процесс создания и внедрения новых версий программного продукта.



Причинами выпуска новых версий могут служить:

необходимость исправления ошибок, выявленных в процессе эксплуа­тации предыдущих версий;

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

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

 

На этом этапе в программный продукт вносят необходимые изменения, которые так же, как в остальных случаях, могут потребовать пересмотра про­ектных решений, принятых на любом предыдущем этапе. С изменением мо­дели жизненного цикла программного обеспечения (см. далее) роль этого этапа существенно возросла, так как продукты теперь создаются итерацион­но: сначала выпускается сравнительно простая версия, затем следующая с большими возможностями, затем следующая и т. д. Именно это и послужило причиной выделения этапа сопровождения в отдельный процесс жизненного цикла в соответствии с стандартом ISO/IEC 12207.

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


 

БЛОЧНО-ИЕРАРХИЧЕСКИЙ ПОДХОД

К СОЗДАНИЮ СЛОЖНЫХ СИСТЕМ

Подавляющее большинство сложных систем как в природе, так и

в технике имеет иерархическую внутреннюю структуру. Это связано с

тем, что обычно связи элементов сложных систем различны как по

типу, так и по силе, что и позволяет рассматривать эти системы как

некоторую совокупность взаимозависимых подсистем. Внутренние

связи элементов таких подсистем сильнее, чем связи между подсисте-

мами. Например, компьютер состоит из процессора, памяти и внешних

устройств, а Солнечная система включает Солнце и планеты, вра-

щающиеся вокруг него.

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

подсистему разделить на подсистемы и т.д. до самого нижнего «эле-

ментарного» уровня, причём выбор уровня, компоненты которого сле-

дует считать элементарными, остаётся за исследователем. На элемен-

тарном уровне система, как правило, состоит из немногих типов под-

систем, по-разному скомбинированных и организованных. Иерархии

такого типа получили название «целое-часть».

Поведение системы в целом обычно оказывается сложнее поведе-

ния отдельных частей, причём из-за более сильных внутренних связей

особенности системы в основном обусловлены отношениями между её

частями, а не частями как таковыми.

В природе существует ещё один вид иерархии – иерархия «про-

стое-сложное» или иерархия развития (усложнения) систем в процессе

эволюции. В этой иерархии любая функционирующая система являет-

ся результатом развития более простой системы. Именно данный вид

иерархии реализуется механизмом наследования объектно-ориентиро-

ванного программирования.

Будучи в значительной степени отражением природных и техни-

ческих систем, программные системы обычно являются иерархиче-

скими, т.е. обладают описанными выше свойствами. На этих свойствах

иерархических систем строится блочно-иерархический подход к их

исследованию или созданию. Этот подход предполагает сначала соз-

давать части таких объектов (блоки, модули), а затем собирать из них

сам объект.

Процесс разбиения сложного объекта на сравнительно независи-

мые части получил название декомпозиции. При декомпозиции учи-

тывают, что связи между отдельными частями должны быть слабее,

чем связи элементов внутри частей. Кроме того, чтобы из полученных

частей можно было собрать разрабатываемый объект, в процессе де-

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

собой.

При создании очень сложных объектов процесс декомпозиции

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

руют на части, пока не получают блоки, которые сравнительно легко

разработать. Данный метод разработки получил название пошаговой

детализации.

Существенно и то, что в процессе декомпозиции стараются выде-

лить аналогичные блоки, которые можно было бы разрабатывать на

общей основе. Таким образом, как уже упоминалось выше, обеспечи-

вают увеличение степени повторяемости кодов и, соответственно,

снижение стоимости разработки.

 

Результат декомпозиции обычно представляют в виде схемы ие-

рархии, на нижнем уровне которой располагают сравнительно простые

блоки, а на верхнем – объект, подлежащий разработке. На каждом ие-

рархическом уровне описание блоков выполняют с определённой сте-

пенью детализации, абстрагируясь от несущественных деталей. Следо-

вательно, для каждого уровня используют свои формы документации и

свои модели, отражающие сущность процессов, выполняемых каждым

блоком. Так для объекта в целом, как правило, удаётся сформулировать

лишь самые общие требования, а блоки нижнего уровня должны быть

специфицированы так, чтобы из них действительно можно было собрать

работающий объект. Другими словами, чем больше блок, тем более аб-

страктным должно быть его описание (рис. 1.8).

При соблюдении этого принципа разработчик сохраняет возмож-

ность осмысления проекта и, следовательно, может принимать наибо-

лее правильные решения на каждом этапе, что называют локальной

оптимизацией (в отличие от глобальной оптимизации характеристик

объектов, которая для действительно сложных объектов не всегда воз-

можна).

Итак, в основе блочно-иерархического подхода лежат декомпози-

ция и иерархическое упорядочение. Важную роль играют также сле-

дующие принципы:

- формализация – строгость методического подхода;

- повторяемость – необходимость выделения одинаковых бло-

ков для удешевления и ускорения разработки;

- локальная оптимизация – оптимизация в пределах уровня ие-

рархии;

Рис. 1.8. Соотношение абстрактного и конкретного в описании блоков

при блочно-иерархическом подходе

 

- непротиворечивость – контроль согласованности элементов

между собой;

- полнота – контроль на присутствие лишних элементов.

Совокупность языков моделей, постановок задач, методов описа-

ний некоторого иерархического уровня принято называть уровнем

проектирования.

Каждый объект в процессе проектирования, как правило, прихо-

дится рассматривать с нескольких сторон. Различные взгляды на объ-

ект проектирования принято называть аспектами проектирования.

Помимо того, что использование блочно-иерархического подхода

делает возможным создание сложных систем, он также:

- упрощает проверку работоспособности как системы в целом,

так и отдельных блоков;

- обеспечивает возможность модернизации систем, например,

замены ненадёжных блоков с сохранением их интерфейсов.

Необходимо отметить, что использование блочно-иерархического

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

только после конкретизации общих положений подхода и внесения

некоторых изменений в процесс проектирования. При этом структурный подход учитывает только свойства иерархии «целое-часть», а объектный – использует ещё и свойства иерархии «простое-сложное».


 

ЭВОЛЮЦИЯ, КЛАССИФИКАЦИЯ

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

 

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

 

Поколения ЯП

Поколения Языки программирования Характеристика
Первое Машинные Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требу ют хорошего знании архитектуры ЭВМ
Второе Ассемблеры, Макроассемблеры Более удобны для использования, но по-прежнему машинно-зависимы
Третье Языки высокого уровня Мобильные, человеко-ориентированные, проще в освоении
Четвертое Непроцедурные, объектно-ориентированные, языки запросов, параллельные Ориентированы на непрофессионального пользователя и на ЭВМ с параллельной архитектурой
Пятое Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками

 

ЯП первого поколения представляли собой набор машинных ко­манд в двоичном (бинарном) или восьмеричном формате, которым оп­ределялся архитектурой конкретной ЭВМ. Каждый тип ЭВМ имел свой ЯП, программы на котором были пригодны только для данного типа ЭВМ. От программиста при этом требовалось хорошее знание не только машинного языка, но и архитектуры ЭВМ.

 

Второе поколение ЯП характеризуется созданием языков ассемб­лерного типа (ассемблеров, макроассемблеров), позволяющих вместо двоичных и других форматов машинных команд использовать их мне­монические символьные обозначения (имена). Являясь существенным шагом вперед, ассемблерные языки все еще оставались машинно-зависимыми, а программист все также должен был быть хорошо знаком с организацией и функционированием аппаратной среды конкретного типа ЭВМ. При этом ассемблерные программы все так же затруднительны для чтения, трудоемки при отладке и требуют больших усилий для переноса на другие типы ЭВМ. Однако и сейчас ассемблерные язы­ки используются при необходимости разработки высокоэффективного программного обеспечения (минимального по объему и с максимальной производительностью).

 

Третье поколение ЯП начинается с появления в 1956 г. первого языка высокого уровня — Fortran, разработанного под руководством Дж. Бэкуса в фирме IВМ. За короткое время Fortran становится основ­ным ЯП при решении инженерно-технических и научных задач. Первоначально Fortran обладал весьма ограниченными средствами обеспечения работы с символьной информацией и с системой ввода-вывода. Од­нако постоянное развитие языка сделало его одним из самых распространенных ЯВУ на ЭВМ всех классов — от микро- до супер­ЭВМ, а его версии используются и для вычислительных средств нетра­диционной параллельной архитектуры.

 

Вскоре после языка Fortran появились такие ныне широко извест­ные языки, как Аlgol, Соbоl, Ваsiс, РL/1, Раscal, АРL, АDА, С, Forth, Lisp, Моdula и др. В настоящее время насчитывается свыше 2000 раз­личных языков высокого уровня.

 

Языки четвертого поколения носят ярко выраженный непроцедурный характер, определяемый тем, что программы на таких языках описывают только что, а не как надо сделать. В программах формируются скорее соотношения, а не последовательности шагов выполнения алгоритмов. Типичными примерами непроцедурных языков являются языки, используемые для задач искусственного интеллекта (например, Рrolog, Langin). Так как непроцедурные языки имеют минимальное число синтаксических правил, они значительно более пригодны для применения непрофессионалами в области программирования.

 

Второй тенденцией развития ЯП четвертого поколения являются объектно-ориентированные языки, базирующиеся на понятии про­граммного объекта, впервые использованного в языке Simulа-67 и со­ставившего впоследствии основу известного языка Smalltalk. Программный объект состоит из структур данных и алгоритмов, при этом каждый объект знает, как выполнять операции со своими собственными данными. На самом деле, различные объекты могут пользоваться совершенно разными алгоритмами при выполнении действий, определенных одним и тем же ключевым словом (так называемое свойство полиморфизма). Например, объект с комплексными числами и массивами в качестве данных будет использовать различные алгоритмы для выполнения операции умножения. Такими свойствами обладают объектно-ориентированные Pascal Basic, С++, Smalltalk, Simulа, и ряд дру­гих языков программирования.

 

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

 

И, наконец, четвертым направлением развития являются языки па­раллельного программирования (модификация ЯВУ Fortran, языки Оссаm, SISAL, FР и др.), которые ориентированы на создание про­граммного обеспечения для вычислительных средств параллельной ар­хитектуры (многомашинные, мультипроцессорные среды и др.), в отли­чие от языков третьего поколения, ориентированных на традиционную однопроцессорную архитектуру.

 

К интенсивно развивающемуся в настоящее время пятому поколе­нию относятся языки искусственного интеллекта, экспертных систем, баз знаний (InterLisp, ExpertLisp, IQLisp, SIAL и др.), а также естествен­ные языки, не требующие освоения какого-либо специального синтак­сиса (в настоящее время успешно используются естественные ЯП с ог­раниченными возможностями — Clout, Q& А, НАL и др.).

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-04-11; Просмотров: 1231; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.029 с.)
Главная | Случайная страница | Обратная связь