51Testing软件测试论坛

标题: 软件质量之路(1): 软件质量框架 [打印本页]

作者: 测试积点老人    时间: 2018-12-20 16:40
标题: 软件质量之路(1): 软件质量框架
本帖最后由 测试积点老人 于 2018-12-20 16:42 编辑

简介: 软件质量的重要性是不言而喻的,但是当所有人都意识到它的重要性的时候,却很少有人能够清晰的描述出如何才能够提高软件质量。软件质量框架的目的就在于提出一个评价的原型,帮助我们分析一种方法和技术是否能够提高软件质量。本系列文章分 日构建、 测试驱动开发、 建立核心框架、 面向组件的大规模软件架构来进行深入的分析。



什么才是一个高质量的软件?

在讨论软件质量原型之前,我们先回答第一个问题。一个软件之所以被认定为质量优秀,并不是因为它获得了一个省级或部级奖,而是它的内在具备了这样一些特性:



软件质量框架的组成
软件质量框架不是理论,而是优秀软件开发思想的一个应用,是对软件开发过程的有效管理实践。它以敏捷方法论为基础,并将先进的软件开发技术融入其中。您可能在之前听说过,学习过,尝试过各种软件技术,但是缺少一个统一整体的认识。所以,软件质量框架的目的是将您原先在脑海中就存在的思路进一步的整理,将一副完整的图像(big picture)展现在你面前。软件质量框架偏重应用,所以不会涉及太多的理论,但是,它是基于理论的,所以,在需要理论支持的地方,我们会简单的描述理论,并给出必要的链接,供有兴趣的读者进一步阅读。

软件质量框架并不复杂,它由几个部分组成,第一部分是前提,说明了软件框架的适用范围,以及适合的环境,和方法学一样,没有泛之四海皆准的方法学,所以软件质量框架也需要一个上下文环境。第二部分是价值观,价值观说明了软件质量框架中强调的价值,在软件框架的结构和实践中,都将充分的的表现出一开始我们定义的价值。第三部分是结构。结构定义了软件质量框架的组成部分,以及软件质量框架和开发过程之间的关系。第四部分是文章中着墨最多的部分,即优秀实践。优秀实践通过具体、实际的分析、举例,深入阐述了软件质量框架的价值观和结构。

在本文剩下的篇幅中,将会对前三个部分进行阐述,并对软件质量开发的实践进行简单的描述。在剩余的篇章中,将会针对这些实践进行细致的分析。

软件质量框架的前提
平台前提:由于软件质量框架的实践将会涉及具体的技术和代码,所以我们首先为软件质量框架定义了平台。软件质量框架将会运行在J2EE平台上,使用对象分析技术(并不一定是面向对象技术,我们可以采用以数据为中心的技术)。

组织前提:执行软件质量框架需要投入,需要付出,软件质量框架最难的地方不是学习,而是执行。在一个组织中,需要评估应用软件质量框架需要多少的投入,对目前的开发过程有多大的助益。一般来说,组织的规模越大、其开发过程和产品越复杂,就越适合采用软件质量框架。

方法学前提:在敏捷方法学中,对规则和秩序有两种不同的观点,一种是强调规则和秩序,以XP为代表,它对代码都有要求;另一种则不那么强调,以自适应软件开发为代表,它不要求程序员的具体行为。软件质量框架采用第一种观点,要求组织中存在严谨的规则和秩序。


软件质量框架的价值观
明确具体:对软件的管理必须是明确具体的。软件开发是工程、也是艺术,需要紧密的协作和沟通,任何一个含糊的指令都可能导致软件开发中出现错误,所以,在软件开发中,任何一个指令都应该是相对明确的。为什么说是相对呢?是和成本相对,指令越明确,成本就越高。例如,你可以把需求文档写的非常的具体,但是你需要付出制作和维护的代价。所以我们的明确性是一个考虑成本前提下的特性。

明确具体要从综合上考量。怎么理解呢?例如,XP中的用户故事是非常不精确的,按道理说它是不明确,也是不具体的。但是在整个开发周期中,将会有迭代、测试、现场用户等多种手段使得用户故事明确具体起来,所以从整体上看,它并不违反我们的价值观。产品质量是一个系统工程,决不仅仅是QA部门的工作,。这个道理适用于制造业,也适用于软件开发业。

容错:软件开发是人的工作,人是无法避免错误的。所以,软件质量框架中允许犯错。因为不犯错是天方夜谭。你就算做了这方面的强制规定也无法避免它的出现,反而会引发其它的问题,例如隐瞒错误,或为了隐瞒错误而导致的额外成本。所以正确的态度是允许发生错误,并建立一套监测、管理、反馈、修改错误的体制。

