本文将描述用于了解现有软件体系结构质量的方法。这里的目的不是为软件体系结构评估或质量研究工作提供全面的参考,而是提供对该领域中有用方法的描述。此项工作处理以下问题:如何能够更好地了解和增强某个软件体系结构?此问题存在不同的答案;本文的中心思想是质量可以通过体系结构评估得到改进。
在本文中,了解四种由卡内基梅隆大学的软件工程协会(Software Engineering Institute,SEI)定义的软件体系结构评估方法。
在适当的情况下,活动将定位在由 Rational Unified Process (RUP) 指定的软件生命周期(software life cycle,SLC)模型中。选择该模型是由于它在整个行业的现代开发工作中的普及性。有关与这里描述的方法的集成有关的更多信息,请参见参考资料。
在我们讨论特定的评估方法之前,下面几个部分将详述一些关键的背景概念。
定义质量并不像看起来那么简单。起初,该概念可能类似于“质量就是好的东西”或“质量就是好的工艺”等等。在几乎所有领域中,每个人都认同质量对于实现成功结果的重要性。例如,在团体性运动中,团队的融洽性经常意味着胜败之间的区别。在烹饪上,高品质的配料通常标志着普通餐与高档餐之间的区别。可以将这样的正面涵义应用于软件质量:质量越高,项目成功的机会就越大。
项目通常具有提高质量 的目标,同时还要将增加功能 和缩短日程作为目标。这通常是不可行的,因为实际只能实现三个选项中的两个选项,而无法同时实现所有三个选项。例如,质量和功能的增强需要花更多的时间来完成任务。如果没有计划更多的时间,人们不得不在每个任务(包括测试)上花更少的时间,从而可能影响他们的工作质量。
方法 减轻了这三个方面之间的依赖性。例如,如果存在一种允许更高效地添加功能的方法(也许是添加一个简单易用的专用 CASE 工具),则日程和总体质量可能不会受到同样程度的影响。本文稍后描述的方法可帮助处理依赖性,并重点集中于改进质量。
了解如何提高质量应该是任何软件工作的优先考虑事项。在能够改进质量之前,需要对质量进行测量和分析。质量属性提供了测量和分析质量的上下文。
质量属性是刻画特定上下文质量的元素,例如性能、安全性、可移植性、功能等等。这其中每个属性都不是绝对量;它们的相关性直接与给定的情形联系在一起。例如,如果某个客户不太关心可移植性(也许所有系统都在运行相同的操作系统),而是非常关心性能,则性能将优先于可移植性。这允许按照对客户有重要意义的方面来组织任务。
为了能够正确测量属性,必须进行进一步的任务分解。例如,可以将性能属性分解为数据延迟和事务吞吐量。此时,要使用的可能指标就变得更明显了。可以将这其中每个细化后的实体进一步分解为特定的场景,这是引出需求信息的理想方法。
需求和质量属性之间的关系有助于了解软件体系结构的适用性。如果没有这样的映射,要真正了解为什么在体系结构中设计了某些功能就会更加困难。是因为该功能对设计人员有意义吗?它是商业杂志一直推荐的功能?或者它是参与者指定的功能?需求与质量属性之间的关系还可以帮助有效地确定工作优先级,因为它帮助阐明了对客户非常重要的方面。
您可以使用质量属性来限定特定的场景,这些场景可用作引出进一步设计细化的理想工具。
软件体系结构允许交付复杂的软件系统。软件架构师并不是集中于每个细节,而是集中于对手边的解决方案具有高度影响的细节。与建筑物的建筑师一样,软件架构师并不太关心浇注水泥以建造房子所必需的详细技术,而是关心所要建造的特定房子的可行性。给定现代软件项目中的解决方案元素之间的互连性质,要让一个人去跟踪所有这些元素是相当困难的。软件架构师最重要的任务之一是通过确定对成功最相关的元素,从而将复杂性分解为可管理的多个部分。下一步自然是研究质量、质量属性和软件体系结构之间的动态关系,以更好地了解如何能够提高质量。要高效地实现该目标,应该遵循如本文所述的恰当的分析方法。
文章来源于领测软件测试网 https://www.ltesting.net/