更常见的是,开发软件可用的技术和方法受限于你周围的人。比如下面这些。 你的开发团队有多大?他们有什么技能?如果你的开发团队需要扩展的话,能有多快?如果需要的话,你能够提供培训、咨询和专家吗?如果在交付后转交你的软件,接手的维护团队拥有和你的开发团队相同的技能吗?如果你让一个Java团队构建一个微软.NET解决方案,相当于给他们当头一棒。因此,当你架构一个软件系统时,也要把人考虑进来。