敏捷开发过程中如何开发高质量的软件.docx

上传人:b****1 文档编号:238435 上传时间:2022-10-07 格式:DOCX 页数:11 大小:168.15KB
下载 相关 举报
敏捷开发过程中如何开发高质量的软件.docx_第1页
第1页 / 共11页
敏捷开发过程中如何开发高质量的软件.docx_第2页
第2页 / 共11页
敏捷开发过程中如何开发高质量的软件.docx_第3页
第3页 / 共11页
敏捷开发过程中如何开发高质量的软件.docx_第4页
第4页 / 共11页
敏捷开发过程中如何开发高质量的软件.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

敏捷开发过程中如何开发高质量的软件.docx

《敏捷开发过程中如何开发高质量的软件.docx》由会员分享,可在线阅读,更多相关《敏捷开发过程中如何开发高质量的软件.docx(11页珍藏版)》请在冰豆网上搜索。

敏捷开发过程中如何开发高质量的软件.docx

前言

什么是软件质量?

很多技术同仁都认为软件质量是软件是否存在Bug,是否性能高,安全性好等等。

其实软件质量的含义远多与此。

质量就是软件产品对于某个(或某些)人的价值;价值是指创造利润,又或是降低成本。

总的来说,软件质量是软件的灵魂和存在意义。

另外,我们知道现在敏捷开发日趋流行,其实敏捷开发也是顺应市场的对价值的诉求和日益复杂的业务而产生的方法论,敏捷开发是追求高质量软件的方法论和过程。

本文将和大家一起探讨软件质量的含义,以及敏捷开发中如何进行高质量软件的开发。

软件质量的理解

首先,我们先来看看什么是软件产品质量?

先有了软件质量定性的了解,才能介绍如何影响、控制和改进质量。

大师温伯格在《质量·软件·管理系统思维》说到:

“质量就是软件产品对于某个(或某些)人的价值”(某个或某些人文章中统称之为用户),这里面包含两个层次的质量含义,即“正确的软件”及“软件运行正确”:

1.“正确的软件”是说,一个软件要能够满足用户的需求,为用户创造价值。

此处的价值可以体现在两个方面,即为用户创造利润或者减少成本。

如果一个软件能够满足需求的用户群体越大、创造的利润越大或减少的成本越大,则该软件产品的质量越高。

反之,一个产品尽管运行良好,没有Bug,扩展性很强,性能很好,但如果没有服务的用户人群,没有为用户创造价值,则这样的软件尽管运行良好,也无任何质量可言。

2.“软件运行正确”是说软件没有或很少Bug,扩展性很强,性能良好,易用性高等。

这样的软件是一个运行良好的软件,但还不能称之为高质量的软件。

只有在软件符合用户的需求的基础上,运行良好的软件,才是一个高质量的软件。

当然,如果软件完全符合用户需求,但不易使用,经常出错,性能很差,这样的软件也不是一个高质量的软件。

“正确的软件”及“软件运行正确”二者相辅相成,前者关系到软件的成败,后者关系到软件的好坏。

在现实的很多开发团队中,特别是偏技术的开发团队中,往往过分注重后者(软件的Bug率,性能,可扩展性,架构等),经常陷入在软件开发过程的细节之中,而忽略了前者(软件需要符合用户的需求),开发出的软件经常能用但无用,不是最终用户期望的软件,这样的软件是能用但无用零质量软件。

在产品开发中,能用但无用的现象尤为明显。

产品和项目不一样,项目往往是为某个客户而开展,有特定的需求来源,而产品往往是一个更广泛的概念,是市场上某一类客户群体的价值代表,没有固定的需求来源,而且良好的产品往往要起到引导客户需求的作用,超越现有客户能提出的需求,所以对产品来说,“正确的软件”更加困难,但也更加重要。

当然,“软件运行正确”同样非常重要,关系到软件的好坏。

Bug,扩展性,性能,易用性等问题会造成客户想用但用不了,同样造成软件质量问题。

敏捷开发对软件质量的影响

敏捷开发对软件过程和质量控制产生了一系列的影响,主要来自两个方面的影响,用下图表示如下:

图1.敏捷过程带来的影响

图中的具体含义如下:

1.敏捷开发对“正确的软件”的影响

敏捷开发拥抱市场变化,拥抱客户需求变化,采用迭代反馈的方式管理项目。

其背后的一个核心理念是:

一个高质量的软件,首先应该是一个“正确的软件”,能够满足客户的需求。

