Материалы для студенческой конференции

Приемы разрешения технических противоречий

Список приемов

  1. Принцип дробления
  2. Принцип вынесения
  3. Принцип местного качества
  4. Принцип асимметрии
  5. Принцип объединения
  6. Принцип универсальности
  7. Принцип "матрешки"
  8. Принцип антивеса
  9. Принцип предварительного антидействия
  10. Принцип предварительного действия
  11. Принцип "заранее подложенной подушки"
  12. Принцип эквипотенциальности
  13. Принцип "наоборот"
  14. Принцип сфероидальности
  15. Принцип динамичности
  16. Принцип частичного или избыточного действия
  17. Принцип перехода в другое измерение
  18. Принцип использования механических колебаний
  19. Принцип периодического действия
  20. Принцип непрерывности полезного действия
  21. Принцип проскока
  22. Принцип "обратить вред в пользу"
  23. Принцип обратной связи
  24. Принцип "посредника"
  25. Принцип самообслуживания
  26. Принцип копирования
  27. Принцип дешевой недолговечности взамен дорогой долговечности
  28. Принцип замены механической схемы
  29. Принцип использования пневмо- и гидроконструкций
  30. Принцип использования гибких оболочек и тонких пленок
  31. Принцип применения пористых материалов
  32. Принцип изменения окраски
  33. Принцип однородности
  34. Принцип отброса и регенерации частей
  35. Принцип изменения агрегатного состояния объекта
  36. Принцип применения фазовых переходов
  37. Принцип применения теплового расширения
  38. Принцип применения сильных окислителей
  39. Принцип применения инертной среды
  40. Принцип применения композиционных материалов
  41. Использование пауз
  42. Принцип многоступенчатого действия
  43. Применение пены
  44. Применение вставных частей
  45. Би-принцип
  46. Применение взрывчатых веществ и порохов
  47. Сборка на (в) воде
  48. «Мешок с вакуумом»
  49. Диссоциация-ассоциация
  50. Принцип самоорганизации

Примеры применения приемов к программному обеспечению

1.Принцип дробления.

Структурное программирование. Процедуры, подпрограммы. Модули. Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.

Для пересылки файл по сети разбивается на пакеты

2.Принцип вынесения

CSS

3.Принцип местного качества

Тэги HTML в гипертексте

4.Принцип асимметрии

асимметричные шифры, асимметричное шифрование в криптографии с открытым ключом.

Идея криптографии с открытым ключом очень тесно связана с идеей односторонних функций, то есть таких функций f(x), что по известному x довольно просто найти значение f(x), тогда как определение x из f(x) сложно в смысле теории

5.Принцип объединения

Компьютерные сети

6.Принцип универсальности

HTML

7.Принцип "матрешки".

Объектно-ориентированное программирование. Принцип инкапсуляции данных и методов в объект (принцип модульности) и принцип наследованием (принцип повторного использования разработанного функционала)

8.Принцип антивеса

9.Принцип предварительного антидействия

10.Принцип предварительного действия

Обратный дополнительный код

11.Принцип "заранее подложенной подушки"

12.Принцип эквипотенциальности

13.Принцип "наоборот".

Обратная польская нотация. Язык программирования форт (Forth). Обратный код.

14.Принцип сфероидальности

15.Принцип динамичности

Динамичная память. DHTML. XML

16.Принцип частичного или избыточного действия

17.Принцип перехода в другое измерение

18.Принцип использования механических колебаний

19.Принцип периодического действия

20.Принцип непрерывности полезного действия

21.Принцип проскока

22.Принцип "обратить вред в пользу"

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

23.Принцип обратной связи

24.Принцип посредника.

Трансляторы. Языки программирования.

В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях Lisp, Java, Perl, Python.

25.Принцип самообслуживания

26.Принцип копирования

27.Принцип дешевой недолговечности взамен дорогой долговечности

28.Принцип замены механической схемы

Арифмометр "Феликс" → Электрические и электронные счетные машины

29.Принцип использования пневмо- и гидроконструкций

Пневмоника

30.Принцип использования гибких оболочек и тонких пленок

31.Принцип применения пористых материалов

32.Принцип изменения окраски

33.Принцип однородности

34.Принцип отброса и регенерации частей

35.Принцип изменения агрегатного состояния объекта

36.Принцип применения фазовых переходов

37.Принцип применения теплового расширения

38.Принцип применения сильных окислителей

39.Принцип применения инертной среды

40.Принцип применения композиционных материалов

41.Использование пауз

42.Принцип многоступенчатого действия.


Из википедии о структурном программировании

Методология структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственного усложнения программного обеспечения. В 70-е годы XX века объёмы и сложность программ достигли такого уровня, что «интуитивная» (неструктурированная, или «рефлекторная») разработка программ, которая была нормой в более раннее время, перестала удовлетворять потребностям практики. Программы становились слишком сложными, чтобы их можно было нормально сопровождать, поэтому потребовалась какая-то систематизация процесса разработки и структуры программ.

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

Следование принципам структурного программирования сделало тексты программ, даже довольно крупных, нормально читаемыми. Серьёзно облегчилось понимание программ, появилась возможность разработки программ в нормальном промышленном режиме, когда программу может без особых затруднений понять не только её автор, но и другие программисты. Это позволило разрабатывать достаточно крупные для того времени программные комплексы силами коллективов разработчиков, и сопровождать эти комплексы в течение многих лет, даже в условиях неизбежных изменений в составе персонала.

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

Перечислим некоторые достоинства структурного программирования:



Обратная разработка (обратный инжиниринг, реверс-инжиниринг; англ. reverse engineering) — исследование некоторого устройства или программы, а также документации на него с целью понять принцип его работы и, чаще всего, воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового.

Применяется обычно в том случае, если создатель оригинального объекта не предоставил информации о структуре и способе создания (производства) объекта. Использование обратной разработки может противоречить закону об авторском праве и патентному законодательству

Как быть?


Контрольный ответ: clean room reverse engineering wiki Обратная разработка


Hosted by uCoz