自行开发时的方法论/工具


10

假设您必须完全自行开发中等大小的软件。就像是您要完成的个人项目一样。

您将使用什么方法/工具来定义需要开发,学习的内容以及对系统及其详细内容有全局了解的全局?

基本上是为了保持自己的步调而不会迷路。


3
铅笔,纸和我的大脑。拥有白板会有所帮助。认真地说,我的大量设计工作都是在IDE中进行的。根据您当前面临的问题,您是否有一个特定的问题?如果我们明确知道您要解决的问题,它将帮助我们回答该问题。
罗伯特·哈维

@RobertHarvey哈哈这是真的。好吧,有点。我正在开发一个想法,个人项目。只是软件碰巧比我想象的要大,还有一些事情我仍然需要学习它的工作原理,然后找出如何开发它。
卡西欧(Cassio)

1
@RobertHarvey主要问题可能是缺乏对细节的头脑风暴,跟踪需要完成的工作以及对整个系统的看法。
卡西欧(Cassio)

2
我有99.9%的把握可以在另一个或两个问题中解决这个问题,但目前无法找到它们。
亚当·李尔

4
我总是试图迷路。这是学习的捷径。
乔尔·埃瑟顿

Answers:


5

通常我只是使用Mercurial,如果我想要一个功能,我就添加它,如果我不再想要它,我就删除它。另外,我会尽力撰写我的提交评论,以免迷路。


是的-Mercurial是其中一种工具,感觉像它们是Apple制造的:)简单而强大,美观而又有用……
Rook

4

它可能会轻易增长,超出您的注意力范围。不是跨度而是广度

很难一次考虑太多元素

然后...变成了回归过山车
您所做的一切都会破坏以前的工作,而回滚则无济于事。

为了避免这种情况,您应该积极测试回归
自动地。(否则您将无法做到并保持理智)

测试会给您的能量增加很大的压力。

如果项目全部关于UI ...您可能会敬酒:

  • UI测试很困难
  • 自动化的UI测试仍然很困难

面向UI的项目的未经测试的最新想法让
一位亲戚空余时间,并且喜欢单击鼠标作为UI测试员。
我在这里想“少年”

其他事宜:

  • 这将永远
  • 您将面对作家的障碍
    (它实际上不是作为条件存在的,这是人们因缺乏纪律而普遍使用的标签错误)

如果您习惯并喜欢某种版本控制,请使用它。现在
开始学习一个会分散你的注意力

作图出你的想法,正如已经指出的那样,可能会有帮助。

我使用了FreemindCMapsXMindyEdgraphviz等。

XMind不太有意义:

  • 非常地将数据插入
  • 自动布局
  • 严格尝试让您专注于话题
  • 采取很好的一课中的笔记(我这么希望我有它在大学
  • 仍然难以同时使用使你的头脑的东西你还没有明确出现。

铅笔和笔记本仍然在我的前十名中得分很高:

  • 扫描了很多笔记
  • 我做了很多小图。

    • (如果您使用图像思考,可能永远找不到令人满意的头脑风暴工具)

作为最后的选择,您可以随时为自己的消费准备PowerPoint:)


+1。但是,您对“下定决心解决尚未解决的问题”有什么建议吗?
卡西欧

@Cassio我确实在xmind和Pencil +写生簿之间来回切换,在libreoffice中创建指向列表,写下示例并测试一些近似实现。这是一个非常耗时的过程,但是您必须放弃一些有启发性的思路,才能找到感觉正确的东西。(PS:弄皱的纸在扔之前是导流的)
ZJR

1
@ZJR确实。有时我只是害怕写一些我不需要的东西,浪费时间,但是现在我看到了它是如何工作的。最初,我们写了一些无用的东西,但是随着时间的流逝我们会不断进步。:) 谢谢!
卡西欧(Cassio)

3

精通编程。

识字编程的实践者可以被视为散文学家,其主要关注点是对风格的阐述和卓越。这样的作者手头有同义词库,仔细选择变量的名称并解释每个变量的含义。他或她努力开发一个易于理解的程序,因为它的概念是以对人类最有利的顺序引入的,并使用了相互加强的正式和非正式方法的混合物。

如果您正在撰写有关项目的论文(或书籍,报告或文档),那么您往往会继续执行任务。