我们知道当今的世界产品极大丰富,不管任何产品都会有的竞争对手和替代产品,大家熟知的有浏览器大战,输入法血拼,视频网站、博客满天飞,国内外ERP系统竞争激烈等。

所以,软件的质量是要在市场化的竞争激烈的环境中去进行验证,进行优胜劣汰,最终高质量的软件产品被客户接受。

所以,一个高质量的软件首先应该是一个“正确的软件”,能在激烈的市场和竞争对手中找到市场定位,有客户需求和市场销量,能提高产品的使用者客户体验的软件。

否则,软件做的再好、性能再快、界面再优美好用也不是一个高质量的产品。

敏捷开发正是符合这样市场环境而诞生并流行,其迭代反馈、拥抱变化的理念和方法,能够使得团队更能开发出符合市场和客户的高质量软件。

如上图1中所示,左图中的大半圆表示传统的开发模式中,产品不能满足客户需求的风险。

因为传统的开发模式基于中央控制的计划,没有足够的迭代和反馈理念和方法,犹如一次性的把所有的资金购买了一只股票,导致质量风险大。

上图1中右边的敏捷开发中,采取迭代反馈的原理,通过一系列的方法(下面会介绍)把市场和客户的需求和期望分散到个整个软件的生命周期中,犹如把所有资金进行资产组合,最后的软件产品质量风险小,能够较大概率的符合市场和客户的需求,并带来价值。

敏捷开发响应市场和客户价值取向,但如果没有完善的方法去收集和分析市场和客户的反馈,也会导致严重的质量问题,如软件随波逐流,随客户朝夕更改;市场定位模糊,没有核心竞争力;和竞争对手没有任何区别,陷入艰难的红海战争中等。

所以,敏捷开发方法对高质量软件也提出了挑战,需要相应的方法和流程去执行和控制。

2.敏捷开发对“软件运行正确”的影响

“软件运行正确”是说软件运行良好,没有或很少Bug,扩展性很强,性能良好,易用性高等。

软件工程中有个经典的统计,即软件生命周期的前期造成的Bug的影响比后期大的多,所以需求的变动影响是最大的。

而敏捷开发拥抱市场变化的理念,会积极响应市场需求,这会对整个软件,如软件架构、编码、测试、文档都会造成很大影响。

犹如长鞭效应,长鞭前端的抖动会逐渐放大到整条长鞭,而且波动会越来越大。

这会影响“软件运行正确”的高质量要求。

所以,我们不仅要看到敏捷开发带来的高质量客户价值的好处,如上图1右边敏捷开发的上部分波动所示,还要看到这些小波动导致的长鞭效应。

如上图1右边下半部分所示。

敏捷开发拥抱市场变化和客户反馈会对整个软件的架构、开发、测试造成很大的波动。

如果控制不好,会使得项目失控,造成严重的质量问题,如错误Bug多,架构不合理,易用性不好,性能不好等等。

总的来说,敏捷开发的理念和方法,响应市场和客户的价值,有利于发布符合客户价值的软件。

下面介绍敏捷开发过程及质量控制最佳实践,能很好的解决敏捷开发中的软件质量问题,辅助团队发布高质量的软件。

敏捷开发过程及质量控制最佳实践

敏捷开发的需要敏捷过程的支持才能快速响应市场需求,发布高质量的软件产品。

下图是作者用过的敏捷过程(可以定制适合自己项目的敏捷过程),文章不详细介绍下面敏捷开发过程,主要介绍其中的质量控制流程及最佳实践,也是围绕质量的两个方面介绍质量控制实践:

“正确的软件”及“软件运行正确”两方面。

下图2中是一个软件敏捷开发的迭代过程,每个迭代有需求,有变化,有架构,有设计,有开发,文档等。

其中深蓝色背景,白色字体的是敏捷过程中质量控制流程。

主要包括两个方面的质量控制:

“正确的软件”及“软件运行正确”两方面。

下面依次介绍:

图2.敏捷开发过程及质量控制

“正确的软件”的质量控制流程和最佳实践

这个作者认为是敏捷开发中质量控制中最重要的一点,因为这是后面所有其他软件质量的前提。

如果软件刚开始就是错误的,不能给客户带来价值的,就犹如路和方向就是错误的,那尽管在这条路上走的多好,多稳,也不会通向理想的目的地–高质量的软件。

做正确的事情,说起来简单,但做起来是最为困难和艰险的一件事情。

犹如上文说到的长鞭效应,在这里一步走错,就会导致整个软件的极大波动,导致项目失败。

因为产品定位和价值都错了,那再如何努力开发和测试也是不可能交付高质量的软件。

