Как мне сделать рабочий процесс разработки более «корпоративным»?

StackOverflow https://stackoverflow.com/questions/413713

Вопрос

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

  • Большую часть своей разработки я выполняю в Eclipse на своем ноутбуке.Все сохраняется локально на моем ноутбуке, и я не использую VCS и не делаю резервных копий своего кода (за исключением того, что время от времени отправляю его себе по электронной почте, чтобы я мог увидеть его на другом компьютере - да, я рассказал вам свою среду разработки нужна работа).

  • Когда я закончил работу над проектом и хочу его развернуть или просто хочу его протестировать, я использую встроенный инструмент Jar в Eclipse, чтобы создать исполняемый файл .jar моего проекта.Если я использую внешние библиотеки .jar, я использую плагин Fat-Jar, чтобы включить эти .jar-файлы в свой исполняемый файл .jar.

  • После создания .jar я вручную загружаю его на сервер через SFTP и проверяю его с помощью чего-то вроде java -jar MyProject.jar.

Ах да, я уже упоминал, что не занимаюсь модульным тестированием?

Самая очевидная проблема, которую я хотел бы решить в первую очередь, — это отсутствие контроля версий.Мне нравится git из-за его распределенной природы, но, похоже, он плохо интегрируется с Eclipse, и я слышал, что он не очень хорошо работает в Windows, которая является моей основной ОС для разработки.Итак, я склоняюсь к SVN, с которым у меня есть некоторый опыт.У меня есть свой личный сервер, и я думаю, что буду использовать его для контроля версий, потому что я предпочитаю быть собственным администратором, чем иметь дело с университетской бюрократией.Однажды у меня были проблемы с настройкой SVN, но я попробую еще раз.Может быть, я также установлю что-нибудь вроде Trac или Redmine для отслеживания ошибок, списка дел и т. д.?

А как насчет сборки и развертывания?Должен быть лучший способ, чем использовать Fat-Jar и вручную загружать банку на сервер.Я слышал о таких инструментах, как Ant и Maven. Применимы ли они к тому, что я хочу сделать?Как мне начать их использовать?

Полагаю, в конечном итоге мне бы хотелось интегрировать модульное тестирование и с JUnit.Хотя, вероятно, так и должно быть, сейчас это не моя главная забота, потому что пока мои приложения не очень сложны.Мне бы очень хотелось поработать над упрощением и оптимизацией моего рабочего процесса прямо сейчас, а затем я приступлю к модульному тестированию.

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


редактировать:Спасибо за отличные ответы.Я не имел в виду, что хочу сделать свой рабочий процесс «корпоративным» только ради этого, но хотел упростить свою работу и освоить несколько технологий, которые обычно используются в средах корпоративной разработки.Это все, что я имел в виду.

Это было полезно?

Решение

Мне кажется, вы на самом деле довольно хорошо представляете, что вам нужно делать.

Использование Subversion (или другой системы контроля версий) является обязательным.Хотя, возможно, было бы разумно настроить отдельный репозиторий SVN для вашего рабочего кода, а не использовать личный.

Вы можете интегрировать Subversion с Eclipse, используя такой плагин, как Subclipse, который, как я обнаружил, работает очень хорошо.

Я бы определенно использовал Ant или Maven — я предпочитаю Ant, потому что он более гибкий, и я думаю, что он больше подойдет вашему стилю разработки, чем Maven.Но вы также можете изучить Апач Айви, который занимается управлением зависимостями.

По сути, вы устанавливаете задачу ant, которая выполняет этапы компиляции, сборки и развертывания, чтобы при создании окончательного пакета JAR вы могли быть уверены, что он прошел модульное тестирование, поскольку является частью вашего сценария ant.Лучший способ начать работу с ant — просмотреть несколько примеров и прочитать руководство.

Что касается модульного тестирования — вы можете постепенно наращивать модульное тестирование.Я бы рекомендовал использовать JUnit в сочетании с инструментом покрытия кода, например Кобертура (который легко настроить) — он поможет вам понять, какой объем кода покрывают ваши тесты, и является индикатором того, насколько эффективны ваши тесты.

Возможно, вам также стоит настроить что-то вроде Trac — важно иметь возможность отслеживать ошибки, а вики-сайт удивительно полезен для документации.

Другими словами, все это звучит так, будто вы на правильном пути, вам просто нужно начать использовать некоторые из этих инструментов!

Другие советы

Если вы действительно настроены на распределенный контроль версий, я бы рекомендовал вам посмотреть Базар.Его распределенная система управления исходным кодом, подобная GIT, разработана для выполнения очень высококачественных слияний.«Из коробки» он работает на всех платформах, включая Windows, и у них есть ЧерепахаБЗР клиент.

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

Что касается модульного тестирования, вам следует ознакомиться с Юнит.Тот факт, что вы знакомы с модульным тестированием и знаете, что вам следует его проводить, по-прежнему на несколько шагов опережает большинство специализированных разработчиков.

