Как вы приступить к разработке большой системы?

голоса
8

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

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

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

Задан 19/08/2008 в 05:26
источник пользователем
На других языках...                            


10 ответов

голоса
10

Вы знаете много о OOP ли? Если да, то смотрите в Spring и Hibernate , чтобы сохранить вашу реализацию чистой и ортогональны . Если вы получите , что вы должны найти TDD хороший способ сохранить вашу конструкцию компактной и постное, тем более , что вы «автоматизированного тестирования» и работает.

UPDATE: Глядя на первую убивание ответов, я не мог не согласиться больше. В частности , в пространстве Java, вы должны найти множество наставники / ресурсов на разработку приложения с объектами, а не база данных, ориентированный подход . Проектирование баз данных обычно является первым шагом для людей Microsoft (которые я делаю каждый день, но я в программе восстановления, гм, Alt.Net). Если вы держите внимание на то , что вам нужно доставить к клиенту , и пусть ваш ORM выяснить , как сохранить ваши объекты, ваша конструкция должна быть лучше.

Ответил 19/08/2008 d 05:32
источник пользователем

голоса
5

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

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

Поэтому мой совет:

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

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

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

Ответил 19/08/2008 d 11:34
источник пользователем

голоса
3

Я также не согласен о запуске с базой данных. DB просто артефакт , как ваш бизнес - объекты сохраняются. Я не знаю эквивалент в Java, но .Net имеет звездные инструменты , такие как SubSonic , которые позволяют вашему дизайну DB остаться жидкостью , как вы итерацию через бизнес - объекты дизайн. Я бы сказал , что в первую очередь (еще до принятия решения о том, какие технологии внедрять) фокус на процесс и определить ваши существительные и глаголы ... потом строить из этих абстракций. Эй, это действительно работает в «реальном мире», так же , как ООП 101 научил вас!

Ответил 19/08/2008 d 07:08
источник пользователем

голоса
2

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

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

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

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

  • Теперь, вы должны думать о создании базы данных, диаграмм ER, Class Design, DFDS, развертывание и т.д.

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

Ответил 19/08/2008 d 07:03
источник пользователем

голоса
2

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

Ответил 19/08/2008 d 05:31
источник пользователем

голоса
1

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

Нарисуйте его на обычной бумаге, думая о том, где секции от кода. Remeber не смешивать логику с GUI кода (общая ошибка). Таким образом, вы будете устанавливать, чтобы расширить свои приложения достичь в будущем сервлеты и / или апплетов или любой другой платформы приходит. Раздел в слоях, так что вы можете реагировать на большие изменения быстрее без перестройки все. Слои не должны видеть какие-либо другие слои, чем их ближайшие соседние слои.

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

Btw. Несмотря на то, что это не имеет ничего общего с дизайном я просто хотел сказать, что вы не доставите вовремя. Сделать реалистичную оценку по затратам времени, а затем удвоить его :-) Я предполагаю, что здесь, что вы не будете одиноки в этом проекте, и что люди будут приходить и уходить по мере продвижения проекта. Вы, возможно, потребуется обучить людей в середине проекта, люди идут в отпуск / нуждаются в хирургии и т.д.

Ответил 22/10/2008 d 16:09
источник пользователем

голоса
1

Это был мой опыт, что Java-приложение (.NET) и которые рассматривают базу данных в прошлом, весьма вероятно, плохо работает при размещении в корпоративную среду. Вы должны действительно думать о вашей аудитории. Вы не сказали, если это веб-приложение или нет. В любом случае инфраструктура, вы реализуете на очень важно при рассмотрении вопроса о том, как вы обрабатывать ваши данные.

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

Ответил 19/08/2008 d 12:21
источник пользователем

голоса
1

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

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

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

Ответил 19/08/2008 d 05:39
источник пользователем

голоса
0

Я нашел очень глубокие идеи о запуске нового крупного проекта, на основе

  • общие хорошие практики
  • Test Driven Development
  • и прагматичный подход

в книге Growing объектно-ориентированного программного обеспечения, руководствуясь испытаний .

Это все еще в стадии разработки, но первые 3 главы может быть то, что Вы ищете и ИМХО стоит читать.

Ответил 19/08/2008 d 22:31
источник пользователем

голоса
0

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

По крайней мере это была моя главная ошибка в проектировании.

Будь проще!

Ответил 19/08/2008 d 11:48
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more