设计复杂级别的软件?

时间:2010-02-15 10:23:20

标签: project-management writing

我正在编写一个看起来比我之前意识到的复杂得多的软件。它执行多个子任务,具有一组完全不同的任务,并将自身集成到其他应用程序,模块和编程语言中。我需要做几百个todo,而且一切看起来都太复杂了,无法直接思考。除了“只是写作”之外,有哪些设计软件的好方法?我需要以某种方式组织我的项目,我需要知道写什么,而不是先花一小时来弄清楚下一步该做什么。

是否有人遇到类似情况?

5 个答案:

答案 0 :(得分:7)

我想大多数开发人员都会遇到“哦sh **”的那一刻,当你意识到你被要求做的全部范围时:)

听起来你是一个单人团队,所以这是我的提示:

  1. 与客户交谈 - 不能强调这一点。您需要进行开放而诚实的对话现在。如果他们在棍子上要求月亮并且你得到了报酬,那么没有人会从这项努力中得到正确的结果。

  2. 将系统分解为高级功能(例如,应用程序将X导出到系统Y),与客户端合作以识别可以逐步实施的合理垂直切片并确定它们的优先级

  3. 在功能中组织并确定子任务的优先级

  4. 正如marcgg建议的那样,尝试将任务分解为可管理的块,我通常使用4天作为最大值,不超过这个,你不明白细节,不能准确估计,以便进一步细化。 然而并不总是需要估算所有细节。只要您和客户都明白可能发生的时间滑动,可以同意稍后改进。

  5. 获得像JIRA或其他任何东西的体面的任务跟踪工具。你想要从大脑中卸载任务杂耍,这样你就有能力实现解决方案。

  6. 请记住,运输是一项功能 - 不要在六个月内像疯了一样消失。定期继续提供原型(或者更好的正常工作版本以及不断增长的功能部分)并使用 客户端 客户端。

答案 1 :(得分:6)

在小任务(不到一天的工作)中分解您的项目。按组进行组织。优先考虑它们(也许你需要做特征X才能做到Y)。开始编码!


任何项目尽管很复杂,但只是一系列较小的任务。一旦你意识到这一点,就更容易集中精力并找到一种方法来接近项目。当然,将所有内容分解为小任务是工作而不是微不足道的。如果您对此没有经验,请尝试从同事那里获得帮助。但获得经验的最佳方式是尝试!

根据您的情况和个人偏好,您可以考虑使用敏捷方法,例如Scrum or Kanban。您还应该使用项目管理工具来跟踪您必须执行的操作。它可以是从帖子到pivotal tracker的任何内容,只需找到适合您的那个。

答案 2 :(得分:3)

尝试使用SCRUM& TDD。

计划短期迭代(1-2周),目标明确,短暂,尝试尽快创建一些端到端场景,并仅创建所需的基础架构。

使用TDD - 我发现当面对不明确的目标时会有所帮助 - 通过在编码之前编写测试,您可以一次专注于目标一个功能。

答案 3 :(得分:1)

看起来您需要在多个功能中组织软件,而不是将其作为单个意大利面条代码处理。

您可能希望使用一些形式来构建您的思维,例如用于静态架构的UML或用于动态架构的MSC。

答案 4 :(得分:1)

我只是处于规模小得多的类似情况中。但是,我希望这些提示可能会有所帮助。

  • 有一个设计会议(最好是与同事一起)来确定软件的粗略架构
  • 尝试将复杂的故事分解为可逐一管理的小型子任务
  • 编写单元测试 - 如果您认为现有设计不正确,这些将使您能够大胆重构代码,而不必担心破坏某些内容