问题 如何在没有过度工程的情况下开始在纸上设计我的程序?


在开始编码之前,我有兴趣开始在纸上正确设计我的软件。这是什么标准方法?

我正在考虑UML的一些内容,但我觉得这对于一个单人项目来说有点过分。

专业人士认为在开发爱好项目时最好做些什么?

预计投票将像往常一样关闭,这不是争论性的。这是一个明确的答案,我期待建立一些东西。 :P


11615
2017-10-27 23:13


起源

放入社区维基然后...... - jldupont
确定将其设为维基。 - Sergio Tapia
作为一般性评论:不要指望预先设计整个应用程序实际上是可行的。在您回到需求分析或设计之前,您将分析您的需求,设计和实施,这将是一个迭代过程。 - sebastiangeiger


答案:


我尝试将问题通常分为两个不同的问题:

  • 谁参与(这是课程的好候选人)
  • 正在发生的事情(类似地,这往往是很好的方法,也是人们可能希望关注以建立性能要求的事情)。

例如:当在一组可能的汽车中搜索最便宜的汽车时,我会将“最便宜的”识别为可能想要成为单独功能的东西,因为我可能希望稍后更改条件,或将其应用于SUV。好吧,'汽车'和'汽车'听起来像是我在问题领域需要的课程的好候选人。

建立那些:

  • 在问题描述中搜索动词:那些make方法
  • 在问题描述中搜索名词:那些使类成为可能
  • 找到约束,以及它们的相关性:最便宜的某种属性,或者更确切地说是操作的结果?

最终,我将这些关系进一步绘制为伪代码和小原型,以便了解问题描述中出现的其他未知约束。


6
2017-10-27 23:17





对于这种事情,我通常会勾画出基本的用户界面,绘制出一个域模型和一个数据库模式。我总是从纸上开始然后如果我认为有必要我导出到visio / basalmiq。


3
2017-10-27 23:17





对于简单的程序,我将使用纸和笔绘制其UI的草图,在其上做一些注释。它可以帮助我澄清我的想法并确认我的设计。

如果程序更大(更像是我所说的完整产品),您可能需要收集其他人的一些反馈,因为一个人的想法无法涵盖所有​​内容。手绘草图仍然有效,邀请更多人查看它并给你一些建议,因此你可以大大改善你的设计。但是,如果您的朋友不在身边,您可能需要将纸质草图传真给他们(或者扫描纸质草图并通过电子邮件发送)。

有一些工具可以帮助您创建UI原型,其中一些甚至允许您运行UI的模拟(如Axare和ForeUI),这对收集其他人的反馈非常有用。


2





这在很大程度上取决于事物的数量,最重要的是你在做什么。

1)我的第一步是宣布你在做什么。听起来很简单?有时不是。列出您希望程序执行的操作。列出必须拥有的东西,什么是好东西以及什么是可以拥有的(包括在内的麻烦不多)。

2)第二步是(尽力而为)确定项目成功的最薄弱环节。如果您正在编写WebDB,您应该担心的是Web UI(从页面转换到另一个页面)和数据模型。如果您正在编写游戏,游戏规则将非常重要。或者如果游戏具有高度的互动性,那么你应该考虑游戏流程的相互作用。

你在这里确定的是你应该花时间在纸上设计它。

由于识别可能需要经验并且您可能没有(如果您这样做,您将已经知道该做什么,正确:-D),您可能会在项目进展过程中回来查看一次。

3)为避免过度工程, 专注于建模理解,反对建模作为文档

4)一旦你了解更多,尝试创建一个小程序来检查是否可能。如果您,确定其他关键但有风险的部分。

5)从小开始,但总是考虑扩展。对我来说,做大做是可以的,但做大做是冒险的。

这些都是我做的。希望它会给你一些想法。 :-D


1





在夹克口袋里面没有像迷你记事本那样的东西,想要尽快转储,我个人在迷你UML和点之间切换。快速,简单,始终可访问。

编辑:我总是有一个专门用于特定用例和操作的页面/区域。这允许我回来检查系统是否可以处理这些中的每一个。


1



点数?那是什么? - Jim Deville
@James:点点我假设theraven意味着点数列表,一开始就有点或子弹。与HTML <ul>类型列表的默认外观一样。 - quick_dry
是的,旁边有一个点的列表:)将问题/应用程序分解为“区域”并进一步用缩进分隔(列表列表) - theraven
@James Deville:我相信通常被称为“子弹点”。 - Teddy
点点通常后跟字线。 - RedWolves


我使用UML并不是因为它是事实上的行业标准,而是因为它可以帮助您在探索域(无论是个人还是业务)时组织和记录您的想法。免费工具是ArgoUML。

我会将UI作为另一个辅助工具,用于计算和传达您认为自己想要在系统中执行的操作。 Balsamiq Mockups是一个很棒的免费游戏。

我首先关注行为,最后关注数据。请参阅Rebecca Wirfs-Brock的着作。

祝你好运!标记


1





我的一些“伎俩”:

  • 我首先使用思维导图(例如MindMeister)。

  • 然后,我找到了可能的“困难点”并做了一些轻量级的原型设计


0





我发现首先勾勒出用户界面非常有助于找出所需的功能。然后我想为每个UI元素制作一个列表以及它应该做什么。一旦完成,我通常会写出一个数据库模式......


0