敏捷/XP 可以与分层方法一起使用吗?
敏捷/XP 应该与分层方法一起使用吗?
将源代码分层需要额外的努力,从而显着增加开发时间。
注意:“层”是指带有 POCO、DA 等的单独组件。
敏捷/XP 可以与分层方法一起使用吗?
敏捷/XP 应该与分层方法一起使用吗?
将源代码分层需要额外的努力,从而显着增加开发时间。
注意:“层”是指带有 POCO、DA 等的单独组件。
Agile/XP 是一种管理项目活动、可交付成果和时间表的方法。
分层(N 层)应用程序是一种提高可维护性、可伸缩性和团队成员分离责任区域能力的方法。
它们彼此之间没有太大关系,只是如果你不熟悉它们,它们都需要额外的时间投入。与传统的替代方案相比,如果使用得当,两者都会提高项目的质量。
Is it sensible to have several teams working together on an Agile project? Yes: I've worked on a large-scale project with 200+ developers across 15+ teams. There were about 20 or 30 services in all.
Can this be done with specialised teams? Not really.
Can the members of the teams have specialisations? Yes, but you really need generalists with strengths in some areas rather than people who only know one thing and won't touch anything else.
两者完全正交。
在 XP 中,您逐个功能地开发系统功能。当您添加功能时,您会不断重构系统以确保其实现尽可能清晰。层通常会脱离该重构。如果该架构合适,层或其他大型架构结构(如 SEDA 或 REST)也是如此。
在我看来,敏捷警告“你不需要它”并不是要完全避免复杂性,而是要避免增加不必要的复杂性。确实,单元测试的好处之一是建立了一个学科,您可以在其中无所畏惧地进行重构,从而使事物在它所属的地方结束,而不是在它可能开始的地方结束。
所以重点不是要避免层(或层,如果必须的话)——重点是要避免糟糕的层。
我认为他们真正的问题是应该让开发人员在团队中按层划分——如果你有一个 html 开发人员、一个 js 开发人员、一个中间层人员、一个消息系统人员和一个 dba 一起工作来构建一个 CRUD 表单,或者您应该按功能构建并让一个人拥有线程。后者在敏捷中更可取——专精通才优于专家。