【发布时间】:2015-03-31 19:09:20
【问题描述】:
我的公司坚持将 SCRUM 作为一种开发流程来维护和扩展我们的代码库。
我们的代码库没有文档记录,采用多种技术编写且高度耦合(无处不在的全局变量、过程 javascript php 代码以及后端大约 800 个 Oracle PL-SQL 存储过程、没有对象、隐藏的假设等)。当然没有单元测试。
此外,开发团队是新人,对现有代码几乎没有经验,而且绝对不是跨职能的,因为他们每个人都具有特定的技术知识(例如 javascript 但没有 PL-SQL)。
几个月前,当我们第一次尝试引入 SCRUM 时,我们惨遭失败
- 没有人愿意给出估计,因为他们不了解代码
- 编写单元测试是不可能的,因为添加单元测试需要更改,因为代码库需要几个月的重构
- 设置合适的测试环境本身也是一项巨大的工作 (收集测试数据等)
- 没有人想尝试更改属于“外来”技术的代码(例如,SQL 人员接触 php 部分)。
另一方面,用户故事确实以可用的形式出现,我们有一个相当好的流程来写下并向开发团队解释需求。
鉴于上述情况,我认为 SCRUM 可能不是最好的前进方式。但是,我想看看是否有人计划提出如何在这样的环境中使用 SCRUM。
【问题讨论】:
-
如何使用 SCRUM 特别是遗留代码库的问题?该问题与您选择的项目管理理念有何关系?
-
我的理解是 SCRUM 要求在 sprint 结束时有经过测试的用户故事实现。鉴于目前的代码库不支持单元测试(这就是我称之为遗留代码的原因),问题是我们是否可以采用 SCRUM。我们要么花太多时间重构要进行单元测试的代码,要么交付未经单元测试的用户故事。
-
还有其他类型的测试可以在不容易进行单元测试的系统上完成。有很多可用的集成测试框架。 Michael Feathers 的“有效处理遗留代码”可能也是一本好书。
-
谢谢。我读过这本书,但我发现其中的大多数技术都不能应用于编写糟糕、高度耦合的 PL/SQL 代码。其中很多是针对 OO 代码的,而关于摆脱全局变量的说法很少。然而,问题不在于如何重构遗留代码以对其进行单元测试,而是在请求对遗留代码进行更改时是否可以应用 SCRUM,而这些遗留代码不太符合“实施一点,测试一点,重复”的理念
-
您列出了采用 Scrum 的一些障碍,但它们似乎都与您的代码库有关,与流程无关。