Чтение онлайн

на главную

Жанры

Технологии программирования

Костерин В В

Шрифт:

• основное внимание уделяется раннему определению архитектуры;

• возможность конфигурирования, настройки и масштабирования.

Рис. 3.7. Рациональный унифицированный подход к видам работ

3.5. ГЕНЕТИЧЕСКИЕ ТЕХНОЛОГИЧЕСКИЕ ПОДХОДЫ

Термин "генетический" в названии этой группы подходов связан с происхождением программы

и дисциплиной ее создания.

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

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

— выбрать язык реализации и аппаратно-программную платформу для реализации;

— зафиксировать отображение понятий языка спецификаций на язык реализации и аппаратно-программную платформу;

— осуществить трансформацию представления (из спецификации в исполняемую программу на языке реализации);

— отладить и протестировать исполняемую программу.

Автоматическая генерация программ по спецификациям возможна для многих языков спецификаций, особенно для SDL, ASN.1, LOTOS, Estelle, UML (Rational Rose).

Сборочное (расширяемое) программирование предполагает, что программа собирается путем повторного использования уже известных фрагментов (рис. 3.8).

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

— выработка стиля программирования, соответствующего принятым принципам модульности;

— повышение эффективности межмодульных интерфейсов; важность аппаратной поддержки модульности;

— ведение большой базы программных модулей; решение проблемы идентификации модулей и проверки пригодности по описанию интерфейса. (Модули должны стать "программными кирпичиками", из которых строится программа.)

Рис. 3.8. Сборочное программирование

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

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

2. Объектно-ориентированное сборочное программирование базируется на методологии объектно-ориентированного программирования и предполагает распространение библиотек классов в виде исходного кода или упаковку классов

в динамически компонуемую библиотеку.

3. Компонентное сборочное программирование предусматривает распространение классов в бинарном виде и предоставление доступа к методам класса через строго определенные интерфейсы, что позволяет снять проблему несовместимости компиляторов и обеспечивает смену версий классов без перекомпиляции использующих их приложений. Существуют конкретные технологические подходы, поддерживающие компонентное сборочное программирование — COM (DCOM, COM+), CORBA, Net. (см. 6.6).

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

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

Наиболее известная технология конкретизирующего программирования — это подход с применением паттернов проектирования (см. 8.6).

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

3.6. ПОДХОДЫ НА ОСНОВЕ ФОРМАЛЬНЫХ ПРЕОБРАЗОВАНИЙ

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

Технология стерильного цеха. Основные идеи технологии стерильного цеха (cleanroom process model) были предложены Харланом Миллзом в середине 80-х годов XX в. Технология складывается из следующих частей (рис. 3.9):

• разработка функциональных и пользовательских спецификаций;

• инкрементальное планирование разработки;

• формальная верификация;

• статистическое тестирование.

Процесс проектировании связан с представлением программы как функции в виде так называемых "ящиков":

• черного ящика с фиксированными аргументами (стимулами) и результатами (ответами);

• ящика с состоянием, в котором выделяется внутреннее состояние;

• прозрачного (белого) ящика, представляющего реализацию в виде совокупности функций при пошаговом уточнении.

Использование ящиков определяют следующие три принципа:

— все определенные при проектировании данные скрыты (инкапсулированы) в ящиках;

— все виды работ определены как использующие ящики последовательно или параллельно;

— каждый ящик занимает определенное место в системной иерархии.

Рис. 3.9. Технология стерильного цеха

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

Поделиться:
Популярные книги

Часовое имя

Щерба Наталья Васильевна
4. Часодеи
Детские:
детская фантастика
9.56
рейтинг книги
Часовое имя

Ох уж этот Мин Джин Хо 4

Кронос Александр
4. Мин Джин Хо
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 4

Аутсайдер

Астахов Евгений Евгеньевич
11. Сопряжение
Фантастика:
боевая фантастика
космическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Аутсайдер

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье

Блуждающие огни 2

Панченко Андрей Алексеевич
2. Блуждающие огни
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Блуждающие огни 2

Кодекс Охотника. Книга VI

Винокуров Юрий
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VI

Волк: лихие 90-е

Киров Никита
1. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк: лихие 90-е

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

(Не) Все могут короли

Распопов Дмитрий Викторович
3. Венецианский купец
Фантастика:
попаданцы
альтернативная история
6.79
рейтинг книги
(Не) Все могут короли

Изгой Проклятого Клана. Том 2

Пламенев Владимир
2. Изгой
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Изгой Проклятого Клана. Том 2

(Бес) Предел

Юнина Наталья
Любовные романы:
современные любовные романы
6.75
рейтинг книги
(Бес) Предел

Отверженный VIII: Шапка Мономаха

Опсокополос Алексис
8. Отверженный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Отверженный VIII: Шапка Мономаха

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок