首页 » 软件优化 » 不是所有项目都适合敏捷开发(项目开发软件测试驱动)

不是所有项目都适合敏捷开发(项目开发软件测试驱动)

乖囧猫 2024-10-30 05:55:01 0

扫一扫用手机浏览

文章目录 [+]

敏捷思想创建于上世纪后期,在本世纪得到很大的发展。
关于敏捷的知识和优点大家可以到互联网上去搜索,介绍的内容很多。
本文论述并不是说敏捷不好,而是比较客观地介绍敏捷不是适用于任何的产品。

骆玘曾说:敏捷思想的核心是与人的交流。
需求问题实际上是个交流问题。
“敏捷开发”并非不再关注用户,而是不断从试错中获得用户反馈,从而改进产品,是“以用户为中心”的另一种表现。

常见敏捷开发方式

有几种常见的敏捷开发方式XP MDD TDD SDP CI等开发方法论

不是所有项目都适合敏捷开发(项目开发软件测试驱动) 软件优化
(图片来自网络侵删)

一.TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。
TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。

tdd开发主要有如下原则:

1、测试隔离,也就是说不同的代码模块测试要相互隔离,不能出现互相影响的情况。

2、一顶帽子,专注某一项工作,同一时间只做一件事情,这样就可以集中精力在当前工作中,而无需考虑其他的。

3、测试列表,当测试功能点很多的时候,我们需要将相关信息添加到测试列表中,再继续进行手头上的工作。

4、测试驱动,以测试的方式推动开发的进行,让开发人员明确目标,是为了通过测试。

5、及时重构,早重构,及早解决不规范的代码,简单才是最基本的。

6、小步前进,可以将一个大的项目,分成多个可以独立运行的小项目,分别进行开发。

TDD 有三层含义:

Test-Driven Development,测试驱动开发。
Task-Driven Development,任务驱动开发,要对问题进行分析并进行任务分解。
Test-Driven Design,测试保护下的设计改善。
TDD 并不能直接提高设计能力,它只是给你更多机会和保障去改善设计。

