当我尝试为请求编程解决方案时。我无法区分实施问题和设计问题之间的区别。

您如何特别表达设计问题?

有帮助吗?

解决方案

首先:设计从更高级别的视图中查看系统,而不是实现。

每个软件问题都具有设计和实施方面。在设计方面,您需要知道该请求如何符合您当前的实施。如果您没有当前的实施(它是一个新项目),则需要权衡项目的所有期望方面,以确定一切都将如何结合在一起。您应该在担心实施之前执行此操作,因为实施取决于这项工作。

在您对系统的外观有了一个想法之后,然后进行操作。只需开始实施您的解决方案的想法即可。您很可能会在实施过程中意识到,您忘记解决了问题。发生这种情况时,请放慢脚步,回答设计决策,然后实施。

如果您的客户问您直接编程请求,那么您绝对不应同意一个确定的答案,而无需一夜之间考虑。这将使您可以考虑他们可能尚未意识到的替代方案。客户可能(并非总是如此,但可能)听说过一项新技术,并认为他们必须拥有它。作为开发人员,您需要出于明显的原因使用技术,并且“因为客户说这太棒了”不是一个很好的理由。

在很小的程度上,软件开发中的所有内容都是相关的。使用瀑布方法(仍然用作当今许多方法的基础 - 也许是另一个主题)可以根据需要进行小型上游调整。也就是说,设计从更远的观点然后实现了系统。以此为手段来确定问题地址的层次。

其他提示

设计问题是实施问题的一个子集,因为从技术上讲,一切都是实施。

设计问题具有明显的好处,要求您更改大型代码以使其正常工作。如果您由于此要求而必须重新连接程序,那是一个设计问题。祈祷不是。

您可以说:设计是一种实现问题。您会收到一个请求,有时这是一个直接的实现(将X添加到y,修改A,B和C),但有时需要更广泛的更改(重构!)才能使其直接进行。第一个是实现问题,第二个是设计问题。

您可以说:实现是一种设计问题。您收到请求,必须设计解决方案。您符合一些设计目标(更快地使X更快或更可用),然后设计其余的目标,以便它以不阻碍您将来的设计目标的方式工作。第二个是实现,但整个过程是一个设计问题。

您可以在UML或草图/漫画中表达设计,因此您可以说设计问题是您要绘制的要解决的问题,而实现问题是您编写要解决的代码的东西。您将希望您的设计足够具体,以告诉您哪些要素符合您的要求和目标,但并不是那么具体,以至于重复实施。确切的平衡很棘手,取决于您的受众(如所有沟通中),并需要时间才能正确。

通常,如果我记得我的瀑布方法学的东西,通常会有设计。用于解决问题的一般想法是我如何看待设计以及可能在设计级别选择问题的设计模式或其他现有解决方案。该实施的所有细节是采用一般性和假设和使其真实的东西。这有点像尼尔的回答。看到这一点的另一种方法是,设计是建筑师完成时所拥有的,而实施是开发人员所做的,至少在我相信的更大的项目中。

许可以下: CC-BY-SA归因
scroll top