====== Clean-Room ====== Разработка по принципу "чистой комнаты" (clean-room design), применительно к закрытым платформам - это юридически защищенная методология реверс-инжиниринга. Ее цель - создание совместимых программных продуктов (прикладного ПО, игр, операционных систем, драйверов, библиотек и т.д.), не нарушая авторские права, коммерческие тайны и лицензионные соглашения правообладателя платформы. ===== Предпосылки ===== EULA (пользовательские соглашения) закрытых платформ почти всегда прямо запрещают любой реверс-инжиниринг лицензируемого ПО. В некоторых юрисдикциях декомпиляция/дизассемблирование разрешены в строго ограниченных случаях - чаще всего только для обеспечения работоспособности программ, а не для создания конкурирующего коммерческого продукта. Таким образом, принцип "чистой комнаты" полностью исключает любое прямое копирование информации, полученной в результате реверс-инжиниринга (например, имена непубличных функций API, специфические внутренние структуры данных). В некоторых случаях даже чтение документации, полученной нелицензионным путем, ставит под сомнение чистоту разработки и делает ее уязвимой для исков, хотя доказать это чаще всего невозможно. ===== «Китайская стена» ===== Одним из популярных методов clean-room дизайна является так называемая "Китайская стена", при которой разработка ведется двумя изолированными командами. Первая, аналитическая, изучает закрытую платформу, проводит дизассемблирование проприетарного ПО, исследует протоколы и т.д. Ее задача - зафиксировать поведение системы, аппаратные спецификации, функциональные требования и интерфейсы. Результат ее работы - технический документ, в котором нет ни строчки оригинального исходного кода. Полученный документ проверяют юристы. Затем набирается вторая команда, исполнительная, из разработчиков, которые никогда не видели оригинальный код закрытой платформы и не общались с командой 1. Она получает на вход чистую документацию и пишет код с нуля.