Инструменты, без которых нельзя обойтись

07.06.2008 17:11:50

Я имею в виду, конечно, не компиляторы, IDE и прочие отладчики, без которых нельзя ничего разработать в принципе, а средства, обеспечивающие связанные с разработкой функции. Или всё то, что принято сейчас называть программной инженерией.

Разработчики программного обеспечения сейчас не страдают от недостатка инструментов. Скорее даже, наоборот, страдают от их переизбытка.

Представьте, что вам наконец-то подвернулась возможность начать свой собственный программный проект. То есть вы и только вы решаете, сколько вам нужно людей и какой квалификации, как распределить роли в команде и самое главное - как заставить всё это работать. А поскольку вы айтишник (вы же айтишник?), вы уже знаете, что в рутинной работе вам обязан помогать компьютер. Нет, не знаете? А вы точно айтишник?

Производители программ и изобретатели хитрых (или, наоборот, суперпростых) методик наперебой предлагают вам свои "самые лучшие" инструменты, заманивают вас на семинары, на которых скрыто или безо всякого стеснения рекламируют RUP, Jira, "обезжиренные багтрекеры" и прочая, и прочая. И вы понимаете, что всё это действительно полезно, и неплохо было бы всё это освоить и изучить, но... без чего же действительно нельзя обойтись? Какие инструменты нужно выбрать ещё до начала работы над проектом?

По моему убеждению, необходимый минимум включает всего два средства, без которых не имеет смысла начинать разработку.

Во-первых, средство управления версиями.

Во-вторых, средство учёта ошибок (багтрекер).

Управление версиями


Это может показаться невероятным, но есть ещё программисты, не знающие, что это такое. Как, вы тоже не знаете?! Значит, это и правда ваш первый проект. :) Что, вы знаете, но не видите необходимости в его использовании?! Товарищ... а вы как вообще сюда попали? Ах, погреться зашли... Ну грейтесь, только руками ничего не трогайте.

Серьёзно, если перед вами стоит задача создания чего-то более сложного, чем программа класса "Hello, world!", то без системы управления версиями вам не обойтись.

На самом деле, я бы и "Hello, world!" поместил в репозиторий. Зачем? А вам никогда не приходилось при создании нового консольного приложения снова и снова вспоминать, какие же заголовочные файлы должны быть включены вместо stdafx.h? Нет? Ну, значит, это только у меня память такая дырявая.

А ещё шутники говорят, что первое существо, которое создал Бог, говорило только "Hello World!" и умирало. Интересно, далеко бы Он продвинулся без репозитория на ДНК...

В общем, как вы поняли, я не готов даже обсуждать вопрос "to use or not to use" применительно к системе управления версиями. Вопрос стоит только в выборе конкретного средства.

А на вопрос "какое средство выбрать" я вам сразу отвечу: не знаю. Это зависит от многих особенностей вашего проекта. Заходите сюда и выбирайте любое.

Может быть, вам помогут уже проведенные кем-то сравнительные исследования разных средств.
Например, это (Осторожно! Плохо скрытая реклама!).
Или это.


Я же могу только поделиться своим опытом.

Моё знакомство с системами управления версиями началось с PVCS. Хоть эта система и была навязана компании, в которой я тогда работал, польза от её внедрения была очевидной. До этого программисты хранили все предыдущие версии своих программ в zip файлах, которые (файлы) ежедневно записывались на кассеты системным администратором, которые (кассеты) потом навсегда терялись где-то в тёмных и мрачных углах серверной комнаты, в которые (углы) мы боялись заходить.

Найти какую-то раннюю версию программы, отправленную несколько месяцев назад клиенту, было практически невозможно. Клиент же тупо твердил: "Мы потратили на тестирование версии 4.236-56/11g полгода, в ней всё работало, а потом вы всё сломали! Мне нужна именно эта версия, только поменяйте на чеке надпись GREY SHIT на логотип нашей компании!" (Распространённая программистская шутка, не правда ли? Я и сам так когда-то шутил, до тех пор, пока на одной важной презентации демонстрационная версия моей программы не обозвала заказчика, случайно нажавшего ту самую кнопку, законченным кретином.)

