Каким образом решить проблему воровства кода при коллективной разработке?

Сейчас популярны гибкие методологии разработки, которые включают коллективное владение кодом, коллективную ответственность и коллективную разработку. Но даже если каждый человек отвечает за свою конкретную часть, то очень часто бывает, что каждый все равно может получить доступ ко всему разрабатываемому ПО.
Для прикладного ПО можно это обойти — каждый разрабатывает свою dll, а затем это всё сшивается воедино. Но как поступать, например, с веб-сервисами, для которых обычно весь код открыт?

В общем, вопрос звучит так:
Каким образом владельцу ПО/работодателю обезопасить себя от воровства исходников при работе с наемными сотрудниками?

Интересует не только законодательная часть, но психологическая и техническая. К сожалению закон в России не всегда является барьером для воровства в сфере ИТ.

Как первый вариант – если несколько программистов, то можно определить долю каждого в бизнесе, чтобы каждый был заинтересован в коллективном успехе. Недостаток: как быть когда бизнес вырастет и нужно будет принимать наемных работников?
Второй – у каждого свой модуль и нет доступа ко всей системе. TDD здесь поможет, однако это исключает многие пункты agile, что может замедлить разработку.
  • Вопрос задан
  • 3028 просмотров
Решения вопроса 1
@s0rr0w
1. Дайте каждому опцион. И тогда воровать они будут у себя.

2. Забейте. Любая, даже самая уникальная идея, имеет свое время жизни и свою область применения. Например, я знаю как организован проект, но это применимо только к данному проекту и данным разработчикам, в других условиях методика, алгоритм, фича будут неэффективны. Я могу выйти на улицу и каждому рассказывать про замечательные идеи и уникальные алгоритмы. Но кому они нужны кроме меня?
Даже работая над общим кодом мало кто будет представлять себе всю картину в целом. Чем больше будет проект, тем слабее будет понимание каждым из работников, почему это было сделано так а не иначе.

3. Патентуйте алгоритмы, если они того действительно стоят
Ответ написан
Пригласить эксперта
Ответы на вопрос 12
zed91
@zed91
Вороватых людей не надо нанимать
Ответ написан
Wott
@Wott
Если честно не вижу проблемы. Код сам по себе в отдельный момент времени не многого стоит — он меняется и работает в комплексе. Даже если стырят все, то есть команда, которая его знает, улучшает и развивает. Конечно могут увести целиком и код и команду, но это уже проблемы более общие.
Ответ написан
VioletTape
@VioletTape
«Управление грибами». (Почему грибами? Потому, что грибы держат в темноте и кормят навозом.) Удержание работников в неинформированном и постоянно занятом состоянии. Замыкание всех внешних и внутренних потоков информации на себя. Фильтрация и искажение информации в личных интересах. Зависимость исполнителей от более информированного начальника. Строгое разграничение прав доступа к проектной документации и исходным кодам. Ограничение доступа в Интернет («а вдруг узнают среднюю зарплату на рынке?»), запрет ICQ, препятствование общению с коллегами из других компаний. Загрузить работой так, чтобы времени на обдумывание чего-либо не оставалось. Постоянно находить какие-нибудь «важные и неотложные» дела.

вот так не будет цельной картины у разработчиков и они настолько устанут от проекта, что забудут его с великой радостью ;)
Ответ написан
@lesha_penguin
Да, есть всякие NDA и прочие вещи. Но, давайте на это посмотрим с другой стороны.
Существует естественный процесс обмена и накопления опыта. Любой человек, а не только программист, использует какой-то опыт и наработки из предыдущих проектов и использует опыт и наработки текущего проекта в будущих. Это совершенно естественный процесс.

Спросите себя, в какую сторону идет большее движение? В проект или из проекта? Стимулируете ли вы сотрудников к применению всей массы имеющегося накопленного опыта и умений или же вы вызываете у своих сотрудников только одно желание (см. коммент выше про «управление грибами»): побыстрее слинять от вас, забыв как страшный сон и «в качестве моральной компенсации» уходя, прихватить хоть что-то, хоть что-нибудь например кусок кода?

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

