一、实习目的
这次实习的目的是为了提高我的专业技能、实践能力、以及让我了解一些实际的工作情况。对我在正式工作前有很重要的意义,不论是专业技能,还是综合素质,以及实际中的人际关系都有了更加深刻的体会,让我在正式工作前有了一笔很珍贵的经验。
这次实习的主要任务就是在了解整个软件的制作过程,以及各个环节中的细节,当学会了这些环节后,再用学到的知识来完成一个公司给我们安排的一个项目。我分到的项目名称是《诊所管理系统》,这个项目我们将以小组的形式共同将其完成,以模拟实际软件制作的过程,尽最大程度的将我们所学到的知识转化成实际的能力。为真正的项目做好充分的准备,让我们可以在实习过后的正式工作中,有准备的去面对。
公司的最终目的就是希望我们能了解实际项目的制作,并初步的理解各个环节的意义。而让我们用项目进行实际制作就是为了让我们能更好的理解项目制作中各个流程的意义以及项目制作过程中的团队是如何合作的。
二、实习单位及岗位
我所实习的单位是校企合作埃森哲信息技术(大连)有限公司的软件开发部。这个部门的主要职能就是外包服务工作,按照客户的需求制作成相应的软件,所以我们需要对整个软件开发的过程都较熟悉,这样才能应对客户们各种各样的问题,才能制作出更好的软件以满足客户们的需求。
因为刚实习的原因,所以我的职位是软件助理工程师,时间的具体安排是实际项目制作以及专业知识的学习,实习时间为8个星期。本来实习的地点是在公司的,后来因为公司的内部原因,将我们的实习地点改为学校内部实习,每天的时间和正式上班相同。早8晚5,每周六周日休息。
整个实习的实际流程前面已经说过,八周的实际项目制作以及专业知识的学习。具体的每周任务、实际工作内容、以及专业知识与专业技能的实际应用会根据不同的环节也有所不同。但总体的目标就是让我们了解实际工作中软件的制作流程,以及各个流程中所需要的技术和注意点,并用实际的项目让我们进行练习。
三、实习过程
上面已经介绍了个整个实习的任务以及目的,下面将详细介绍整个实习的流程,并对每个流程的细节加以详细说明。
具体的时间安排如下:
第一周:将对该项目所需要的知识进行集体巩固复习。将一些已经生疏的知识巩固巩固,以备项目中的不时之需。在实习的第一天企业的经理就详细的给我们讲解了软件工程这门科学对于一个软件制作的重要性,并以此为基本给我们定下了这次实习的大体实习流程。
第二周:将直接进行项目的需求分析。因为项目名称已经给出,所以将去掉可行性分析。我们小组分到的项目是“诊所管理系统”,这就免不了去诊所实地调查了。实际调查的过程中发现,需求分析这个过程是非常非常的重要,需求分析文档的制作,决定了项目的各个功能以及这个软件是否符合用户的需求。这一周的收获就是软件需求分析的文档制作,这是软件工程中非常重要的一个步骤,这一环节,是一整个软件生成的最为重要和关键的环节。
第三周:这一周由于临时变动,将概要设计和详细设计合为一周制作。根据调查的结果,进行概要设计。由于是初次制作软件概要分析的文档,所有有很多不符合规定的地方,就比如数据流图的制作,很多小的细节都没有注意,像这样的问题还有很多。不过,在经过了小组成员的积极讨论修改以及老师的指导后,这些问题都得以解决。接下来,根据概要设计,来制作软件的详细设计。详细设计的制作,相对于概要设计,感觉能稍微简单些,也不知道感觉对不对。因为在概要设计模块中,我们已经设计好了所需要的模块、接口、类、以及所要实现的功能,所以我们只需要考虑每个类的功能如果用代码实现就可以了,当然不是将代码写上去,而是用流程图以及伪代码之类的相关技术来表示。这个阶段的制作完成就开始正式的编码了。到此为止,准备工作总算是做完了,几乎花费了我们实习的一半时间。这一周的时间,我们在忙碌中不知不觉的度过了!下一周就会进入到该项目的实际编码当中,这也是我们大家最熟悉的地方了,感觉总算有地方出力了,期待着下一周的到来。
第四周:根据详细设计,来进行项目的编码。这一周,我们进行实际的编码,我最大的感觉就是,照着详细设计去进行编码,思路以及逻辑非常的清晰,可能在将流程如以及伪代码转换时稍微有点费劲,当相对于以往我们的直接编码而言,流畅度不言而明。
第五周:这一周本来是要进行测试的,但在编码完后企业老师检查的时候,给我们指出了很多的问题,说我们所写的代码太粗糙,所以我们只能对代码进行细致的加工,把测试推到了下周来进行。这一周,让我们受益匪浅,对代码的注释以及编码格式都有了更加深刻的理解。
第六周:根据做完的项目,进行项目的测试。本周就是对软件进行测试,从最基本的类之内的方法测试,一直到整个项目的综合测试,分了好几个阶段。而区分于以往的测试不同,这次我们是先写测试文档,当测试文档检查合格后,我们才可以对着文档进行逐步测试。我想,这可能就是我们以后工作的大体方向吧,以文档为主的项目制作。由于测试文档的制作进度太慢,所以本周就忙测试文檔的制作了一样了,其它的什么也没干,测试也只能等下周进行了。希望下周测试的时候效率会很高,期待的试一次,拿着测试文档去测试的感觉。
第七周:拿着测试文档,根据上面的要求,一项一项的测试,以确认项目的正确性。测试的顺利让我有了爽快的感觉,拿着测试文档,直接去校验代码就可以了。几乎不用去想程序内部的测试流程,因为文档上已经给你写的明明白白了。到这里,我有一种感觉,像埃森哲这种大公司内,文档的重要性比编码本身更为重要。我想,这就是企业派来的老师没有直接给我们进行技术培训,而是让我们来了解软件工程的流程的原因。当然,根据企业的文化不同,对软件工程的生命周期也会有细微的差别,他们会选择最适合自己公司的方法来进行整个软件的生命周期,并不是一成不变的。
第八周:这一周,我们没有跟技术相关的任务,只要好好准备准备个人展示就可以了。但你可千万不要小瞧这个人展示,因为他将占你整个实习成绩的50%,这也是企业老师在本周周一时才告诉我们的,我们之前根本就不知道还有实习成绩这一说。项目总结,我们将用一周的时间来总结整个实习的收获,在本周的周五进行自我展示,以及收获报告。至此,实习的生涯将会到此结束。这一周,我们思考着、沉淀着、总结着,将我们对整个实习的收获、总结、体会等各个方面进行了精华的提炼,以PPT为基础,进行为期10分钟的个人展示以及项目答辩。就此,我们的实习画上了完整的句号。
四、实习总结
我们的实习已经结束,但生活却没有结束,这一次的实习,对于我们这帮还没有毕业的学生来说可以用意义重大四个字来形容。他不仅仅对我们的专业知识进行了巩固和拓展;还对我们作为软件开发人员的视野进行了增大,让我们了解了很多软件开发这个职业应该注意的一些细节;更是让我们亲身体会了软件工程这门科学对于一个软件的意义。这些经验对我们来说就是一笔宝贵的财富。而经过了8周的实习,在大家的共同努力下,也都完成了各自的任务,但我想说的是,我们并不仅仅是完成了任务,我们更是个个满载而归:
项目的制作以及疑难问题的解决,将我们把大学期间那些快要淡忘的知识又重新熟悉了起来,并且对代码有了更深层次的理解。代码的复用性、类与类之间的调用、对象的创建、数据库的连接以及操作等各种专业知识的使用,让我们能更好的将这些各种各样知识合理的整合在一起。
如果说专业知识收获颇多,那么接下来的职业技能却是我认为在整个实习过程中收获最大的地方。代码的注释以及编码的规范这两点是我以前很少注意的地方,对其也并没有多少重视。但这一次,却明白了他的重要性:这是作为一个软件开发人员必须应该具备的能力,或者说应该特别注重的地方。因为我们的代码并没有多少注释以及很多地方的编码很不规范,企业老师宁愿让我们多花一周的时间修改,也没有匆匆的进行下一步测试。在修改的这一周内,通过自己的体会以及老师的重点强调,对于代码的编码规范和代码的注释有了更深层次的理解。通过了这次的实习,我个人认为,代码的注释以及编码的规范比个人的技术更为重要。
这次实习的最终目的就是希望我们了解软件的整个制作过程,也就是软件工程这门科学。这一次的实习,中间的制作文档时间大约是编码的好几倍,编码的时间即使是因为我们修改的原因也只有两周,而其他的大部分时间就是制作文档。我个人猜想可能进公司后文档的制作比个人的技术更加重要。因为文档的原因,我们的项目制作,感到非常的流畅,条例非常的清晰,逻辑也很流畅。对于软件的制作,这些文档起了很重要的意义,所以觉得,软件工程也许就是自己以后努力的方向吧。
最后,总结这段时间的实习生活的收获,真的是使我受益匪浅。在实习中,我学习到了不仅仅是技术上的收获,更还有生活中的的人际交往以及其他的许多经验。而这些,都将作为我迈入社会的根本,我将以此为我的基础,怀着一颗勇敢无畏的心去迎接我即将来临的工作。
五、实习体会
这一次的实习,给了我很深刻的体会,不仅仅是专业的收获,更还有团队间的相互合作,这些让我明白了团队的意义。工作即将来临,我期待着工作的到来,我将带着这次实习的收获,尽量的将学到的知识运用到实际工作中,去迎接一个又一个的挑战。前方的路会有很多困难等着我,但我不怕,因为我坚信,只要我努力,终会克服这些困难。路就在脚下,我将带着坚定的信念,不畏挫折,勇往直前!
实践单位:山西西太行信息有限公司
实践时间:xx年7月1日-----xx年7月31日共31天
一、实践目的:综合利用所学的专业知识,培养软件开发的技能;掌握android操作系统的编程技巧,体会企业软件开发与学习过程中编写软件的不同;提高自身的创新意识与创新能力,促进团队之间的沟通协作,为早日踏上工作岗位打下坚实基础。
二、实践内容及感悟:
a) 实践前准备:自xx年清明节前后,我和我的组员就开始接受山西西太行信息有限公司的公开课的培训,当时经电子与计算机技术学院于一老师介绍由陈川老师主要带领我们重新温习了一遍关于java语言的基本知识,在这将近一个月的学习过程中我们逐渐重新拾起了即将被遗忘的java 知识,走出了以前认识上的误区,使我在java这一块又有了一定的的优势,为以后我们用java语言做开发打下了很好的基础。
自xx年5月1日,我们开始了真正的基于android操作系统的软件开发,虽然我们是利用课余时间进行学习,但是学习的效果真的很好,我们基本上晚上都会学到很晚才回宿舍。刚开始的时候我感到很不适应,感到学习的java语言不能够充分的的到利用,只能够用一些和系统相关的东西,但是随着学习的深入,我发现android操作系统也是一个很强大的手机操作系统,它有着很好的发展前景。并且移动互联网在在中国有着大的市场,所以我对我正在从事的android手机软件开发给予了很大的希望。这一个月的培训我们主要学习了android操作系统的五大系统组件:activity、service、sqlite、content Provider、intent、broadcastRecever,同时我也学到了一些课堂上学不到得东西,对外面的市场的情况也有了更深刻的了解。
b) 实践过程:xx年7月1日到xx年7月31日是我正式暑假实践的时间段,
我们一行十六个人,大三的十一人大二的六人。我们被分了两个小组,每个小组八个人,上课时间一般是下午两点到五点半或者下午五点半到晚上八点半,其余的时间是我们自己写代码的时间。每天的任务量都有所不同,有时候把自己的任务做完了剩下的时间就自由支配。这一个月我们的主要任务是做一个腾讯微博android手机客户端,每天陈老师都会给我们传授一些做软件的经验和一些新的知识点,然后我们根据具体的要求编写文档,编写代码,第二天交由陈老师点评。
1) 可恶的文档:刚开始的时候感觉很不适应,以前上课就是学习关于编程的知识,但是做项目的第一天陈老师要求我们写文档,我们用的是GB8568—88格式的文档,第一次写即感觉很枯燥又感觉不会写。对于写文档我们都有想通的反应,就是莫名奇妙的反感,但是陈老师还是不依不饶的要求我们写要我们查资料,我们也很没办法只能按照要求写文档。但是由于我们不知道在文档上写些什么,陈老师看我们很为难也有所让步,带领我们写了软件需求说明书,后来我们依次写了概要设计说明书、详细设计说明书,后来又写了测试计划、用户手册。当时的感觉就是知道的知识太少,对着文档一个词一个词的硬挤,但是当文档写完的时候还是很有成就感的。
其实在写文档的过程中我们也渐渐的明白了文档的重要性,我们只是
在学校编写程序的时间久了习惯了上来就写代码的坏习惯,忽略了软件工程中的很重要的部分-----分析阶段和设计阶段。可能是因为以前做的软件都很小,一旦项目稍微大一点,那在编写代码阶段将付出不可估量的代价甚至最终将以失败告终。其实我们都学过软件工程,而且在考试的时候成绩还不是很差,但是到真正需要这些知识的时候我感觉却忘记了如何下手,这也就是所谓的纸上谈兵吧,所以我感觉大学生缺少的正是一种动手能力。知识本身没有价值,有价值的是运用知识解决问题。
2) 该死的bug:写完文档感觉写代码就轻松了,但是事与愿违啊。由于以前没做过开放平台的客户端,中间涉及到同腾讯公司微博开放平台接洽的问题,开始真的很不适应,不知道怎么下手。当知道下手的时候不免出现了各种各样的bug:腾讯服务器故障啦、实验室断网啦、模拟器连不上网啦、代码错误啦等等。为了弄好这些bug有时真是忙的焦头烂额,因为可能因为自己写的代码有问题导致大家的代码都不能运行,作为团队的一员谁都不想拖后腿。但有时候我也找不到问题所在,只能请高手指教或者找老师为我排忧解难。只可惜我当时掌握的排错方式只有打印输出和查看日志,根本没接触过单元测试。
其实多遇到一些bug还真不是坏事情,我现在开始明白编写代码最重要的是快速查找资料和排除错误的能力。首先我们不可能记住java语言或者android操作系统中所有的类和方法,所以能够快速找到我们所需要功能的类或者方法是很重要的。其次对于程序工作者来说遇到bug是很正常的事情,遇到不能解决的问题也是很常见的,重要的是能够正确的处理这些问题,并总结经验为以后的开发做好铺垫。遇到问题是要保持好的心态,千万不能焦躁,细心的一点点的分析问题,必的时候可以去网络上查找一些资料。但是不要遇到问题就上网查找,我感觉现在自己动手处理题很重要,上网查与吃现成饭没有本质的区别。网络可以帮我们开阔视野,但不要让网络阻碍了我们自我发展的机会。编写软件过程中要及时记录,这既可以让我们总结更多的经验,也可以为后来者提供一些宝贵的资料。毕竟都有成长的时候。
3) 痛苦的合并:这是我第一次这么正式的和这么多的人一起开发软件,更何况还有不认识的人在一个组,这给我们的沟通带来了很大的不便,尤其是最后代码合并的时候,很多的问题都一拥而上。我们当时用了一个软件visualSVN,这是一款团队开发的软件,当代码写的可以组合的时候我们就用这个软件在eclipse下共同开发。但开始的时候我们也会为了自己的代码正确而被迫修改别人的代码,最后弄得大家的代码不能够正确的运行,然后所有人都会停下来共同寻找错误,改正错误。这是团队开发时候很忌讳的问题,并且大家还都不好意思开口说谁错了,毕竟都不是很熟悉。直到大家开始慢慢适应这种团队开发之后,这样的情况才慢慢的被避免,效率也有所提高。
这次的团队开发让我明白,在团队开发中根本不存在自我,你所做的任何事情都应从整个团队出发,以团队的利益为重,不能自私。尤其是在团队中千万不能应付,你的应付很可能会给他人带来很多不便,甚至造成更大的损失。因此teamwork很重要,必须谨慎!
4) 唉,完美:每次写完代码让陈老师点评都会发现很多问题,有时候是代码
冗余度太大,有时候时代码不够安全,有时候是技术上不是很完善。对我们来说目标就是编写的软件能用,只要大家写的软件合并后能够正常运行,一切就ok了。但是这些是远远不够的,面向对象的思想和软件工程的一些常识我们都没涉及到,异步加载图片在陈老师讲之前我们也从来没有想到过,这些问题让我深深的体会到我们的创新能力的要求远远不够,我们对完美的渴求度远远不够。
没有最好,只有更好。这句话真是非常经典,作为软件开发者永远没有标准答案,没有最好的软件,只有不断的学习不断的追求才能发现好的东西,找到更好的创意。虽然最后腾讯微博客户端能够成功的运行了,但是我意识到我所掌握的知识远远不够,在这个实践中却是暴露了很多的问题。但愿天天能做到更好!
三、实践总结:
1、一个假期结束了,留下了很多的回忆,因为这个暑假是很有意义的。在这三十一天里每天都学到了新的知识,每天都遇到了新的问题,每天都在进步这,也让我有时间更加清晰的认识了软件工程这门课程和设计模式在软件开发中的重要性,编写代码知识软件开发的一小部分,只有真正的这种开发才能体会到软件工程的意义。
2、团队的凝聚力关系着每一个软件开发人员的发展前途,每一个人的努力都会得到回报,同样一个人的失误也会影响到整个团队,因此正确处理好人际关系是很重要的。
3、注重产品的价值,做好市场调研是成败的决定性因素。4、掌握好一门技术你可以吃饱,但是你要想很富有,必须懂得很多。队友可以帮助你一时帮不了一世,要注重个人能力发展!
根据学校要求,本人在开学前三周参加了毕业前的实习工作。我所实习的工作单位是天津木牛流马科技发展有限公司。公司主要从事软件开发方面的一些工作,包括java,C#方面的开发。本人在公司主要从事的是java项目的开发,包括前期的需求分析以及开发。
公司强调以人为本,认为对员工的投资是最重要的投资,通过对员工的培训提高员工的工作能力,并可以在多方面体会到公司方面的关怀与照顾,非常感谢这段时间公司的培养。
一、对实习过程的回顾
作为一个软件开发技术公司,不同于一般的那种严肃的气氛,给人的感觉是比较的宽松,公司的人情味也比较浓。让我们很快的就能融入这个小家庭。
首先给我的任务就是熟悉企业的开发流程以及企业的编码规范,了解这些是非常重要的,对于团队开发来说,统一的编码规范是必须具备的,因为编码如果不统一的话,每个人都有自己的编码方式,开发出来的系统可用性是很差的,而且也不利于今后的维护以及二次开发。所以开始花了两天的时间来看编码规范。这里面还是很有学问的。
接下来还要学习公司所用到的技术。在学校的学习中,我主修的方向是java,除了学习java基础外,还学习了html,css,jquery等前台页面的技术,以及Struts,Hibernate,Spring框架技术,为企业开发已经做好了一些准备。公司需要我学习的技术为webservice和ibatis。通过学习,了解到WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。Ibatis是一个持久层框架,用于对数据的增删改查。
由于我算是第一次正式的参与企业的开发,在经验、知识上必然有所欠缺,所以在开始阶段我们主要都是了解项目的背景知识,进一步学习基本的一些项目原理等。而后要进行设计工作,然后才是真正的工程开发过程,还有调试过程。再由于我们只是短期的社会实践工作,为了所做的工作在以后能真正为人所用,我们在走之前还要留下完善的相关文档。短短的一个星期,要分成这么多的阶段,而任务就摆在那,每一阶段的时间可想而知是多么的宝贵。
我在公司实习期主要做的工作就是开发一个小的项目申报系统。
这个项目的需求大致为:申报单位模块、管理机构模块、评审专家模块。最主要的就是项目申报模块。其中包括文件管理栏目、项目申报栏目、项目开题栏目、项目验收栏目、项目报奖栏目、项目查询栏目、用户信息栏目。管理机构模块主要包括:文件管理栏目、项目申报栏目、中期检查栏目、报奖管理栏目、项目验收栏目、项目查询栏目、项目统计表栏目、成果评估栏目、用户信息管理栏目。
虽然实践的时间比较的短暂,但我还是有了不小的收获,最大的收获是了解了一些软 件开发的程序化生产过程。还有就是能有机会向开发部门的职员的一丝不苟、兢兢业业的敬业精神学习。相信这些都将给我以后的学习和工作带来不小的帮助。
二、专业知识在实习过程中的应用
整个项目用的是struts2+ibatis+Spring开发的。业务层使用轻量级的框架Spring实现业务组件的管理,持久层采用ibatis技术实现业务层和数据库的交互。Web部分采用基于MVC模式的Struts2框架实现,表现层用JSP与JSTL、EL相结合实现。其中也会用到图表技术以及ajax技术。
我的工作任务并不是很多,项目的数据库设计完成后,页面有专人来负责,首先看懂页面及需求,接下来编写框架代码,有了框架代码,项目基本上已经可以进行开发了。在开发过程中,越到了很多这样那样的问题,比如说写前台的验证和前台的一些特效,这就需要前台的css技术和jquery技术,当然之前的学习还是不够的,所以就一边做一边学,其中包括table的特效(隔行特效,鼠标移入移出特效),一些动画特效,以及jquery的前台验证。还有ajax与服务器的异步交互,这方面的知识以前接触的还是比较少,然后以json格式返回前台做输出,以达到不刷新页面就可以显示不同数据的效果。
三、心得体会与经验总结
如今眼看在公司实习已经接近一个月了,从这次活动的成果上来看,还是比较成功的。辛勤的工作换来的是累累的硕果,不管是对于企业、学校还是我们自己。
首先我要在较短的时间内,克服各种困难,从最初的阅读文档,设计、开发,到最后的调试,完善,我也都按质按量的完成了,完成预定的工程开发任务,通过了公司的项目小组的验收,也得到了领导的一致好评,实现了最初为企业作实际共享的目标。
其次在这个过程中,我也通过了深入的调查、讨论,以对一个大型软件开发企业的结构、管理、文化、气氛有了比较详细的了解。而通过我在公司中的工作上的良好表现,还有生活中与公司员工的交流,我也在他们面前展现了了一个积极进取、勇于创新形象,起到了加强学校与企业双向交流的作用。
再有的一点就是,通过这次活动,让我们理论联系实际,在软件工程的开发过程、数据库的开发、分布式计算等工程实践经验上有了很大的提高。在公司中也培养了初步的大型项目合作开发经验,这一些都很好的增强了我们的个人的能力和并提高了自身的素质。
类似的以上的收获还有很多很多,但在活动结束的这个时候,仔细考虑一下,还是有一些地经验教训的。
四、几点不足与努力方向
这次实习也是我初次不如社会工作的一次经验,当然会有很多的不足之处,比如说为人处事方面,由于社会经验还是略显不足,所以在工作中难免会有和同事意见不同的时候却没有以最好的方式处理,这里深深地表示歉意,还有就是技术方面的不足,通过这次实习我明白了从学校学习的知识不足以面对以后的工作,所以还要更加的努力才行!