Семь мыслей о ТРИЗ в программировании и в IT



Введение

Разработка качественных программных продуктов сдерживается квалификацией программистов и коллективов, занятых в создании этих продуктов. Практика применения инструментов теории решения изобретательских задач (ТРИЗ) показала их эффективность при формировании инновационных идей и реализации инновационных проектов. В последние годы ТРИЗ используется не только для развития технических систем, но и в развитии программных продуктов. Автор занимается темой применения ТРИЗ в развитии Softwareв последние годы совместно со специалистами в этой области: И.О.Одинцовым (Intel), А.Н.Кирдиным, О.Ю.Абрамовым, О.М.Герасимовым, И.Л.Мисюченко (ООО «Алгоритм). В статье представлены некоторые результаты и рассмотрены перспективы применения ТРИЗ в программировании и в IT.

1. Востребованность инструментов снижения рисков развития Software повышается.


Эффективность работы программных продуктов все в большей степени зависит от Software составляющей и все в меньшей степени от Hardware. Например, рост количества транзисторов в микросхеме по закону Мура [1] не соответствует увеличению эффективности работы микропроцессоров, когда большая их часть ресурсов транзисторов отдается схемам управления и существенно меньшая — выполнению собственно арифметических и логических операций. Высокое энергопотребление и ограничение роста тактовой частоты микропроцессоров, стали главным тормозом на пути дальнейшего развития монолитных процессоров.
Признаки увеличения акцента на развитии Software можно увидеть в стратегии современных производственных компьютерных гигантов.

Увеличение важности Software будет сопровождаться увеличением проблем его развития: сложность Software, повышение стоимости разработки, повышение цены за ошибку, повышение конкуренции, снижение времени жизни на рынке и т.д. Нужны инструменты, позволяющие решать все эти проблемы, прогнозировать развитие Software, снижать ошибки проектирования и развития Software. ТРИЗ предоставляет такие инструменты и практика доказала их эффективность.

2. ТРИЗ – эффективный инструмент снижения рисков в инновациях

Ежегодно тысячи инновационных проектов по всему миру выполняются с использованием ТРИЗ. Такиекомпаниикак Samsung, Intel. Siemens, General Electric, LG, Alcoa, General Motors, Rich Products, Motorola исотнидругихкомпаний. Ежегодно проходит около десяти международных конференций по применению ТРИЗ в инновационных проектах в странах ЕС, в России, в США, Тайване, Южной Корее, Японии и в других странах. Можно назвать десятки самых различных областей техники, в которых эффективно применяется ТРИЗ для развития инновационных проектов, создания эффективных изобретений и конкурентно способных технических решений: машиностроение, энергетика, медицина, пищевая промышленность, информационных системах и многие другие области. Обучение основам ТРИЗ вводится во многих университетах в разных странах.

Практика показала, что применение ТРИЗ позволяет значительно сократить время и средства на разработку и развитие инновационных проектов, создавать эффективные инновационные стратегии развития предприятий. Методы ТРИЗ позволяют сделать инновационный процесс предсказуемым и управляемым. Безусловно, это значительно снижает неизбежные риски при реализации инновационных проектов.
Эффективность и важность применения ТРИЗ при развитии технических систем и, в частности, Hardware можно считать общепринятым фактом, неотъемлемой частью инноваций.

3. ТРИЗ успешно решает изобретательские задачи в развитии Software.

ТРИЗ создавался на базе закономерностей развития в области «железной» техники. Будут ли эти инструменты работать в области развития Software и в области нематериальных систем вообще?
Имеющийся опыт показывает, что наиболее эффективно применять ТРИЗ в области создания концептуальных вопросов развития Software, формирования их структуры и стратегии развития, создания обоснованных прогнозов развития Software. Инструменты ТРИЗ могут быть использованы не только для решения, но и для выявления, выбора и постановки изобретательских задач в Software. ТРИЗ может быть эффективно использовано для решения задач, в которых имеются противоречия.