敏捷开发强调拥抱变化,迭代开发,客户反馈原则等也无非是使得软件在正确的方向上前进。

下面作者敏捷开发过程中经常使用的几种最佳实践,能够辅助团队正确捕获市场需求和客户反馈,并进行需求分析及过滤,设计出能给客户带来价值的高质量软件。

包括上图中的“需求”、“SWOT分析和需求审核”和“CDD&UserStory审核”。

1.需求

需求又包括需求获取和反馈,需求分析和需求创造三个方面

演示和原型

在软件敏捷开发过程中,如何获取市场的需求和客户的反馈是高质量软件的前提。

敏捷开发中,除了正式的软件开发及发布,我们还有专门的团队开发演示和原型。

演示是为了向客户和业务人员展示产品功能,并获取客户反馈;原型是为了展示对产品未来的雏形和概念,便于与客户讨论和展示,并获取市场需求。

产品、原型和演示三者的关系如图所示:

图3.敏捷开发过程中的软件、原型和演示

Persona的方法论

Persona指的是角色,也就是基于角色的方法论,强调一切从角色出发思考问题。

我们知道,每个人的思考的角度都不一样,客户的思考问题的角度和开发团队的思考角度不一样,甚至不同客户之间思考问题的角度也不一样。

团队在设计和开发软件的时候,容易陷入自己的思维角度,开发不符合客户思维角度的软件,而不符合客户的需求。

更严重的是很多团队陷入这样的惯性,而根本不知道错误在哪里。

Persona的方法论中强调,不论软件的哪些需求,哪个功能模块,甚至会议中的讨论,请首先确认出Persona。

Persona可能不止一个,所以需要分析并确认出不同的Persona,并设定所有Persona的背景,需求,期望等。

然后把讨论的需求、功能模块、会议的议题,对应到定义的Persona中。

然后根据Persona的重要与否,Persona的背景等,就可以进一步分析、确认需求。

下面是一个Persona的简单模板

Persona的简单模板:

·Name

·Photo

·BriefBiography

·Goals

·Contextscenario

确认出Person,尤其是关键客户的Persona,然后尽量使软件符合该Persona的价值需求。

作者的经验中,Persona的方法论,非常有益于理清思路,特别是在需求分析和讨论阶段尤为重要。

需求收集和讨论时,不同的同事代表不同的Persona(有的是客户业务人员,有的是客户架构师,有的是客户技术人员)他们提出各种不同的假设、需求、改进、功能模块。

这时如果不从Persona的角度去思考和理清问题,就经常陷入混乱和口水大战。

而最终却没有满足项目或产品的最重要Persona的需求,不能创造价值。

可想而之,以此为基准的软件将是能用但无用的零质量产品。

最高境界“跟随需求,不如创造需求”

这点对软件产品来说尤为重要,前面说过产品和项目不一样,产品的需求更加模糊,而且一些新产品往往需要带有一定的新特性。

产品需求的最高境界是创造概念、规则,并由此创造需求。

不管是软件行业,还是其它商业界都是如此,如:

a.从BP机到手机,再到iPhone;

b.从胶片相机到数码相机;

c.从门户广告到搜索广告;

d.从Blog到Twitter等

商业界创造概念、规则、模式,并由此创造需求,才能创造出蓝海,并成为领头羊。

而其他跟随着只能符合创造者的提出来需求。

在这个境界上,创新是最至关重要的因素,唯有创新才能打破规则,打破需求跟随者的状态,创造出符合未来用户需求的规则和产品。

而这样的软件,也是最有价值的高质量软件。

2.SWOT分析和需求审核

敏捷开发中通过需求收集及客户反馈得到了大量的客户需求,如何进行有效的过滤并选出最有价值的需求呢?

这是敏捷开发中高质量软件的关键之一,因为没有一个很好的以客户和市场为中心分析方法,产品会随客户朝夕更改,市场定位模糊,散失稳定的核心竞争力。

开发团队常见的误差是从技术的角度来考虑哪一些需求价值大,哪一些需求紧急度高,造成的结果是有一些功能模块投入了很多资源,但却并不一定是客户最想要的。

在作者的敏捷开发中,对产品的需求和模块进行SWOT分析,分析的输入是所有的Persona客户需求、市场现状、产业现状、竞争对手现状等,输出是需求的重要度和紧急度,以及投入的成本。

然后按照性价比可以进行排序,选出最能符合市场的模块。

SWOT分析有益于以最少的投入研发出符合客户和市场价值高质量

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1