千文网小编为你整理了多篇相关的《软件工程毕业实习报告范文》,但愿对你工作学习有帮助,当然你在千文网还可以找到更多《软件工程毕业实习报告范文》。
一、实习概述
实习是一种实践,是理论联系实际,应用和巩固所学专业知识的一项重要环节,是培养我们能力和技能的一个重要手段。八月初,我们来到xx中心进行为期20天的实习,我们要做的是物流配送管理系统,我要做的是配送中心管理模块。它的主要功能是完成对商品、库房和供应商的管理,缺货查询和进货安排。由于大家负责不同的模块编写,作为组长的我需要充分考虑各个模块之间的交互,系统风格一致性等问题。
为此,项目启动之前我们小组6人开会讨论了整体的业务流程,明确了数据库表之间的关联和各个模块之间的接口。在项目验收阶段我们顺利地通过了答辩,圆满完成了预期目标,虽然和优秀的小组开发的系统还有一些差距,但是我们发挥了每个人的能力,结果也令我们满意。
二、实习感受与体会
在为期20天xx中心的实习过程中,我每天都感觉很充实,从基础知识的巩固,项目整个的开发过程,我都认真学习,勤于思考,并且不断动手实践,我感到收获很大。
这是我们在学习专业课程之后走向工作岗位之前的不可缺少的实践环节。它对于培养我们的动手能力有很大的意义。这次实习旨在培养学生综合运用所学的软件工程专业基础理论、基本技能和专业知识分析问题和解决问题的能力,培养我们的专业素质、应用科学的思维方法和计算技巧,使我们了解科学研究工作的一般程序和方法,撰写科技论文的能力;培养我们直接参与科研活动、科研文献和资料的调研,对研究工作以及相关的研究结果分析、综合的能力;重点培养我们积极的创新精神、严肃认真的科学态度和严谨求实的工作作风,增强我们的综合素质以及对毕业后工作岗位的适应能力;有利于扩大我们的知识面,并掌握一些软件工程技术的发展前沿。
这次实习让我们走出校园,切身体会公司的企业文化,感受到了和学校里面不一样的学习方式和氛围,也可以从中学到很多社会经验,了解了很多行业需求和动态,使我们视野更加开阔。
我是JAVA开发方向的,前一周时间主要是老师给我们讲解JAVA的基础知识,Web实用页面的设计方法,ORACLE数据库的使用,这些知识有些我们在课堂上学过,这次是系统的讲解,为我们之后的项目开发打下了良好的基础。
对于像我这样软件工程专业的学生,JAVA语言是我们的立身之本,然而在学习的过程中我发现自己的基础知识掌握不是很牢固,学过的知识存在遗忘的现象。就像老师强调的那样,我需要注重学习的细节,不能模棱两可。
在Web开发技术是我的薄弱环节,以前只知其然不知其所以然,在讲解过程中,我了解了在JavaEE框架下对于一个B/S架构的网络应用程序是如何基于HTTP协议进行通信的。掌握了请求和响应是如何发送和处理,过滤器的使用,Session技术原理等等。
之后我们6个人一组开始了项目开发。我们要做的是物流配送管理系统,物流配送管理系统是一套专门针对配送行业实现销售管理的软件系统,全面适用于物流配送领域中的各级各类经营企业。时间紧任务重,对我们来说是个不小的挑战。我们先根据需求确定功能点,根据功能点我们搭建了每个模块的静态界面,通过实现前台跳转我们逐渐明晰了流程,也顺利通过了评审。
在开发过程中我们也遇到了很多问题,由于小组6个人实践能力不同,大家的进度就很难统一。还有一个就是版本控制的问题,为了避免工程修改冲突,我们为每个人建立了了自己的开发包,大家将自己开发的文件放置其中。我们用到的Struts和Hibernate框架里面有些文件需要公用,这样我们决定在项目整合的时候统一修改。这样我们就避免了很多不必要的麻烦。
由于我们选用了我们比较熟悉的开发工具和框架,所以我开发起来比较流畅,技术上没有遇到太大的问题。在开发过程中我们建立了很好的信任关系,良好的沟通机制,让我们每个组员有问题马上分析和解决。我们也充分体会到了,团队合作开发中每个人应该承担不仅仅是自己的责任还有团队的利益。
在实习过程中,实训中心还为我们安排了几次专题讲座。在项目管理和质量管理讲座中,张老师为我们讲述了软件行业一条非常重要的项目管理标准——CMMI,能力成熟度模型。它用于指导软件公司开发出合理高效的产品。我们需要掌握这些标准,使自己的技术和方法在以后的工作中处于行业的地位。通过职业生涯规划的讲座,我深切了解到生涯规划是确定人每个阶段发展的方向,立足于本职工作,不断自我管理,最终达到职业目标的一种方法。还有面试技巧训练,这些对于目前尚未走向工作岗位的我们大学生来说,是大有裨益的。
三、实习总结
这次实习让我理论联系实际,在团队软件工程的开发、数据库的设计、分析问题解决问题的能力上有了很大的提高,积累了开发经验,达到了实习效果,让我得到了难能可贵的锻炼。
目的:
大学生社会实践作为高等院校实践教育的重要组成部分,目的在于弥补学校教育教学工作的不足,丰富和深化大学生思想政治教育的实践内容,促进青年学生在理论和实践相结合的过程中增长才干、健康成长的重要课堂,从而优质成才、全面成才。
意义
1)可以引导青年学生了解社会,了解国情,坚持走有中国特色社会主义道路的信念。
2)引导学生增强责任感和使命感,树立正确的世界观、人生观、价值观,提高学生的综合素质。
3)充分发挥学生的知识和智力优势,为人民群众生产和生活基本需求服务,培养学生的劳动观念和奉献精神。
4)合理利用课余时间,积极投身于各类社会实践活动中,全面提高自身素质,为就业做好准备。
2010年中国软件产业发展现状概况
2010年,我国软件业实现新的突破,产业增速稳步回升,业务结构调整加快,企业发展和区域布局出现新的特点,在国民经济中的地位不断提升。
2010年,实现软件业务收入13364亿元,产业规模比2001年扩大十几倍,年均增长38%,占电子信息产业的比重由2001年的6%上升到18%。在全球软件与信息服务业中,所占份额由不足5%,上升到超过15%。软件业从业人数由2001年不足30万人提高到超过200万人。
2010年,信息技术咨询服务和信息技术增值服务收入分别为1233和2178亿元,同比增长37.2%和44.6%。软件产品收入4208亿元,同比增长28.6%;嵌入式系统软件受通信类产品增长放缓影响,完成收入2242亿元,同比增长15.1%。受集成电路行业复苏和软件外包市场增长带动,设计开发实现收入593亿元,同比增长73.1%;系统集成和支持服务实现收入2910亿元,同比增长31.8%。2010年全国计算机软件著作权登记量突破了8万件。
软件产业发展聚集趋势从过去主要集中在京粤地区转向沿海地区。2010年,江苏、辽宁、福建、山东四省软件收入增长超过35%,占全国比重合计达35%,逐步打破过去京粤两地占全国一半以上的集中局面(两地占比下降为35.5%)。中心城市成为软件产业发展的主要聚集地,2010年全国4个直辖市和15个副省级城市软件收入10643亿元,占全国的比重为80%。在中西部地,成都、西安、重庆三个城市占西部地区的90%,武汉、长沙二个城市占中部地区30%以上。
软件产业面临的形势
从国际上看,全球软件产业格局充分洗牌,为后发国家实现追赶和跨越带来更大的机遇,软件技术和产业的格局正在孕育新一轮的重大调整,一方面跨国公司原有的技术垄断受到了挑战,对后发国家的技术锁定效应大大降低,所谓的技术锁定就是垄断,技术封锁效应。另一方面是云计算为代表的模式的创新对产业发展的影响日益突出,在这种背景下,软件技术创新速度将明显加快,服务的新业态新模式将不断的涌现。
从国内看,推进两化深度融合和培育战略性新兴产业给软件产业带来巨大的发展空间,我国作为后发国家,拥有大国优势,有庞大的潜在的消费市场。商务部统计,我国的消费是每年15%的速度在增长,其中有很大一部分是电子消费,满足不同层次和年龄的需要,推动两化深度融合,培育发展战略性新兴产业为我国新一轮信息技术发展提供了广阔的创新和应用空间,从云计算、物联网新兴业态的发展情况来看,我国和美国有一段距离,但是国际上物联网是这两年刚刚有的新的概念,我们觉得和日本韩国相比处在同一个起跑线上。
软件产业发展趋势分析
未来软件产业发展的趋势可以归纳为“五化”,分别是网络化、服务化、智能化、平台化、融合化。
网络化将成为信息技术发展的一个基本方向,互联网已经成为了软件开发部署和运行的一个平台,推动了整个产业的全面的转型,三代网、物联网和移动互联网云计算都是软件网络化趋势的具体体现。
服务化是网络转型的本质和特点,软件开发技术和应用模式正在向以用户为中心转变,云计算是软件服务化的模式,可以按照用户需要,动态的来提供计算、存储、应用等各类资源,具有可动态的伸缩性,使用成本比较低,可管理性好,节约能耗,安全便捷等优点,在服务化的大趋势下,向用户提供软件服务的体验,将来成为竞争的重要因素。
智能化是软件技术发展的永恒的主题,软件能够从复杂多样的海量的数据当中,自动高效的提取所需要的知识、信息进行加工处理,软件开发语言更加的高级化,开发工具也更加的集成化。
平台化是软件技术和产品发展的新引擎,操作系统、数据库、中间件和应用软件相互的渗透,向一体化的软件平台进行演变,平台化的趋势下,软件的竞争从单一产品的竞争发展为平台间的竞争,未来软件产业将围绕主流软件平台构造整个软件产业链。
融合化是软件技术和产业发展的新空间,软硬结合,软件与网络的结合,产品与业务的融合,软件产业与其他产业之间的相互渗透、相互融合不断深化,融合化趋势创造了巨大的市场需求。
什么是“软件工程”?
IEEE计算机学会将“软件工程”定义为:“(1)应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。(2)对(1)中各种方法的研究”。(参见:IEEEStandardGlossaryofSoftwareEngineeringTerminology。IEEE,Piscataway,NJstd610.12-1990,1990)
软件工程知识域
软件需求SoftwareRequirements软件设计SoftwareDesign软件构造SoftwareConstruction软件测试SoftwareTesting软件维护SoftwareMaintenance软件配置管理SoftwareConfigurationManagement软件工程管理SoftwareEngineeringManagement软件工程过程SoftwareEngineeringProcess软件工程工具和方法SoftwareEngineeringToolsandMethods软件质量SoftwareQuality软件工程职业的乐趣
首先是一种创建事物的纯粹快乐;
其次,快乐来自于开发对其他人有用的东西;
第三是整个过程体现出魔术般的力量——将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果;
第四是学习的乐趣,来自于这项工作的非重复特性;最后,乐趣还来自于工作在如此易于驾驭的介质上
软件工程职业的苦恼首先,必须追求完美;
其次,是由他人来设定目标,供给资源,提供信息;
概念性设计是有趣的,但寻找琐碎的bug却只是一项重复性的活动;
最后一个苦恼,有时也是一种无奈——当投入了大量辛苦的劳动,产品在即将完成或者终于完成的时候,却已显得陈旧过时;
软件工程职业发展路线
从程序员到软件设计师
软件技术发展到今天,分工越来越细。程序员作为一个通用称谓已经无法确切定义各种工作的性质和特点。因为软件开发中各种职责区分不清,无论是刚刚写代码的新手还是具有多年经验的老手,一概被扣上程序员的通用名称,这也使得很多进入这个领域的软件开发人员无法制订自己未来的职业发展之路。
实际上,软件公司也认识到了对程序员分类的重要性开始将各种职位定义得更加准确。对于从事软件开发的程序员来说,更需要尽快明确自己的发展方向,并在此方向上将专业知识积累得更深厚,这才能尽快摆脱对未来发展方向的迷茫。
从程序员的技术方向发展来看,软件设计师无疑是职业生涯的顶峰。拿破仑说过“不想当元帅的士兵不是好士兵”,借用这句话,不想当软件设计师的程序员也不是好程序员。不过首先要了解什么是软件设计师,如何才能成为软件设计师。明了这些,才有可能向软件设计师发展,创造更辉煌的程序人生。
软件设计师的定义
软件设计师包括软件系统设计师(SystemDesigner)和软件架构设计师(Architect)。
系统设计师应对“系统结构”所使用的软件技术非常了解,自身具备良好编程技巧,才能成为优秀的系统设计师。系统设计师的职责是把结构模型对应到实现模型上,从概念到实现期间规划和组合模型的优劣是决定软件系统设计师好坏的标准。
软件架构设计师是程序员技术方向的最终归属,也是成长链中最神圣的一环,架构设计师的贡献最大。架构设计师彻底摆脱了语言的束缚,知道软件发展趋势。他们会开发新一代产品或者制定新一代产品的方案。软件架构设计是面向未来的。全球大规模的软件公司并不多,很重要的一个原因是软件产品的发展都滞后于市场需求,即有需求后再研发产品,而不是预见需求,预先设计,因此往往软件设计局部是合理的,但从整体的角度看却不合理。要解决这些问题就要看的能力了。
软件设计的三个层次
软件设计可以分三个层次。
第一层属于标准层,像J2EE、.NET的框架设计;
第二种属于系统层的设计,比如Delphi这样的开发工具就是工具系统级的设计;
而应用最广泛的是第三层:应用软件设计。基于中国软件产业发展的现状,大部分设计都是这个层次上的基于应用的架构设计,本文非特殊标明,提到的软件设计师泛指应用软件系统设计师,当然有些也是架构设计师的能力所在。
//*从软件开发历史看,软件设计经历了很多阶段。最早是结构化设计,只是把复杂的问题逐层分解,通过流程图形式将任务标明,提到的软件设计师泛指应用软件系统设逐级细化;后来出现面向对象设计,从底层进行对象封装、继承、多态,这时更多的是考虑代码重用,面向的主要是类和对象。接下来出现组件设计,这主要是面向应用方面。这三种都是面向功能的设计。
从EJB、COBRA技术出现之后,人们开始基于框架进行设计,也就是架构设计。继续发展,就是基于规则的设计了,比如基于模块和工作流的设计,这时主要将客户化做的更详细以及考虑开放性、可扩展性、可靠性、效率方面的问题。*//软件设计师的工作
随着大型软件开发越来越多,整体把握软件架构变的越来越重要。尤其当用户需求并不明确的情况下,就要开始做软件,如何防止交付的软件产品与用户的要求距离很远,这就需要软件系统设计师进行恰当的设计。
在应用软件开发中,软件设计师担当承上启下的角色也就是把用户的需求,基于应用的问题变成计算机系统中可以解决的问题。设计可以分为功能上的设计和技术体系上的设计,但在实际工作中,这两者很难区分清晰。
软件设计师的要求
做为应用软件开发中最顶层的角色,软件设计师需要各方面的能力更强,除了具备更强的编程技巧能力外,还需要了解系统结构、主流软件技术和软件趋势,同时要具备相当的专业知识。多年编程经验:
既包括在专业领域的经验,也包括在软件工程领域的经验。对于一个构架团队,这些素质要求可由各团队成员分别承担,但其中至少要有一名构架设计师能够把握项目的全局。和任何行业一样,经验是最重要的。软件设计不是纸上谈兵,一个软件设计师首先要是非常好的程序员。软件设计师在编程的时候,用的工具和普通程序员没有任何差别,但使用深度是绝对不一样的。抽象能力:
一个程序员刚写程序的时候,无非就是为了解决某个功能而进行代码编写。随着程序编写越来越多,他对自己所做的应用方面的理解也越来越多。不同的企业有不同的需求,但把这些企业放在一起来看,就会发现他们的一些共性。将这些共性提炼出来,这就是抽象的过程。抽象出来的共性形成的模型可以把这些企业的需求都包含进去,这是做通用软件必须要走的一步。面向对象的思想:
面向对象是软件开发出现以来最伟大的创新之一,这是每个程序员都追求的,但是否真正掌握了面向对象的思想,这是需要探讨的,面向对象并不受开发工具和语言的限制。很多程序员在用C++写面向对象代码时,实际上还是在写C代码。甚至使用C#这种完全面向对象的语言写出来的还是流程化的程序。面向对象可以应用的领域非常广泛。不仅在写代码的过程中要考虑到面向对象,在设计和分析阶段也要用到面向对象的方法。舍得抛弃:
软件设计是一个渐进过程,是通过不断碰壁,不断调整提高的。要想取得突破,就需要舍得抛弃。
很多人舍不得扔掉自己的代码,往往是不断的修改,最后进入一个恶性的循环。当然,这种抛弃也是有继承的抛弃,不同时期产品的架构之间也有连续性,不是一个架构就会完全取代前面的架构,好的东西还是可以继承的,像微软的.NET架构就是从DNA架构上发展来的。领悟和突破:
程序员技术的成长可以通过学习技巧而成长,也可以通过思想领悟而得到成长,后者更为重要。如果不能领悟开发的思想,仅仅掌握了技巧,一旦改换了平台和语言,又要从头学起,所以很多人在转型过程中失败了。而掌握了编程的思想,自动就移过去了。
即便是很小的软件,也可以锻炼突破性的编程思维。一种基本的设计原则和思路就是程序设计千万不要回溯,否则就会崩溃,这是多少人脑袋碰墙多少次之后才明白的。非软件知识:
提起软件设计师,人们很喜欢拿建筑师做比较,的确这两个行业有很多相似之处。古罗马建筑师维特鲁威说“理想的建筑师应该既是文学家又是数学家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算。”软件设计同样如此。
从程序员到测试工程师
软件测试是一门非常重要的学科,目前研究的内容还很不深入。软件测试需要什么样的专业基础还没有定论,而且目前还没有一种很好的标准来衡量测试人员。但无可置疑,软件测试越来越受到软件公司的重视,软件测试工程师的作用也逐渐被人们所认可。这已经在像微软这样的国外大型软件企业中所证实,微软的一个开发人员会对应一至两个测试人员。
2002年4月份,微软公司董事长兼首席软件设计师比尔·盖茨让微软研发部门将所有手头正在进行的工作暂停,彻底检查了每一个微软的软件,将所有存在的漏洞全部修好,所有的开发人员全部成为了测试人员,为的是“可信赖的计算”。
国内软件公司对软件测试的态度令人担忧。软件测试不足,开发测试人员比例不合理。据调查,最好的企业中测试人员和开发人员的比例是1:8,有的是1:20大部分公司甚至没有专职的测试工程师。
重视测试首先需要有开放性的软件文化,而在很多公司中,测试工程师只是绝对服从的听命角色,没有发挥他们的积极性和创造性。一些管理人员对软件开发的流程管理经验不足,仍然用传统企业的方法进行管理,再加上对软件质量的控制理解不对,认为让程序员编完程序后经过简单的功能测试就可以发布了,而没有认识到软件测试是控制质量最好的方法。不过,国内还是有一些大型公司和专业公司已经在软件测试方面走上正规IBM软件测试项目,已经成为公司主体软件外包业务之一。
一提到软件测试工程师,很多人会想到那些反复使用软件,试图在频繁操作中寻找到错误发生的低层次人员或者软件用户。其实这是一种错误的概念,软件测试早已超越了用户使用来发现Bug的基本测试阶段。
现在软件测试工程师普遍分为三种:测试执行者(BasicSoftwareTester)、测试工具软件开发工程师(SoftwareDevelopmentEngineerinTest)和高级软件测试工程师(Ad_hocTester)。
测试执行者负责理解产品的功能要求,然后根据测试规范和测试案例对其进行测试,检查软件有没有错误,决定软件是否具有稳定性,属于最低级的执行角色。测试工具软件开发工程师负责写测试工具代码,并利用测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务。产品开发后的性能测试、提交测试等过程,都有可能要用到开发的测试工具。对技术要求最强的是这些人因为他们要具备写程序的技术。“不同产品的特性不一样,对测试工具要求也是不同的,就像Windows的测试工具不能用于office,office的测试工具也不能用于SQLserver现在很多测试工程师就是负责专门为某个产品写测试程序的。”
软件测试工程师的素质:
因为软件测试仍然处在发展阶段,还没有上升到理论层次。对人员的评测,包括微软在内,都还没有一个统一标准,因此评定软件测试工程师只能根据工作实践进行自然淘汰了。
软件测试对逻辑思维、学习能力、反应要求很高,是否有严密的思维和逆向思维也非常重要。
做测试还要考虑到所有出错的可能性,做一些不按常规、非常奇怪的事。除了漏洞检测,测试还应该考虑性能问题,也就是要保证软件运行得很好,没有内存泄漏,不会出现运行越来越慢的情况;在不同的使用环境下,考虑软件的兼容性同样重要。软件测试同产品的规模也有很大的关系,因为软件的bug往往出在大型软件的连接处。
做软件测试工程师需要对软件抱有怀疑态度。这是因为开发人员喜欢想当然,总是找一些有利于自己程序执行的数据,有些开发人员甚至认为不利于程序执行的数据是对代码的玷污和亵渎。而软件测试却要策略性的准备各种数据,从每个细节上设计不同的应用场景,不去想当然的假定任何一个数据是可行的。
在职业素质和交际方面方面,并不是测试工程师爱挑别人毛病才好,反而这个工作要求很强的沟通能力。要经常和开发人员进行沟通,说话办事要很得当,不能指责别人,否则会事倍功半。软件测试工程师在工作中,对人和对事是完全不同的两个问题。
测试设计中需要考虑的22种测试类型:
1.黑盒测试:
不基于内部设计和代码的任何知识,而是基于需求和功能性。2.白盒测试:
基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。3.单元测试:
最微小规模的测试;以测试某个功能或代码块典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。4.累积综合测试:
当一个新功能增加后,对应用系统所做的连续测试。它要求应用系统的不同形态的功能能够足够独立以便在全部系统完成前能分别工作,这种测试可由程序员或测试员来做。5.集成测试:
一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试主要与客户服务器和分布式系统有关。6.功能测试:
用于测试应用系统的功能需求的黑盒测试方法。7.系统测试:
基于系统整体需求说明书的黑盒类测试;应覆盖系统所有联合的部件。8.端到端测试:
类似于系统测试;测试级的“宏大”的端点;涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。9.健全测试:
典型的是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步的测试。10.衰竭测试:
软件或环境的修复或更正后的“再测试”。可能很难确定需要多少遍再次测试。尤其在接近开发周期结束时。自动测试工具对这类测试尤其有用。11.接受测试:
基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。12.负载测试:
测试一个应用在重负荷下的表现,例如测试一个Web站点在大量的负荷下,何时系统的响应会退化或失败。13.强迫测试:
在交替进行负荷和性能测试时常用的术语。也用于描述象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。14.性能测试:
在交替进行负荷和强迫测试时常用的术语。“性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。15.可用性测试:
对“用户友好性”的测试。显然这是主观的,且将取决于目标最终用户或客户。用户面谈、调查用户对话的录象和其他一些技术都可使用。程序员和测试员通常都不宜作可用性测试员。16.安装/卸载测试:
对软件的全部、部分或升级安装/卸载处理过程的测试。17.恢复测试:
测试一个系统从如下灾难中能否很好地恢复如遇到系统崩溃、硬件损坏或其他灾难性问题。18.安全测试:
测试系统在防止非授权的内部或外部用户的访问或故意破坏等情况时怎么样。这可能需要复杂的测试技术。19.兼容测试:
测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。20.比较测试:
与竞争伙伴的产品的比较测试,如软件的弱点、优点或实力。21.Alpha测试:
在系统开发接近完成时对应用系统的测试测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员员完成不能由程序员或测试员完成。22.Beta测试:
当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员完成不能由程序员或测试员完成。
如何成为优秀的软件人才
专业知识技能
软件人员的专业知识技能大学的计算机专业知识技能软件工程知识与实践项目管理知识与实践企业研发管理
本科学历是必需的,硕士学历是受欢迎的,博士学历是可有可无的
IT人才要珍惜青春,切勿沉沦于纸上谈兵、自欺欺人的“学问”打好专业基础最重要,做学生不要急功近利。学习时“扬长补短”,工作时“扬长避短”。至关重要的综合才能
表达能力:说和写
业界通病:软件人员的表达能力远远低于其开发能力(例如不会写文档)
错误的思想根源:认为表达能力是可有可无的,技术才能才是最重要的
大学教育失误:培养优秀的工程师而不是领导人。无论那个领域的风云人物,都是“能说会写”之人
如果一个人不在乎自己的文才与口才,实际上他已经选择了平庸之路。
不要怨“英雄无用武之地”,因为别人不知道你能成为英雄!如果你想干一番事业,必须练好你的文才和口才。管理能力
管理能力决定你的“仕途”!误区:没有机会锻炼管理能力
不同行业有不同的管理方法。先从软件项目管理入手(麻雀虽小五脏具全)。
搞技术要用脑子,搞管理要用心。
职业道德和工作态度
职业道德
上班时间不干与工作无关的事情不损害集体利益不干危害社会的事情工作态度
认真负责服务意识
如何高效率地工作
观念
在有生之时,为个人、家庭、集体、国家多做贡献但是不要天天辛苦的工作,辛苦地生活。应该愉快地工作,愉快地生活。上班族的经验
合理安排一天的时间:上午,中午,下午,晚上
减少路上花费的时间:时间比钱更值钱,前者浪费了无法追回!正确地开会:明确会议目的,限定人员与时间,不要把上班时间切割得很零碎
处理电子邮件:不要即时响应电子邮件,早中晚三次收发邮件就够了。
随时记录问题与灵感:因为我们大部分人不是天才,靠日积月累才能产生成果!总结
通过这次认识实习,我了解了一些关于软件工程的职业以及怎样做好它们,使我明确了以后的发展方向。
时间过的很快,转眼间已经实习将近5个月,其中有2个月是属于完全被流放的。
最先在内部系统组参与内部管理系统开发(struts+mysql+spring+hibernate),之后是去做网络交换机软件的脚本测试。现在又回归内部系统,虽然在脚本组期间,编码能力被别人甩在后头,但至少具有了一些测试经验。
至少自己做的东西,是真正交付到了客户手上,到也稍微有些成就感。
1、浅谈测试
一直以来,我都认为测试是脱离了软件工程范围的工作,不以为屑。但在实际情况中,测试是既重要且难以精湛的.其真正的压力,在于找不到bug,责任在你,而不在于编码人员。一般的测试人员不懂编码,他们靠的是日以累计的经验总结和想象力。而要做到高级测试工程师,则一定要懂编码,因为这是你完全掌握整个系统的方方面面具体运作的前提。但占主导地位的,还是大型系统的集成测试经验。实际项目中,编码时间一般只占30%左右,真正耗费时间的是IT阶段的找bug与对应bug,此阶段基本评定了coder的编码质量。
2、程序员的困惑
有些人,以为教学视频和代码看多,自己就懂的多,实际做起来,却不知从何下手,问题在那?如何定位?如何解决?通通跟一样能力有关,debug追踪能力,也称调试。在项目组工作不愁源码资源,但问题是蛋糕摆在面前,你如何去消化?
有位同事告诉我:代码看几遍都没用,要去抄,例如一个查询模块,在此基础上去做具体记录的历史记录查询模块,你可能会觉得很简单,但实际情况却往往报一堆异常,配置问题涉及到方方面面,以及数据库字段,传值问题等等,一大堆对于新人来说很郁闷的问题。但不用怕,只要学会调试,一个个问题去追踪,一个个去解决,自然而然,那段“源码”才真正属于你。
3、如何调试追踪
如果你能在短短的时间内就看到问题点在那,放下断点去追踪,出去找工作,绝对没问题。出现问题的时候,不要光看代码,要用实际行动去追踪运行期间的具体值,那是最好途径。eclipse是个很爽的ide,这点做的很好。例如页面内容显示不是自己想要的数据,我们要先从数据库查询语句去下手,设置断点,一步一步stepover,让sql字段(存取最终sql语句的字符串)运行到有值,inspect进去看,如果还看不出来,就点击它,copy后在sql客户端去实际运行,看看实际查询出来的表是什么,如果是对的,有可能就是页面调用的错误或者action逻辑的传值问题。
页面错误的调试,基本方法是用右键点击实际网页查看源代码,copy到editplus,就能看到具体错误发生在那几行。通常有几种常见的错误,例如:缺少对象这种很多时候是有些被你调用的字段有可能为空的情况出现的,可以加if(xxx=null)语句加保护。追踪的方法基本就是用alert语句,放在有可能出错的地方。
4、一些习惯
遇到问题先自己思考,无从下手再找高手帮忙看看,注意他帮你看的思路,别在一旁闲着,看多了自己也会了,不然你一辈子都停留在那种水平,从人身上学到的东西远远比书多的多。
解决了一个问题后,要去究根问底去找到问题产生的起因,以防你下次遇到类似的问题再浪费同样的时间。
把代码写的漂亮,注释、空行、规范一样不能少,可读性是放在第一位。曾经看过一个高手写的代码,真的一看就是不同水平的人写的,几乎很完美,读起来很流畅,方便自己也方便别人。
任务完后不要呆着,去要求经理给你更有挑战性的任务,只要你肯去尝试,他们就会对你另言相看,把三天的任务一天加班搞定,效率和忠诚都有了,路也比较好走了。
前端开发毕业实习报告
前端开发毕业实习报告一
以前在校很少自己做程序,对软件工程更是一无所知。来到公司,开始接触"大规模"(其实现在看来实习的项目其实还是很小的)软件开发,一时真的有些迷茫。比起VSS,MVC,QA,CMMI,我对JAVA,JSP,XML的一窍不通根本不值一提。大家都不想输在"起点",所以都默契地在加班,这样一直持续了实习的两个月。
刚来的时候"始业教育"显得慢吞吞,我们还经常盘算去哪哪玩之类的。我和FLYSKY(20个新生里唯一一个南区的兄弟,软件学院的)还经常出去吃各种小吃,每到一处都尝尝本地的风味,这是他的习惯。之后开始的培训还不是很难过,JAVA,C++,ORACLE,老师们讲的很"好",可以说是非常好,好得我们没有几个人能听懂。大家开始发愁,我也是每天晚上都基本看书到10点。
"我心说得亏哥们我还练过",来之前的2月份我就自己买了一本THINKINGINJAVA,看懂看不懂怎么说也算是准备了一下JAVA,C++虽说没去上过课,但凭我的直觉我就一下看中这东西很有用,自己也看过一阵.至于ORACLE,虽然不了解,但毕竟因为佩服"云飞扬"的性格和敬业精神,咱SQL选修也不是白混的。专业倒还有点"基础",再加上咱这自学能力也不是吹的,基本维持。可等到后来的日语课就全迷糊了:本就没有语言天赋,再加上记忆严重欠缺,总是特别害怕去上日语课。不过特别喜欢那个老师说话的感觉,加上她一直对我都很好,所以还是很用心的学着。
随着培训的收尾,我们开始正式进入项目。从需求分析,概要设计到详细设计,我们一步一步的开始接触软件开发的每个细节。最受不了的就是每天都要记"周报",填写自己的劳动成果。因为这个我还被QA通报了好几次呢,真的很郁闷。其实现在我很感谢这种制度化的东西,某些情况下好习惯的养成是要靠强制来确保的。详细设计之后就是企盼已久的编码,我心想终于可以做点"正事"了。现在回头一看才知道,其实编码只占软件开发的整个过程劳动量的1/4左右,而且其他的环节也不是想象中的那么无足轻重。
编码我其实做的很不好,主要是因为需求分析阶段就没有认真仔细的理解需求和规格说明,加上编码时一个关键时段我回校和老同学叙旧。那阵项目经理(PM)就经常和我们说,"有问题自己想办法,不要经常问我"。PM其实是在叫我们自己酝酿,遇到难题只有"憋"一"憋"才能有真的收获。而我不在的那三天正好是大家技术/思路上的一个"跃迁",很多难题的解决方法都基本成熟,大家的编码也接近50%了,所以回来时我感觉已经掉队很多。再一个就是编码中期时机器出问题,环境搭不上了,这使我更加紧张和急躁,大大影响了我的士气。后来利用五一其间的加班我终于赶完了自己的模块,达到了第一个里程碑。其实从发现落后到加班赶完这段经历,对我来说也具有里程碑的意义。不仅考验了我自己的能力和心理素质,也证明了我对集体的责任感和合作意识。我可以叫别人来帮我做赶上进度,但那样我会错过自己学习的机会,以后再遇到难题我还是不行;我也可以硬着头皮导致项目延期,那样我以后的日子保证不好过,而且这么做也不符合我的性格。事实证明我顶住压力独立完成任务不管是对集体还是对我个人都是一件大好事。
前端开发毕业实习报告二
在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。
在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的.时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:
1.加深对课堂讲授内容的理解
课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。
通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。
2.熟悉程序开发环境、学习计算机系统的操作方法
一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓"环境"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。
3.学习上机调试程序
完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
1企业概述
1.1企业发展简史
xxxx软件科技有限公司(原xx省xx市xx科技公司)是经国家>工商管理机构注册批准的一家专门从事企业软件开发与办公信息化建设的高科技企业,公司拥有一批经验丰富、技术精湛的系统设计、实施及售后服务人员;公司拥有雄厚的技术实力和核心自主知识产权,能为企业提供从技术咨询到解决方案;从电脑设备供应到软件产品定制;从软件操作>培训到售后维护服务等全过程的高层次优质服务。公司自主研发的软件产品涵盖了企业办公、>财务管理、互联网应用、服务器出租、服务器托管、进销存管理、工业控制,仪表数据采集与测控,人工智能等多种商业领域。公司本着“采用先进技术和平台,提供高效、稳定的软件系统”的产品质量方针和“一切以用户为中心”的企业服务理念,与您共同推动我国企业的信息化建设。
1.2企业现状
一个没有优秀民族文化的民族,不能自强于世界民族之林;同样,一个没有优秀>企业文化的企业也不能自强于市场竞争之中。xx软件科技有限公司将禀承“用户至上、用心服务”的服务理念,创建独具特色的国际化IT企业文化,借鉴中外软件企业的成功经验,与国内外友商精诚合作,紧趋世界信息技术发展潮流,致力于民族软件业的腾飞,向着成为中国一流的国际化IT企业的目标迈进!为了实现“让客户尽情享受信息新生活”的企业使命,xx软件着力进行业务与服务创新,持续不断地向广大客户推出科学、适用的业务,较好地打造了业务品牌形象和优质服务形象,理念先进、功能完善的xx综合短信系统系列产品,xx商务领航平台、xx统一充值平台等系统逐渐深入客户的实际应用,提升客户感知的进程没有终点,福富软件以创新的精神推出业务、服务客户的追求永无止境。
xx软件强调以人为本,认为对员工的投资是最重要的投资,通过对员工的培训提高员工的技术能力,并在平时通过多个方面让员工随时随刻感受到盛鸿这个大家庭的温馨、友爱。
创新是一种积累。不积跬步,无以至千里;不积小流,无以成江海。我们的邻国xx战后一片狼籍,但是凭着“每天PDCA,每天进步1%”的精神,一点一滴的创新,终于成就了一个科技和经济强国。创新不是海市蜃楼,她就在我们身边,伟大的创新也许当初只是一个看似很傻的念头,但如果当初没有人插上翅膀想飞却飞不起来,有怎么会有今天的飞机呢公司将创新理念运用在公司的发展,项目的开发当中。天一当前的创新重点在于业务创新、技术创新、管理创新,提倡大胆创新,不怕失败,“莫以善小而不为”,从工作中的每个细节入手,从一点一滴做起,让创新逐渐成为习惯。
2实习过程
最为一个软件开发技术公司,不同于一般的那种严肃的气氛,xx中给人的感觉是比较的宽松,公司的人情味也比较浓。对于我们这一批参加暑期社会实践短期活动的在校学生,也都按照一般公司的标准要求我们,当然在这期间对我们的待遇,如:伙食、上下班的班车接送、业余文体活动等,也对我们一视同仁,这也是我们真正的体验该公司的生活工作提供了不小的帮助。
这种气氛,加上先前进入公司的师兄师姐,以及其他的热心的老员工的帮助,使我们几个很快的融入了这个公司中,在工作中更好的与周围的同事的进行交流、合作;在工作之余我们也参加了公司组织的一些文体活动,如羽毛球、卡拉OK等。
2.1环境适应
这次的社会实践活动,每个人都有一个很明确的任务,所以意味着我们不可能如以往的简单的了解一些企业文化,简单的学学新的知识就可以了,我们的这一个多月必将是一个繁忙的一个星期,也必将是一个充实的,进步的一个星期。下面介绍的是我们在公司的生活与工作中所遇到的一些困难,还有我们一般的生活工作时间安排以及具体的工程开发内容。>克服困难,养成良好的工作生活习惯。基于各方面的原因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如工程阶段比较繁多,但时间又比较的短。
由于我们可算是第一次正式的参与企业的开发,在经验、知识上必然有所欠缺,所以在开始阶段我们主要都是了解项目的背景知识,进一步学习基本的一些项目原理等。而后要进行设计工作,然后才是真正的工程开发过程,还有调试过程。再由于我们只是短期的社会实践工作,为了所做的工作在以后能真正为人所用,我们在走之前还要留下完善的相关文档。短短的一个星期,要分成这么多的阶段,而任务就摆在那,每一阶段的时间可想而知是多么的宝贵。
由于时间比较的紧。在这段时间我们既要看文档、又要搞设计,既要编程序,又要测试,还要编写整理对应文档。所以有时是每天中午都没得休息赶着的干,下午下了班,别人都回去了,我们还在那儿加班,一直到晚上9点多,才坐上公交车花一个小时回住处休息。大家常常是坐在车上就睡着了。
另一方面,由于公司没有给我们解决住宿问题,我们刚开始是在在公司同学的帮助下在体育场附近找的一个地方住着,后来又找了个地方,但还是在那一块。虽然是坐在公司的班车上班,但由于是班车的第一站,很早就要上车,每天6:30就得起床。而在公司中午1:00上班,原来在学校的午睡习惯也只能去掉了,所以为了保持上班时有旺盛的精力,我们一改在校晚睡得习惯,每天晚上回去10:30就会睡觉。这样的一坚持就是一个星期,虽然是苦了一点,但我想这也无形中让我们培养了一个良好的作息习惯。
而在这一个多月中,我们基本做到按照公司正式员工的标准来要求自己,跟他们一样的上班时间,遵守一样的>规章制度,保持旺盛的工作动力。一般是每天工作7个半小时,从8:45-12:00和13:00-17:15。当然有时候为了赶进度我们会在晚上或周末加一
下班,而在相对比较轻松的阶段,特别的是在初期时,我们也会在工作中,找机会多学一些相关的知识。
2.2具体的工程开发内容
由于我们四个人分别的加入了三个不同的项目开发小组,以下是他们对于这次工作的一个小小的总结:
我们于今年暑假去xx软件进行社会实践,所做的项目为ST(系统测试)部门的MR(ModifyRequest)系统,MR系统为ST部门的最常用软件,是进行软件测试的必备工具,由于原有的工具已经不能满足现在的要求,我们将利用更新的技术,基于新的需求分析,重新编写该应用软件,该软件采用流行的Web_Browser的结构,利用ASP+SQLServer来实现整个系统,整个开发过程完全采用现代软件工程的方法来监控整个软件的质量。第一步的需求分析由xx公司提出,并做出了相应的Tier2文档。第二步的系统设计和数据库建模由我和另一位同学完成及相应的Tier3,其中经历了数次反复和review最终得到了一个完整的Tier3文档,第三步为coding,由于有前两步的基础,此步骤得以很快的完成。最后的软件通过了ST部门的专门测试,最终得到了部门经理的好评。
通过这一次社会实践,使我们在课堂上学习到的抽象的软件工程的理论有了一次实践的机会,经历了正规的软件过程,而且给了我们一次难得的与人合作的机会,相信这一切对我们将来从事大型软件开发都将是难得的财富。
推荐专题: 软件工程毕业实习报告