1.4. О проектировании сложных систем

1.4. О проектировании сложных систем

Инженерное дело как наука и искусство

На практике любая инженерная дисциплина, будь то строительство, механика, химия, электроника или программирование, содержит в себе элементы и науки, и искусства. Петроски красноречиво утверждает: "Разработка новых структур предполагает и полет фантазии, и синтез опыта и знаний: все то, что необходимо художнику для реализации своего замысла на холсте или бумаге. После того, как этот замысел созрел в голове инженера-художника, он обязательно должен быть проанализирован с точки зрения применимости данного научного метода инженером-ученым со всей тщательностью, присущей настоящему ученому" [38]. Аналогично, Дейкстра отмечает, что "Программная постановка задачи является упражнением в применении абстракции и требует способностей как формального математика, так и компетентного инженера" [39].

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

Смысл проектирования

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

• "удовлетворяет заданным (возможно, неформальным) функциональным спецификациям;

• согласована с ограничениями, накладываемыми оборудованием;

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

• удовлетворяет явным и неявным критериям дизайна продукта;

• удовлетворяет требованиям к самому процессу разработки, таким, например, как продолжительность и стоимость, а также привлечение дополнительных инструментальных средств" [40].

По предположению Страуструпа: "Цель проектирования - выявление ясной и относительно простой внутренней структуры, иногда называемой архитектурой... Проект есть окончательный продукт процесса проектирования" [41]. Проектирование подразумевает учет противоречивых требований. Его продуктами являются модели, позволяющие нам понять структуру будущей системы, сбалансировать требования и наметить схему реализации.

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

Как мы уже сказали выше, чтобы понять во всех тонкостях поведение сложной системы, приходится использовать не одну модель. Например, проектируя компьютер на одной плате, инженер-электронщик должен рассматривать систему как на уровне отдельных элементов схемы (микросхем), так и на уровне схемы. Схема помогает инженеру разобраться в совместном поведении микросхем. Схема представляет собой план физической реализации системы микросхем, в котором учтены размер платы, потребляемая мощность и типы имеющихся интегральных микросхем. С этой точки зрения инженер может независимо оценивать такие параметры системы, как температурное распределение и технологичность изготовления. Проектировщик платы может также рассматривать динамические и статические особенности системы. Аналогично, инженер-электронщик использует диаграммы, иллюстрирующие статические связи между различными микросхемами, и временные диаграммы, отражающие поведение элементов во времени. Затем инженер может применить осциллограф или цифровой анализатор для проверки правильности и статической, и динамической моделей.

Элементы программного проектирования. Ясно, что не существует такого универсального метода, "серебряной пули" [43], который бы провел инженера-программиста по пути от требований к сложной программной системе до их выполнения. Проектирование сложной программной системы отнюдь не сводится к слепому следованию некоему набору рецептов. Скорее это постепенный и итеративный процесс. И тем не менее использование методологии проектирования вносит в процесс разработки определенную организованность. Инженеры-программисты разработали десятки различных методов, которые мы можем классифицировать по трем категориям. Несмотря на различия, эти методы имеют что-то общее. Их, в частности, объединяет следующее:

• условные обозначения - язык для описания каждой модели;

• процесс - правила проектирования модели;

• инструменты - средства, которые ускоряют процесс создания моделей, и в которых уже воплощены законы функционирования моделей. Инструменты помогают выявлять ошибки в процессе разработки.

Хороший метод проектирования базируется на прочной теоретической основе и при этом дает программисту известную степень свободы самовыражения.

Объектно-ориентированные модели. Существует ли наилучший метод проектирования? На этот вопрос нет однозначного ответа. По сути дела это завуалированный предыдущий вопрос: "Существует ли лучший способ декомпозиции сложной системы?" Если и существует, то пока он никому не известен. Этот вопрос можно поставить следующим образом: "Как наилучшим способом разделить сложную систему на подсистемы?" Еще раз напомним, что полезнее всего создавать такие модели, которые фокусируют внимание на объектах, найденных в самой предметной области, и образуют то, что мы назвали объектно-ориентированной декомпозицией.

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

Так как построение моделей крайне важно при проектировании сложных систем, объектно-ориентированное проектирование предлагает богатый выбор моделей, которые представлены на рис. 1-4. Объектно-ориентированные модели проектирования отражают иерархию и классов, и объектов системы. Эти модели покрывают весь спектр важнейших конструкторских решений, которые необходимо рассматривать при разработке сложной системы, и таким образом вдохновляют нас на создание проектов, обладающих всеми пятью атрибутами хорошо организованных сложных систем.

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

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