Имеющийся опыт показывает, что большинство инструментов ТРИЗ может быть применено и в задачах развития Software. Имеются инструменты ТРИЗ, которые были адаптированы для их применения в Software, например, универсальный алгоритм решения изобретательских задач (АРИЗ-Универсал-2010), элепольный анализ, универсальная система стандартов решения изобретательских задач и другие инструменты ТРИЗ, современные тренды развития Software, алгоритм перехода от стандартов ТРИЗ к паттернам проектирования Software

Постепенно формируется опыт применения инструментов ТРИЗ в развитии Software. По крайне мере, подобные попытки предпринимаются в таких компаниях как Matsushita Electric Industrial Co. (Panasonic), SAMSUNG, Intel, LG Electronics, ЛабораторияКасперского, Hitachi, BDE-Engineering идругие. Например, в компании MatsushitaElectricIndustrialCo. за пять лет выполнены 150 инновационных проектов на основе ТРИЗ в области Software[2].
В настоящее время уже имеется опыт практического применения ТРИЗ на всех этапах формирования и развития Software:

- формирование идеи Software (например, поисковая программа для социальных сетей – А.Шипицын; прогнозная идея применения вирусов в полезных и разрешенных информационных технологиях – М.Рубин)
- проектирование архитектуры (например, структура MES-системы – А.Толмачев; программа расчета переходных процессов в ЛЭП с учетом магнитных свойств сердечников трансформаторов – М.Рубин)
- разработка моделей и алгоритмов (ускорение работы базы финансовых документов – С.Сысоев; визуализация данных о производстве – А.Толмачев; алгоритм поиска информации в базах – С.Литвин, М.Рубин и др.)
- тестирование и отладка (комплекс примеров применения диверсионного анализа защищенности информационных ресурсов – С.Сысоев; защита от несанкционированного использования прототипа программы – М.Рубин и другие примеры)
- эксплуатация и сопровождение (способ проектирования легко сопровождаемых систем ПО – Д.Писаренко; Патентная стратегия для программируемых логических контроллеров – И.Мисюченко и др.).

Имеются примеры применения ТРИЗ на всех этапах создания и развития Software. Например, на всех этапах цикла разработки программы управления антенной Wi-Fi (О.Абрамов, А.Кирдин): формирование идеи динамической оптимизации, синтез и оптимизация функциональной модели ПО, проектирование архитектуры, разработка моделей и алгоритмов, написание программ на язык высоко уровня, тестирование и отладка, эксплуатация и сопровождение программы.
Уже имеются сотни примеров успешного применения ТРИЗ в создании и развитии Software. Опыт показал эффективность применения ТРИЗ в управлении проектами: развитие проектных идей, прогнозирование развития систем, управление мотивациями, задачи менеджмента и маркетинга, решение исследовательских задач.
Резюмируя можно сказать, что ТРИЗ успешно применим для решения изобретательских задач при развитии Software. Этот опыт еще только формируется и его необходимо развивать.

4. ТРИЗ – инструмент развития проектных идей

Методика оценки и развития идей и проектов ПО была разработана на основе анализа более сотен стартовых идей программных продуктов, подготовленных для конкурсов инвестиционных проектов.



Упрощенный алгоритм анализа проектных идей ПО:

1. Описать Идею инновационного проекта (продукта). Что предлагается? Как это будет сделано? Для кого (для чего)?
2. Что уже известно об Идее? Кто конкуренты? (прошлое)
3. Какие проблемы были и есть в известных системах? Удалось ли их решить? Известны ли пути решения? (прошлое).
4. Какие недостатки, какие задачи и противоречия можно выделить в Вашей проектной идее? Можно ли решить эти задачи?
5. Как эти недостатки, задачи и противоречия изменятся в будущем? Какие новые проблемы могут появиться? (будущее).
6. Вернитесь к конкурентным продуктам и идеям (п. 2). Каков рынок конкурентов? Каков их масштаб распространения? (прошлое).
7. Сравните масштаб и рынок конкурентных продуктов с масштабом и рынком Вашей Идеи. Какие возникают задачи и возможности? Можно ли перенести положительные стороны конкурентных продуктов на Вашу Идею?
8. Как изменится Ваша Идея, какие новые задачи и противоречия, новые возможности возникнут:
- если количество Вашего продукта стало больше того, на что Вы рассчитывали в 5, в 10, в 100000 раз больше (меньше)?
- если география распространения Вашего продукта стали в 2, в 5, в 10 раз больше (или меньше)?
- если сформулировать функции, цели и возможности Вашего продукта в максимально абстрактных, обобщенных формулировках? Как изменяется представление о рынке?
- если наиболее дорогие и сложные составляющие проекта будут реализовываться САМИ, без затрат и усилий со стороны проекта? Какие доступные ресурсы уже есть для реализации такого подхода?
- если учесть основные надсистемы рассматриваемого продукта, их особенности, тенденции их развития?
- если исчезнет объект, на который направлен Ваш продукт, его действие? Для какого другого объекта в таком случае может быть использован Ваш продукт?
9. Что будет с Идеей через 1 – 5 – 10 лет? Будет ли она актуальна? Что изменится? (будущее).
10. Ответьте на вопросы пункта 8 с учетом ситуации через 1 – 5 – 10 лет (будущее).

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

Первый пример основан на истории проекта GridProgrammingEnvironment (GPE), который берет свое начало в 2004 году. В основе архитектуры распределенных систем была взята классическая клиент-серверная архитектура, рассчитанная на корпоративное использование с количеством объединяемых в систему компьютеров (клиентов) в несколько десятков. Увеличим количество объединяемых компьютеров в 10, 100, в 100000 раз. Если для управления несколькими десятками «клиентов» выделять по одному серверу, то очень скоро при их увеличении придется для нескольких десятков серверов выделять еще и «сервер второго уровня» для управления серверами. Таким образом, должна быть выстроена целая иерархия серверов. Возникает противоречие. Если создать такую иерархию серверов в расчете, например, на миллион объединяемых компьютеров, то можно будет пользоваться этим ресурсом, но серверная (управленческая) часть будет очень многочисленной и дорогой. В пределе может оказаться так, что реально свободных клиентских компьютеров будет меньше, чем серверов. Представим себе, что сервера в этой архитектуре вообще «исчезли». Необходимо сделать так, чтобы «клиенты» САМИ выполняли частично функции серверов. Этот образ приводит к идее архитектуры cloudcomputing. Подобный анализ развития архитектуры системы занимает менее часа. В реальности же разработчики шли к ней более трех лет и сильно упустили рынок создания программного обеспечения Grid-технологий [5].

Второй пример – создание программно-аппаратного комплекса управления светофорами. Один из шагов предлагаемой методики: нужно представить, что исчезли светофоры (главный объект этого проекта). В этом случае оказывается, что, в принципе, для создаваемого программно-аппаратного комплекса все равно чем управлять: светофорами, воротами, дверями, заглушками водопроводов и т.д. Это сильно изменило представление о возможностях развития проекта.
Третий пример – проект автоматизированного мониторинга состояния дорожного покрытия при помощи мобильных устройств (GoodRoads.ru). Мобильные телефоны устанавливаются во время движения внутри автомобиля и датчики движения телефонов передают на сайт информацию о возможных дефектах на дорогах. Попробуем развить идею проекта. Пусть на время «исчезнут» из этого проекта автомобили и дороги. Очевидные имеющиеся другие надсистемы у мобильного телефона – его владелец, окружающие телефоны и компьютеры и т.д. Если абстрагироваться от «ям на дорогах», то задачу проекта можно было бы сформулировать примерно так: «распознавать что-то полезное при помощи мобильного телефона». Возникает идея более перспективного проекта: распознавание паттернов событий и ситуаций путём слежения за «действиями» мобильного телефона. Это могут быть датчики движения (акселерометр телефона), GPS, использование приложений телефона, анализ окружающих устройств и т.д. Распознавание паттернов событий и ситуаций позволит предоставлять пользователям нужную в данной ситуации информацию, предупреждать о нежелательных событиях или подозрительных, необычных ситуациях.
Уже на ранних стадиях проектирования применение ТРИЗ позволяет выбрать решения и структуру Software, которые останутся актуальными дольше и будут эффективны в разных областях применения.

