Что нужно знать перед началом разработки большого проекта?

После года работы над проектом, который представляет из себя Web-приложение с front-end'ом на three.js (WebGL) и back-end'ом на PHP+MySQL, стало понятно, что это не совсем верный путь, поэтому нашел им аналоги. Пришлось отказаться как от three.js, с которым производительность оставляла желать лучшего, так и от чистого интерпретируемого РНР, с которым и так все понятно, динамическая типизация и переменные через $ ой как надоели). К тому же обычного хостинга не хватило бы, так как нужны NoSQL БД, а там уже поглядишь, и VPS лучше взять с J2EE

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

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

2. Проектирование
продумать то, на какие части должно быть разделено приложение, что они должны делать и как это все должно взаимодействовать (много изучал UML, морально готов приступить к проектированию, но почти не имею практических навыков при составлении диаграмм:) )

3. Конструирование
этап, на котором весь продуманный функционал постепенно воплощается в код, компилируется, тестируется и т.п. неоднократно

Говоря об инструментах, могу сказать, что кроме самых необходимых (от IDE к отладчикам), нужна система управления версиями (git), генератор документации, инструмент прототипирования GUI

Но что еще стоит упомянуть и поправить в вышесказанном? Поделитесь, пожалуйста, опираясь на собственный опыт.
  • Вопрос задан
  • 560 просмотров
Пригласить эксперта
Ответы на вопрос 3
@vilix
Если к проекту будет подключатся команда разработчиков, а если проект большой я думаю рано или поздно вам понадобятся помощники, тогда вам будет необходим свой code-style-guide ну или позаимствованный например от гугла.

Насчет проектирования, тут не всегда обязательно UML, проектировать можно по разному, зависит от методологии, если вы не боитесь, что во время разработки проект будет терпеть много изменений, то пишите спеку (SRS) в виде IEEE 830 или RUP. В ходе написания спецификации вам и понадобятся разные UML диаграмки.
Если вы любите более гибкую разработку, то можете позаимствовать так называемые user story, суть которых состоит не в подробном техническом документировании каждой функции, а в том, что функционал проекта разбивается на фичи которые описываются человеческим языком, можете примеры из scrum посмотреть.

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

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

Это правило помогает, меньше рассуждать и философствовать над проектом и просто делать его, а то много проектов завершаются еще на стадии проектирования, когда ты входишь в ступор от обилия вариантов реализации и возможных проблем и сценариев. Just do it)
Ответ написан
Комментировать
globuzer
@globuzer
gezgrouvingus progreszive ombusgrander greyderzux
Очень удобно и очень эффективно использовать какой-то багтрекер-командный-менеджер-механизм.... аля Jira, Redmine, etc...
Ну и помнить про сроки и бюджет.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
изучите ruhighload.com

1. тут да,
megamozg.ru/post/4242
www.artlebedev.ru/kovodstvo/sections/167
иначе будете кодить ради кода

2. тут.. как сказать... если вы паттеранми мыслите - ну, отлично. А если нет - см. рекомендуемый сайт, достаточно и так на салфетке.

3. угу, тут все нужно и CI + тесты сверху
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы