我需要为一个新项目建立一个软件开发团队。过去,通常所有开发人员都在应用程序的所有不同层上工作。例如,如果开发人员必须实施某些需要UI的功能并显示从后端检索到的数据,则将要求他们编写UI,业务层和数据访问层的代码(即从后端)。效果很好,我想这就是大多数开发团队的运作方式。
但是,如果您从一个只需要工作3到6个月的承包商团队开始,使用这种方法是否有意义?我看到的问题是,每个开发人员最终都可能编写不遵循任何统一模式的代码。当然,您可以花时间写一篇冗长的文档,概述要使用的设计模式,编码样式等。但这似乎是不必要的。
我当时想,一种更好的方法可能是,如果一个开发人员负责UI,另一个负责业务日志,另一个负责数据访问。这种方法的优势在于,他们每个人都可以在他们正在工作的层上有效地使用他们自己的框架和设计模式。当然,不同的层可能看起来有所不同,但每一层在其所有组件上都将是一致的。
您曾经采用这种方法吗?如果是这样,非常感谢您提出的建议。
答案 0 :(得分:1)
那是正确的方法。这里最重要的是API和您的协议。它更多的是团队管理问题,而不是架构本身。
考虑MVP设计模式。
首先,您应该设计UML和类图,以便每个团队都可以遵循正确的API。
例如,如果一个团队从事API调用和数据模型工作,则可以完成此操作。然后,他们可以提供接口和模拟实现。其他需要API调用的团队可能会使用这些接口。这样,两个团队就可以同步工作!
这意味着如果一个团队正在VIEW层工作,他们将知道PRESENTER想要什么或它如何工作。他们了解有关视图名称,对象名称等的所有信息。或者,如果一个团队正在PRESENTER层上工作,则他们需要模型控制器的接口(API)。因此负责模型层的团队必须提供这些API。
这意味着您应该在任何人开始编码之前就完成架构!
也认为模块化。如果可以将任何功能划分为不同的模块,请执行此操作。为这些模块提供API,然后该模块的开发人员可以使用他们想要的任何库来实现它。最后,所有模块将聚集在一起并构建最终应用程序。
答案 1 :(得分:0)
您可以考虑选择垂直切片架构described here by Jimmy Bogard。好处是,通过可以提前开发或在较短时间内开发的简约样板,可以将功能开发彼此完全隔离,从交付的角度以及开发过程的相互影响,可以提高安全性。此外,根据您项目的要求,您可以尝试应用CQRS,它还施加了一定程度的隔离(可以独立开发的命令流和查询流之间),但是不像垂直切片样式那样精细,但是好消息是您可以将它们组合在一起(请参见this演示文稿)。