5. ТРИЗ – технология качественного прогнозирования

В ТРИЗ важные повороты в развитии социальных, социально-экономических и социально-технических систем при прогнозировании рассматриваются как изобретения, как решение основных «узловых» противоречий существующих в системе. Методики прогнозирования в ТРИЗ предусматривают построение прогнозных концепций на стыке двух линий анализа:
- анализ развития системы инструментами ТРИЗ;
- различные инструменты анализа рыночных трендов развития системы.
Не редко прогнозные концепции строятся на основе прогноза развития надсистемы или структуры, которая влияет на рассматриваемый объект.
Разработанных на основе ТРИЗ прогнозных идей уже довольно много. Обычно, формирование системы прогнозных концепций методами ТРИЗ требует нескольких месяцев аналитических работ, которые позволяют получать обоснованные, связанные в систему прогнозы, учитывающие большое количество факторов, влияющих на развитие рассматриваемого объекта. Методы ТРИЗ позволяют сформировать прогнозные концепции на стыке Software, Middleware и Hardware.

6. ТРИЗ – орудие формирования патентных стратегий

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

7. ТРИЗ – грамматика инноваций и формирование эффективного мышления

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

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

Рубин М.С.

Литература

1. G.Altshuller: 1984, CREATIVITY AS AN EXACT SCIENCE: The Theory of the Solution of Inventive Problems. Translated by Anthony Williams. Gordon and Breach Science Publishers.
2. G.Altshuller: 1996, AND SUDDENLY THE INVENTOR APPEARED: TRIZ, the Theory of Inventive Problem Solving. Worchester, Massachusetts: Technical Innovation Center.
3. G.S.Altshuller, M.S.Rubin, What will happen after the final victory. Eight ideas concerning nature and technology, 1987. http://www.temm.ru/en/section.php?docId=3584
4. Gerasimov Oleg. "Technology of Selecting tools of Innovation Design based on TRIZ and VEA Analysis", материалыдиссертационнойработыназащитуквалификацииМастерТРИЗ, Санкт-Петербург, 2010. http://www.triz-summit.ru/ru/section.php?docId=4639
5. Odintsov I.O., Rubin M.S. TRIZ methods in SW development to enhance the productivity, Moscow, 2009 http://www.temm.ru/ru/section.php?docId=4419
6. Rubin M.S., Odintsov I.O., Ponomaryova A.V., Zinenko O.I.TRIZ-based Forecasting of Software Evolution, "TRIZ-based forecasting methods", TRIZ Summit 2010, Saint Petersburg, July 26-27, 2010 http://www.triz-summit.ru/en/section.php?docId=4599
7. Рубин М.С. Основы ТРИЗ. Применение ТРИЗ в программных и информационных системах: Учебное пособие. – Санкт-Петербург, СПбГУ, Математико-механический факультет, Лаборатория системного программирования и информационных технологий (СПРИНТ), 2011. – 226 с.


Источник

См. по теме: ТРИЗ
Видео лекции про ТРИЗ в программировании на сайте ИНТУИТ (те же лекции но торренте)

«Точка зрения, будто верующий более счастлив, чем атеист, столь же абсурдна, как распространенное убеждение, что пьяный счастливее трезвого»

Шоу Бернард

Файлы

Общая теория роста человечества

Энциклопедия чудес

Как работает мозг?

Вы, конечно, шутите, мистер Фейнман!