首先概述您的工作:用例概述,版本1,版本2,版本n。写下用例的摘要。优先考虑它们。让他们进入冲刺和发布。

每个发行版都有一个用例视图,逻辑视图,处理视图,组件视图,部署视图。对于sprint,请详细说明用例。发布HTML文档以显示要执行的操作。在详细说明了sprint的用例之后,编写逻辑模型。编写代码来支持这一点。编写处理文档。编写代码以支持它。创建模块。编写组件视图文档。编写测试和支持文档。将冲刺结果作为HTML文档发布。

对每个冲刺重复一次。不时查看和编辑您的文档。

有很多识字的编程工具。他们可以帮助您产生一个源文件该源文件可以从一个文本中创建文档代码。

我使用sphinxPyLit,但这是因为我是Python程序员。


擅长从中提取大学论文,然后再忽略它,如果打算以后发布或维护产品,则不好。无论如何,每个地方的每个人都应该使用doxygen,即使在python上也是如此。但这仅仅是因为我是粉丝:)
ZJR

2

如果您想写下您的想法,可以使用思维导图工具,例如XMindFreeMind。两种工具都是免费的(对于XMind个人而言),它们在集思广益和组织思想时非常有用。这些工具的作用就是让您忘记某些东西的机会更少。

在开始我的上一个个人项目之前,我亲自使用过Freemind。我本身没有特别的方法论。我只是每两天进行一次为时一个小时的会议,提出自己的想法。我认为,安排头脑风暴会议可以帮助我更好地了解问题所在,不重要内容,但在后续版本中可能有用,等等。

在我的第一次提交代码时,我还将头脑风暴文件保存在了源代码存储库中(我使用bitbucket),并用最新的思想更新了该文件。


很好。我已经在测试所有这些。谢谢!
卡西欧(Cassio)

2

像对待真正的软件项目一样对待它(因为它是一个)。因为开发人员的数量是一,所以只有几处改变。您仍然需要源代码控制。您仍然需要一种组织功能的方法,以添加要修复的错误。您仍然需要自动测试来检查您是否没有在代码中创建回归。您还应该有一种自动方式来编译代码(如有必要),运行测试并查看报告。

正如您所描述的,我正在从事一个个人项目。我正在使用Git,Redmine,JUnit和Jenkins来满足我描述的所有类别。我的工作流程是:

  • 选票上班
  • 分支代码库
  • 为任务开发代码和测试(在良好的保存点将更改提交到分支)
  • 合并分支回到主干
  • 验证构建成功,测试通过并且没有其他问题
  • 重复

保持所有内容的管理和组织与许多开发人员一样重要。对于许多开发人员,您需要进行组织,以便将信息传播给每个人。当只有您时,您已经拥有了所有信息,但是记住系统的每个部分都很困难。托管系统使您的工作更加轻松,您可以专注于手头的任务。


2

工具:

  • 控制版本系统(即使您是车库或家用个人PC中唯一的开发人员):GIT,Mercurial,Tourtoise

  • 即使您具有IDE(Scintilla,Vim,记事本),突出显示源代码的编辑器

  • 现实世界的黑板,白板,某些东西根本不适合您的Designer Tools应用程序。

  • 设计工具:Rational Rose,Umbrello,(UML,ER,)Visio,或诸如Power Point,Corel Draw,Open Office Draw之类的“开发人员设计工具差”

  • 文本/源代码文本比较工具,例如WinMerge


非常有帮助!我将所有这些都付诸实践。谢谢。
卡西欧(Cassio)

1

这取决于您如何区分和处理不同的任务,因为您需要查看开发过程的每个步骤。

我认为工具只有在您已经知道如何使用它们的情况下才有用,而最严重的错误之一就是学习工具的工作原理,而不是学习如何使用它。

首先,在我看来,您必须写下您希望软件能够完成的工作,特别是不能执行的工作。这是关键点。下一步是将最终系统划分为较低的子系统,从而使构建过程更加容易。最后但并非最不重要的一点是,您需要选择工具。基本上,一个好的IDE,一个VCS和一个数据建模器。您可以添加许多其他工具来提供帮助,但请注意不要误入歧途。

好吧,开始似乎没有那么吸引人,但是随着时间的流逝,过程会变得很有趣。


是的 请记住,如果项目设计良好,则代码只是整体的一小部分。
Lucas Maus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.