软件架构开发与VS工具应用
1. 工作延期与技术债务
在软件开发中,有时会遇到架构可行但硬件未到位的情况,导致无法在实际生产环境中展示成果。此时,团队要意识到工作无法完全验证,也就不具备可交付性,只能将工作推迟到后续迭代。由于剩余工作量未知,风险会随之增加。因此,将未完成的工作记录在产品待办事项列表中非常重要,要保证其透明度,不能隐瞒。
如果团队每次迭代都将未完成的工作添加到待办事项列表中,却未能尽快解决这些延期任务,就会在待办事项列表中积累技术债务。就像银行贷款一样,随着时间推移,解决这些问题的成本会增加,团队需要付出更多努力,即“支付利息”。
另外,当团队在发布前还有多个迭代,且“完成定义”中包含过于复杂的服务质量(QoS)要求,如性能,也会出现类似问题。强迫每次迭代都满足所有QoS标准可能会降低团队的开发速度。所有QoS应尽早理解,但在某些情况下,为了在每次迭代中交付客户价值并保持价值的稳定流动以获取反馈,可以适当推迟满足这些要求。
例如,一个开发需要同时支持5000个用户的应用程序的团队,在每次迭代中,可以将支持1000个用户的测试作为“完成定义”的一部分,以避免减慢开发速度。但他们必须认识到,最终要达到支持5000个用户的目标,在接近发布时还需要进行一些额外的性能和扩展性调优工作。虽然每次迭代结束时并非所有QoS都能满足,但重要的是要理解所有QoS,并通过产品待办事项(PBIs)在待办事项列表中明确体现。
2. 可维护性设计
良好架构的主要价值之一是可维护性和可支持性。优秀架构的设计意图应该是让代码在未来能被他人轻松维护。可以设想一下,两年后有一位开发者接手你从未见过的代码,你希望他能顺利开展工作,这有助于你进行可维护