无忧范文网小编为你整理了多篇《软件专业实习报告》范文,希望对您的工作学习有帮助,你还可以在无忧范文网网可以找到更多《软件专业实习报告》。
第一篇:软件专业实习报告
1企业概述
1.1企业发展简史
开封天一软件科技有限公司(原河南省开封市王子科技公司)是经国家工商管理机构注册批准的一家专门从事企业软件开发与办公信息化建设的高科技企业,公司拥有一批经验丰富、技术精湛的系统设计、实施及售后服务人员;公司拥有雄厚的技术实力和核心自主知识产权,能为企业提供从技术咨询到解决方案;从电脑设备供应到软件产品定制;从软件操作培训到售后维护服务等全过程的高层次优质服务。公司自主研发的软件产品涵盖了企业办公、财务管理、互联网应用、服务器出租、服务器托管、进销存管理、工业控制,仪表数据采集与测控,人工智能等多种商业领域。公司本着“采用先进技术和平台,提供高效、稳定的软件系统”的产品质量方针和“一切以用户为中心”的企业服务理念,与您共同推动我国企业的信息化建设。
1.2企业现状
一个没有优秀民族文化的民族,不能自强于世界民族之林;同样,一个没有优秀企业文化的企业也不能自强于市场竞争之中。天一软件科技有限公司将禀承“用户至上、用心服务”的服务理念,创建独具特色的国际化IT企业文化,借鉴中外软件企业的成功经验,与国内外友商精诚合作,紧趋世界信息技术发展潮流,致力于民族软件业的腾飞,向着成为中国一流的国际化IT企业的目标迈进!为了实现“让客户尽情享受信息新生活”的企业使命,天一软件着力进行业务与服务创新,持续不断地向广大客户推出科学、适用的业务,较好地打造了业务形象和优质服务形象,理念先进、功能完善的天一综合短信系统系列产品,天一商务领航平台、天一统一充值平台等系统逐渐深入客户的实际应用,提升客户感知的进程没有终点,福富软件以创新的精神推出业务、服务客户的追求永无止境。
天一软件强调以人为本,认为对员工的投资是最重要的投资,通过对员工的培训提高员工的技术能力,并在平时通过多个方面让员工随时随刻感受到盛鸿这个大家庭的温馨、友爱。
创新是一种积累。不积跬步,无以至千里;不积小流,无以成江海。我们的邻国日本战后一片狼籍,但是凭着“每天PDCA,每天进步1%”的精神,一点一滴的创新,终于成就了一个科技和经济强国。创新不是海市蜃楼,她就在我们身边,伟大的创新也许当初只是一个看似很傻的念头,但如果当初没有人插上翅膀想飞却飞不起来,有怎么会有今天的飞机呢?公司将创新理念运用在公司的发展,项目的开发当中。天一当前的创新重点在于业务创新、技术创新、管理创新,提倡大胆创新,不怕失败,“莫以善小而不为”,从工作中的每个细节入手,从一点一滴做起,让创新逐渐成为习惯。
2实习过程
最为一个软件开发技术公司,不同于一般的那种严肃的气氛,天一中给人的感觉是比较的宽松,公司的人情味也比较浓。对于我们这一批参加暑期社会实践短期活动的在校学生,也都按照一般公司的标准要求我们,当然在这期间对我们的待遇,如:伙食、上下班的班车接送、业余文体活动等,也对我们一视同仁,这也是我们真正的体验该公司的生活工作提供了不小的帮助。
这种气氛,加上先前进入公司的师兄师姐,以及其他的热心的老员工的帮助,使我们几个很快的融入了这个公司中,在工作中更好的与周围的同事的进行交流、合作;在工作之余我们也参加了公司组织的一些文体活动,如羽毛球、卡拉OK等。
2.1环境适应
这次的社会实践活动,每个人都有一个很明确的任务,所以意味着我们不可能如以往的简单的了解一些企业文化,简单的学学新的知识就可以了,我们的这一个多月必将是一个繁忙的一个星期,也必将是一个充实的,进步的一个星期。下面介绍的是我们在公司的生活与工作中所遇到的一些困难,还有我们一般的生活工作时间安排以及具体的工程开发内容。克服困难,养成良好的工作生活习惯。基于各方面的原因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如工程阶段比较繁多,但时间又比较的短。
由于我们可算是第一次正式的参与企业的开发,在经验、知识上必然有所欠缺,所以在开始阶段我们主要都是了解项目的背景知识,进一步学习基本的一些项目原理等。而后要进行工作,然后才是真正的工程开发过程,还有调试过程。再由于我们只是短期的社会实践工作,为了所做的工作在以后能真正为人所用,我们在走之前还要留下完善的相关文档。短短的一个星期,要分成这么多的阶段,而任务就摆在那,每一阶段的时间可想而知是多么的宝贵。
由于时间比较的紧。在这段时间我们既要看文档、又要搞设计,既要编程序,又要测试,还要编写整理对应文档。所以有时是每天中午都没得休息赶着的干,下午下了班,别人都回去了,我们还在那儿加班,一直到晚上9点多,才坐上公交车花一个小时回住处休息。大家常常是坐在车上就睡着了。
另一方面,由于公司没有给我们解决住宿问题,我们刚开始是在在公司同学的帮助下在体育场附近找的一个地方住着,后来又找了个地方,但还是在那一块。虽然是坐在公司的班车上班,但由于是班车的第一站,很早就要上车,每天6:30就得起床。而在公司中午1:00上班,原来在的午睡习惯也只能去掉了,所以为了保持上班时有旺盛的精力,我们一改在校晚睡得习惯,每天晚上回去10:30就会睡觉。这样的一坚持就是一个星期,虽然是苦了一点,但我想这也无形中让我们培养了一个良好的作息习惯。
而在这一个多月中,我们基本做到按照公司正式员工的标准来要求自己,跟他们一样的上班时间,遵守一样的规章制度,保持旺盛的工作动力。一般是每天工作7个半小时,从8:45―12:00和13:00―17:15。当然有时候为了赶进度我们会在晚上或周末加一下班,而在相对比较轻松的阶段,特别的是在初期时,我们也会在工作中,找机会多学一些相关的知识。
2.2具体的工程开发内容
由于我们四个人分别的加入了三个不同的项目开发小组,以下是他们对于这次工作的一个小小的:
我们于今年暑假去天一软件进行社会实践,所做的项目为ST(系统测试)部门的MR(Modify Request)系统,MR系统为ST部门的最常用软件,是进行软件测试的必备工具,由于原有的工具已经不能满足现在的要求,我们将利用更新的技术,基于新的需求分析,重新编写该应用软件,该软件采用流行的Web_Browser的结构,利用ASP+SQL Server来实现整个系统,整个开发过程完全采用现代软件工程的方法来监控整个软件的质量。第一步的需求分析由朗讯公司提出,并做出了相应的Tier2文档。第二步的系统设计和数据库建模由我和另一位同学完成及相应的Tier3,其中经历了数次反复和review最终得到了一个完整的Tier3文档,第三步为coding,由于有前两步的基础,此步骤得以很快的完成。最后的软件通过了ST部门的专门测试,最终得到了部门经理的好评。
通过这一次社会实践,使我们在课堂上学习到的抽象的软件工程的理论有了一次实践的机会,经历了正规的软件过程,而且给了我们一次难得的与人合作的机会,相信这一切对我们将来从事大型软件开发都将是难得的财富。TMS(Task Management System)项目管理系统
这个系统是由同事独立完成的,以下是他对于这次作的一个小小的总结:暑假期间,我到了天一软件科技有限公司实习,在软件部(SW部门)负责基于web的项目管理系统的开发工作,即TMS(Task Management System)。开发这个系统的目的是为了管理天一软件公司SW部门现在正在开发的发展情况,以方便管理者和项目的参与者之间的协调。开发的系统应该能够跟踪项目的最新进展情况。
在这个系统里,最上层的对象是项目,下面分成若干子项目:子项目下又分成若干Task(任务)(Project―Sub_Project―Task)这样的层次结构。对应于项目(Project)有项目主管PM(Project Manager),对应于子项目,有Team Leader;对应于任务,有Task Owner、Task Member、TaskReviewer。
第二篇:江西理工校内实训生产实习总结报告java
实习报告
学 院:
江西理工大学商学院
专 业:
软件工程(工程造价) 班 级: 141班
学 号:
14243132
学 生:唐诗吟
实习类型:□认识实习 √生产实习 □毕业实习
指导教师:
胡桂虹
实习成绩:
时
间: 2017 年 7 月 9 日
目 录
前言................................................................................................................................3
一、实习目的................................................................................................................3
二、实习时间、地点....................................................................................................3
三、实习单位................................................................................................................3
四、实习内容................................................................................................................3
五、实习总结 .............................................................................................................................21 附录..............................................................................................错误!未定义书签。 评语……………………………………………………………………………………3 前言
一、实习目的
进一步了解JAVA开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。学习MySQL的基础知识及正确的运用方法,通过实习,培养我们综合运用己有知识java语言的面向编程能力;培养我们的动手能力;培养我们良好的编程规范编程方法;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。
二、实习时间、地点
时间:2017年 6 月 23 日—2017年 7 月 13 日 地点:江西理工大学三教
三、实习单位
实习单位:江西联微有限公司
四、实习内容
实习的项目、程序、方法、计算成果及示意图,按实习顺序逐项编写(不少于2000字),二级标题用小
三、三级标题用四号,正文小四宋体,1.25倍行距,图标注在图形下方居中五号,表格标题在表格上方居中五号,图形及表格应按需编号,如图
1、表1,图形表格内文字宋体五号。
4.1系统需求
4.1.1 E-R图
4.1.2数据库房间表
4.1.3数据库客户表
4.1.4数据库会员表
4.2 系统实现
4.2.1 客户管理功能
在房间管理中实现注册会员,删除会员,修改会员。 4.2.1.1 客户管理功能界面设计
(1) 客户管理主界面显示所有客户信息以及对其做出增删改查和客户的增删改查。
4.2.1.1客户管理主界面
(2) 新增会员功能
新增姓名,身份证,电话,类型点击插入完成会员新增。
4.2.1.2新增客户
(3) 删除房间功能
选中或查询要删除客户,点击删除客户按钮,确认删除选中客户,删除客户完成。
4.2.1.3删除客户
(4) 会员管理主界面显示所有会员信息以及对其做出增删改查和会员的增删改查。
4.2.1.4会员管理主界面
4.2.1.2 客户管理功能持久层Model实现 package com.y.entity;
public cla Room { private String Id; private int type; private int flower; private String sate; private int tel; public String getId() { } public void setId(String id) { } Id = id; return Id; public int getType() { } public void setType(int type) { } public int getFlower() { } public void setFlower(int flower) { } public String getSate() { } public void setSate(String sate) { } public int getTel() { } public void setTel(int tel) { } }
4.3.1.3 客户管理功能数据访问层DAL实现 package com.y.dao;
import java.util.Vector;
import com.y.entity.Room;
public interface IRoomDao { public int insert(Room room) throws Exception; this.tel = tel; return tel; this.sate = sate; return sate; this.flower = flower; return flower; this.type = type; return type; public Vector find(String stateName) throws Exception; public Vector find() throws Exception; public Vector find(String stateName,String typeName) throws Exception;
public int delete(String id) throws Exception; public int openRoom(String id,String roomState) throws Exception; public Vector vagueFind(String id) throws Exception; public Vector typeFind(String typeName) throws Exception; public Vector typeFind() throws Exception; public int update(String id, String floor, String type) throws Exception; }
4.2.1.4 客户管理功能业务层BLL实现 package com.y.biz.impl;
import java.util.List; import java.util.Vector;
import com.y.biz.IUserInfoBiz; import com.y.dao.IUserInfoDao; import com.y.dao.impl.UserInfoDaoImpl; import com.y.entity.UserInfo;
public cla UserInfoBizImpl implements IUserInfoBiz{ IUserInfoDao userdao=new UserInfoDaoImpl(); @Override public int insert(UserInfo user) throws Exception {
// TODO Auto-generated method stub
return userdao.insert(user); }
@Override public Vector seek() throws Exception {
}
@Override public List login(String username, String paword) {
}
@Override public int update(String id, String paword){
}
@Override public int delete(String id) {
}
@Override public String findPa(String id) {
} // TODO Auto-generated method stub return userdao.findPa(id); // TODO Auto-generated method stub return userdao.delete(id); // TODO Auto-generated method stub return userdao.update(id, paword); // TODO Auto-generated method stub return userdao.login(username, paword); // TODO Auto-generated method stub return userdao.seek(); @Override public String findUser(String id) {
}
@Override public Vector mfind(String info) {
} }
4.2.1.5 客户管理功能界面实现 package com.y.dao.impl;
import java.util.Vector;
import com.y.dao.IRoomDao; import com.y.dao.MySqlhelper; import com.y.entity.Room; import com.y.entity.UserInfo;
public cla RoomDaoImpl extends MySqlhelper implements IRoomDao{
@Override public int insert(Room room) throws Exception {
// TODO Auto-generated method stub int row=0; try { String
sql="INSERT
INTO // TODO Auto-generated method stub return userdao.mfind(info); // TODO Auto-generated method stub return userdao.findUser(id); tb_room(room_id,room_flower,room_type,room_state,room_tel) VALUES(?,?,?,?,?)"; Object[] para={room.getId(),room.getFlower(),room.getType(),room.getSate(),room.getTel()};
}
@Override public Vector find(String stateName) throws Exception {
// TODO Auto-generated method stub Vector rooms=new Vector(); try { String
sql="SELECT
FROM }finally{ }
return row; this.close();
row=this.getUpdate(sql, para);
} catch (Exception e) { System.out.println(e.getMeage()+"插入失败"); a.room_id,a.room_flower,b.type_name,a.room_state,a.room_tel BY b.type_id DESC,a.room_flower DESC,a.room_id ASC";
Object[] para={stateName}; System.out.println(stateName); this.getSeek(sql, para); while(rs.next()){
String id =rs.getString("room_id"); int flower=rs.getInt("room_flower"); String type=rs.getString("type_name"); tb_room a,tb_type b WHERE a.room_type=b.type_id and a.room_state=? ORDER
}
}
} String state=rs.getString("room_state"); int tel=rs.getInt("room_tel");
//定义临时集合对象封装每一行的所有列信息 Vector v = new Vector(); //往集合中添加数据 v.add(id); v.add(flower); v.add(type); v.add(state); v.add(tel); rooms.add(v); } catch (Exception e) { System.out.println(e.getMeage()+"查询所有失败"); // TODO: handle exception this.close(); }finally{ return rooms;
@Override public int update(String id,String floor,String type){
// TODO Auto-generated method stub String sql="UPDATE tb_room SET room_flower=?,room_type=? Object[] para={floor,type,id}; System.out.println(floor+" "+type+" "+id); int row=0; try { row=this.getUpdate(sql, para); WHERE room_id=?";
} } catch (Exception e) {
} return row; // TODO Auto-generated catch block e.printStackTrace(); this.close(); }finally{ @Override public int delete(String id) throws Exception {
} public int openRoom(String id,String roomState) throws Exception{
}
@Override
String sql="UPDATE tb_room SET room_state=? WHERE room_id=?"; Object[] para={roomState,id}; int row=0; try {
} return row; row=this.getUpdate(sql, para); // TODO: handle exception this.close(); } catch (Exception e) { }finally{ // TODO Auto-generated method stub String sql="DELETE FROM tb_room WHERE room_id=?"; Object[] para={id}; int row=this.getUpdate(sql, para);
return row; public Vector vagueFind(String roomId) throws Exception {
String
sql="SELECT
FROM a.room_id,a.room_flower,b.type_name,a.room_state,a.room_tel // TODO Auto-generated method stub Vector rooms=new Vector(); try { tb_room a,tb_type b WHERE a.room_type=b.type_id AND room_id LIKE '%"+roomId+"%' ORDER BY b.type_id DESC,a.room_flower DESC,a.room_id ASC";
this.getSeek(sql, null); while(rs.next()){
} System.out.println(e.getMeage()+"查询所有失败"); rooms.add(v); String id =rs.getString("room_id"); int flower=rs.getInt("room_flower"); String type=rs.getString("type_name"); String state=rs.getString("room_state"); int tel=rs.getInt("room_tel");
//定义临时集合对象封装每一行的所有列信息 Vector v = new Vector(); //往集合中添加数据 v.add(id); v.add(flower); v.add(type); v.add(state); v.add(tel);
} catch (Exception e) {
} // TODO: handle exception this.close(); }finally{ return rooms; }
@Override public Vector typeFind(String typeName) throws Exception {
// TODO Auto-generated method stub Vector rooms=new Vector(); try{ String
sql="SELECT
FROM
a.room_id,a.room_flower,b.type_name,a.room_state,a.room_tel BY b.type_id DESC,a.room_flower DESC,a.room_id ASC";
while(rs.next()){
String id =rs.getString("room_id"); int flower=rs.getInt("room_flower"); String type=rs.getString("type_name"); String state=rs.getString("room_state"); int tel=rs.getInt("room_tel");
//定义临时集合对象封装每一行的所有列信息 Vector v = new Vector(); //往集合中添加数据 v.add(id); v.add(flower); v.add(type); Object[] para={typeName}; this.getSeek(sql, para); tb_room a,tb_type b WHERE a.room_type=b.type_id AND b.type_name=? ORDER
}
} v.add(state); v.add(tel); rooms.add(v); } catch (Exception e) { System.out.println(e.getMeage()+"查询所有失败"); // TODO: handle exception this.close(); }finally{ return rooms; }
@Override public Vector find() throws Exception {
// TODO Auto-generated method stub Vector rooms=new Vector(); try { String
sql="SELECT
FROM a.room_id,a.room_flower,b.type_name,a.room_state,a.room_tel DESC,a.room_flower DESC,a.room_id ASC";
this.getSeek(sql, null); while(rs.next()){
String id =rs.getString("room_id"); int flower=rs.getInt("room_flower"); String type=rs.getString("type_name"); String state=rs.getString("room_state"); int tel=rs.getInt("room_tel");
//定义临时集合对象封装每一行的所有列信息 tb_room a,tb_type b WHERE a.room_type=b.type_id ORDER BY b.type_id
}
}
} Vector v = new Vector(); //往集合中添加数据 v.add(id); v.add(flower); v.add(type); v.add(state); v.add(tel); rooms.add(v); } catch (Exception e) { System.out.println(e.getMeage()+"查询所有失败"); // TODO: handle exception this.close(); }finally{ return rooms; @Override public Vector typeFind() throws Exception {
// TODO Auto-generated method stub Vector rooms=new Vector(); try{ String
sql="SELECT
FROM a.room_id,a.room_flower,b.type_name,a.room_state,a.room_tel DESC,a.room_flower DESC,a.room_id ASC";
while(rs.next()){
String id =rs.getString("room_id"); int flower=rs.getInt("room_flower"); String type=rs.getString("type_name");
this.getSeek(sql, null); tb_room a,tb_type b WHERE a.room_type=b.type_id ORDER BY b.type_id
}
} String state=rs.getString("room_state"); int tel=rs.getInt("room_tel");
//定义临时集合对象封装每一行的所有列信息 Vector v = new Vector(); //往集合中添加数据 v.add(id); v.add(flower); v.add(type); v.add(state); v.add(tel); rooms.add(v); } catch (Exception e) { System.out.println(e.getMeage()+"查询所有失败"); // TODO: handle exception this.close(); }finally{ return rooms; }
@Override public Vector find(String stateName, String typeName) throws Exception {
// TODO Auto-generated method stub Vector rooms=new Vector(); try { String
sql="SELECT
FROM a.room_id,a.room_flower,b.type_name,a.room_state,a.room_tel tb_room a,tb_type b WHERE a.room_type=b.type_id and a.room_state=? and b.type_name=? ORDER BY b.type_id DESC,a.room_flower DESC,a.room_id ASC"; Object[] para={stateName,typeName};
}
} System.out.println(stateName+"-"+typeName); System.out.println(stateName); this.getSeek(sql, para); while(rs.next()){
} System.out.println(e.getMeage()+"查询所有失败"); // TODO: handle exception this.close(); rooms.add(v); String id =rs.getString("room_id"); int flower=rs.getInt("room_flower"); String type=rs.getString("type_name"); String state=rs.getString("room_state"); int tel=rs.getInt("room_tel");
//定义临时集合对象封装每一行的所有列信息 Vector v = new Vector(); //往集合中添加数据 v.add(id); v.add(flower); v.add(type); v.add(state); v.add(tel); } catch (Exception e) { }finally{ return rooms;
五、实习总结
此次只实训了短短的三周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅,它不但极大地加深了我对一些理论知识的理解,不仅使我在理论上对Java有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对我来说受益非浅。除此以外,我知道了什么叫团队,怎样和团队分工合作;同时我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这也是第一次让我亲身感受到理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次实训对于我以后学习、找工作也是受益菲浅的,在短短的三周中相信这些宝贵的经验会成为我今后成功的重要的基石;这对于我的学业,乃至我以后人生的影响无疑是极其深远的。
这次实训虽然是我们的第一次,不过同学们表现不错,由此看来,我们在进入大学的这几个月里学到了不少的专业知识,只是自己感觉不到而已。对于所学专业,我们不能过于自卑和担忧,否则会妨碍自己学习。实训是学习Java的重要环节,有利于我们巩固专业知识、掌握工作技能,提高就业筹码。
我把本次为期四周的实训看作是“理论与实践相结合的桥梁”。通过这周的实训和学习,我知道了此次实训的目的,也清楚目前自己的不足,那就是缺乏相应的知识与经验,对所学的专业知识不能够很好地运用于实践操作。正所谓“百闻不如一见”,经过这次自身的切身实践,我才深切地理会到了“走出课堂,投身实践”的必要性。平时,我们只能在课堂上与老师一起纸上谈兵,思维的认识基本上只是局限于课本的范围之内,也许就是这个原因就导致我们对专业知识认识的片面性,使得我们只知所以然,而不知其之所以然!限制了我们网络知识水平的提高。但是课本上所学到的理论知识是为我们的实际操作指明了方向、提供相应的方法,真正的职业技巧是要我们从以后的实际工作中慢慢汲取的。而针对实际操作中遇到的一些特殊的问题,我们不能拘泥于课本,不可纯粹地“以本为本”。
在这次实训中我得到了许多收获,我第一次体会到Java工程师的工作是什么样子的,也发现了很多不曾注意到的细节,在实训的演示过程中,我对作为一名Java工程师注意的事项应该从小事做起、从基本做起。把职业能力训练与职业素质有机的结合起来。相信这对我接下来学习专业知识会起到很有效的帮助,在接下来的几个月里,我会以作为一名职业人的身份在这几个方面要求自己,严格自我,向Java工程师靠近。
九、而经过这次实训,让我明白如果是一个完整项目的开发,必须由团队来分工合作,否则,即费力又费时还做不好这个项目。因此不管在工作中还是在生活中要和老师、同学保持良好的关系是很重要的。做事首先要学做人,要明白做人的道理,如何与人相处是现代社会的做人的一个最基本的问题。对于自己这样一个即将步入社会的人来说,需要学习的东西很多,他们就是最好的老师,正所谓“三人行,必有我师”,我们可以向他们学习很多知识、道理。
实训结束了感觉虽然辛苦,但很充实。我想这就是Java工程师的工作。我也体会到Java工程师成功地完成一个任务的那种兴奋,那种小有成就的感觉是只有置身其中的人才能体会的。
总之,这次实训为我提供了与众不同的学习方法和学习体会,从书本中面对现实,为我将来走上社会打下了扎实的基础。作为在校计算机专业的学生,现在我能做的就是吸取知识,提高自身的综合素质,提高自己的职业技能,自己有了能力,到时候才会是“车到山前必有路”。我相信在不久的未来,会有属于我自己的一片天空。
我希望计算机专业的同学在以后的学习或工作中以务实的态度给提供更多的机会锻炼自己,为大家的成才与就业奠定坚实的基础;并希望同学们要做好角色定位,将自己所学的知识,学熟、学精。
多学习和收集与项目有关的资料,来提高自己的业务水平,同时多请教经验丰富的老师,使他们好的经验能够对自己起到借鉴作用,在他们的帮助下,能够很快的培养自己的管理技能及节省时间,避免做无用功,也可以让自己了解很多项目管理上的捷径,从而减少自己会遇到的挫折和错误。
第三篇:软件专业实习报告
一、实习目的
这次实习的目的是为了提高我的专业技能、实践能力、以及让我了解一些实际的工作情况。对我在正式工作前有很重要的意义,不论是专业技能,还是综合素质,以及实际中的人际关系都有了更加深刻的体会,让我在正式工作前有了一笔很珍贵的经验。
这次实习的主要任务就是在了解整个软件的制作过程,以及各个环节中的细节,当学会了这些环节后,再用学到的知识来完成一个公司给我们安排的一个项目。我分到的项目名称是《诊所管理系统》,这个项目我们将以小组的形式共同将其完成,以模拟实际软件制作的过程,尽最大程度的将我们所学到的知识转化成实际的能力。为真正的项目做好充分的准备,让我们可以在实习过后的正式工作中,有准备的去面对。
公司的最终目的就是希望我们能了解实际项目的制作,并初步的理解各个环节的意义。而让我们用项目进行实际制作就是为了让我们能更好的理解项目制作中各个流程的意义以及项目制作过程中的团队是如何合作的。
二、实习单位及岗位
我所实习的单位是校企合作埃森哲信息技术(大连)有限公司的软件开发部。这个部门的主要职能就是外包服务工作,按照客户的需求制作成相应的软件,所以我们需要对整个软件开发的过程都较熟悉,这样才能应对客户们各种各样的问题,才能制作出更好的软件以满足客户们的需求。
因为刚实习的原因,所以我的职位是软件助理工程师,时间的具体安排是实际项目制作以及专业知识的学习,实习时间为8个星期。本来实习的地点是在公司的,后来因为公司的内部原因,将我们的实习地点改为学校内部实习,每天的时间和正式上班相同。早8晚5,每周六周日休息。
整个实习的实际流程前面已经说过,八周的实际项目制作以及专业知识的学习。具体的每周任务、实际工作内容、以及专业知识与专业技能的实际应用会根据不同的环节也有所不同。但总体的目标就是让我们了解实际工作中软件的`制作流程,以及各个流程中所需要的技术和注意点,并用实际的项目让我们进行练习。
三、实习过程
上面已经介绍了个整个实习的任务以及目的,下面将详细介绍整个实习的流程,并对每个流程的细节加以详细说明。
具体的时间安排如下:
第一周:将对该项目所需要的知识进行集体巩固复习。将一些已经生疏的知识巩固巩固,以备项目中的不时之需。在实习的第一天企业的经理就详细的给我们讲解了软件工程这门科学对于一个软件制作的重要性,并以此为基本给我们定下了这次实习的大体实习流程。
第二周:将直接进行项目的需求分析。因为项目名称已经给出,所以将去掉可行性分析。我们小组分到的项目是“诊所管理系统”,这就免不了去诊所实地调查了。实际调查的过程中发现,需求分析这个过程是非常非常的重要,需求分析文档的制作,决定了项目的各个功能以及这个软件是否符合用户的需求。这一周的收获就是软件需求分析的文档制作,这是软件工程中非常重要的一个步骤,这一环节,是一整个软件生成的最为重要和关键的环节。
第三周:这一周由于临时变动,将概要设计和详细设计合为一周制作。根据调查的结果,进行概要设计。由于是初次制作软件概要分析的文档,所有有很多不符合规定的地方,就比如数据流图的制作,很多小的细节都没有注意,像这样的问题还有很多。不过,在经过了小组成员的积极讨论修改以及老师的指导后,这些问题都得以解决。接下来,根据概要设计,来制作软件的详细设计。详细设计的制作,相对于概要设计,感觉能稍微简单些,也不知道感觉对不对。因为在概要设计模块中,我们已经设计好了所需要的模块、接口、类、以及所要实现的功能,所以我们只需要考虑每个类的功能如果用代码实现就可以了,当然不是将代码写上去,而是用流程图以及伪代码之类的相关技术来表示。这个阶段的制作完成就开始正式的编码了。到此为止,准备工作总算是做完了,几乎花费了我们实习的一半时间。这一周的时间,我们在忙碌中不知不觉的度过了!下一周就
会进入到该项目的实际编码当中,这也是我们大家最熟悉的地方了,感觉总算有地方出力了,期待着下一周的到来。
第四周:根据详细设计,来进行项目的编码。这一周,我们进行实际的编码,我最大的感觉就是,照着详细设计去进行编码,思路以及逻辑非常的清晰,可能在将流程如以及伪代码转换时稍微有点费劲,当相对于以往我们的直接编码而言,流畅度不言而明。
第五周:这一周本来是要进行测试的,但在编码完后企业老师检查的时候,给我们指出了很多的问题,说我们所写的代码太粗糙,所以我们只能对代码进行细致的加工,把测试推到了下周来进行。这一周,让我们受益匪浅,对代码的注释以及编码格式都有了更加深刻的理解。
第六周:根据做完的项目,进行项目的测试。本周就是对软件进行测试,从最基本的类之内的方法测试,一直到整个项目的综合测试,分了好几个阶段。而区分于以往的测试不同,这次我们是先写测试文档,当测试文档检查合格后,我们才可以对着文档进行逐步测试。我想,这可能就是我们以后工作的大体方向吧,以文档为主的项目制作。由于测试文档的制作进度太慢,所以本周就忙测试文n的制作了一样了,其它的什么也没干,测试也只能等下周进行了。希望下周测试的时候效率会很高,期待的试一次,拿着测试文档去测试的感觉。
第七周:拿着测试文档,根据上面的要求,一项一项的测试,以确认项目的正确性。测试的顺利让我有了爽快的感觉,拿着测试文档,直接去校验代码就可以了。几乎不用去想程序内部的测试流程,因为文档上已经给你写的明明白白了。到这里,我有一种感觉,像埃森哲这种大公司内,文档的重要性比编码本身更为重要。我想,这就是企业派来的老师没有直接给我们进行技术培训,而是让我们来了解软件工程的流程的原因。当然,根据企业的文化不同,对软件工程的生命周期也会有细微的差别,他们会选择最适合自己公司的方法来进行整个软件的生命周期,并不是一成不变的。
第八周:这一周,我们没有跟技术相关的任务,只要好好准备准备个人展示就可以了。但你可千万不要小瞧这个人展示,因为他将占你整个实习成绩的50%,这也是企业老师在
本周周一时才告诉我们的,我们之前根本就不知道还有实习成绩这一说。项目总结,我们将用一周的时间来总结整个实习的收获,在本周的周五进行自我展示,以及收获报告。至此,实习的生涯将会到此结束。这一周,我们思考着、沉淀着、总结着,将我们对整个实习的收获、总结、体会等各个方面进行了精华的提炼,以PPT为基础,进行为期10分钟的个人展示以及项目答辩。就此,我们的实习画上了完整的句号。
四、实习总结
我们的实习已经结束,但生活却没有结束,这一次的实习,对于我们这帮还没有毕业的学生来说可以用意义重大四个字来形容。他不仅仅对我们的专业知识进行了巩固和拓展;还对我们作为软件开发人员的视野进行了增大,让我们了解了很多软件开发这个职业应该注意的一些细节;更是让我们亲身体会了软件工程这门科学对于一个软件的意义。这些经验对我们来说就是一笔宝贵的财富。而经过了8周的实习,在大家的共同努力下,也都完成了各自的任务,但我想说的是,我们并不仅仅是完成了任务,我们更是个个满载而归:
项目的制作以及疑难问题的解决,将我们把大学期间那些快要淡忘的知识又重新熟悉了起来,并且对代码有了更深层次的理解。代码的复用性、类与类之间的调用、对象的创建、数据库的连接以及操作等各种专业知识的使用,让我们能更好的将这些各种各样知识合理的整合在一起。
如果说专业知识收获颇多,那么接下来的职业技能却是我认为在整个实习过程中收获最大的地方。代码的注释以及编码的规范这两点是我以前很少注意的地方,对其也并没有多少重视。但这一次,却明白了他的重要性:这是作为一个软件开发人员必须应该具备的能力,或者说应该特别注重的地方。因为我们的代码并没有多少注释以及很多地方的编码很不规范,企业老师宁愿让我们多花一周的时间修改,也没有匆匆的进行下一步测试。在修改的这一周内,通过自己的体会以及老师的重点强调,对于代码的编码规范和代码的注释有了更深层次的理解。通过了这次的实习,我个人认为,代码的注释以及编码的规范比个人的技术更为重要。