2009-12-11 4 views
2

Как вы проводите различие между проектными решениями и решениями по реализации?Дизайн или реализация?

Чтобы дать конкретный пример: Мы разрабатываем некоторые веб-сервисы, которые интегрируют наше приложение с другим Один из вопроса я спросил was- мы хотим интеграции между двумя приложениями по асинхронная или синхронизации?

Кто-то предположил, что это вопрос об имплементации, а не дизайн.

Мое заявление - если я что-то изменил, и вам не нужно знать, что и почему я изменил, это решение о внедрении.

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

Если я изменю свою реализацию в асинхронном от synch- я предполагаю это будет влиять, как услуги consumed- оки зывается своим проектным решением, а не реализации

например, выбрать ли XML для хранения или База данных - если она не влияет на другую заявку - она ​​остается вариантом реализации, а не дизайном

Вы согласны? не согласны? мысли?

+3

Нечего сказать, кроме того, что я согласен. О, и сделайте это Community Wiki. – hometoast

+2

Я думаю, что это была бы замечательная страница вики-сообщества. –

+1

Я должен задаться вопросом, является ли это результатом спора между разработчиком и дизайнером о том, кто может решить, как что-то делается :) – AaronLS

ответ

5

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

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

2

Фаза разработки приходит до этап реализации (на переднем конце проекта). Конечно, вы можете изменить дизайн как только вы начали реализацияесли есть хорошая причина: это почему там «итеративный процесс»

product requirements -> design -> implementation -> back to product etc.

для того, чтобы сходиться до продукт.

Фаза проектирования существует для оптимизации (прочитайте: $) этапа реализации и обеспечения соответствия бизнес-целей.

архитектура еще один термин, который часто ассоциируется с конструкции: во время фазы конструкции, архитектура выбрана.

+0

Я думаю, что его неправильно рассматривать дизайн и реализацию как две разные фазы - они действительно идут рука об руку См. Комментарий от Simon –

+0

@RN: просто оставьте мне время, чтобы закончить мой вклад !! Когда я пишу ответ, я очень часто сохраняю свои черновики (не знаю, что я знаю). Я также использую * итеративный процесс здесь :-) – jldupont

+1

RN, я думаю, он повторяет, что они не отличаются друг от друга, когда он говорит: «Конечно, вы можете изменить дизайн после того, как вы начали реализацию, если есть веская причина». Я согласен с тем, что они идут рука об руку, но это правда, что в целом дизайн должен быть до реализации, что может быть смешано с реализацией внедрения, чтобы вы могли продолжить более образованный дизайн. Вы должны начать, по крайней мере, с некоторой разработки, чтобы установить какое-то направление или кто будет знать, что реализовать? – AaronLS

0

Я бы сказал, что дизайнерское решение - это то, что вы хотите. Это ваша конечная, незапятнанная цель.

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

+0

Я не думаю, что решения по внедрению обязательно требуют изменения дизайна. Если проект требует подробных журналов, решение о реализации может быть связано с использованием встроенных треков-слушателей или использованием структуры log4net. Я могу пойти в любом случае в своем решении по реализации, и я никоим образом не изменил свой дизайн. Речь идет о делегировании полномочий и детализации дизайна. Это было бы похоже на генералов армии, командующих кампанией, и командиров отрядов, контролирующих тактику отряда. Они работают от одного и того же дизайна, только разные уровни детализации. – AaronLS

2

Мое любимое определение архитектуры:

Архитектура есть множество решений, которые трудно изменить

Я думаю, что имеет место для разрыва конструкции/реализации, а также. Если решение достаточно сложно, то это дизайнерское решение.

Определение «жесткий» является несколько субъективным и зависит от вашего проекта. Я бы сказал, что решение sync/async в вашем вопросе будет сложно изменить позже - так что я бы назвал это дизайнерским решением.

2

Для меня решение по дизайну будет включать или не поддерживать Async и Sync или просто синхронизировать связь в этом случае. Реализация будет заключаться в том, как реализовать поддержку сообщений Async или Sync.

+0

Это еще один способ сказать - что я имел в виду. согласен –

0

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