Как вы что-то перепроектируете?
- Вы наблюдаете за вводом и выводом и разрабатываете набор правил или моделей, описывающих работу объекта.
Пример:
Допустим, вы хотите разработать драйвер USB-камеры. «Черный ящик» - это программный драйвер.
- Разработка хуков в ОС и / или драйвере, чтобы вы могли видеть входы и выходы драйвера
- Генерация типовых входов и запись выходов
- Анализ выходов и синтез модели, которая описывает отношения между входом и выходом
- Протестируйте модель - поместите ее вместо драйвера черного ящика и запустите ваши тесты
- Если он делает все, что вам нужно, все готово, если не полоскать и повторять
Обратите внимание, что это обычное решение проблем / научный процесс. Например, синоптики делают то же самое - они наблюдают за погодой, проверяют текущие условия по модели, которая предсказывает, что произойдет в течение следующих нескольких дней, а затем сравнивают результаты модели с реальностью. Когда они не совпадают, они возвращаются и корректируют модель.
Этот метод несколько безопаснее (юридически), чем обратный инжиниринг в чистых помещениях, где кто-то фактически декомпилирует код или разбирает продукт, тщательно анализирует его и создает модель на основе увиденного. Затем модель ( И НИЧЕГО ДРУГОГО ) передается разработчикам, копирующим функциональность продукта. Инженер, который разобрал оригинал, однако, не может участвовать, потому что он может принести защищенные авторским правом части кода / дизайна и случайно добавить их в новый код.
Если вы никогда не разбираете и не декомпилируете продукт, тем не менее, вы должны быть в юридически безопасных водах - остается только проблема патентов.
-Adam