编程实习报告范文(精选9篇)
编程实习报告 第1篇
经过数十年的发展,数控机床的控制部分已经从硬件为主的数控装置发展成硬件、软件结合的计算机数控系统。由于数控机床是根据事先编好的程序来实现自动化控制加工的,因此其发展和数控编程密切相关。程序的灵活、精练编制有利于降低加工成本和提高生产效率,具有明显的实用价值。在这次毕业设计中,我对数控机床编程的有关指令,以及编程的一些技巧等进行了探讨。通过一些指令的灵活综合运用来实现程序编制的简单和精练,使数控机床在加工中发挥更大的优势。以此来开拓数控机床更广阔的发展前景。
一、实训的目的
1、熟悉了解数控车床、数控铣床、数控加工中心的结构组成及工作原理。
2、熟练掌握待加工零件的装夹、定位、加工路线设置及加工参数调校等实际操作工艺。
3、熟练掌握阶梯轴、成型面、螺纹等车削零件和平面轮廓、槽形、钻、镗孔等类型铣削零件的手工及自动换刀的编程技术以及复杂曲面零件的自动编程技术。能分析判断并解决加工程序中所出现的错误。
4、学会排除机床电气及机械方面的一般性故障。
5、熟练操作数控车、数控铣床、并能加工出中等复杂程度的零件。
6、能初步使用加工中心机床,了解刀库及其设置,了解加工中心的加工过程与特点。
7、初步了解与掌握程序转存和联机控制等dnc加工方面的知识及操作方法。
8、复习掌握数控技术职业资格考试要求的其它应知、应会的内容。积极争取通过职业技术资格考试。
二、实训内容与实训计划安排
1、实训的主要内容
1.1数控车床的操作与编程训练
(1)、操作面板的熟悉和控制软件的基本使用。
(2)、坐标系的.建立,工件和刀具的装夹,基准刀具的对刀找正。
(3)、基本编程指令的讲解。手工编程与程序输入训练,空运行校验。
(4)、固定循环指令的讲解。编程与程序输入训练,空运行校验。
(5)、螺纹零件的车削编程训练。学会排除程序及加工方面的简单故障。
(6)、刀具补偿及编程训练。手工换刀与自动换刀的基本操作。
(7)、多把刀具的对刀、刀库数据设置。
(8)、实际车削训练,合理设置各工艺参数。
(9)、理论课:复习总结车床加工的应知、应会内容。
1.2数控铣床操作与编程训练
(1)、操作面板的熟悉和控制软件的基本使用。
(2)、坐标系的建立,工件和刀具的装夹,基准刀具的对刀找正。
(3)、基本编程指令的讲解。手工编程与程序输入训练,空运行校验模拟。
(4)、轮廓铣削和槽形铣削编程训练与上机调试,掌握程序校验方法。
(5)、刀长与刀径补偿及编程训练。手工换刀基本操作,多把刀具的对刀、刀库数据设置。
(6)、子程序调用技术,程序调试技巧,钻孔加工的基本编程。
(7)、实际铣削训练,合理设置、调校工艺参数,排除基本故障。
(8)、了解润滑与冷却系统,机床的维护与保养。
(9)、理论课:复习总结铣床加工的应知、应会内容。
1.3加工中心机床操作与编程训练
(1)、操作面板和控制软件的简单用法。
(2)、刀具基本知识及应用状况了解。刀库结构与自动换刀装置的初步了解。
(3)、加工中心编程的特点。手工编程与程序阅读理解,空运行校验。
(4)、固定钻镗循环编程与上机调试。
(5)、刀具补偿及编程训练。多把刀具的对刀、刀库数据设置,自动换刀的程序实施。
(6)、理论课:刀具基本知识及其它应知、应会内容。
1.4自动编程与dnc控制训练
(1)、自动编程系统原理的了解。
(2)、图纸分析,基本加工零件图形的绘制,复杂曲面类零件的绘制。
(3)、轮廓铣削、挖槽、钻孔等基本刀具加工路线的建立。
(4)、工艺参数、刀具补偿等的设定,模拟加工校验。
(5)、曲面铣削加工刀路的建立,粗、精加工的参数设定。
(6)、刀路的编辑。
(7)、程序的生成与编辑修改,程序与机床控制系统间的接口技术。
(8)、车床的自动编程技术。
(9)、自动编程的实用训练、dnc加工。
编程实习报告 第2篇
和其他的同学一样,我被安排到一家公司的计算机软件部门实习工作,刚出大学什么都不懂,经理就安排我到一位有丰厚经验的师傅身边实习工作,在实习期间我的日常工作都由这位师傅安排。刚开始实习,师傅就给我说一些日常的注意事项,由于我来到这里只是一个过渡时期,所以我就没有像其他同事那样要求严格,但是公司的规章制度还是要严格遵守的。然后就是安排一些简单的工作交给我做,我每天来到公司就是做卫生和清理文件的工作,然后师傅就交给我一些简单的编程之类的软件工作,让我练练手,没事的时候,他就像老师一样,跟我讲解一些软件应用和程序编程,还有他的一些工作经验,而这些对于我来说,帮助可是相当的大,师傅讲了一些基本知识之后,就让我思考回味一下,毕竟贪多嚼不烂,还是一点点的来,思考了一会,我就融汇贯通了,毕竟我是学习这个专业的,一些专业的理论知识我都懂,就差一个引路的人,经过师傅这一指导,现在就算是水到渠成了。
慢慢的我也逐渐上手,工作经验在这段时间的磨合下,进步很快。在接下来的工作中,我总算帮上忙了,我就和师傅一起进行软件编程,在工作中,因为很多地方我还不熟练,知识的缺乏,但是师傅总是给予我鼓励,然后指出我错误的地方,帮助我改正。实习总要结束,这段时间的实习,对我来说,收获很大。
编程实习报告 第3篇
关键词:Plc,电气实习,教学,引入
职业学校的任务就是将学生培育成真正满足企业等机构需求, 能为社会创造更多财富的技能型人才。只有其职业能力达到更高的水平, 具备为企业等社会机构创造更高价值的素质与能力, 才能获得更高的就业质量。中职学校承担这个重任, 担起社会责任, 提高学校的社会竞争力量, 就要突出特点, 提高办学质量, 适应经济发展和科技进步的需要。中职教师如果只传授知识而不培育能力那就无法让学生适应社会发挥自己的就业优势。让学生的能力与时俱进, 不断完善才是教育的最高境界。可在电气实习专业教学时充实可编程序控制器的相关内容。经过一段时间的教学研究发现, 如果在教学中急于求成, 不但达不到教学效果, 甚至适得其反, 下面谈谈我的体会:
一、由简到繁, 循序渐进
培养学生的实践能力和专业技术水平, 要抓好教学的基础学习和训练。中职学校学生的基础参差不齐, 这不得不增加了我们的授课难度。教师要努力提高自己的理论水平和实践能力, 因学生情况合理安排的教学计划, 合理编排教学顺序。让学生由简至繁地接触本门课程的内容, 从而增加学生们学习的主动性, 增强学生们的学习兴趣和信心。
结合我校的课改教学大纲制定合理的教学计划, 发挥中职学校的特点进行探索和完善。例如我们在电工实习中已经学习简单的控制电路, 如何让学生独立自主的安装和操作是学习的重点。通常教师让学生多学多练, 但并非多练就能解决所有的知识问题。控制电路有很多种, 只有利用原理知识去解决问题才能更好的完成高难度的电路。没有良好的电工理论基础是很难学好电气实习课程, 我发现很多控制电路都是基本的逻辑控制电路。因此, 在课堂上我将学生能够很快理解的逻辑知识介绍给学生, 逻辑电路与可编程序控制器关系很紧密, 为进一步学习复杂的设备和学习可编程序控制器奠定基础, 这些都是为以后继续学习专业知识打下基础。教师可以根据基本的串并联电路设计出相应PLC程序, 讲解AND和OR指令。同时在学生动手过程中提出疑问, 从而激发学生的求知欲。让学生带着这些疑问去听课, 这时教师在讲解PLC相关理论知识的时候就可以针对学生存在的问题给予一一解答, 让学生有了学习的主动性。
二、注重培养学生的综合能力, 以就业为目标
经济和科技随着时代的潮流发展得越来越快, 智能化成为机电专业的发展方向, 加工手段都由技术型转换成智能型。原来的继电器接触器控制的设备因其缺点, 已经不能满足现在多元化的生产方式。而可编程控制器是计算机技术、制动控制和通讯技术结合发展的控制装置, 它在工业控制中显示出其突出的优越性, 因此得到了广泛的应用。可编程控制器的应用在我国有很大的发展, 并得到很好的经济效益。所以, 我们中职教师在备课的时候一定将眼界放宽, 以培养高级技术人才为目标。在讲解某些电路时会用到接触器和继电器, 将可编程序控制器的相关内容随后安排进去, 既让知识得到延伸, 又让前面的知识得到充实, 降低了教学难度易于掌握和接受, 得到了很好的教学效果。
三、可编程序控制器教学中的探讨
1、采用多种教学手段, 培养学生学习兴趣和良好的思维模式
避免将PLC的发展史、应用研究特点讲解得抽象、空洞和乏味。可以让学生自己探寻PLC, 借助网络解除疑惑。举例说明生产和生活中的相关例子, 使学生对本课程有初步的了解, 并产生浓厚的兴趣。教师还可以根据就业市场对掌握PLC技术人员的需求要求, 建立学习目标, 激发学生的学习欲望。利用电子教案将图形、文字、音效、视频合为一体, 把抽象的事物清晰明了地表现出来。
教师还应根据学生的实际情况分别对待, 启发基础较好的学生设计出多种编程方法。设计中, 教师要引导学生学习兴趣。例如:在灯塔指示趣味设计例题中, 激发学生的创造性, 完成灯塔的不同指示图案。在设计编程过程中, 主要是对考察定时器及顺序控制的应用。进而可以启发学生为家中设计节日霓虹灯。让学生通过设计思维的过程得到充分的锻炼, 逐步形成一种思维模式, 为将来从事本工作打下坚实的基础。
2、改革课程组成形式和考核形式
培养学生的自主思维和创新意识。实验教学中, 以实验任务的形式, 要求学生独立完成一个实际系统的设计。学生需要通过多种途径去获取相关知识, 自主地完成相关硬件、软件的设计, 教师对实验任务进行验收。这样极大地调动了学生的主观能动性, 进而使他们对理论知识掌握的更透彻。
改革考核形式。在电气的专业课程中, 有很多课程是对于某种设备或某种技术的应用, 因此会用成为其教学的主要目标。应加大实习课成绩所占的比例, 通过涵盖多个教学任务的实验来衡量课程的教学成果。通过期末设计性实验结合理论考试的形式来考核学生的学习情况。期末时学生分组设计课题并完成相关的设计报告, 教师对学生的整个设计过程进行跟踪考核, 以获得真实的成绩。
编程实习报告 第4篇
CAXA自动编程实习报告 第5篇
在CAXA制造工程师2004画可乐瓶底的造型之前,首先要分析其造型结构,根据分析,可乐瓶底的骨架主要有两类曲线组成,A类曲线和B类曲线。第一类是A类曲线,两两组成一组,彼此之间的夹角为11.2度,共有五组A类曲线均匀分布在一个圆周;第二类是B类曲线,共有五条均匀分布在圆周上,A曲线和B曲线的夹角为41.6度。可乐瓶底是由这两类骨架曲线放样而成,是一张曲面。
(1)绘制A曲线
如图所示,绘制顺序为依次绘制I,II,III,IV和V曲线及直线,然后过渡。
(这空的地方是画图的,你们要有个位置)
①绘制曲线I
a,按键盘功能,切换到XOZ坐标平面上。
b, 点击绘制圆弧工具,绘制起始角为330,终止角为360,圆心为(-47,0,0)半径为89.5的圆弧。
②绘制曲线II,点击直线图标,输入第一点为(0,0,-32),另一点为(8,0,-32)。③绘制曲线III,点击圆弧图标,绘制起始角为57,终止角为90,圆心为(8,0,-38)半径为6的圆弧。
④ 绘制曲线IV,点击直线图标,切换到切线/法线,绘制长度为20mm与曲线III相切的切线,用曲线裁剪工具裁剪掉直线IV的上半部分。
⑤绘制直线V,起点为(8,0,-37),终点为(45,0,-37)。
⑥在曲线I和直线V之间,直线IV和V之间用半径为6mm的圆弧过渡。⑦将这些直线及曲线组合成一条曲线。
(2)旋转拷贝A曲线均匀分布在圆周上。
①将做好的A曲线旋转拷贝11,2度。
②将刚做好的两条A类曲线旋转拷贝72度,拷贝份数为4。
(3)绘制B曲线。如下图,B类曲线绘图顺序依次为I,II,III,IV、V和VI。
(这空的地方是画图的,你们要有个位置)
①作两点直线I,首末点坐标分别为(0,0,-32)和(8,0,-32)。
②作圆弧II,圆心为(-5,0,11.4)半径为50mm。起始角为270,终止角为360。③作圆弧III,圆心为(7.5,0,0)半径为35mm,起始角为300.,终止角为360。④作圆弧IV,圆心为(8,0,-38),半径为6mm,起始角为45,终止角为90,。⑤作曲线V。圆弧II、III之间作过渡,半径为12mm。
⑥做曲线VI。圆弧II、IV之间作圆弧,半径为6mm。
⑦将曲线及直线组合成一条曲线B。
(4)旋转拷贝B曲线均匀分布在圆周上。
①将曲线B旋转移动-30.4度的正常位置,其中旋转轴为Z轴。
②将曲线B旋转拷贝4份,旋转角度为72度。
(5)将A类曲线和B类曲线作放样面。点击放样面图标,依次拾取曲线,点击鼠标右键
结束,生成放样面。
一,可乐瓶底的加工仿真
(1)(1)、定义毛坯。根据参照毛坯来定义,最后生成的毛坯是一个80mm*80mm*37mm的长方体形状。
(2)(2)、等高线粗加工
①在刀具参数设置中,选用直径为12mm的端铣刀。
②在加工参数1中设置加工方向是逆铣,Z切入层高是3mm,行距为10mm,行间连接方式是圆弧,加工余量为1mm,其他未默认状态。
③在加工参数2中设置起始点为(0,0,20)。
④切入切出方式为默认。
⑤下刀方式中设置安全高度为20mm,慢速下刀距离和退刀距离都是5mm,切入方式为倾斜线,距离为5mm,角度为10度。
⑥切削用量中只需把切入切出连接速度改为80,其他未默认值。
⑦加工边界参照毛坯就行了。
⑧参数确定后,点击“确定”,拾取加工对象(左键拾取,右键确认),拾取加工边界,点击右键,再按右键结束,系统开始计算。
⑼进行刀具轨迹仿真。
(3)(3)、等高线精加工
①在“等高线精加工”对话框中选择刀具参数为直径为6mm的球头铣刀。
②在加工参数1中设置加工方向为顺铣,Z向残留高度0.08mm,行距为2,行间连接方式为圆弧,加工精度为0.05mm,加工余量为0。
③在加工参数2中设置路径生成方式为不加工平坦部,起始点为(0,0,20)。④下刀方式、加工边界和切削用量和粗加工的设置一样。
⑤参数确定后,点击“确定”,拾取加工对象(左键拾取,右键确认),拾取加工边界,点击右键,再按右键结束,系统开始计算轨迹。
⑥分别进行粗加工和精加工刀具轨迹仿真。
⑦仿真完之后,点击菜单:加工-后置处理-生成G代码。分别把粗加工和精加工生成的程序保存到桌面上。
(4)(4)、等高线粗加工部分程序如下:
《
写程序的地方,你们只需要写一部分就行》
(5)(5)、等高线精加工部分程序如下:
《这儿也是》
三、可乐瓶底的机加工
(1)、选择工件并装夹
①选择直径R=80mm的棒料,截取50mm。
②将工件装夹上工作台。
(2)、机床上电及对刀
①开启主电源,然后通过面板上的按键启动机床。
②将急停旋开,随后机械回零,使X、Y、Z轴回到机床零点。
③选择手动方式,移动工作台使刀具与棒料的最右端接触,记下当前X的机床坐标的位置(负值),然后在刀补中再减去棒料的半径与刀具半径的和(R+r),此时X坐标对好了。再将刀具移动,使其与棒料最前端面接触,记下当前Y的机床坐标位置(负值),然后在刀补中再减去棒料的半径与刀具半径的和(R+r),此时Y坐标对好了。最后将刀具移动到工件上端面,使刀具与工件接触,记下当前Z的机床坐标位置(负值),然后直接将该数值填入刀补中。
④选择录入方式,点击“程序”,出现输入界面,输入G54,再点击“循环启动”按钮,输入的G54消失,说明录入成功!
(3)、验证工件坐标
①点击“回零”使X、Y、Z返回机床坐标零点。
②再次选择录入方式,同样点击“程序”当出现输入界面后输入G00 X0 Y0 然后点击“循环启动”,工作台自动运行,使工件中心正对着刀具的中心,到此对刀成功!
(4)、传输加工程序
①选择自动方式,再按一下自动,使其转入DNC方式,然后点击“循环启动”两下。②打开电脑中的程序,点击“传送”,程序即可自动传入机床,并自动控制机床开始加工零件!!
实习总结
此次CAXA实习主要是对运用软件自动编程与加工的实地操作,通过在计算机上
利用软件绘制图形并做出加工程序,再传输到机床上进行加工,使我明白了理论与实际之间是有很大差别的,理论学得很好但是不能很好的与实际联系起来,这样也不会有很好的收获!以下是我在此次实习中的体会还有遇到的问题及解决方案!体会————通常在计算机上我们可以在保证能够加工、没有干涉的情况下根据自己的意愿
随意选择刀具、毛坯材料进行加工,但是在我们实际操作时则不可,则需从多方面考虑,比如:
一、要考虑我们现有的能利用的刀具和材料有哪些,以防做好程序后没有合适刀具或是材料供我们使用;
二、要考虑机床夹具所能卡住的最大长度,以防设计的毛坯的最大长度超过机床夹具所能夹持的最大值;
另外,通过这次实习我体会到,计算机编程是很方便,但是它所生成的程序过于繁琐,实际加工时很费时!
问题及解决方案————在粗加工后,进行了换刀,将12mm的刀换成6mm刀,然后在不
改变X、Y的机床坐标的情况下,重新对了Z的机床坐标,并再次在刀补中输入同时进行了G54的录入及工件坐标验证,但是却发现此时工件坐标系已经改变。随后便进行一系列的检查,分别采用了a、重新对Z坐标,b、重新对X和Y坐标,但是还是不能解决问题。
最后在老师的指导下发现,我们在第一次对刀时就存在错误,是由于某些不明原因导致机床的“丢步”处成!最终经过调解将工件坐标系调到合适的位置加工!但是由于考虑疏忽,装夹刀具时卡入刀座的刀杆过长,致使伸出刀具不够长度,最总留下部分材料未加工!
编程实习周记 第6篇
第四周。 不知不觉, 我已经实习了快一个月了。 在快快事业部实习的这一个月以来, 我不仅学到许多宝贵的知识和技能, 还感受到同事们的踏实勤奋的工作态度。
我们的产品“快快游戏世界”是一个集合单机游戏, 网络游戏, FLASH游戏, FC模拟器游戏为一体的多功能游戏平台。 在这个游戏平台上, 玩家可以选择自己喜欢的任意一款游戏, 并且只用下载游戏的一部分, 就能快速开始游戏。 目前, 我们发布的最新版本都是“快快游戏世界 1.0 Beta 4”. . 现在的Beta 4依然有一些问题, 每天, 我们的测试人员都会上报程序中存在的各种bug, 并由负责技术工作的同事对这些bug进行修复。 在上报这些bug之前, 测试经理会和测试部门的同事们将bug整理分类, 并且用清晰的语言将bug描述清楚。 这为我们技术人员提供了极大的便利。
在处理bug的时候, 为了照顾我这个新手, 程辉分给我的bug都是比较容易处理的。 那些高手程序员处理的bug ,我连问题出在哪里都看不出来, 他们竟然能在很短的时间内解决。 可见金山公司员工的技术实力的确名不虚传。
编程实习心得 第7篇
实训报告
专 业 数控技术班 级 数控1002 学 号 09姓 名___耿 策 指导教师路大勇 起止日期 2012.12.10—12.14 目录
计算机辅助制造实训任务书………………………………1 实训任务一…………………………………………………
实训任务二…………………………………………………
实训任务三…………………………………………………
实训任务四(配合件凸件)………………………………
实训任务五(配合件凹件)………………………………
心得体会…………………………………………………… 3 6 7 10 13 16 mastercam实训任务书
一、目的与要求
mastercam实训为该课程学习的重要组成部分。用于巩固所学知识,强化二维和三维造型技能,熟练进行二维加工和三维曲面粗、精加工刀具路径的生成、检验、后处理等的操作。实训时间为一周,要求完成规定的造型与编程任务(电子稿)和《实训报告》。
二、任务说明
1.完成图1的二维造型,不标注尺寸。完成外形铣削及挖槽铣削加工程序的编制(零件厚度10),书写相应的文字说明。编程原点位于底边中点,材料为45钢,刀具及切削参数自定。
实训任务一
实训任务二
2.采用实体建模方法,完成图2形体的三维造型。
3.综合运用所学造型及编程技能,完成下列零件的工艺设计、程序编制及加工校验,书写相应的文字说明。刀具及切削参数自定。
实训任务三
实训任务四 实训任务五
实训任务一:
实训任务一 1图样分析:
通过看图纸,了解工件的外形。由图可知,该工件是一个二维造型。2.工艺路线分析: 根据图纸可知,该工件在加工过程中,首先选用φ20立铣刀铣出外形轮廓,接着选用φ12立铣刀用外形铣削的方式分三层铣出内槽轮廓。3刀具的选择:
φ12立铣刀、φ20立铣刀
表1 工件1 工艺过程卡篇二:计算机编程实习报告
土木工程2007级 计算机实习任务书
指导教师 班 级土木(xx)班 姓 名mr.su 学 号
西南交通大学土木工程学院 2008年11月
(一)实习时间:2008 年11月30日—12月14日
(二)实习地点:x7103
(三)实习目的:
计算机实习是本科计算机基础教学的一个重要环节。它对于巩固学生的计算机基础知识,增强学生的计算机应用水平,改善学生的知识结构,具有重要意义。
本课程的教学目的是:通过系统的上机实习,使学生的计算机基础知识与基本操作技能得到进一步的巩固,提高学生的编程能力和用机水平,培养学生用计算机分析与解决问题的意识,为后续课程打下基础。
(四)实习内容:
本实习要求完成如下三项任务:
1. 巩固所学的计算机基本知识和基本操作技能,包括:
(1)熟练掌握正确的键盘指法和英文盲打技术;(2)能熟练使用windows操作系统;
(3)熟练掌握word、excel、powerpoint等办公自动化软件;(4)能使用网络获取、发送信息;
(5)用powerpoint制作一组幻灯片(幻灯片所表述的主题自定),或用excel 绘制出图1所示的sin(x)、cos(x)函数曲线。2. 计算机语言及编程
用本学期已学过的vc++语言编程。编程题目及要求由指导教师指定(可参考附录中提供的题目)。
3. 提交一份实习报告(要求打印)
实习报告不得少于1000字:主要总结实习心得和实习成果(全部程序及计算
(五)实习成果:
【1】程序1:
按以下形式打印出杨辉三角形中的各值 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 · · ·
· · ·· ··· ····· ***691 算法原理:
数据结构:用一个二维数组存放杨辉三角形的数据。
分析杨辉三角形的数据特点,该三角形每一行的行初和行末的数据都是1,从第三行起,每行数据的第2—i-2列数据都满足以下关系:a[i][j]=a[i-1][j-i]+a[i-1][j];根据上述关系得出杨辉三角的每个数据存放在已定义的二维数组中,然后按照图形格式输出已经存放的数据,得出杨辉三角。
程序流程图: 数组a[i][j],i表示行,j表示每一行的第几个数。使用方法:输入程序,直接显示。源程序:
#include
从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。算法原理:没有具体详细的数学算法原理。
变量说明:p表示的是要输入的字符,char p[100]表示的是一个字符型一维数组,t表示的
是输出文件的名称,doc表示的是文件的输出格式,i表示的是循环变量。
交换编程——极限编程的延伸实践 第8篇
在传统的开发过程中,往往是一个人从一个模块的需求调研开始,然后作分析、设计、编码、单元测试,接着才会交给第二个人(专职测试人员)进行其他测试项目。这样的开发过程会因为开发人员的变动而对项目的进展产生较大的影响,所以在软件工程的一些实践中就有项目中编码人员的重要性远比项目经理大的认识,为了改变这种状态,软件工程的研究人员进行了大量的工作,其中有人提出了极限编程的12个核心实践。在极限编程中关于团队组织模型的一个核心实践就是结对编程方式,但是对于开发人员人手严重不足的项目中,很多软件企业是不认可这种组织方式的,他们认为这会浪费很多的人力,一加一不能大于二。
结对编程是极限编程12个核心实践之一[1,2,3]。在结对编程中,要求两个程序员使用一台显示器,一套键盘鼠标来完成所有分配给他们的任务。结对编程的支持者声明结对编程的开发方式与传统的编程方式相比有很强的优势,这包括更高的团队开发效率和更高的软件开发质量。在XP的宣传中提到,两个人结对在一段时间以后可以使得开发效率超过单人编程,同时质量也会得到提高[6,7]。同样,在2006年敏捷中国开发者大会上,著名软件工程大师Martin Fowler作为首席科学家的公司ThoughtWorks的总经理Sid Pinney先生也提到了这个问题,他作出如下解释:当两个人结对时间超过三个月以后,效率会超过两个人单独编程的效率!这里,三个月这个时间不是真实确凿的时间分界线,它只是一个模糊的大概的时间范畴,如果两个技术人员配合得好,也许只需要两个多月,如果配合不好,也许需要四五个月,或者更长的时间……。
但是,在本文的实践过程中发现,几乎没有软件企业因为XP这样的宣传而采用结对编程的方式进行软件开发。除了ThoughtWorks,Google等少数公司外,几乎所有的公司都仍然采用传统的单人编程的方式进行软件开发。
在所能查阅到的所有关于结对编程优劣势分析和数据采集的文献资料共计173篇,其中以结对编程为主要研究目标的有71篇论文,在这些论文中提到的试验研究的对象大部分是在校学生[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]。只有不到十分之一的论文是关于专业程序员进行结对编程的实验[6,30,31],而这部分关于专业程序员实践结对编程的论文也并没有讨论结对编程开发效率是否真的能够达到两个同等水平的专业程序员单人编程的开发效率。几乎所有的论文的对比数据基础都是基于结对编程的两人组和单人编程的一人组之间进行的,这样的数据无疑并不能让软件企业信服这种开发方法所具有的优势。
同时还查阅到一些论文在实践的基础上提出了相反的观点,如Hanna Hulkko&Pekka Abrahamsson的研究就认为结对编程在与单人编程对比的时候并不能始终保持高效率和高质量。他们在文中写道:”They indicate that pair Programming may not necessarily provide as extensive quality benefits as suggested in literature,and on the other hand,does not result in consistently superior productivity when compared to Solo Programming”[31].
基于这样的实践和研究,本文认为,在与结对编程和单人编程的对比上,交换编程具有其特殊的优势。
1 相关工作
由于交换编程属于全新的概念,交换编程也属于结对编程与单人编程结合的产物,所以这里主要用它与结对编程进行对比,所能够查阅到的所有文献都是关于结对编程的。
北卡罗琳娜州立大学的几个研究人员从2002到2005年间[26]进行了一系列的试验并发表了多篇结对编程论文[11,13,16,18,19,20,21,24,26,28]。在他们的试验中全部采用的都是在校大学生,有1350名从大一到大四的学生参与了这一系列试验。他们分别从课堂教学和学校软件实践方面进行了关于性别差异、团队构建、布鲁克斯法则、个性特点,学习类型,技能水平,对个体编程的认同度,工作道德规范,或者时间管理偏爱等基于教学考虑的方面进行了结对编程试验,并得到了一些结对编程的支持性数据和观点。
University of Sannio的Gerardo Canfora,Aniello Cimitile,Corrado Aaron Visaggio等人对学习了一些编程课程的学生进行了结对试验,验证了个体经验和技能对结对编程过程中知识构建的益处[14]。
Matthias M.M¨uller和Frank Padberg进行了一系列的结对编程试验,他们在一篇论文[7]中认为,通过使用了一系列的度量方法来理解、模型化分析、评估结对编程在软件开发中的效果。在增加了人工成本的基础上,结对编程相对于传统开发过程更侧重于提高团队产量和代码质量。
Frank Padberg和Matthias M.M¨uller的另一篇论文[15]中得到了这样的试验结论:结对编程的效率提高比例与结对编程的个人的程序开发经验无关,而是和结对编程过程中的个人感觉有关。他们认为结对编程过程中结对程序员感觉越愉快他们的开发效率提高得就越多,这篇文章也从同样的角度验证了北卡罗琳娜州立大学2006年发表的关于Examining the Compatibility of Student Pair Programmers[26]文中提到的“个性特点,学习类型,技能水平,对个体编程的认同度,工作道德规范,或者时间管理偏爱”的结对观点,认为如果不考虑这些因素,结对的效果就无法体现出来。
但是,Hanna Hulkko和Pekka Abrahamsson的一篇论文[31]的试验中引入了企业中有经验的软件开发人员。在这个试验中,他们认为:“回顾这些可以看到绝大多数这方面的实验研究都是在大学环境中进行的。几乎没有在真实软件开发项目中详细审查下的结对编程被已存在的系统化实验研究过。因此,假设目前仍然没有纯粹的经验验证这种优势的存在。”据此和他们的试验结果,文中提出了针对结对编程的反面观点:“我们的经验发现表明:提供了与结对编程所声明的优势对比的结果。他们显示出:结对编程也许不像相关文献中建议的扩展的质量好处一样的必要,并且另一方面,当与单独编程进行比较的时候,这些结果并不能证明结对编程可以一直保持较高的生产率。”
2 方法定义
与结对编程类似,交换编程也是一个非常简单和直观的概念:两位或者多位程序员轮流开发同一个软件系统的同一个模块的不同阶段的任务。
交换编程的方式更合适的说法应该是交换开发,这种方式不仅仅可以应用于软件项目,也适合其他研究开发型项目。相对而言,这更是一种更容易被人们接受的方法,在前文大家已经看到了它在实际项目中的事实,这里先分析一下它与结对编程的不同之处:
它仍然采用传统的一人一机的开发方式,如图2;结对编程是两人一机,如图3。
它在每个迭代间进行多人交换或者两两交换,结对编程没有交换的概念。
它与传统的编程方式之间的差别是在每个迭代间进行多人交换或者两两交换,而传统编程没有交换的概念。
这里说明一下两个概念:
轮流交换:三个以上的程序员之间相互交换所开发的工件,不仅限于三个。例如:A1的开发内容交给A2做下一阶段开发,A2的交给A3做下一阶段开发,……,An的交给A1做下一阶段开发。这种方式称为轮流。如图4、图5、图6。
两两交换:两个程序员之间相互交换所开发的工件。仅限于两人之间,如图7和图8。
交换编程中的操作与其他过程有较大的差异,根据经验,建议在软件工程实施的各个阶段按照如下的方式进行:
(1)需求工程中,需求调研和需求分析进行轮流交换;
(2)概要设计(分析模型)开发中,需求分析到概要设计进行轮流交换;
(3)详细设计(设计模型)开发中,概要设计到详细设计进行轮流交换;
(4)编码实施启动后,详细设计到编码的交换采用两两交换。
在全程建模的开发方法下的交换编程应用方式如下图:
在编码以前全部采用轮流交换的目的就是为了让更多的人了解项目进展的全部内容,有利于增加团队内的交流,使更多的人对项目所开发的内容熟悉,并能让他们提出自己的观点,也有利于使更多的人从更多的角度来研究某个系统模块所需要实现的功能和用户需要解决的实际问题,不会因为某个人的定式思维而出现理解偏差,从而造成对需求的理解不到位。
详细设计到编码的交换采用两两交换,这是因为前期需求已经基本上都稳定下来了,这时候不需要对用户需求进行更多方面的理解,只需要进行实施并进行纯粹的编码工作即可。此时做轮流交换已经不存在任何意义,相反只能影响开发进度。
3 优劣分析
关于结对编程,很多公司对其也有一些常见顾虑,如图10,图11,图12所示:
表1中表述了传统的单人编程,交换编程,结对编程以及交换编程和结对编程配合使用四种人员组织形式下在常见的软件开发相关问题上应用适用性以及表现出来的特点。
表1的十四项内容分别从团队稳定性,技术水平,开发周期,团队人员等四个方面对这四种团队内人员组成方式进行了分析。从上面可以看到交换编程对几乎所有的这些项目都有其明显的优势,总体上看,交换编程无论在管理层面还是在团队组织层面或者是在项目变化上都优于单人编程和结对编程。
4 试验结果
2002年4月在上海进行的一个ERP项目中实际采用了结对编程的方式来进行部分模块的开发。两个各自独立完成了一个模块开发的程序员携手进行第三个模块开发时采用了结对编程的方式。两个人只用了四天时间,就完成了这个新的模块(其模块难度与前面完成的模块开发难度相同)的全部功能,并且这个模块开发完成后几乎是一次性通过了全部测试。相对于此前做的功能模块来说,时间仅有其他模块开发时间的十分之一。
但由于结对编程会让人感觉到资源被浪费了一半,在2002年10月开始的一个中国电信MSS项目中,项目组提出进行结对编程的时候被管理层拒绝。那如何才能借鉴结对编程的优势,并能降低这种表面的浪费,而又能让大家交流起来,同时能提高团队的稳定性呢?
4.1 项目基本情况
这是电信MSS项目的核心业务系统部分,包括了规划、可研、设计、施工、试运行、验收、财务、合同等多个重要环节和多个部门的业务。这个项目在最初评估的开发周期就是第一个版本在五个月内完成,整个项目至少要做上一年以上,而最后的实际情况是,这个项目随着不断的升级和调整一直开发了三年多。
可以对比的数据是:2003初到2004年10月间SAP基于自有的ERP系统给中国电信提供了完成同样功能的一套产品来替代这个团队所开发的这个产品,SAP也向中国电信承诺了要针对中国电信的行业企业特点进行定制开发,但是在2004年底推广应用前被宣布试验失败,延期推广。这个对比数据主要是为了证明这个业务系统的复杂度和规模都是相当巨大的,但是,在国外企业实施失败的情况下,国内一个小团队的开发却完成了南方电信11个省公司版本和电信集团公司版本的全部开发,2年内没有发生开发人员辞职的事情,由此可见,交换编程的开发方式带来的团队开发效率和稳定性都是比较好的。
4.2 团队组成情况
当时团队开发人员数量为11个,人员技能较为均衡,没有经验和开发水平远远超出其他人的技术人员。最初的开发团队是十一个人,后来扩展到二十三个人,其中三个有五年以上开发经验,两个三年开发经验,另外的六个人技术水平相对较低只有一年多的实际项目开发经验。对于团队人数少于20人的开发团队,企业一般不会允许采用结对编程的方式进行开发,因为这类项目大部分都存在时间紧,任务量大,承接项目的公司规模较小等特点。当然,对于类似微软,Google,ThoughtWorks,AutoDesk等对资源占用不敏感的产品开发公司中超过4人的团队就可以考虑进行结对编程。。
4.3 项目实施过程
由于开发团队中没有经验和开发水平远远超出其他人的技术人员存在,因此技术方案的论证过程都是在全体组员的共同讨论中制定下来的。因此在权衡了整个项目的实际情况后,团队经过讨论后决定在完成需求工作后,第二阶段设计模型的开发所有开发人员轮流交换来做。
在设计模型开发完成后,开发人员再次进行了轮流交换。两次交换完成后,保证了每一个模块都有至少两个人对其十分熟悉,一方面不会因为人员的变动造成团队的不稳定,另一方面保证每一个模块的开发人员都能找到人进行讨论,从而增加了团队内的沟通,方便了协调工作的进行。
因此在那个团队的开发过程中,经常是大呼小叫,无论走到哪里,都是十分热闹的场景。在Larry L.Constantine’s The Peopleware Papers[4]一书中的第十二章的“工作和游戏”一节中也有着类似的描述。Larry L.Constantine认为这是创造性团队应该具有的表现形式,这也符合Brooks[5]的胶冻团队的一个特征。
由于当时没有进行实际数据的度量对比,本文也无法从量化的数据上来说明问题,只能通过一些具体的事实来进行说明和验证:当时这个团队在七个月内满足了南方11家省级电信公司和中国电信集团公司的基本业务需求。从2003年4月到2003年12月期间,基本完成了该系统在这些省公司和集团公司等12个相对独立版本的二次定制开发任务。
5 总结
综上所述,交换编程的应用方式是有其适用环境的,并且具有较为明显的优势。交换编程的适应性较强,这里分为团队状况和项目情况两个部分进行说明:
团队状况:交换编程适用于人数超过两个人的开发团队,因为交换一次至少也需要两个开发人员。人数较多的团队也可以应用交换编程的方式,来进行项目开发。要求团队内有一两个具有两三年以上开发经验的成员,这是对于软件项目的最基本要求。
项目情况:项目规模不限,开发周期的适应性也较强,对于任何类型的项目都可以适用。
摘要:结对编程是一种编程组队方法,在这种方法中要求两个程序员使用一台电脑在一起工作完成同一个任务。在软件开发中关于结对编程的价值正在进行着争论。目前在这个领域大量的知识都是离散的和无条理的。回顾这些可以看到绝大多数这方面的实验研究都是在大学环境中进行的。几乎没有在真实软件开发项目中详细审查下的结对编程被已存在的系统化实验研究过。因此,假设目前仍然没有纯粹的经验验证这种优势的存在。由于结对编程在表象上给人以浪费一个开发人员的感觉,所以,在很多软件企业中,很难得到推广实施。在本文的报告中,我们给出了一种有别于结对编程和传统的单人编程的团队组织形式,这种形式融合了结对编程促进团队内相互交流的好处,保持了团队的稳定性,同时采用了传统单人编程的形式,不给人以浪费人力的感觉。
大学生编程实习工作报告 第9篇
通过这次实习,我对计算机专业在行业实践中的工作对象、面临问题及解决办法有了一个较为全面的理解。巩固专业知识的同时也增加了行业责任感,实习的日子里也加深了同学友谊,锻炼了团队精神。现将实习的个人感想如下:
在这三个礼拜的时间中,我复习了曾经学过的编程语言c#,让我对c#在认识的基础上,又具备了用c#开发windows应用程序和web应用程序的能力。现在我再去理解.net和c#,就会发现.net是个强大的新平台,而c#则是该平台下最佳的开发语言。我还系统的学习了.net编程,并努力完成我此次实习的任务----商品进销存系统设计。系统采用asp.net,开发工具为sqlserverxx,开发语言为c#。这个系统是针对中国中小企业开发的进销存管理软件,全面提高商业企业的管理效率,高效管理库存,提高销售力度,为企业增加更大利润。使用简单,最大程度的简化了财务管理软件的操作复杂性,使企业无需学习,即可自己轻松上手,不但界面简单易于操作,而且通过此系统您可以知道您每天、每月、每年的销售额、利润,统计所有的应收款、应付款,知道精心挑选您的哪个分公司、门市、柜台、商品、业务员赚了多少钱,库存商品的价值,等等!有了此软件您就可以轻轻松松的打理您的企业,获得更多自由时间。还有此软件数据流比较大,数据库中表有五个,可光视图就建了十来个,我们小组经过三个礼拜的开发时间完成了该系统,也受到了老师的肯定。在此次的实习中我们小组合理分配时间,恰当的调用人手,时刻争当速度最快,界面最整洁的小组,我在其中主要完成了详细设计文档和测试设计文档的编写,还做了其中几个页面,同时协助同事进行开发,现在能熟练进行开发环境中各个控件的使用,。
我们小组的名字为powerbeggar,顾名思义,power有力量的(力量来源于团结)故寓意我们小组成员的团结;beggar乞丐,powerbeggar即:有力量的乞丐!但“此乞丐非彼乞丐”!传统意义上的的乞丐是叫花,但是,我们觉得:理论与实际有很大的差距,课内与课外有很大的区别,基于这一点,我们认为我们很缺乏“实战经验==”justlike-beggar,与此同时,也暗含了我们对于知识的渴求;另外,还隐含了我们在这个过程中不怕苦不怕累的艰苦奋斗的革命精神!
指导老师们在整个实习过程中尽职尽责,对保证实习质量起到了重要作用。实习开始时,老师们深入学生的生活和学习环境,阐明实习大纲及实习计划内容,明确实习目的和要求。实习过程中,结合实习单位的具体情况,帮助学生学会具体地分析问题、解决问题,学会深化专业知识,用专业知识指导实践,指导学生做好具体工作;在业务不多的实习点,引导学生“找事做”,挖掘一定的实践经验;检查学生实习工作日记,掌握实习情况,指导工作及时有效;督促学生认真完成实习报告。指导老师平均每周至少与学生交流一次。基本达到了及时发现问题,解决问题,提高实习质量的目的。实习单位的指导老师认真负责。不仅指导具体工作,还无私的介绍自己的工作与社会经验。
在此次实习过程中,我们每个人都把自己当成是公司研发部的一员,我们每天坚持按时上下班,甚至有时还会早到或者加班,合理的安排自己的工作时间,在指导老师的安排下劲量做到劳逸结合,时而做个小游戏放松我们自己的大脑,随后便尽快让大脑做到高速运转,我对自己技术上的特点作一个概括。熟练的编写详细设计和测试设计文档;努力学习asp.net,asp,javascript编程;熟练掌握sqlserverxx,复习并掌握了简单的sql语句;熟悉windows应用系统的开发,开发语言为c#。
最后总结一下我在此次实习过程中的收获主要有四个方面:一是通过直接参与企业的运作过程,学到了实践知识,同时进一步加深了对理论知识的理解,使理论与实践知识都有所提高,圆满地完成了此次实习的实践任务。二是提高了实际工作能力,为就业和将来的工作取得了一些宝贵的实践经验。三是在实习过程中成立一个小团队,彼此之间公 文 有约精心挑选互相沟通,互相帮助,为了我们的目标而努力,让我看到了大家对于工作的热情,还有每个人的工作能力。四是为毕业论文 积累了素材和资料。