Как я могу начать разрабатывать свою программу на бумаге без чрезмерных инженерных разработок?

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

Я думаю что-то в духе UML, но я чувствую, что он немного переполнен для проекта с одним человеком.

Каковы некоторые из тех, что говорят профессионалы, лучше всего делать при разработке хобби?

Ожидая, что голоса закрываются, как обычно, это не является аргументом. Это четкий ответ, и я ожидаю чего-то определенного.: P

Ответ 1

Я пытаюсь разделить проблему обычно на две разные проблемы:

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

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

Чтобы установить те:

  • поиск глаголов в описании проблемы: методы make
  • поиск существительных в описании проблемы: те, которые производят классы
  • найти ограничения и то, что они имеют отношение к: дешевле свойство чего-то, или, скорее, результат операции?

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

Ответ 2

Для такого рода вещей я обычно рисую основные пользовательские интерфейсы, рисую (на бумаге) модель домена и схему базы данных. Я всегда начинаю на бумаге, а затем, если чувствую, что мне нужно экспортировать в visio/basalmiq.

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

В значительной степени это зависит от количества вещей, и самое важное - это то, что вы делаете.

1) Первый шаг для меня - объявить, что вы делаете. Звук, прост? когда-то нет. Перечислите, что вы хотите, чтобы программа выполняла. Перечислите, что является обязательным, что хорошо для вас и что хорошо (не так много проблем).

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

То, что вы определили здесь, - это то, что вы должны потратить на его дизайн на бумаге.

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

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

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

5) Начните с малого, но всегда думайте о расширении. Для меня, это нормально, чтобы мыслить большим, но рискованно делать большие.

Это то, что я делаю. Надеюсь, это даст вам некоторую идею.:-D

Ответ 6

Я бы использовал UML не потому, что это стандартный стандарт defacto, а потому, что он помогает вам организовывать и документировать ваши мысли при изучении домена (будь то личный или деловой). Свободным инструментом является ArgoUML.

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

И я сначала сосредоточусь на поведении, а данные - на последнем. См. Книги Ребекки Вирфс-Брок.

Удачи! Марк

Ответ 7

Некоторые из моих "трюков":

  • Сначала я использую отображение разума (например, MindMeister).

  • Затем я нахожу вероятные "трудные точки" и делаю легкое прототипирование

Ответ 8

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

Ответ 9

Это порядок того, как я делаю:

1) Напишите псевдокод в карандаше. Это, где вы можете мозговой штурм идеи с собой и другими, если это необходимо.

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

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

4) Наконец, начните кодирование, используя ваш алгоритм и блок-схему в качестве руководства.

Ответ 10

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

поэтому все, что вам нужно сделать, должно соответствовать цели. отпустите его и доставьте его.

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

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

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

Ответ 11

Я большой поклонник использования SketchFlow для создания каркасов и макетов, которые действительно помогают во всем процессе проектирования веб-приложений. Вы можете увидеть это и прикоснуться к нему и доказать, что ваши идеи действительно будут работать. Мне также нравится, что отображение разума (MindMeister) упоминалось где-то еще. В последнее время я стараюсь избегать спецификаций BDUF (большой дизайн спереди) в эти дни!

Ответ 12

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

Ответ 13

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

  • Определите свои цели. Они могут быть вашими или могут быть предоставлены вам бизнес-менеджером/менеджером продуктов.
  • Определите ограничения ресурсов. Это может быть время, деньги, оборудование или даже языки программирования, которые вы можете использовать.
  • Изучите экологические ограничения, которые относятся к отрасли или окружающей среде, в которую будет входить ваше программное обеспечение. Например, правила или то, что пользователи готовы принять.
  • Беспокоитесь о будущем (но не сводите себя с ума). В максимально возможной степени сделать проект масштабируемым с уровня программного обеспечения и уровня функциональности.
  • Затем запустите итерацию. Важно пробовать все и начинать итерацию по дизайну. Вы никогда не сможете предвидеть все, чтобы вы старались изо всех сил, а затем продвигались вперед.

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

Дизайн, подобный Эйнштейну и Микеланджело enter image description here