二.MDD模型驱动设计(Model-Driven Design)(模型驱动设计(Model-DrivenDesign)

一种新型软件设计方法——面向模型的分析设计方法,系统一开始我们就首先确立实体模型Entity Model,以及它们之间的关系,进而可以交由程序员分别实现表现层、业务服务层和持久层,通过使用Jdon Framework(以下简称JF)等模型驱动框架,结合FDD等模型驱动的工程方法,从而正确无误地、且快速高质量地完成一个软件开发过程。

相比传统软件开发,模型驱动开发(MDD)的软件项目中,应用程序被指定为一个更高层次的抽象模型。
通过对模型的解释/执行或产生的代码,抽象模型会自动转化为可工作的软件应用。

三.XP(Extreme Programming,极限编程)是一门针对业务和软件开发的规则,它的作用在于将两者的力量集中在共同的、可以达到的目标上。
它是以符合客户需要的软件为目标而产生的一种方法论,XP使开发者能够更有效的响应客户的需求变化,哪怕是在软件生命周期的后期。
它强调,软件开发是人与人合作进行的过程,因此成功的软件开发过程应该充分利用人的优势,而弱化人的缺点,突出了人在软件开发过程中的作用。
极端编程属于轻量级的方法,认为文档、架构不如直接编程来的直接

四.BDD,Behavior Driven Development,行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。
BDD最初是由Dan North在2003年命名,它包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应。
在过去数年里,它得到了很大的发展。

这些框架都依赖于 Webdriver(如 selenium-webdriver,watir-webdriver),BDD 框架通过 webdriver 调用浏览器的接口,模拟用户输入,读取浏览器页面上显示的内容用于验证。

五.DDD(Domain-DrivenDesign领域驱动设计)(DDD开发框架)是告诉我们如何做好业务层!
并以领域驱动设计思想来选择合适的框架。

我们知道软件的产生过程是:分析、设计、编程、测试、部署。
过去,分析领域和软件设计是分裂的,分析人员从领域中收集基本概念;而设计必须指明一组能在项目中适应编程工具构造的组件,这些组件必须能够在目标环境中有效执行,并能够正确解决应用程序出现的问题。
模型驱动设计(Model-Driven Design)抛弃了分裂分析模型与设计的做法,使用单一的模型来满足这两方面的要求。
这就是领域模型。

敏捷的边界

对于医疗产品,航空航天等这些生命攸关或高投入的产品也不适合敏捷的方法。
对于生命攸关的医疗产品投入使用就直接与人的生命依依相联系了,而敏捷的思想是精益,精益的核心是通过尽可能多的试错来达到软件最后使用,而这些复杂的软件是不允许一次甚至半次试错的,产品一旦被使用就要做到100%的安全。
而对于航空航天产品,特别是某些航天产品就只有一次的使用机会,这些产品是不能用敏捷的方法来开发的。
从规模角度一般10人以下的团队适合敏捷开发,大于这个规模就至少要有对应且必要的流程管理。

历史上许许多多的教训告诉我们,世界上不存在银弹,所有东西都有它的两面性,包括敏捷也不是万能的,我们必须权衡其优点和缺点,结合我们自身的产品,合理地去使用。

如何突破边界,自组织中“指挥官意图”是由美国陆军在20世纪80年代提出的概念,原因是在战场上常常会碰上意想不到的事情——天气变化、关键资源被毁和敌方突出奇兵,导致计划本身在战场上全然排不上用场。

“指挥官意图”是位于每道命令最前面的一种直白陈述,能清晰的说明计划目标,明确指出该任务所期望达成的最终结果。
“指挥官意图”可以在各个层面指挥士兵的行动,无需上级长官下达每项行动的详细命令,只要知道了预期目标,大家就可以伺机行事,想方设法达成目标。

如同战场依靠的是项目团队中每位成员(产品、交互、UI、开发、测试、市场、销售、运营)在自己所擅长的专业上做出其最优决策所汇聚成的结果。
自组织性就是要强调这一点,因为不是所有的分工边界都可以划分的很清晰,工作边界划分的界限与不断发展的工作内容有时间上的滞后性。
事情在未划分清楚前自主解决事情第一,分歧第二始终积极保持良好工作习惯。

要想获得信任前提是你要站在对方的角度去思考问题。
通过组织完全授权后每个个体应该成为有战斗力和有能力的自组织,工作效率和精神状态将会是积极正向的,将会突破是否是敏捷。

敏捷与项目流程的关系

在流程制订和实际项目管理之间的边界本身就是模糊的,而这块灰色地带就需要项目经理来操控。
有人说过程制订好了,项目经理就是想流水线一样照本宣科,一步一步就可以,这是比较理想化的。
过程自动化在软件行业还有很长的路要走的,尤其是现在很多管理不成熟的企业,过渡依赖流程是不现实的,当然过渡依赖个人的企业也很难走向成熟,使用日事清可以随时对项目工作的流程变化进行更新,可以让项目组人员及时得到变化通知,增加了沟通。
那么流程管理和项目管理到底区别在哪儿呢?

项目流程管理是在组织层、制度层,关注组织长期的成熟度和竞争力,偏向刚性,解决的是共性的、普遍性的问题,过程能力的高低体现组织力的能力。
本人一直认为,大公司小公司的典型差别之一就是“凡事是否都建立了SOP”,这就是所谓的“组织力”。
SOP(Standard Operation Procedure),即标准作业程序。
是指将某一事件的标准操作步骤和要求以统一的格式描述出来,用来指导和规范日常的工作。
SOP的精髓,就是将细节进行量化。
而建立SOP的目的就是让正确的人正确的做正确的事。
无论是丰田的精益生产、华为的铁三角、BAT的内部SOP流程都是为了达到这个目的。
让团队流程学习从先僵化再优化最后固话。

项目管理是具体项目的层面,关注项目本身短期的绩效,更多需要柔性,解决的是具体的、个性的、特性的问题,项目管理水平的高低反应的是项目经理和团队的能力。

总结

项目管理:按照流程工作,最终达成项目目标。
——做正确的事。

流程管理:1、制定工作流程;2、评价项目是否按照流程执行。
——如何正确做事。

开发方式和实施过程长短是由市场、用户期望完成时间来决定,不管用什么方式管理还是经营主要是快速实现客户需求实际完成公司目标。
决定一个项目是否适合于使用敏捷方法的最终因素是紧急性。
敏捷方法中的时间箱和迭代就是为了保持项目中的紧张度和专注度。
如果项目没有紧急性,这些就是不需要的。
让我们一起看一下这三个因素-紧急性,复杂性和新颖性-在不同的项目中是如何组合的。
当然,从软件项目开始来看。
没有比软件项目更适合的了。
软件项目是出了名的复杂。
每一个新的软件项目中的大部分内容都是新的尝试。
而且在当今社会,软件项目总是很急的。

提醒项目经理们:

1.书本的知识一定是很重要的,没事一定要多看点书(我不喜欢看,但喜欢翻);

2.学习永远都比实践重要,尝试永远都比学习重要,好好体会吧;

3.但也不要看太多特别是思想内涵很丰富的书,因为“这样的书是可以洗脑的”,看多了也不好,除非想当作家,或者某个流派的评论家;

4.专业能力很重要,你可以跨专业工作,但不代表你可以不专业;

5.客户是必须值得尊重的,但是客户不对,就要提出来(学会和别人争吵的同时,还得学会缩口,“口才”很重要);

6.做计划时,把时间写在前,把事件写在后(习惯把事情写在前,时间写在后,下次就修改一下吧),为什么?照我说的做,没错;

7.可以认为自己比别人聪明,但不要认为别人傻,这个世界已经没有傻瓜存在了;

8.凡事,先问清楚为什么,小时候老师就说,常问“为什么”;

9.不要过分不相信自己的眼光;

10.写文档,是一个经理人必须具备的能力。
文笔好,会使用word,不代表就一定会写文档哦;

写在最后:

工作是一件快乐的事情,学会享受工作带来的乐趣吧,项目经理通常都忙得焦头烂额(相信很多项目经理人都有同感),能把工作做到自己喜欢做,乐意去做,给自己成就感,需要你具有足够的“激情、坚持、努力、学习、专业”。

以终为始,持续践行,我们一路同行。

标签:

相关文章

真正让消费者放心(东升装饰监督自检自查)

对此,铭望装饰建立东升老师的真监督和铭望的自查自检双重监督体系。一、东升监督1、突击检查。东升老师通过突击检查,亲自到若干个工地去...

软件优化 2025-02-09 阅读650 评论0