Используйте контроль версий.Период.SVN имеет большой интеграция с Eclipse и Windows.Получите клиент TourtisSVN для Windows и используйте плагин subclipse с Eclipse.

Я бы порекомендовал приобрести внешний жесткий диск или использовать один из серверов вашей компании для размещения вашего репозитория и часто делать резервные копии.Subversion отлично работает с развертыванием и обновлением.Просто научитесь это делать, и вы никогда не оглянетесь назад :)

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

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

Но обязательно попробуйте SVN!Если в вашей компании есть сервер LINUX с Apache, посмотрите, сможете ли вы настроить там свой сервер с помощью DAV-SVN.

:)

Думаю, вы сами ответили на большинство своих вопросов.

  • Управления источником:выберите SVN — простая установка, отличная интеграция с Eclipse (подклип).
  • Используйте Ant для создания проекта и его развертывания (задача SCP/SFTP).
  • Сохраните все свои настройки (настройки проекта Eclipse, файлы сборки и т. д.) в SVN.
  • Используйте Bugzilla, чтобы отслеживать свои ошибки/проблемы/запросы/идеи.

Было бы ОЧЕНЬ полезно начать работать с контролем версий.Начни сейчас, не откладывай!Git развивается ОЧЕНЬ быстро, и TortoiseGit уже разрабатывается.SVN по-прежнему остается отличным стандартом для работы.И я не работал с Mercurial, но это еще одна система контроля версий, на которую стоит обратить внимание.

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

Посмотрите «Программисты-прагматики» Прагматический стартовый комплект.

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

Это даст вам прочную основу для дальнейшего продвижения вперед.

Взгляните на Appfuse Мэтта Рэйбла.

Он включает в себя Maven и модульное тестирование.

http://raibledesigns.com/rd/tags/appfuse

Хоть вы и поставили это на последнее место, я думаю, вам следует без промедления начать использовать jUnit.

Причина в том, что, вероятно, это самый простой из намеченных вами амбиций, и эти инструменты почти наверняка уже встроены в вашу сборку Eclipse.

Создайте в своем проекте новую папку под названием «jUnit».

Допустим, у вас есть класс «Сотрудник» с методами setAnnualSalary() и getMonthlySalary().

Щелкните правой кнопкой мыши папку jUunit, создайте -> «Тестовый пример jUnit».Это создаст новый класс.Назовите его TestEmployee.Eclipse, как обычно, генерирует для вас шаблонный материал.

Добавьте метод void с именем, начинающимся с «test»:

public void testSalaryCalc() {
    Employee emp = new Employee("John Doe");
    emp.setAnnualSalary(12000);
    assertEquals(1000,emp.getMonthlySalary());
}

Щелкните правой кнопкой мыши, «Запустить от имени» -> «Тест jUnit».(в первый раз Eclipse может предложить вам выполнить некоторые настройки проекта.Просто делай то, что он говорит.)

Если сотрудник работает правильно, вы увидите зеленую полосу.Саботируйте класс «Сотрудник», запустите тест еще раз, и вы увидите красную полосу, а также выходные данные, сообщающие вам, в чем заключалась ошибка.

Поздравляем:вы занимаетесь модульным тестированием!

Щелкнув правой кнопкой мыши родительский каталог и выбрав «Запустить как тест jUnit», вы запустите каждый класс Testcase в каталоге.Позже вы сможете включить jUnit в свой процесс сборки, но пока не беспокойтесь об этом.

Автозаполнение покажет вам все варианты assert() вы можете использовать.Вы можете прочитать об этом и стремиться к практикам, в которых вы пишете тестовые примеры до реализации, которая их передает.Но простое выполнение описанных выше простых действий принесет вам большую пользу.

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

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

Это дает вам гарантию, что вы (или любой другой человек) сможете проверить свой код и создать/запустить свои проекты.

Я бы рекомендовал взглянуть на Хадсон

Как уже говорили другие, вы уже четко знаете, что вам нужно делать.VCS является обязательным, CI или отслеживание ошибок могут быть излишними (для одного разработчика может быть достаточно электронной таблицы для отслеживания ошибок).

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

И я хочу добавить модульное тестирование, особенно разработку через тестирование (TDD). Книга Кента Бека это хорошее место для начала.Я считаю, что TDD помогает мне оставаться честным и сосредоточенным на том, что мне действительно нужно делать, особенно на проекте с одним разработчиком без контроля качества.Иногда кажется, что код пишется сам.

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

Если вы используете Windows Server, на котором хотите разместить свой SVN-сервер, используйте Визуальный СВН в качестве сервера.Его очень легко настроить и использовать, он поддерживает как базовую аутентификацию, так и аутентификацию Windows.Его также можно использовать бесплатно.

Eclipse имеет довольно много модулей для интеграции с сервером SVN, поэтому используйте один из них или уже предложенный Tortoise SVN.

Все предыдущие комментарии охватывали почти все, что вам может понадобиться :-)

Я хочу добавить еще один подход к разработке (рабочий процесс разработки).

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

http://nvie.com/posts/a-successful-git-branching-model/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top