规范:在前提中,我们已经提到了,规范是软件质量框架的基本态度。所以,软件质量框架中强调规范,并使用规范来推动框架的运作。

测试:软件质量框架非常强调测试,测试是保证质量的必由之路。测试要尽可能的多,尽可能的频繁、测试结果要尽可能快的反馈。这是软件质量框架对测试的基本态度。测试是综合性的,软件开发过程中的所有工件,都需要伴随着相应的测试工件。这是基于一个简单的理念,如果你不能够为你的工作制定一个完成的标准,你又该如何开展你的工作呢?


软件质量框架的结构
上图表现了软件质量框架的结构。处于结构核心的是技术架构和管理架构。软件质量框架既不是方法学,也不是一个软件,更像是两者的结合体。技术架构和管理架构的融合体现了这一特性。软件质量框架并不关心单个开发人员的效率,它关注的是开发团队整体的效率。因此,管理架构在框架中的意义在于它定义了一套软件管理的方法,能够对开发人员及其他们的工作进行管理。从这一点来看,它的作用和软件工程方法学是一样的。但是,在现实中我们发现软件组织在迈向软件过程的途中往往因为现实的困难而止步不前。其中一个主要的原因是在引入方法学的过程中生产效率降低了,而引起组织成员对变革的怀疑和不满。

所以,除了管理架构之外,软件质量框架还提供了一个技术架构,其目的是明确的定义如何应用组织中涉及的软件技术,以及管理软件技术的方法。技术架构是具体的代码,相比起方法学来说,它更加的具体,更容易为开发人员所理解。而技术架构存在的目的,一方面是进行技术积累,另一方面也是为管理架构服务。

技术架构和管理架构的下一层是支撑框架。支撑框架包括代码、组件、文档,目的是为技术架构和管理架构提供底层的支持。

处于结构最顶层的是业务架构。这个部分对于任何一个软件组织来说都是不同的,因为不同的软件组织的业务不同。业务架构的目的是对业务进行建模和抽象,提取出可重用的部分,以提高软件组织的生产率。本文中不涉及该部分的内容。


软件质量框架的优秀实践
一个开发团队要提高效率,就需要思考目前的管理活动中有哪些要素是可以改进的:如何把一些事务性的操作变得自动化,从而节约人力;如何找到更好的方法,让开发过程更为合理,更注重软件的质量;如何在团队中传播优秀的思想,让团队成员不断的学习和进取,自发的改进过程。这些美好的愿望几乎是所有方法论和各种认证的共同心声,但要完全做到可就太难了。在我们的文章中,提出了一些优秀的实践,优秀实践均是来源于软件开发界中的一些新思路和新理论,它们能够为以上愿望的达成起到正面的作用。在组织中引入用这些实践决不是一个容易的过程,但它们确实非常的有效。不论是在成本控制上,还是在质量的改进上。






以上的几个优秀实践看起来似乎并没有多大的关系,他们的提出者也大都不同。但是有一点却是共同的,就是他们都能够对软件质量的改进起积极的作用。此外,他们为软件质量框架结构的实现提供了一个明确的实现方式。从软件结构的角度来看,日创建和测试驱动开发似乎偏向于管理架构,而建立核心框架和面向组件编程则偏向于技术架构。事实上,他们既包含了技术架构,也包含管理架构,彼此之间也有相互关联。例如,面向组件编程在合理划分组件之后,就需要一个有效的核心框架来集成组件,通过每个组件都需要采用测试驱动开发方法来保证质量,同时,日创建将会以组件为单位来进行每日的创建,从而为进度估算提供有效数据。

随着软件设计技术的发展,新的实践将会出现,取代旧的实践。因此,以上的实践也会落伍,当可以肯定的是,以上的实践和具体的技术并没有直接的关系,更侧重于开发思想,因此他们的生命力会很长。而随着新技术的出现,他们更可能将新的技术融合如自身,呈现出一种崭新的形态。例如,未来的一种可能性是UML2.0和MDA技术的普及,以上的几个实践从以代码为核心转变为以设计为核心,而另一种可能性是随着以AspectJ为代表的AOP技术的普及和J2SE1.5中引入的元数据机制,面向组件编程将把Aspect作为组件的一种,而测试驱动开发也会加入测试Aspect的相关内容,在日创建中也会增加相应的处理AOP的步骤。


在接下来的几篇文章中,我们就针对这几项实践来进行深入的分析。



作者: makeufun    时间: 2018-12-20 20:26
感谢分享!!!!!
作者: makeufun    时间: 2018-12-20 20:27
感谢分享!!!!!
作者: makeufun    时间: 2018-12-20 20:29
感谢分享!!!!!
作者: makeufun    时间: 2018-12-21 09:10
感谢分享!!!!!
作者: makeufun    时间: 2018-12-21 09:23
感谢分享!!!!!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2