我已经设定了实现实时MIDI应用程序的任务。就像我迄今为止写的所有其他软件一样,我从编码开始。我实施了一个小的GUI(GTK2)应用程序,可以控制运输状态 杰克音频连接套件 及其客户。

我以前从未编写过实时应用程序,并且只写了一个多线程程序。这两个细节都结合在一起,使我成为我的重大挑战,因为我迄今为止写的所有软件都不需要我首先设计它。我偶尔只需要一支笔和纸来解决问题。

但是,这个项目不会让我进行编码。但是我对软件设计几乎一无所知,我是自学的(在1990年代中期打折了2年的计算机研究课程)。我一直在逐步工作,使某些事情正常工作,然后在基础上进行努力。

在我的研究中,我遇到了模型视图控制器模式,但是我发现很难不考虑细节,并且找不到任何基础,而没有发现使所有问题都跌倒的问题。

我需要建议来克服这个障碍。我需要停止寻找干扰我的思路。这是分心之一。我如何克服这个障碍?

有帮助吗?

解决方案

从广义上讲,“软件设计”是您将问题分解为一系列模块的过程,并指定每个模块的责任是什么,以及每个模块应如何与其他模块通信(如果有的话)。

有多种方法可以进行这项活动。考虑到这将是您的第一次尝试,请尽可能简单:抓住一些纸质纸和一支笔。

第一步:写下您的新应用程序必须能够执行的任务列表。此后,尝试将您认为逻辑上属于的不同集合中的任务分组。

对于每个子集,找到一个名称,将其写在空白表(一个用于子集)上,并在更详细地描述该模块的作用,包括它应该在哪种类型的数据和/或与他人交换。这些都是“模块设计纸”

在另一个空白表上为每个子集绘制一个框,用专有名称标记它,然后尝试从一个框到另一个框,每个箭头都应具有名称,并代表您的一个模块调用另一个模块。让我们称其为“接口设计纸”。

仔细检查您的模块描述,其中应提供给其他模块的接口,并查看是否需要更改为原始任务列表以及这如何影响他们管理的数据。

如果模块看起来太复杂/对您来说太大,则可以迭代细分。如果您在子模块中拆分模块,请绘制另一个接口设计纸,并记住,子模块的总和应该能够执行您最初为模块设想的所有任务,并能够回答其余部分的请求系统。

也可以看看 CRC卡 有关更多细节。

其他提示

在这个线程中有一些刚刚转换为插件,这是相当容易适应您的情况

带jquery的自定义下拉面板

编辑:出现从从上面的帖子中删除的选择中删除的下拉目的演示,我编辑了帖子并放回此小提琴

http://jsfiddle.net/6zcrk/

一种方法是讨论您的要求,并与熟悉DesignPattern和 设计 软件。在此过程中,您可以讨论应用DesignPattern的概念。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top