Рис. 1-4. Объектно-ориентированные модели.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

ГЛАВА 2 Исторический обзор развития методологии объектно-ориентированного анализа и проектирования сложных систем

Из книги Самоучитель UML автора Леоненков Александр

ГЛАВА 2 Исторический обзор развития методологии объектно-ориентированного анализа и проектирования сложных систем


Создание сложных материалов

Из книги 3ds Max 2008 автора Верстак Владимир Антонович

Создание сложных материалов Хотя материал Standard (Стандартный) применяется наиболее часто, 3ds Max предоставляет возможность создавать различные сложные материалы, состоящие из двух или более стандартных материалов. В этом случае материал Standard (Стандартный) предназначен


Глава 10 Построение сложных объектов

Из книги AutoCAD 2009 для студента. Самоучитель автора Соколова Татьяна Юрьевна

Глава 10 Построение сложных объектов Текстовые стили С каждой текстовой надписью в AutoCAD связан некоторый текстовый стиль. При нанесении надписей используется текущий стиль, в котором заданы шрифт, высота, угол поворота, ориентация и другие параметры. В одном рисунке


Глава 9 Построение сложных объектов

Из книги AutoCAD 2009. Начали! автора Соколова Татьяна Юрьевна

Глава 9 Построение сложных объектов Текстовые стили С каждой текстовой надписью в AutoCAD связан некоторый текстовый стиль. При нанесении надписей используется текущий стиль, в котором заданы шрифт, высота, угол поворота, ориентация и другие параметры. В одном рисунке можно


1.6.10. Правило наименьшей неожиданности: при проектировании интерфейсов всегда следует использовать наименее неожиданные элементы

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.10. Правило наименьшей неожиданности: при проектировании интерфейсов всегда следует использовать наименее неожиданные элементы Данное правило также широко известно под названием "Принцип наименьшего удивления" (Principle of Least Astonishment).Простейшими в использовании


1.2. Структура сложных систем

Из книги Объектно-ориентированный анализ и проектирование с примерами приложений на С++ автора Буч Гради

1.2. Структура сложных систем Примеры сложных систем Структура персонального компьютера. Персональный компьютер (ПК) - прибор умеренной сложности. Большинство ПК состоит из одних и тех же основных элементов: системной платы, монитора, клавиатуры и устройства внешней


1.6.10. Правило наименьшей неожиданности: при проектировании интерфейсов всегда следует использовать наименее неожиданные элементы

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.10. Правило наименьшей неожиданности: при проектировании интерфейсов всегда следует использовать наименее неожиданные элементы Данное правило также широко известно под названием "Принцип наименьшего удивления" (Principle of Least Astonishment).Простейшими в использовании являются


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

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

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


Рисование сложных фигур

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Рисование сложных фигур Канва также поддерживает рисование более сложных, чем прямоугольники, фигур с контурами из множества прямых и кривых линий. Сейчас мы выясним, как это делается, и рассмотрим соответствующие методы объекта CanvasRenderingContext2D. Как рисуются сложные


Использование сложных цветов

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Использование сложных цветов Ранее для линий и заливок у нас были только простые, однотонные, цвета. Настала пора познакомиться со средствами канвы для создания и использования сложных цветов: градиентных и графических. Линейный градиентный цвет В линейном градиентном


Рисование сложных фигур 

Из книги VBA для чайников автора Каммингс Стив

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


Использование сложных цветов 

Из книги Приемы создания интерьеров различных стилей автора Тимофеев С. М.

Использование сложных цветов  Ранее для линий и заливок у нас были только простые, однотонные, цвета. Настала пора познакомиться со средствами канвы для создания и использования сложных цветов: градиентных и


Создание более сложных программ

Из книги 3ds Max 2008 на 100 % автора Верстак Владимир Антонович

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


Создание сложных помещений

Из книги AutoCAD 2009. Учебный курс автора Соколова Татьяна Юрьевна

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


4.3. Создание сложных материалов

Из книги автора

4.3. Создание сложных материалов Хотя материал Standard (Стандартный) применяется наиболее часто, 3ds Max предоставляет возможность создавать различные сложные материалы, состоящие из двух или более стандартных материалов. В этом случае материал Standard (Стандартный) предназначен


Глава 10 Построение сложных объектов

Из книги автора

Глава 10 Построение сложных объектов Текстовые стили Однострочный текст Многострочный текст Блок Создание блока Вставка блока Разбиение блока Динамический блок Редактор блоков Палитры вариаций блоков Атрибуты блока Таблицы