我已经开始的工作在一个相当复杂的软件。它是一个个人项目,但尽管如此,我投入很多精力投入到它。现在,我用来工作的其他人的解决方案/设计或项目上,成长在一个非常可控的方式。

这一次,我开始两次码的基本知识和我的迅速发现自己陷进。所以我把一个休息和决定写下完整的解决方案之前编写一个单一的线。我做了什么(按顺序)是:

  1. 写字的使用情况的形式CLI命令(这是命令行程序)
  2. 写一些帮助
  3. 设计的课程,的数据文件的结构和功能的工作流程的各个部分。

现在,我真的很缓慢,在整个这一部分。我已经设置了一个人wiki和我用它来写这些规范,但我清楚地感觉到我的缺乏经验和明确的方法。

我意识到软件的设计是一个非常复杂的主题和这一pletora书已写入关于这一点,但我很想你分享你的经验/建议/办法。

工作时的个人、中型项目,什么你指定之前开始代码?怎么样?

在此先感谢

有帮助吗?

解决方案

工作时的个人、中型项目,什么你指定之前开始代码?

我指定 功能 说明:

  • 我们担心,这可能是太简单,如果我才刚开始编码(这是"如何"),忘记"为什么"和"什么"我想代码(针对"相当复杂的"软件,今后几个月或几年,这可能需要开发).
  • 我还希望了解,或多或少,"范围"为什么我会发展:为了评估大约(至一个数量级):
    • 多么大,它会
    • 我是否能完成它
    • 它是否值得开始
    • 什么样子,它可以制定第一个

为了 风险管理 我会加入一些我想要的制定暗含的使用某些软件,我不熟悉;为了尽量减少风险相关的是,我还做了一些扔掉的原型。

怎么样?

我所概述的一个 功能规范, 使用笔一张纸上。一些什么,我写了很高的水平(业务水平"远见"的文件),有的是较低的级别、更多样的设计(一些用户界面的详情)。有时候我停止和不解关于如何组织,但随后走上,推理, 每一页 或多或少凝聚力的关于每个主题,我可以拼图以后的关于如何组织的网页(多喜欢维基,也许).

我都做了,并没有指定 软件架构 提前:

  • 我开始发展一个基本构(几小组)中心,然后添加码;而且,正如我加入代码,如果任何分量太大而复杂的然后我细分成几个小部件...这是一个渐进的过程...因为它说,在 Systemantics, 一个复杂的系统,总是会发现,已经从一个简单的系统,该系统的工作。
  • 我不记录的结构;或者,相反,只有文件的结构是代码本身:例如,在其源代码被安排入来源目录,名字空间,并Dll。

我有一个理论上的理由的架构,因为它是现在,但我还没有记录这些原因:

  • 我唯一的开发
  • 实际架构的记录由代码
  • 原因结构都是在我的头上,并[再次]发现的东西喜欢的命名约定的源代码,以及各种零部件的依赖性

如果(如果)我不是唯一的开发,那么我可能会认为它值得记录的架构及其理由。

什么我上面所说的有关建筑的软件也是真实的 数据 其软件的进程。

作为对 测试, 我的代码一点,然后进行测试;或者写一个测试,然后码的功能,该功能将通过测试。我不做"大爆炸融合",即几个月的编写,没有任何测试。

一个最大弱点在(或事物缺失)我过程 估计办法了 在前进,然后跟踪执行情况对估计...这是一个之间的差异,这种'人'的项目过程中对一个付费的项目,我愿意做别人的商业化。我怀疑这是否是良好的,但:如果估计的最佳做法商业,那么也许我应该做它过在一个个人项目。

其他提示

有很多人有更好的体验比我帮你具体在这里,但是我有一点我认为是总是值得铭记.

你不需要得到其100%的完美第一次。事实上,如果你的目标是,你可能甚至从来没有完成。现实是你不会明白的设计完全直到你已经建立的系统的一次。

刚开始,持续推动转发,保持在最上层的单元测试的复盖范围,并作为你了解系统及其复杂性更好的话 逐步进行重构,以改善它.

基本上,屏幕。他们之间的界面用户和软件。所以我试图确定每一个使用情况(用户会搜索我的产品的用户将产品添加到地球童-的用户将会看看它的球童)和我创建了一个链的屏幕为他们每个人。

最良好的祝愿。

我找到一张空白纸和笔就是最好的起点:

  • 一些粗略的草图图
  • 草草记下些想法的笔记
  • 写一些伪码
  • 想通过主要使用情况
  • 认为潜在的问题

不要花超过一个半小时,不要陷入困境,在太多的文件或前的设计。开始编码只要你有一个模糊的想法的,你想怎么做到这一点。作为你的继续发展,您得到感觉的代码是否足够好或不行。如果你不快乐,想想什么你不喜欢,并开始了与这些经验教训记在心。重构经常并很快,越早越好。如果事情没有"感觉",它可能不是。

  1. 写信的使用的情况下,像你一样。
  2. 选择1的使用情况和实现它完全,并实现别无其他。这包括单位测试、帮助和错误的处理--的一切。叫这个版本1。
  3. 实施下一次使用情况。这可能只是增加了代码,或者可能需要完成的重新设计。它是好的,你知道你现在所做的。做一个新版本。
  4. 重复步骤3。
  1. 绘制的屏幕
  2. 画的关系数据(数据库或存储器)
  3. 开始编码
  4. 肥皂,洗净,重复(或者在程序员的行话GOTO1)

我会开始以最小的实施和增加更多的功能,在每一次迭代。

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