Методологии / инструменты для разработки самостоятельно [закрыто]

10

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

Какие методологии / инструменты вы бы использовали, чтобы определить, что нужно разрабатывать, изучать и иметь общее представление о том, что такое система, а также ее подробности?

В основном, чтобы держать себя в курсе и не заблудиться в пути.

Кассио
источник
3
Карандаш, бумага и мой мозг. Наличие доски помогает. Серьезно, большая часть моей дизайнерской работы происходит прямо в IDE. У вас есть конкретный вопрос, основанный на проблеме, с которой вы сейчас сталкиваетесь? Это помогло бы нам ответить на вопрос, если бы мы точно знали, какую проблему вы пытаетесь решить.
Роберт Харви
@RobertHarvey haha ​​Это очень верно. Ну вроде. Я разрабатываю идею, которая у меня была, личный проект. Просто программное обеспечение оказывается больше, чем я себе представлял, и есть вещи, которые мне все равно придется изучить, как оно работает, и просто выяснить, как его разработать.
Кассио
1
@RobertHarvey Главные проблемы, вероятно, заключаются в отсутствии мозгового штурма деталей, отслеживании того, что необходимо сделать, и взгляде на систему в целом.
Кассио
2
Я на 99,9% уверен, что мы рассмотрели этот вопрос еще в одном или двух вопросах, но пока не могу их найти.
Адам Лир
4
Я всегда пытаюсь заблудиться в пути. Это быстрый путь к обучению.
Джоэл Этертон

Ответы:

5

Обычно я просто использую Mercurial, если я хочу функцию, я просто добавляю ее, и если я больше не хочу ее, я просто удаляю ее. Кроме того, я стараюсь хорошо писать свои комментарии, чтобы не потеряться.

eiefai
источник
Да, Mercurial - один из тех инструментов, которые чувствуют, что они были сделаны Apple :) Простой, но мощный, красивый и полезный ...
Ладья
4

Это может легко вырасти за пределами вашего внимания. Не промежуток , ширина .

Трудно рассмотреть слишком много элементов одновременно .

И тогда ... это становится американскими горками регрессии .
Все, что вы делаете, ломает предыдущие вещи, и откат не помогает.

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

Тестирование добавит жесткую нагрузку вашей энергии.

Если проект все о пользовательском интерфейсе ... вы, вероятно, тост:

  • Тестирование пользовательского интерфейса сложно .
  • Автоматизированное тестирование пользовательского интерфейса ... все еще сложно .

Непроверенная идея в последнюю минуту для проектов, ориентированных на пользовательский интерфейс
Зарегистрируйте родственника с свободным временем и любовью щелкать мышью в качестве тестера пользовательского интерфейса.
Я думаю, что «подросток» здесь.

Другие вопросы:

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

Если вы привыкли и любите какой-то контроль версий , используйте его.
Если вы начнете изучать его сейчас, это вас отвлечет .

Графическое изображение из вас идеи, как уже отмечалось, может помочь.

Я использовал Freemind , CMaps , XMind , yEd , graphviz и… что-то еще.

XMind менее бессмысленен

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

Карандаш и тетрадь по- прежнему неплохо зарекомендовали себя в первой десятке:

  • Я сканирую многие из моих заметок
  • Я делаю много маленьких поясняющих рисунков.

    • (Если вы думаете с изображениями, вы никогда не найдете полезного инструмента для мозгового штурма)

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

Zjr
источник
+1. Тем не менее, есть ли у вас какие-либо предположения о том, что вы "решаете что-то, чего у вас там нет"?
Кассио
@Cassio Я переключаюсь между xmind и карандашом + альбомом, делаю точечные списки в libreoffice, записываю примеры и тестирую примерную реализацию. Это довольно трудоемкий процесс, но вы должны отбросить какую-то неуместную линию мышления, чтобы найти то, что кажется правильным. (PS: мятую бумагу, прежде чем бросить, она катарсична)
ZJR
1
@ZJR Действительно. Иногда я просто боялся писать вещи, которые мне не нужны, и тратить на это время, но теперь я понимаю, что именно так и работает этот процесс. Первоначально мы пишем некоторые бесполезные вещи, но мы улучшаемся со временем. :) Спасибо!
Кассио
3

Грамотное программирование.

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

Если вы пишете статью (или книгу, или отчет, или документ) о своем проекте, то вы склонны оставаться на задании.

Начните с описания того, что вы делаете: обзор вариантов использования, выпуск 1, выпуск 2, выпуск n. Запишите краткое описание вариантов использования. Приоритет их. Получите их в спринтах и ​​релизах.

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

Повторите для каждого спринта. Время от времени просматривайте и редактируйте свой документ.

Есть много и много грамотных инструментов программирования. Они могут помочь вам создать источник, который создает документацию и код из одного текста.

Я использую sphinx и PyLit, но это потому, что я программист на Python.

С. Лотт
источник
Хорошо выжимать из него университетскую газету , а потом забывать об этом, плохо, если вы планируете выпустить или обслуживать продукт впоследствии. В любом случае все должны использовать doxygen , даже на python. Но это только потому, что я фанат :)
ZJR
2

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

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

Во время моей первой фиксации кода я также сохранил файл мозгового штурма в репозитории исходного кода (я использовал bitbucket ) и держал его в курсе моих новейших идей.

Jalayn
источник
Отлично. Я уже тестирую все это. Спасибо!
Кассио
2

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

Я работаю над личным проектом, как вы описали. Я использую Git, Redmine, JUnit и Jenkins, чтобы удовлетворить все категории, которые я описал. Мой рабочий процесс:

  • Выберите билет для работы
  • Разветвите кодовую базу
  • Разработка кода и тестов для задачи (внесение изменений в ветку с хорошими точками сохранения)
  • Слить ветку обратно в ствол
  • Убедитесь, что сборка прошла успешно, тесты пройдены и других проблем не было
  • Повторение

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

unholysampler
источник
2

Инструменты:

  • Система контроля версий (даже если вы являетесь единственным разработчиком в своем гараже или домашнем ПК): GIT, Mercurial, Tourtoise

  • Редактор с подсветкой исходного кода, даже если у вас есть IDE (Scintilla, Vim, Notepad)

  • Реальная доска, доска, некоторые вещи просто не помещаются в вашем приложении Designer Tools.

  • Инструмент для разработки: Rational Rose, Umbrello, (UML, ER,) Visio или «Инструменты разработчика для слабых разработчиков», такие как Power Point, Corel Draw, Open Office Draw

  • Текст / Исходный код Инструмент сравнения текста, например, WinMerge

umlcat
источник
Очень полезно! Я применяю все это на практике. Спасибо.
Кассио
1

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

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

Во-первых, по моему мнению, вы должны записать то, что вы ожидаете, что программное обеспечение будет делать и особенно, что оно не будет делать. Это важный момент. Следующим шагом является разделение конечной системы на более низкие подсистемы, что облегчает процесс сборки. И последнее, но не менее важное: вам нужно выбрать инструменты. В основном хорошая IDE, VCS и модельер данных. Вы можете добавить множество других инструментов, чтобы помочь, но будьте осторожны, чтобы не начать с неправильного пути.

Что ж, начало кажется не таким привлекательным, но процесс со временем станет веселым.

Лукас Маус
источник
Да! Помните, что код - если проект хорошо разработан - небольшая часть целого.
Лукас Маус