PVCS изменил ситуацию. Теперь каждая когда-то отправленная версия в любой момент могла быть извлечена из хранилища, при необходимости подчищена и скомпилирована заново. А в качестве бонуса можно было вычислить, кто же поместил злосчастный "GREY SHIT" в исходники. Может, поэтому многие программисты поначалу приняли PVCS в штыки? Вряд ли. Просто программисты до сих пор очень не любят заниматься чем-то, не являющимся программированием.

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

Когда я перешёл в другую, молодую и перспективную, компанию, сбылась означенная выше мечта идиота: все вновь открываемые программные проекты были моими собственными! Никто, кроме меня, не мог решать, какие средства нужно использовать для разработки, и мне была предоставлена полная свобода действий! Ну, разве что, слегка ограниченная бюджетом... Очень маленьким, надо сказать, бюджетом... Настолько маленьким, что на ту пору я был в компании единственным программистом...

Короче, у меня не было выбора: я мог использовать только Visual Source Safe, потому что он и так уже входил в состав Microsoft Visual Studio, а покупка других программ бюджетом не была предусмотрена. Да, я не забыл сказать, что постоянного доступа в Интернет у нас тогда тоже не было?

В общем, VSS оказался довольно неплохим решением для маленькой команды. В нём нашлось всё необходимое: и возможность назначать метки выпускаемым релизам, и разделение файлов между несколькими проектами, и интерфейс командной строки для автоматизированных сборок. Разочаровало только утверждение Microsoft о том, что VSS является клиент-серверной системой. Коротко: это наглая ложь маркетологов. Ну да ладно, к этому все давно уже привыкли.

Иногда диву даёшься, как долго могут влиять на вашу жизнь когда-то принятые второпях решения. Мы до сих пор используем эту базу Visual Source Safe. Размер репозитория перестали отслеживать, после того как он перевалил за четыре гигабайта. Мы только периодически покупаем более мощный файл-сервер и более быстрые диски.

