知识卡片
开发期质量属性与内部质量对外部质量的制约
内容
开发期质量属性覆盖软件开发、维护、移植三类活动相关的所有质量属性,这里的”开发”是相当广义的——它们是开发人员、开发管理人员、维护人员最关心的,对最终用户而言只是间接促进用户需求满足。六项开发期质量属性分别是:易理解性(设计被开发人员理解的难易程度)、可扩展性(为适应新需求或需求变化为软件增加功能的能力,实际工作中常被称为灵活性)、可重用性(重用软件系统或其一部分能力的难易程度)、可测试性(对软件测试以证明其满足需求规约的难易程度,主要指单元测试、插桩测试等的难易程度)、可维护性(为了修改Bug、增加功能、提高质量属性三种目的之一而定位修改点并实施修改的难易程度)、可移植性(将软件系统从一个运行环境转移到另一个不同运行环境的难易程度)。理解开发期质量属性的地位,关键在于一组对照关系:可以务实地把运行期质量属性和功能性一起视为”软件的外部质量”,把开发期质量属性视为”软件的内部质量”——内部质量制约着外部质量,在软件开发管理本身已经十分复杂的今天,想让内部质量很差的软件具有良好的外部质量几乎是不可能的。这个制约关系解释了为什么开发期质量属性越来越受重视:随着商业环境变化加剧,很多企业软件出现”建成即废弃”的尴尬情况,通过强化可扩展性、可重用性、易理解性这类开发期质量属性,能让软件有更多被改变、被重用的空间——换句话说,开发期质量属性不是”锦上添花”,而是决定一个系统能不能”活下去、改得动”的底层能力。
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第5章《需求分析》"5.3.3 质量"节(源文件:_epub-src/OEBPS/text00008.html)
- 结论依据:原文逐一定义易理解性、可扩展性、可重用性、可测试性、可维护性、可移植性六项开发期质量属性,并说明"务实地,我们可以将运行期质量属性和功能性一起视为'软件的外部质量',而将开发期质量属性视为'软件的内部质量'。无疑,软件的内部质量制约着软件的外部质量",直接支撑本卡片结论。
- 原始内容:可扩展性(Extensibility)。可扩展性是指为适应新需求或需求的变化为软件增加功能的能力……软件的内部质量制约着软件的外部质量;在软件开发管理本身已经十分复杂的今天,想使内部质量很差的软件具有良好的外部质量几乎是不可能的。