《极限编程在工控软件开发中的应用.docx》由会员分享,可在线阅读,更多相关《极限编程在工控软件开发中的应用.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、极限编程在工控软件开发中的应用ronggang导语:极限编程是一种新近提出的轻量级软件工程方法,它的高效和实用很快就吸引了大批软件人员的关注。本文对极限编程的概念和形式进展了概要介绍,同时结合国内工控软件开发的特点摘要:极限编程是一种新近提出的轻量级软件工程方法,它的高效和实用很快就吸引了大批软件人员的关注。本文对极限编程的概念和形式进展了概要介绍,同时结合国内工控软件开发的特点,试图将极限编程的概念引入到国内的工控软件领域。关键词:极限编程、理论、UML、结对编程一、极限编程极限编程eXtremeProgramming,简称XP是KentBeck在二十世纪九十年代提出的一种轻量级软件工程方法
2、。这种方法与传统软件工程方法几乎背道而驰,其提出在业界产生了宏大的震动,甚至有人根本不相信其可行性。大量的理论证实,极限编程是一种高效实用软件工程方法。软件设计的方式可分为两种:方案式设计和演进式设计。方案式设计出现于20世纪70年代,它要求设计者事先仔细考虑所有的重大问题,不要求他们编写代码。设计者们使用一种可以抛开编程细节的设计技术如UML在一个抽象的层次上工作。设计完成后被移交给程序员们进展实际的构建,由于是预先考虑了几乎所有的问题,所以只要程序员遵从设计,就会构建出良好的软件。演进式设计其实是最原始最普通的设计方法编码加修正,这意味着系统设计伴随着系统实现而成长,设计是编程经过的一局部
3、,而且随着程序的演变,设计也在变化。普通的演进设计是存在着致命缺陷的,由于设计的不断变化,设计最终成为了一堆随机应变决策的拼凑。每种决策都使代码更加难以改变,随着时间的推移,软件有效更改的才能不断下降,而缺陷和破绽却越来越多且难以被发现,设计者最后将碰到软件失序的状态。此时随着工程的进展,修正缺陷的代价会呈指数增长。方案设计使软件设计成为了一种系统的工程方法,其在很多方面都要比演进设计更好,但方案设计也存在着问题。首先,方案设计在方案时不可能将编程时需要处理的所有问题都考虑到,这种编程和设计上的冲突将最终引入失序。其次,很多时候设计者本身也是编程者,当设计者全身心投入设计时,在编程方面必然会落
4、后于软件开发工具和资料的飞速开展,这就意味着设计上考虑不周的可能性会变大。而一个编程者必需要非常娴熟才可能对设计者的设计产生质疑,这种紧张关系将带来隐患。再次,需求变化是方案设计中最令人头疼的问题,需求变化分为可预见的和不可预见的,可预见变化可以通过在设计中引入柔性来公道改变方案,但不可预见变化的解决却非常困难。固然存在上述缺陷,但方案设计因其相对演进设计的优越性而成为软件开发的主流设计方法。极限编程提倡演进设计而不是方案设计,但是极限编程通过一套系统的理论Practice弥补了演进设计的致命缺陷。它将软件工程分为多个迭代周期,每个周期实现局部软件功能。在每个周期都进展提出需求、架构设计、编码
5、、测试和发布等几个环节,每个周期都进展充分的测试和集成。这样做可以不断从客户方面得到反应,更逼近实际软件需求。通过频繁的重新编码的经过,可以适应需求的变化,也增加了易维护性。在不断的迭代中,防止了架构设计出现重大失误所造成的风险。极限编程的理论主要包括:方案、小版本、隐喻、简单设计、测试、重构、结对编程、集体所有权、持续集成、现场客户和编码标准等。方案是指通过结合使用业务优先级和技术评估来快速确定软件下一个版本的范围。当方案赶不上实际变化的时候就应更新方案。小版本是指将每个版本要实现的功能在符合需求的前提下尽可能的小,进而缩短每个版本的开发周期。隐喻是指对整个系统怎样运行所做的描绘,用于帮助工
6、程中的每个人理解工程的根本元素以及它们之间的关系。简单设计是指尽可能简单的进展设计,去掉任何不必要的复杂性。测试即指在开发的经过中,程序员必须不断编写单元测试,在这些测试都能正确运行后才可以继续开发。客户也要编写测试来证实要求的功能已经完成。重构是指程序员为了去除重复、改善沟通、进步程序的柔性,在不更改系统行为的前提下对其进展重新构造。结对编程是指所有的代码都是由两个人使用同一台计算机编写的。结对的两个人中正在使用键盘和鼠标的人应考虑编写当前代码的最正确途径,另一个人那么应侧重于在战略性的角度进展考虑。集体所有权是指代码为集体所有,团队中的任何成员在任何时刻都可以在系统中的任何位置更改任何代码
7、。集体所有权的前提是XP团队中的任何成员都要团结并有责任心。持续集成是指经常性的对代码进展集成和测试。这样做有利于检查程序整体的可靠性以及在测试失败时,迅速确诊存在错误的代码。现场客户是指XP团队中必须存在一个客户进展业务配合,他将全职负责回答下列问题、解决争端和确定优先级。编码标准是指代码须按照整个团队都同意采纳的标准进展编写,这样才能确保结对程序员通过代码进展沟通。极限编程的上述任何一个理论都不是独特或者首创的,某些单独的理论甚至还存在缺陷,但XP要求在开发经过中各个理论要互相支持,进而使整个开发经过走向成功。二、国内工控软件开发的特点国内工控行业正处于开展阶段,工控软件的开发大多都具有研
8、发性质。而国内的软件行业也处于开展阶段,缺少成熟的软件团队,缺少高素质的开发人员和治理人员。在这种背景下,使得国内工控软件的开发具有如下特点:1、开发团队规模小。国内工控行业的软件多数都是具有研发性质的长周期中小型软件,如盲目投入大量的人力,往往无谓进步本钱。另外国内软件行业缺少具有大规模团队治理经历的人才,团队规模大了往往治理跟不上,反而使开发效率降低,产品质量也很难保证,所以国内工控软件的团队多是十人甚至更少的规模。2、需求模糊导致前期工作不充分。国内工控行业多数软件工程是对国外已有技术的研制,往往功能需求模糊。开发团队在进展需求分析和概要设计时,很难做出充分预备并制定出完善的体系构造。这
9、类工程在开发中后期还经常发生需求的变化。3、团队的角色不完好。国内工控软件开发团队往往缺乏称职的工程经理,也很少在工程中专门安插一个领域专家,测试员往往由程序员兼任,客户即使存在也很难做到良好的沟通和反应。角色的缺乏和混淆使得治理难上加难,大大降低了工作效率。4、程序员观念陈旧,缺乏团队合作精神。到如今为止,国内很多程序员仍然信仰着“个人英雄主义。他们工作上个人才能很强,但是长期的独立工作,往往导致与别人的沟通与沟通出现问题。这些显然已经不符合当代软件开发的需求了。5、“格子式工作环境把一间大办公室用隔断分隔成多个小格子,每个人都在自己的格子里工作。这种工作环境很不合适进展研究开发:较高的隔断
10、使得人们沟通变得困难,狭窄的格子很难同时坐进2到3个人,也很难放下较大的开发设备。三、极限编程在工控软件开发中的应用经过国外近几年的理论证实,XP确实是一种优秀的开发方法,但是由于实际情况的不同,在国内工控软件的开发上全套照搬极限编程的形式是不现实的,这里面即存在着传统观念的阻力,也有着人员素质的问题。要改变人们长期以来习惯了的工作方式,必须循序渐进的逐步更改。针对国内工控软件开发的上述特点,可以考虑先在工程经过中引入XP的几个较轻易见到效果并被开发人员承受的理论,待团队中的成员在进展这些理论中自己逐渐意识到问题所在后,再将XP的内容进一步引入,并根据实际情况进展适当调整。第一是方案理论,通常
11、情况下,开发团队的治理人员倾向于根据客户的需要制定时间表,却不去实在理解实现需求的经过细节,此时所制定的时间表往往是不实在际的。而客户的需求很少去考虑实际开发经过或功能范围的调整,只是期望在预期的时间拿到预期的成果。这样所制定的方案一旦实行,伴随而来的会是大量的中期协商和观点折衷,而最终产品很难按期交付。XP的方案理论要求客户和开发团队的所有人员介入方案的制定,首先要由客户和开发人员一起确定工程要完成的所有任务及其优先级,然后由开发人员对这些任务进展估计并制定时间表和给每个开发人员分配工作。在工程开发经过中对时间表的任何调整都要在问题出现的时候立即完成。第二是结对编程,习惯上是反对两个人一起开
12、发代码的。治理人员以为开发代码所需人数加倍是浪费资源,程序员以为编程在传统上是作为一种孤立活动进展的。但定量的证据说明结对编程使设计的结果更好,生成的代码更简单,更易于扩展,老练的结对程序员以为结对工作的速度要比单独工作的速度快2倍以上。第三是测试自动化,一个全面的测试程序是一个工程成功的关键。一个工程的测试在刚刚开场的时候不可能有全面的测试,但必须先制定一个柔性测试框架。在每个单元的开发经过中产生相应的样本数据、单元测试和功能测试,然后集成到测试框架中,最后到达一个完好的测试覆盖率。第四是集成和发布,团队可考虑设置一台专门的集成工作站,所有当前代码库和测试程序都集中在该工作站上,每个开发人员
13、都将自己的代码与集成工作站的代码库进展集成,并运行所有的测试程序。在测试程序覆盖率缺乏的时候,可将未测试局部罗列成表,每个人根据该表补充缺乏局部,并定期检查更新该表。第五是工作环境,XP的沟通是非常重要的。一个良好的工作环境可以改善人与人之间的沟通气氛,进步人们沟通的积极性。一个标准的XP团队工作环境应该是一个大的通透空间,中间公共区域集中了所有的工作设备,每台计算机前至少有够坐下两个人的空间,椅子是一定要方便挪动的。四壁要有大面积的白板,人们需要讨论时可随时随地进展。四周可以安排些小房间用作休息和处理私人事务。工程负责人可以有自己的办公室,但在进展开发时一定要进入公共区域这里没有等级。以上提
14、到的都是根底性的理论,随着这些理论为团队所承受,每个成员会逐渐意识到XP的真髓。这个时候再逐一引入其它理论并检验这些理论的效果,适当予以扬弃,进而最终形成自己的软件工程方法和一个成熟的团队。四、完毕语XP是一个极具潜力的软件工程方法,固然XP的很多方法和道理都是早为人知的,但少有人去想把它们系统的结合起来,KentBeck在这方面做了大胆的尝试,并获得了惊人的成功。当然,工控行业的软件开发有着自己的特点,XP的形式一定不会完全合适,但是XP所提倡的理念是非常值得我们深思和借鉴的。1KentBeck,(解析极限编程拥抱变化),人民邮电出版社,20022KentBeck,(规划极限编程),人民邮电出版社,20023KentBeck,(极限编程施行),人民邮电出版社,20024KentBeck,(极限编程理论),人民邮电出版社,20025网站:ExtremeProgrammingOnline,extremeprogramming.org6Brooks,(人月神话),清华大学出版社,2002