
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
软件开发生命周期的概念我们在前几期的文章中已经给大家介绍过很多次了,而本文我们就通过案例分析来简单了解一下,软件架构可持续性需要关注哪些问题。
如果软件产品能够满足当前需求(包括QAR),而不损害满足未来需求的能力,则可以认为该软件产品是可持续的。质量属性需求驱动了架构,满足关键QAR对于创建可持续的架构设计来说是至关重要的。不幸的是,随着功能增强的实现和新设计决策的制定,软件系统会随着时间的推移而“磨损”,这可能会延展甚至破坏初的架构设计。常见的“磨损”原因包括:
由于维护系统的开发人员对系统缺乏理解,初的设计决策也就过时了。与系统设计相关的决策和假设很少会被准确地记录下来。当人们不再针对系统提出问题或回答问题时,软件系统就开始衰退了。提出问题是评估软件系统健康状况的一种重要技术,如果有知识资源可以回答这些问题的话。
技术债务的累积会导致系统维护不再可行或不再具有成本效益,并且无法实现新的功能。
开发人员试图重用不同组件的代码块,他们认为可以通过对复用代码进行微小的改动来实现新功能。遗憾的是,他们可能无法完全理解原始代码所依赖的架构上下文,也意识不到在不同的组件中重用代码可能会在以后产生不必要的副作用,例如性能、可伸缩性或可用性问题。这些软件变更增加了技术债务,并降低了系统的整体质量,除非技术债务能够迅速得到解决。
技术的发展导致一些软件系统运行在不是为它们设计的技术平台上。一些较老的软件系统经历了“灾难性的成功”,因为它们持续存在的时间比初计划的要长得多,而且它们的技术债务已经变得非常沉重、难以解决且代价巨大,“偿还”起来非常困难。偿还技术债务的成本可能与完全替换该软件系统的成本类似,甚至有过之而无不及。
失败的假设。逻辑的主体,包括软件系统,终会因为假设的失败而崩溃,软件开发人员可能没有意识到他们所做的假设。隐藏的假设可以被认为是对系统的约束。关键在于要清楚地阐明所有的假设,并保持信息的更新。质量属性需求本身也是一种需要进行验证的假设,它们的实现需要经过经验的测试和确认,如果可能的话,可以使用自动化。性能、可伸缩性、弹性(例如,使用类似于Netflix猴子军团的框架)和安全性都是很好的例子。质量属性自动化测试的目标是持续对假设(例如,实现QAR仍然是现实的吗?)进行测试,并用以指导软件系统的演化。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。