Вокруг VSS выстроены практически все наши процедуры разработки.

  • Во-первых, программистам запрещено обмениваться файлами исходников любыми способами, кроме как поместив их в репозиторий.

  • Во-вторых, тестировщики и суппортеры не имеют права получать скомпилированные приложения от программистов. Когда им нужно что-то протестировать или что-то куда-то отправить, они запускают процедуру автоматизированной сборки, указывая только версии релиза приложения и библиотек.

  • Откуда берутся эти версии? А это, как раз, в-третьих. Если что-то с какой-то целью извлекается из VSS, то на этом чём-то должна лежать уникальная метка релиза, назначенная по специальным правилам - простым, но жёстким (при нарушении этих правил приложение просто не соберётся).

    Но приближается очередная критическая точка: скоро еженедельные архивы перестанут помещаться на один CD. Некоторые старые файлы VSS уже не в состоянии восстановить, за ними нужно лезть в бэкап. Да и для генерации отчётов об изменениях давно уже приходится отрывать пятую точку от стула и идти к файл-серверу или подключаться к нему через Remote Admin, потому что попытка сгенерировать отчёт в клиенте VSS на своём локальном компьютере намертво блокирует сеть на полчаса.

    В общем, я начал присматриваться к Subversion, в комплекте с TortoiseSVN. Скачал, поставил локально, и храню в нём исходники своих интернет-проектов. И, похоже, у него есть все шансы стать моим любимым средством контроля версий на ближайшие несколько лет. А программистов, которые попытаются возражать, я сожгу на костре. Шютка.

    Своими соображениями по поводу багтрекера поделюсь в следующий раз.
  • Ваш комментарий






    Добавлено: 26.11.2009 14:04:53
    Добавил(а): бодрый остолоп
    Пользуюсь Bazaar и не парюсь!

    Добавлено: 07.07.2008 10:45:35
    Добавил(а):
    Но попробуйте прожить хотя бы день вообще без туалета.

    Кстати, постоянно натыкаюсь на заявления, что Visual Source Safe распространяется бесплатно. Но на сайте Microsoft я никаких ссылок не нашёл. Никто не поделится ссылочкой?

    Добавлено: 07.07.2008 07:35:48
    Добавил(а):
    Про системы контроля версий :)
    (с)Откуда то

    1. ClearCase

    Классный такой туалет. Есть биде, писсуары, толчки, рукомойники, одноразовые полотенца, все чистенько, светло, уютно. Регулярно убирается, поддерживается в тепле и чистоте. Рассчитан на очень большое кол-во пользователей. Пользоваться таким туалетом приятно, несмотря на то, что туалет платный. Платность туалета выражается не только в использовании, но и в саппорте — требует достаточно много регулярных вложений на поддержание текущего оборудования, канализации, света и прочего в порядке. Подключается к общей канализационной системе.

    2. CVS

    Туалет типа "сортир". Обычный такой деревенский сортир на одну-две персоны. В конструкции прост — дыра и стенки вокруг. Но сделано на совесть — доски свежие, плотно подогнанные друг к другу, гумном почти не пахнет, щелей нет, внутри тесно, но все же довольно уютно и относительно чисто. Пользоваться не противно, особенно учитывая, что туалет бесплатен. Для личного домика гораздо более разумный вариант, чем воздвигать рядом с домом аналогичных размеров здание под туалет класса "clearcase", да еще и за деньги. Саппорт cvs-туалета также дешев — время от времени поменять прохудившуюся доску, да яму почистить изредка. Туалетной бумаги нет.

    3. CVSNT

    Тот же cvs-туалет, но с щеколдой на двери. Разница в сравнении с cvs'ом чувствуется только, когда туалетом пользуются больше одного человека.

    4. Subversion

    Попытка исправить недостатки cvs-туалета. Почти получилось, но есть ньюансы. С одной стороны — появилась возможность смывать гумно; с другой стороны – сделать это можно, только погадив несколько раз. С одной стороны – появился стульчак; с другой стороны – его нельзя просто взять и опустить, вместо этого каждый раз требуется продолжительная возьня с отверткой для того, чтобы его примонтировать. Ну а освежитель воздуха, намертво приколоченный к потолку – это вообще уже ни в какие ворота...

    5. Perforce

    Попытка построить один subversion-туалет на всю деревню. В результате он ничем не отличается от subversion, кроме:
    — гадить могут несколько человек одновременно, — гумно вывозится не сразу на свалку, а сначала складируется неподалеку на краю деревни, — есть намек на туалетную бумагу, но на поверку это оказывается газетой “Красные зори” за 1967 год, которую к тому же нельзя использовать, предварительно не помяв. Как результат появления дорогостоящих нововведений, туалет платный. Есть и бесплатная версия, но только на двух пользователей одновременно.

    6. RCS

    Тупо дыра в земле. Является прародителем CVS-туалетов. Одновременное использование исключено полностью. Более того, если при использовании предварительно не заблокировать доступ к туалету (например, взяв в руки лопату фирмы “Lock”), то есть шанс, что другой пользователь вас не заметит и нагадит сверху.

    7. SourceSafe

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

    8. Mercurial, Bazaar

    У каждого пользователя свой ночной горшок, которым он может пользоваться по своему усмотрению. Горшок весьма качественный и удобный в использовании. Пользователи сами могут между собой договорится о механизмах взаимодействия. Например, все могут сливать по очереди содержимое своих горшков в один общий горшок, или можно организоваться в цепочку. В качестве механизма доставки содержимого может использовать любой вид канализации, вплоть до доставки по почте. Предусмотрена так же возможность разделить содержимое своего горшка на порции, и отправить разные порции по разному назначению. Если в один горшок содержимое не помещается, стандартная рекомендация заключается в том, чтобы завести несколько горшков. С помощью внешних модулей приобретает любою дополнительную функциональность, вплоть до сортировки содержимого по цвету и запаху.

    9. Git

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

    10. darcs

    То же самое, что Mercurial, Bazaar, но спроектировано физиком-теоретиком на основе так называемой теории испражнений.


    Примечания
    стульчак = контроль версий директорий
    туалетная бумага = config specs
    склад на краю деревни = прокси-сервер перфорса