如何管理和开发大型TYPO3项目?

20

我从2006年开始开发TYPO3项目,项目变得越来越庞大和复杂。建立一个简单的CMS站点包括联系表单和新闻列表已经是例行公事了。

目前,我们完成了一个更大的项目:为一家国际公司打造一个平台,包含无数扩展功能:登录和注册,新闻,数据库记录列表,动态联系表单,调查和统计,内部网络功能:文档上传和下载,每个TCA修改的多个后端“微调"等等。

项目经理对我们开发人员感到不满,因为有时候,当我们完成X功能并提交Y功能到开发服务器后,X功能就被破坏了。这与typoscript设置、扩展依赖关系、版本错误或有时候是简单的编程错误和错别字相关。我知道如何解决后者,但总体而言:

从你的经验来看:

我们如何在TYPO3中开发一个无误系统,使所有功能协同作用而扩展不会互相干扰? 换句话说: 我们如何保障和隔离功能(扩展)-并避免那些依赖关系问题呢?

我们是一个由两名开发人员组成的DEV团队,我们已经使用了:

  • Subversion 存储库
  • 本地DEV服务器进行开发和测试
  • 外部typoscript配置文件,每个扩展拆分为单个文件

悬赏猎人的编辑:

我正在寻找一个最佳实践总结,它可能包括以下主题:

  • 一般的工作流习惯
  • 一般的编码习惯
  • 我们 Subversion 提交(或 Git)的可靠性
  • 单元测试(PHPUnit、Selenium?)
  • 部署(我还没有弄清楚自动化部署如何帮助我们)
  • Typoscript 最佳实践

使用众多自动化部署系统之一。查看英文和开发者邮件列表的存档。类似的主题经常出现。 - pgampe
谢谢 - 不幸的是,我在英语邮件列表中找不到任何关于“自动部署”的相关内容,但我会继续寻找。你能推荐一种适用于 PHP/TYPO3 的系统吗?我们已经考虑使用 PHPUnit 和 Selenium 进行测试,我认为这也可能是一个重要的改进。 - Mateng
请查看此处链接:https://usetypo3.com/good-practices-in-projects.html - Daniel
我投票关闭此问题,因为项目管理不属于 Stack Overflow 的主题范围。 您可以在 SoftwareEngineering.SEProjectManagement.SE 上提出这些问题。 - double-beep
3个回答

27

在大型TYPO3项目中,我们可能会发现的问题与任何开发项目并没有太大的不同。

一般惯例:

  • 使用持续集成平台持续部署工具进行配置;
  • 采用自动化测试的测试驱动开发;
  • 健壮的架构(dB、URL路由等);
  • 在开发过程中进行性能测试
  • 使用带格式注释的版本控制;
  • 使用强大的IDE,如PHPStorm、Eclipse、Netbeans;

常见的TYPO3惯例:

其他参考资料:

  • 使用TDD和最佳实践来管理TYPO3 (de)
  • 扩展程序可以帮助管理复杂的TYPO3安装:

    使用现代项目管理方法和工具

    • Scrum、看板和精益开发原则
    • 作为Redmine、Trac等Bug跟踪工具

    书籍:


    那看起来是一个广泛的收藏,谢谢。实际上我很少使用常量,而是设置 - 学到了一个细节。你个人有使用过Oliver Klees幻灯片中提到的扩展phpunit吗? - Mateng
    就我个人而言,每当我需要开发一些复杂的项目/扩展时,我都会使用它。 - Fedir RYKHTIK
    1
    更新:添加了用于大型TYPO3安装管理的推荐扩展列表。 - Fedir RYKHTIK
    您的Capistrano链接指向了约翰·卡匹斯特拉诺维基百科页面。请更新为https://en.wikipedia.org/wiki/Capistrano_(software)。 - José Ricardo Júnior

    4
    我强烈建议开始使用 PHPUnit 进行单元测试,但请记住,单元测试实际上是关于如何在编写代码时创建代码的,通常不是您后来添加的某些东西。当然,迟到总比不做要好。
    您应该考虑设置像 jenkins/hudson 或 atlassian bamboo 这样的构建服务器。后者非常好,并与 zend studio 集成,在我看来,这是在 PHP 开发中更好的选择。通常情况下,atlassian 产品被广泛用于软件项目。(尤其是 Jira + confluence + greenhopper)

    感谢您的输入。由于我们在Netbeans中开发,因此Bamboo仍然是一个好选择吗?因为目前还没有Bamboo Netbeans插件存在。如果没有Netbeans集成,使用它是否高效?此外,这种设置是否推荐用于TYPO3环境? - Mateng
    当然。Bamboo是一个独立的产品,集成可以让你直接在代码中获取构建失败的评论和指针。当然,你也可以在网页上看到所有这些,我甚至认为他们还有一个手机应用程序。不过不要只听我的话,去看看他们的视频吧。 - jornare

    2
    我还建议在Jenkins上设置phpunit - 可以参考http://jenkins-php.org/,不过我也听到了关于Teamcity的好反馈。然后,根据你编写的代码,设置单元测试(针对原始的PHP代码,可能带有一些模拟),集成测试(API和模块连接性)和系统测试(selenium)。
    一旦你每次构建后都运行它,你就可以确保至少覆盖了功能。但问题在于,你将花费更多时间编写测试及其支持,并思考可测试的代码。同时要记住,你无法覆盖所有内容 - 这不是重点。必须覆盖关键路径。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接