以我的经验,当业务流程发生变化时,与业务流程保持一致的软件更容易更改。哪种类型的架构最适合这种方法?
2 回答
好问题...但首先... SOA?这是一个很棒的流行词,但经常被误解,主要是由于缺乏任何一个“真实”的定义。见鬼!甚至 Martin Fowler 现在也将其称为“ServiceOrientedAmbiguity”,并鼓励人们完全避免提及它。
真的没有“一个”“最好”的答案。企业对 IT 的要求可以是:通常是;相当多样。这些需求通常受到外部驱动因素的影响,例如客户、合作伙伴、市场趋势、立法、监管机构等。在许多情况下,这些驱动因素决定了架构,或者至少会妥协或限制您完全实现您认为可能是“更好”的能力“ 建筑学。这听起来也很油嘴滑舌,但这不是我的本意。存在“最佳”架构这样的概念导致许多人继续在追求中浪费大量的精力(和金钱)。尽管可能不是故意的,但这些观点通常得到了成为单个供应商/社区代理的人的支持,
尽管如此……从软件工程的角度来看,旧的原则仍然是确保您能够满足业务需求的最可靠方法。例如,
- 分开你的顾虑
- 分层架构
- 考虑到灵活性的设计
- 单独测试层,然后一起测试它们
- 采用持续集成实践使回归更快可见
- 使要求和规范成为您的主要驱动力
- 投资于工具,投资于您的开发人员
- ETC...
请注意,没有提及任何一种架构模式、技术或语言……这是因为这些并不是真正的驱动因素,尽管它们可能是推动因素,并且会因各种因素而改变。让我再谈一点。“业务流程”和软件工程流程有非常不同的关注点、观点等……强迫任何一个组与另一个组发挥相同的作用只会导致彻底失败。这并不是说他们不应该分享诸如日期、功能可交付成果等承诺。这些团队需要与众不同才能有效地完成工作,但肯定需要找到方法来传达需要共同愿景的事情。这是任何数量的设计和生命周期管理流程都可以提供帮助的地方。(例如 DDD、MSF、SCRUM、CMMI 等...)。
我的意思是这是建设性的......希望它有所帮助。
油嘴滑舌的回答:企业架构。
你真正在寻找什么样的答案?以我的经验,每个企业都有独特的需求,尤其是当涉及到他们想要发展的方向时。可修改性只是理想的品质之一,它通过成本控制、上市时间、效率、安全性、可用性和群里的其他人。