2010-04-29 3 views
7

В основном эти два подхода к проектированию системы. Какие преимущества и недостатки? Когда я должен использовать это? Должен ли я объединить эти подходы? Как?Дизайн сверху вниз или снизу вверх?

+4

Это короткий вопрос, но я подозреваю, что ответ будет довольно длинным! ... –

+1

Я предпочитаю дизайн слева направо. –

+0

@ Митч Пшеница может быть, также частично отвечает или перенаправляется на некоторые книги/статьи/статьи/блоги, достаточные :) –

ответ

21

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

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

Вы должны прочитать блестящую бумагу Parnas A rational design process and how to fake it для получения более подробной информации по этому вопросу. Ответ: используйте оба варианта, если это необходимо. Когда все будет готово, сделайте все это (в ваших спецификациях, проектной документации и документации пользователя), как будто вы сделали все сверху вниз.

+0

Большое спасибо за хороший ответ и ссылку на эту статью –

+4

+1: «Когда вы закончите, сделайте все так, как будто вы сделали все сверху вниз » – ZJR

2

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

Вот ссылка, которая объясняет принцип более подробно http://blog.energizedwork.com/2005/05/slicing-cake.html

+0

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

3

Я думаю, ваш вопрос заслуживает долго и сформулированные ответы. Я предлагаю прочитать старую статью Мартина Фаулера (ср. «Является дизайн мертв?»), Который говорит отношения о авансовый дизайна и гибких методов (http://martinfowler.com/articles/designDead.html)

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

+0

Хорошая рекомендация всегда ценится :) –

Смежные вопросы