Это все равно что спрашивать «почему ваша жена ушла к другому, прихватив квартиру, машину и все сбережения на банковском счету в качестве трофея?». Так понятнее? Мотивация примерно одинаковая. Потому что вы сами сделали все для того, чтобы в другом месте человек чувствовал лучше чем с вами.

Это я говорю о именно Разработчиках с большой буквы (которые могут что-то реализовать), а не о «быдлокодерах» (которым даже если и получат в руки код, они все равно ничего с ним сделать не смогут, даже отладить до приемлемого уровня, не то что выйти с ним на рынок). Да и вообще, что у вас там такого секретного в коде, чего нет в других приложениях?

Короче мой ответ из трех пунтков: Грамотная
Ответ написан
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
ПУсть каждый пишет только свой модуль, а доверенное лицо, которому Вы можете доверять, например, Вы сами, соберет все потом в одно целое.

Но это не так уж и легко.
Иными словами — никак.
Ответ написан
Комментировать
int03e
@int03e
Ну вроде как стандартное решение — NDA?
Ответ написан
SJDeveloper
@SJDeveloper
а разве запретили уже использовать программы Р Админов и т, д. Сниферы ввода с клавиатуры и сливание всё на сервер в офисе?

Ну а как же банальные спички в USB? Это же прекрасно смотрится просто видел в одной конторе «Администратор» придумал.
Ответ написан
holyorb2
@holyorb2
пусть работают в офисе и поставьте камеры наблюдения
и дать договор где четко будет написано что и как за воровство вы делаете
Ответ написан
mezastel
@mezastel
Финансовая математика, программирование
Программирование по контракту разве не подойдет? Разные группы договариваются о контрактах, все видят только файл MyCompany.Common.dll, или сорцы к нему, неважно. Никто и никогда не видит код других, билд-сервер не настроен выдавать бинарники, если кто-то из комманды должен получить скомпиленный продукт — он получает заобфусцированную копию, из которой ничего не вытянуть.
Ответ написан
Alexx_ps
@Alexx_ps
Организационные, программные и технические меры защиты информации.
1. NDA, положения, журналы учета съемных носителей.
2. «Белый список» съемных носителей, ведение логов, антиинсайдерское ПО, запрет личной почты в офисе, доступ к кодам только из офиса.
3. Блокирование всех ненужных портов (эпоксидка вам в помощь), опечатывание компа…

Отдельный интерес представляет антиинсайдерское ПО: ставит на все файлы именные метки, отслеживает подозрительную переписку по ключевым словам, контролирует целостность файлов, можно поставить запрет на команду копирования файла, может отслеживать копирования кусков защищаемого документа в другой документ и т.д.

Пара статей в тему
www.iso27000.ru/chitalnyi-zai/zaschita-ot-insaiderov/kak-zaschischatsya-ot-insaidera
www.securitylab.ru/contest/289337.php
Ответ написан
solver
@solver
А почему все рассматривают кражу исходников только в контексте уникальных алгоритмов, технологий и т.п.
Исходники это тупо много человекочасов… если я утащу банальнейший проект какой нибудь ну пусть даже flash игрушки (пример просто из смежной области), то просто с экономлю кучу времени себе и своим программистам на разработку костяка игры. Тут нет уникальных технологий, нет секретов и тайн… да дофига людей пишут flash игрушки.
Но вместо того, чтобы уйдя из противной мне конторы пустым и просто сделать свою студию разработки, я утащу исходники и тупо сэкономлю кучу времени…
В исходниках что называется «с нуля» разбираться не надо по логике я с ними и так работал.
Даже можно в этом же сеттинге выпустить игру поменяв только графику, тем самым посадив в лужу контору из которой уволился… судиться можно долго, доказывая, что это не ты код писал… можно ведь и обфускацию сделать и т.д.

Это же применимо и ко многому финансовому ПО… да в принципе ко многому ПО…
Так что ноу-хау не единственна проблема кражи исходников…
Ответ написан
Да никак и практически никогда это не нужно.
За исключением кода с большим количеством математики, сам код ценности не представляет. Ценность не в программистах с их кодом, а в продавцах с их договорами.

Деньги в фирму приносят не программисты. Так что если хотите себя обезопасить, идите вперед на рынке, рекламируйтесь, создавайте себе имидж и тогда даже если все ваши исходники выложат куда-нибудь, вы не особо это и заметите.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы