Класс 5. Стандарты на применение стандартов
– Разработка решений, удовлетворяющих требованиям к идеальной системе.
Система «Стандарты-76» предназначена для решения изобретательских задач в технике. Ю.Мурашковский разработал стандарты для решения изобретательских задач в искусстве. Известна также система стандартов для решения изобретательских задач при развитии коллективов («Модели для творца», Б.Л.Злотин, А.В.Зусман). На основе этих и других исследований была разработана универсальная система стандартов на решение изобретательских задач в различных областях деятельности человека, в том числе в области развития программного обеспечения. Текст универсальной системы стандартов и алгоритм использования стандартов (АИСТ-2010) приведены в Приложении П5.
Для совместного использования универсальной системы стандартов и паттернов программирования был разработан алгоритм АИСТ-2010-П, также приведенный в Приложении П5. Упрощенный вариант алгоритма АИСТ-2010-П приведен на рисунке 2.33. В соответствии с этим алгоритмом от модели задачи необходимо перейти к модели решения при помощи рекомендуемого стандарта. Для повышения эффективности предлагаемых идей решения рекомендуется воспользоваться линиями развития систем (в том числе линиями и тенденции развития программного обеспечения). Для уточнения идеи решения можно перейти к рекомендациям по использованию соответствующих паттернов программирования.
В упрощенном виде алгоритм АИСТ-2010 приведен на сайте http://temm.ru. С описанием паттернов программирования можно познакомиться там же или на сайте http://codelab.ru.
Задача 10. Рассмотрим редактор документов, который допускает встраивание в документ графических объектов. Затраты на создание некоторых таких объектов, например больших растровых изображений, могут быть весьма значительны. Но документ должен открываться быстро, поэтому следует избегать создания всех «тяжелых» объектов. Как это сделать? Используйте систему стандартов на решение изобретательских задач (табл. 2.6).
Таблица 2.6. Алгоритм решения задачи 10.
Шаги АИСТ-2010 | Решение задачи 10 |
1. Формулировка задачи. Выделение конфликтующих элементов, ключевых параметров. Описание модели задачи в элепольной форме. | Редактор, документ, графический объект. Параметризация объектов. Для каждого объекта выделяются параметры в зависимости от аспекта рассмотрения ситуации: Редактор: размер кода. Документ: количество встроенных графических объектов. Графический объект: ширина, высота изображения, объем памяти, занимаемый изображением. Создание элепольной структуры. Э1 – редактор, Э2 – графический объект Поле П – запросы к графическому объекту. |
2. Если в задаче на изменение элеполь не полный, то перейти к стандарту 1.1 на создание элепольных структур. | Элеполь полный. |
3. Если в задаче на изменение имеются вредные связи, то использовать стандарты группы 1.2 на устранение вредных связей. | Между элементами возникает одновременно полезное и вредное взаимодействие, переход к стандартам на устранение вредных связей 1.2. Полезное взаимодействие обеспечивает возможность отображения и работы с изображением, вредное – создание изображения, пока оно не появляется в видимой части документа, снижает скорость работы системы. Устранение вредных связей дополнением элементов Э2 и Э3 образуют независимый элеполь, с которым у Э1 полезное взаимодействие сохраняется, а вредное нет: Вводится новый объект Э3, который ведет себя так же и отображает настоящее изображение, на которое хранит ссылку, только в необходимых случаях. Э3 хранит размер изображения, может отвечать на запросы о своем размере, не создавая его. |
4. Если в задаче на изменение имеются не эффективные связи, то рекомендуется группа стандартов 2 на развитие элепольных структур. | – |
5. К стандартам части 2 рекомендуется обратиться в любом случае после рекомендаций стандартов 1-й части. | По стандарту 2.2. один из элементов может быть развернут в самостоятельный элеполь: |
6. Если задача на измерение или обнаружение, то перейти к разделу 3 текста стандартов. | – |
7. Рекомендуется в любом случае рассмотреть предложения, описанные в линиях развития систем. | |
8. Если задача сформулирована в связи с развитием программного продукта, то следует уточнить предлагаемое решение в форме рекомендуемых паттернов программирования. 8.1. Если нужно устранить вредную связь: … (см. описание АИСТ-2010-П). | Из перечисленных в 8.1 разделе АИСТ-2010-П (нужно устранить вредную связь) подходит к нашей задаче дополнительное условие: нужно создавать элемент (получать к нему доступ) только в конкретных случаях. Соответственно получаем рекомендацию использовать паттерн «Заместитель». |
8.2. Если нужно повысить эффективность: … (см. описание АИСТ-2010-П). | – |
8.3. Если удалось выбрать подходящий вариант, переход к описанию подходящего паттерна. | Нам удалось выбрать подходящий вариант паттерна, необходимо перейти к описанию этого паттерна, например на сайте http://www.temm.ru: «Заместитель» – паттерн, контролирующий доступ к элементам, предоставляя более оптимальное их взаимодействие. Разумно управлять доступом к элементу, поскольку тогда можно отложить расходы на его создание до момента, когда элемент действительно понадобится. Таким образом, выявляются элементы, функционирование которых проходит не совсем оптимально, и вводятся объекты-заместители, которые, дублируя внешний вид и поведение «проблемных» элементов, переадресуют им запросы лишь тогда, когда это действительно необходимо, либо после некоторых оптимизационных действий. Признаки применения: – Когда требуется удаленный функционал Удаленный заместитель предоставляет локального представителя вместо целевого объекта, находящегося в другом (адресном) пространстве. – Когда нужен виртуальный заместитель Виртуальный заместитель создает «тяжелые» элементы по требованию. – Когда нужно контролировать доступ к исходному элементу Защищающий заместитель контроли-рует доступ к исходному элементу. Более детальное описание этого паттерна и примеры его применения можно найти по адресу http://codelab.ru/pattern/proxy/ |
8.4. Если паттерн по описанию все же не соответствует желаемому результату, переход к группе родственных паттернов. 8.5. Если в группе не удалось подобрать подходящий вариант, возможно задача не должна решаться с помощью паттернов. 8.6. Для подходящего паттерна предоставляются рекомендации по использованию совместно с другими паттернами. | Родственные паттерны (по ссылке http://codelab.ru/pattern/proxy): Паттерн «Адаптер» предоставляет другой интерфейс к адаптируемому объекту. Напротив, заместитель в точности повторяет интерфейс своего субъекта. Однако если заместитель используется для ограничения доступа, он может отказаться выполнять операцию, которую субъект выполнил бы, поэтому на самом деле интерфейс заместителя может быть и подмножеством интерфейса субъекта. |
9. Если решение не найдено, то рекомендуется перейти к АРИЗ-Универсал-2010. | – |
Описание решения по паттерну «Заместитель»:
Вот как может выглядеть диаграмма объектов для структуры с заместителем во время выполнения:
«Заместитель» создает настоящее изображение, только если редактор документа вызовет операцию Draw у этой картинки. Все последующие запросы «заместитель» переадресует непосредственно изображению. Поэтому после создания изображения он должен сохранить ссылку на него.
Предположим, что изображения хранятся в отдельных файлах. В таком случае мы можем использовать имя файла как ссылку на реальный объект. Заместитель хранит также размер изображения, то есть длину и ширину. «Зная» ее, «заместитель» может отвечать на запросы форматера о своем размере, не инстанцируя изображение.
На следующей диаграмме классов этот пример показан более подробно (codelab.ru):
Алгоритм АИСТ-2010 позволяет искать стандартные решения изобретательских задач не только для программирования, но и для задач другого типа: технических, из области бизнеса, маркетинга и т. д.
Дата добавления: 2016-03-15; просмотров: 1059;