第一篇:通信软件实训 文档
北京邮电大学软件学院
2010-2011 学年第 1学期实训项目文档
(每个项目小组一份)
课程名称: 全日制研究生实训
项目名称: 通信软件实训
项目完成人:
指导教师:程保中,雷友珣,谢锦,陆天波,孙艺
日 期:2012年3月2日
●JAVA语言的聊天室实现
一、实训项目的目的和要求:
目的:理解Socket的原理,熟悉JAIN-SIP协议规定的通信工程 要求:实现一个有GUI界面的JAVA聊天室系统
二、实训项目开发环境:
Eclipse、Windows
三、实训项目内容:
1、设计思路
客户端:以服务方主机地址和端口号为参数调用 Socket 类的构造函数去创建一个 Socket 对象.创建过程包含了向服务方请求建立通讯连接 使用 Socket 对象的 getInputStream()和 getOutputStream()方法创建用于网络传输的输入/输出流
使用所得的网络流对象读写数据,网络流对象将读写转换成对 Socket 数据的接收和发送
工作完毕, 关闭网络流对象
服务器端:以某端口号为参数调用 ServerSocket 类的构造函数去创建一个 ServerSocket 对象
调用被创建的 ServerSocket 对象的 accept()方法在指定端口监听客户方的连接请求
收到客户请求后,accept()方法返回一个新建的 Socket 对象, 该对象代表和客户方建立起来的通讯连接在服务方的通讯端点
使用 Socket 对象的 getInputStream()和 getOutputStream()方法创建用于网络传输的输入/输出流
使用所得的网络流对象读写数据,网络流对象将读写转换成对 Socket 的数据的接收和发送 工作完毕, 关闭网络流对象
2、系统总体框架
系统的主要功能:
本系统由登陆界面、服务器界面和客户端界面三部分组成,服务器端可以控制打开或关闭端口和服务,并且可以监视在线用户数量。用户则在登录界面输入相应的验证信息才能登录要系统,从而通过客户端进行聊天,发送的消息将通过服务器广播给所有在线用户,达到群聊的目的。
3、用例介绍及用例图
※用例名称:登陆
主要参与者:客户端用户
涉众及其关注点:用户希望能顺利登陆系统并进行交流
服务器端希望能对用户进行验证并返回验证信息 前置条件:用户必须通过验证
成功保证:服务器根据用户提供的信息进行验证并通过 主成功场景:用户向服务器发送验证信息
服务器对信息进行验证
向用户返回验证结果
成功登陆到服务器 ※用例名称:聊天
主要参与者:客户端用户 涉众及其关注点:用户希望能顺利进行聊天,并且保护隐私
服务器要保证聊天的顺利进行
前置条件:用户已经登陆系统
成功保证:两个或更多用户登陆服务器
主成功场景:用户A发送信息
服务器接收到信息
服务器将信息转发给用户B 用户B进行回复
服务器收到信息并转发给用户A ※用例名称:启动服务器
主要参与者:服务器
涉众及其关注点:服务器希望能正确启动,各个模块能正常运行
前置条件:服务器程序是正确的成功保证:服务器端的硬件支持
主成功场景:按下服务器启动按钮
服务器程序开始运行
程序成功运行,进入服务状态 用例图如下:
4、领域模型
5、顺序图:
启动服务器顺序图
登陆顺序图
聊天顺序图
6、类图
四、程序开发成果
先打开服务器端程序,输入端口号,运行之后打开客户端,输入服务器端的IP地址和端口号,连接成功后可开始进行对话。聊天窗口如下:
五、总结
通过本次实训项目的练习,我们充分理解了Socket的原理以及SIP协议,并对SIP在JAVA中的实现方法——JAIN-SIP作为API来调用有了一个比较全面的认识。对JAVA可视化界面的处理能力也有了很大提高。JAVA是一门面向对象的语言,通过对它的研究,加强了对面向对象语言中类和对象的使用。
●C语言Socket聊天室实现
一、实训项目的目的和要求:
目的:通过socket实现Linux环境下的点对点通信。
要求:掌握Linux环境下socket编程的基本过程;掌握c语言的socket套接字的编程思想
二、实训项目开发环境:
Linux
三、实训项目内容
1、问题分析:如何通过socket实现Linux环境下的点对点通信。
2、设计思路:
网络套接字(Socket)接口上TCP/IP网络应用程序接口(API),它提供了许多函数和例程,程序员可以使用它们来开发TCP/IP网络应用程序。简要步骤如下:
(1)建立一个Socket.(2)按要求配置socket,将socket连接到远程主机或给socket指定以各本地协议端口。
(3)按要求通过socket发送和接受数据。(4)关闭此socket。
在客户/服务器模型中,多个相互通信的计算机都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递。所以多个客户端之间的通信就变为了客户端与服务端的通信。所以,采用客户/服务器模型进行网络聊天需要分别编写服务器端和客户端的程序,服务器和客户端之间相互通信的同步关系和各自的程序流程。如图所示:
Tcp服务器Socket()Tcp客户端Socket()建立连接Bind()Listen()Connect()Accept()阻塞直到有客户端连接请求数据Write()Read()处理请求回应数据Read()结束连接Write()Close()Read()Close()
3、实验过程及说明(使用TCP/IP):
(1)监听连接
利用socket、bind、listen建立连接,步骤是:
1)用socket函数初始化socket,创建新的sockfd。Sockfd = socket(AF_INT,SOCK_STREAM,0)2)IP地址的处理 参数说明:
inet_addr 函数 INADDR_ANY 该函数把由小数点分开的十进制IP地址转为unsinged long 类型,而在实验中所使用的为INADDR_ANY,使用利用自己的IP地址自动填充。a)利用bind函数绑定端口和IP地址。
My_addr.sin_family=AF_INET;/*将地址族类型设定好 */ My_addr.sin_port=htons(MYPORT;/* 将端口给其赋值*/ My_addr.sin_addr.s_addr=INADDR_ANY;/*用连接地址自动填充ip*/ Bind(sockfd,(stuct sockaddr*)&my_addr,sizeof(stuct sockaddr));/*sockfd 是分配的socket名字,my-addr则便是分配好的端口与IP,用bind绑定*/ b)利用listen监听请求(2)发送请求
1)利用gethostbyname获取主机信息。2)初始化socket端口。
3)利用connect函数将自己的IP地址等信息发送到主机,等待主机调用accept函数来接受请求。
(3)主机接收请求,进行数据通信 1)主机利用accept接收请求。2)创建子进程,显示欢迎信息;
3)接收返回信息,显示连接成功,并推出连接; 4)关闭客户端口socket;
5)关闭服务端socket,结束子线程。
4、实验项目结果及分析
结果分析:
该测试是在一台计算机上进行的,若要实现两台计算机间的点对点通信,只需修改相应的IP地址和端口号即可。如图所示,该系统实现了P2P通信,即通信双方之间可以相互发送和接收消息,达到了预期目的,满足了老师的要求和用户的需求。
四、总结
Linux环境对于我们都是一个陌生的环境,通过这次对Linux环境下的socket编程以实现双工通信,使我们小组成员c语言编程能力有了提高和对Linux和对Linux的gcc编译环境有了进一步的认识。使我们在宏观上认识了Linux,相信对我们以后学习Linux会有很大的帮助。
●基于O-SIP的 Socket聊天室开发
一、实训项目的目的和要求:
目的:完成一个基于控制台的聊天室,最基本要实现群聊和私聊内容; 要求:掌握o-sip实现sip协议;
二、实训项目开发环境:
Windows、VC++2010
三、实训项目内容
1、问题分析:
项目实现的是一个基于sip的简单聊天程序,要求用c/c++实现,可以应用exsip库,以及接口进行程序开发,要求聊天室实现基本的群聊和私聊功能,在此基础上可以进行进一步扩展,可以为提示哪个客户上线,哪个客户下线,客户端可以向服务器请求获得在线用户列表,操作简单易懂,系统要有一定的稳定性,并有一定的可扩展性。
2、设计思路:(1)总体设计
项目采用exosip接口进行设计,为了开发聊天室选择可以实现相应功能的接口,开发出来的聊天程序要实有高的效率可以及时转发客户端的发送的消息,要有一定的可靠性和灵活性,实现基本功能的基础上要有一定的扩展性。(2)数据存储
要选出正确的数据结构能够存储用于通讯的数据。(3)功能性判断
功能性需求要区别于其他消息,为了区分可以功能性需求和普通消息的区别可以设置一些格式。(4)功能实现
为了实现群聊服务器端可以把客户端发来的普通消息进行广播给在聊天室的所有用户,实现私聊的时候服务器要把这条消息只发给指定客户端,不可以使其他人看到,如果客户端需要查看在线用户信息服务器要把信息发送给请求的客户端。
3、基本的流程设计(1)服务器设计流程图:
(2)客户端流程:
4、功能实现
基本的群聊和私聊功能都是通过服务器转发到的,当服务器接收到群聊的信息就可以进行广播,但接到私聊的信息就只发给接收方。
在客户端在接收数据采用一个接收线程定义是,static HANDLE hHandle1=NULL;定义一个句柄DWORD WINAPI rec_v(LPVOID p)用来定义一个线程,当需要进行调用时在相应的位置写上hHandle1=CreateThread(NULL,0,rec_v,NULL,0,NULL)。发送数据时采用while循环并且在发送数据是要判断是否是功能性请求消息,例如如果输入的是***cls那么这是求求清屏,那么客户端就不把这条消息发个服务器,并自身处理这个功能。
在服务器端不采用多线程,应为服务器子进行转发或者提供功能性需求,不需要自己输入什么,所以在一个while循环就可以实现基本功能了,并且在接收消息是要判断是否是功能性请求,如果是者进行功能性处理,比如当客户端发送***list时,服务器要把在线用户信息发给提出请求的客户端。
5、设计流程图(1)服务器端流程图:
服务器首先进行初始化工作然后等待客户端对他的连接并接受客户端发来的消息,如果接收到的数据是功能性请求则进行功能性处理,否则当作普通消息进行广播,判别是否是功能性请求的方法是客户端再发送功能性请求时在信息的头部加上***及请求类型,比如***list就是一个申请用户列表的请求,当服务器端接到***就解析后面的命令,当时sip:时表明这是一个新用户,然后服务器会在自己维持的用户列表中把新用户加进来,然后继续等待接收客户端信息,当收到list时会把在新用户信息发给起初请求的用户,当私聊时服务器会把这条信息转发个指定用户,而不去转发,这些操作结束后程序都会回到接收数据的状态。(2)客户端流程图:
首先客户端完成基本的初始化过程,输入自己的名字和端口号程序会自动把输入转化成sip:name@ip:portde 形式去连接服务器,连接成功开启接收线程后不断监听是否有消息发送过来,当接收到消息后打印然后继续监听,当输入的消息不是功能性请求这个消息不做任何处理发给服务器,输入的消息是功能性请求消息时,会有两种处理一种是客户端可以自己处理的,这样客户端自己处理后继续等待键盘输入,比如清屏功能,当需要服务器协作完成时客户端会把消息进行加工然后发给服务器等待服务器合作处理,比如当向服务器请求显示在线用户是发给服务器的消息会在前面加上***list,这样当服务器接收到消息时解析***知道这是一个功能请求,然后再解析出list知道这是一个在线用户列表请求,然后在线用户列表发给请求的用户。当收到的功能性请求是退出或者私聊等处理过程和上面类似。
四、实训项目结果及分析
我们的O-SIP的聊天室系统的开发主要是基于控制台,由于开发时间比较仓促,所以我们仅仅实现了简单的消息收发的双工通信,界面还未实现美化等。希望老师谅解。
服务端启动之后创建一个socket,将socket和本机的IP绑定
五、实训项目人员、进度安排及完整过程
六、实训项目心得及体会
项目基本实现了需求的功能,程序可以进行基本的私聊和群聊,在此基础上还可以进行在线用户查询,提醒所有用户是否有人上线或者下线,并且系统相对稳定,有一定的扩展性,通过此次实训学到了很多知识对网络编程有了一定的了解和深入,在实践编程中虽然遇到了很多问题但是通过组内和组件交流,都得到了很好的解决,多练了自己和别人的交流能力和团队精神,总之有很多的收获,并希望有机会能够多参与到这样的实训中。
通过这三周的实训,我们小组各个成员都在软件工程方面有所提高。一开始构想时只有大体的思路,忽略了一些细节,因此在我真正做设计时发现有很多错误,有的时候要解决一个错误会花上很多时间,在做的过程中,有很多错误意想不到,有的错误却犯得很幼稚,不过这样对自身的排错能力能得到很大的提高。比如一个组员在做java socket 聊天程序测试时候,他无论怎么运行都会出现错误,而且出现提示信息他也无法修改,浪费了他至少两个小时时间,最后因为在定义类的时候是小写,而在直接生成的类他把删去,又直接复制编程人员的程序。这些细小错误让我深受感慨,它告诉了我编程细心重要,养成一个好的编程习惯更重要。这次项目的完整开发,让我们有项目初步的思想,这次项目的开发让我把软件生成的流程从信息的收集,再写需求,再完成后台设计到编写代码,到测试,让我知道还有很多地方的不足。更重要的是团队之间的合作,相互之间的交流,有时一个问题总是想不通,但每个队友负责的部分不同,所以想法也不同,交流之后,便有了新的思路。这次课程设计的时间很紧迫,再加上各方面的经验不足,也遇到很多问题,这个聊天系统还有很多地方没有完善,希望老师能谅解。总的来说,这次课程设计对我很有帮助,我发觉老师上课讲的很多东西对我们都很有用,让我受到不少的启发。
感谢程保中教授,雷友询教授这三周来对我们的细心教导和使我们的通信软件知识有了很大的提高和其感谢孙艺,谢锦,陆天波三位老师在这三周内每天都陪我们在实验室,为我们解除疑惑,帮我们分析错误。正是由于你们才使我们在自信心上有了大的增强,不再感觉做项目是个遥不可及和非常困难的事情。这次工程实践的为我们有条理的梳理了我们所学的软件工程方法和编码技术。使我们在以后的工作中敢于面对困难和向困难挑战。
第二篇:软件实训总结
软件开发实训总结
一、实训过程
首先,我们学习通用编程:任何类类型的所有值都可以同object类型的变量来代替。封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)。重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载。编译器必须挑选出调用哪个方法。数组列表:ArrayList动态数组列表,是一个类库,定义在java.util包中,可自动调节数组的大小。class类 object类中的getclass方法返回class类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。Java中对内存的分配是动态的,它采用面向对象的机制,采用运算符new为每个对象分配内存空间,而且,实际内存还会随程序运行情况而改变。程序运行中 Java系统自动对内存进行扫描,对长期不用的空间作为”垃圾”进行收集,使得系统资源得到更充分地利用.按照这种机制,程序员不必关注内存管理问题,这使Java程序的编写变得简单明了,并且避免了了由于内存管理方面的差错而导致系统出问题。而C语言通过malloc()和free()这两个库函数来分别实现分配内存和释放内存空间的,C++语言中则通过运算符new和delete来分配和释放内存,总之,Java语言是一个纯的面向对象程序设计语言。Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本
地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
二、心得体会
刚开始时张宇老师先教我们配置JAVA的编程工具和运行环境,然后教我们学JSP,在此期间,我们自学了JAVA,又学了Tomcat的使用及MySql和HTML语言,当我们JSP入门后,陈老师开始教我们学习JSF框架,但由于学校的安排,刚开始学,陈老师便去了苏州,由在苏州带队的孔祥盛老师回来教我们,在孔老师的安排下,我们又学习了SQL Server 2000和Struts框架,教我们学会了Javawebstudio的使用。总之,在两位老师的细心辅导下,我们有了很大的进步,知识得到了扩充,认识得到了加深,也使得我们的自学能力得到了很大的提高,在此,我向两位老师表示由衷地感谢。这次实训是三年中所学知识的一次汇总,是三年来学习能力的一次集中体现,有的知识在这次实训中用不到,但以后会用到,我敢说肯定会用到。因为好多东西都是厚积而薄发,所学的知识在关键的时刻也许只有一种用得上,但这一种也许足以成就我们的人生,到那时我们才能真正体会到知识的伟大,才能真正了解老师的重要性。我觉得要成为一个合格的程序员,首先要具备的是一种自学能力,遇到了问题自己要有能力去解决,当你尝试了各种方法,实在无能为力时再去请教别人,这时你所学的知识你一生都不会忘记,它将成为你一生的财富。有句话说得好:进攻是最好的防守!当你遇到了问题,你要试着去解决,编程嘛,想到了就要去试,你的面前就一台电脑而已,它又不会爆炸,你怕什么呢?我不敢说我的观点一定正确,每个人有每个人的想法,也正是因为大家的观点各不相同,才使得IT业这个新兴的产业在短短的几十年中得到了长足的发展,给人类社会创造了超过以往人类社会所创造的价值的总和,这不能不令人惊叹,也正是因为如此,它才使得我对它产生了强烈地好奇心和探索欲。未来的社会是信息的社会,信息业所创造的财富在人类社会中占据首位,经济、军事、教育、医学、农业等领域无一不用到信息业所产生的科技成果。我能感受到它所创造的经济效益会有多大,所以,我要说:我爱编程,海枯石烂,矢志不渝!我是一个新技术的狂热追随者,每次上网时总要到MLDN上逛一下,当看到短短的几行代码却能产生令人惊叹的功能时,我就被编程者的那种魅力所折服,我想成为其中的一员,我为自己现在所学习的专业感到自豪。在我学习的过程中我也遇到了很多的问题,可是我却发现我遇到的好多问题在网上总能找到答案,我才明白我遇到的问题很多人都遇到过,并且他们也把解决的办法发布到了网上,以使我们这些初学者少走些弯路,我觉得他们太善良了,同时我也明白了自己是多么的渺小,我正在走前人走过的路,到底前面的路有多长多远,我不知。他们是开路先锋,他们为我们学习新技术新知识铺平了道路,我们所要做的就是把他们所
发明和创造的东西掌握使用而已,并且知识量又很大,当我看到有无穷无尽地学习资源供我享用时,我只能说,他们像太阳一样照耀着我成长,他们太好了。当我看到程序代码,我就有一种特别的感觉,让我不断想成为一名编程高手,如果真的有一天,我的理想会实现,我会加倍努力好好学编程,永远不改变!通过三个月的实训,我感到自己学到了很多东西,虽说不精,但已经入门,于世间万物之中,遇见我所遇见的事物;于千万年之中,时间的无涯荒野里,没有早一步,也没有晚一步,刚巧赶上了,上苍让我有机会接触编程,给了我一条路。我很清楚以后的路还很长,再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。任何业绩的质变都来自于量变的积累,成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成,让我们将事前的忧虑,换为事前的思考和计划吧!在实训的过程中,我深深感觉到自身所学知识的有限,有些知识点以前没有学过,但我也没有去研究,实训时突然间觉得自己真的有点无知,虽然现在去看依然可以解决问题,但要浪费许多时间,这一点是我必须在以后的学习中加以改进的地方,同时也要督促自己在学习的过程中不断的完善自我。另外一点,也是在实训中必不可少的部分,就是同学之间的互相帮助。所谓”当局者迷,旁观者清”,有些东西感觉自己做的是时候明明没什么错误,偏偏程序运行时就是有错误,让其他同学帮忙看了一下,发现其实是个很小的错误。所以说,相互帮助是很重要的一点,这在以后的工作或生活中也是很关键的。俗话说:“要想为事业多添一把火,自己就得多添一捆材”。此次实训,我深深体会到了积累知识的重要性。在实训当中我们遇到了不少难题,但是经过我们大家的讨论和老师细心的一一指导,问题得到了解决。两个月的实训结束了,收获颇丰,同时也更深刻的认识到要做一个合格的程序员并非我以前想像的那么容易,最重要的还是细致严谨。社会是不会要一个一无是处的人的,所以我们要更多更快地从一个学生向工作者转变,总的来说我对这次实习还是比较满意的,它使我学到了很多东西,为我以后的学习做了引导,点明了方向,我相信在不远的未来定会有属于我们自己的一片美好天空。
第三篇:软件实训心得体会
学生管理系统实训心得
通过为学期期的实训,我学习了很多关于很多的知识。在老师的正确指导下,顺利的完成了我的实训内容。在此,也有同学的帮助,在他们的帮助下我也受益匪浅。最终,能顺利完成实训的任务也高兴了。
在实训生活中,我了解开发项目的需求、设计、实现、确认以及维护等活动整个过程,让自己开始懂得一点软件工程的知识点。首先,了解需求分析的重要性,比如:需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的.(相信大家都有体会)比如,用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死。所以,需求分析是成功的第一步,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。然后呢?确实客户的需求的以后我们要做什么呢,那当然是设计和分析。此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。接下来是代码实现,此阶段是将软件设计的结果转换成计算机可运行的程序代码,我们这个项目为五个模块,分别为五个小组成员完成。这阶段我学到很多编程的思想,如:分层思想、mvc、ssh的整合、dao的编写。编号程序之后就是软件测试了,此时在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。最后是软件维护,它是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。
但是,我深深体会到了在许多方面的欠缺和不足,比如:在需求分析时,由于自己的实践经验不够,很难分析需求到位;在编写代码时,由于自己技术知识水平不广,常常遇到技术难题;还有自己没有 良好的编程习惯,不注释,有时连自己也看懵了;编程的结构不好,维修和修改代码是很慢。这次实训让我意识到了自己做为计算机软件工程专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄外,还必须具备良好的心理素质,使自己在以后的途中无论经历什么样的困难,都立于不败之地。“纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而所学的,都是课本上没有而对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。
在这次实训中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每个成员的意见,使我们的组合达到更加完美。实训过程中,除了要专业知识,包括人际交往,沟通方式及相关礼节方面的内容,对于团队开发来说,团结一致使我深有体会。团队的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具体实践中,不仅加深我对理论的掌握和运用,还让我拥有了一次又一次难忘的开发经理,这是也是实训最大的收获。
这次实训带给我太多的感触,它让我知道工作上的辛苦,事业途中的艰辛。让我知道了实际的工作并不像在学校学习那样轻松。让我学到了很多课堂上更本学不到的东西,仿佛自己一下子成熟了,懂得了做人做事的道理,也懂得了学习的意义,时间的宝贵,人生的真谛。明白人世间一生不可能都是一帆风顺的,只要勇敢去面对人生中的每个驿站!这让我清楚地感到了自己肩上的重任,看清了自己的人生方向,也让我认识到了做软件应支持仔细认真的工作态度,要有一种平和的心态和不耻下问的精神,不管遇到什么事都要总代表地去思考,多听别人的建议,不要太过急燥。人非生而知之,虽然我现在的知识结构还很差,但是我知道要学的知识,一靠努力学习,二靠潜心实践。没有实践,学习就是无源之水,无本之木。这次实训让我在一瞬间长大:我们不可能永远呆在象牙塔中,过着一种无忧无虑的生活,我们总是要走上社会的,而社会,就是要靠我们这些年轻的一代来推动。这就是我们不远千里来实训的心得和感受,而不久后的我,面临是就业压力,还是继续深造,我想我都应该好好经营自己的时间,充实、完善自我,不要让自己的人生留下任何空白!
从初出茅庐,到现在可以熟练的按照流程开发软件,这都与我组每个成员的努力是分不开的。在实训中,教会了我们很多东西,同时也锻炼了大家踏实、稳重、沟通的能力,每个人都很珍惜这来之不易的实训机会。在工作中,经常会和不同的人打交道,然而他们的态度是不可恭维的,你会感觉到他的不耐烦以及他的高傲,所以这就需要学会沟通的方式及说话技巧,学会灵活面对。
在这学期的实训中,我受益匪浅,不仅专业知识增长了,最主要是懂得了如何更好的为人处事、团队合作,感觉自己比以前成熟多了。正因为学习上有所收获,思想上也就豁然开朗起来。通过这次实训,我觉得要改变以前错误的思想,想把各项工作做好,就必需要不断的学习,不断的充电,也只有不断的学习、充电,才能提高自已的工作能力。古人云,“活到老、学到老”,这句话是很有道理的。
社会的竞争是激烈的,我想我们应该好好把握住大学学习的时间,充实、完善自我,全面发展,攻破电脑,争取做一名出色的程序员。我们深刻的了解到,只有经历过,才知道其中的滋味。
对于我而言,可以说通过这次实训,真真切切的让我了解了什么是软件开发,什么是软件,让我对于软件最初的观点也有了本质性的改变!程序员不仅仅是一份职业,更是一份细心+一份耐心+一份责任心=人生价值的诠释。
第四篇:软件实训心得
武汉理工大学《工程软件应用训练》心得体会
工程软件应用训练
题目
学院
专业
班级
姓名 指导教师
心得体会 汽车工程学院 车辆工程 车辆1001熊 欣
2012 年 8 月 30 日
AutoCAD使用心得体会
正如课程设计教学目的所言“从产品装配测绘、计算机绘图、三维CAD建模、参数化设计等方面进一步加深和拓宽学生在工程制图、机械CAD技术等课程中所学基本知识,结合实际机械产品(模型)设计的具体问题,培养学生理论联系实际认识和解决问题的能力,为后续专业课程和相关实践环节的学习奠定基础。”通过这次软件实训,我深深的体会到自己在理论知识和工程应用上的不足。
我作为一名车辆工程的学生,之后到了工作岗位上,也许会从事设计方面的工作,这时学习CAD就至关重要了。CAD可以将图示清晰明了的体现出来,让人一目了然,尺寸大小形状都有体现,是设计者和实施者的桥梁,从一张CAD图纸可以看出设计者的构思,简单明了。CAD实际用途的广泛性不仅体现在我们环境工程这个专业上,在其他的专业也有体现。可以说CAD是今后我们软件应用的一个基础,无论是设计还是施工都要看懂CAD图,学会应用和绘制CAD图。
经过这两个多月的学习,我掌握了CAD制作的基本操作,简单了解了CAD的实际用途。CAD即计算机辅助设计(CAD-Computer Aided Design),是利用计算机及其图形设备帮助设计人员进行设计工作的一种软件。它是Autodesk公司出品的一款著名的专业制图设计软件,功能非常强大,已经成为国际制图设计的标准软件。在机械、建筑、服装、电子等各个方面都有应用。尤其在机械行业是离不开这个软件的。CAD可以绘制机械、建筑、航空、石油等多方面的二维平面图形和三维立体图形等等,它的使用性是非常之广泛的。我们在绘制图形的时候要注意线条的宽度,字体的美观、尺寸也相当准确,在命令提示行里输入多少就是多少,方便简洁。
对于平时作业和绘图时遇到的问题,主要是对于软件很多绘图修改命令的不熟练。就拿绘制直线为例,如果不打开正交的命令则会导致直线的不平整,对于绘制水平竖直的图形有很大的不便,使之不能很好的对齐,又如不打开线宽的命令就不会体现线条的粗细等等。还有图层的建立和应用的问题,需要将要绘制的图层设置为当前,很多时候就是因为忘记设置当前,造成了很多不必要的麻烦。而且图层绘制时也要好好的选择线性和颜色才不会造成后来返工的局面。
用CAD画图,打开对象捕捉就能把有特征的点标出来,但是很多时候要适时地使
用。CAD中尺寸标注也很快捷,两个点一拉,左键一点就完成一个标注,不用画箭头,不用标文字,只要自己设计好标注格式,计算机就能按要求标出来。插入文字也很方便,但是要注意字的格式要提前设好,防止不必要的麻烦。
对于已经绘制的好的图像修改图层,我和很多人一样遇到了类似的问题,在图层选择时没有选定为当前,使得想要的图形没有到规定的图层中去。这时,要将所要更改的图形进行选定,点击右键,在最后一个特性中将所要更改的更改过来,无论是颜色还是线性还是图层都可以同一的修改。这时就比较方便,可以很多线条的修改不存在干扰的问题。
虽然最后的图纸并没有达到预期的效果,但是我切实收获了很多。在这两个月中进行了很多的探索,付出了很多的时间和精力。虽然我的作品并不是最好的,但是里面注入了我太多太多的心血,我们对自己很满意。很感谢老师对我们的指导,让我也对设计这个领域的职业产生了兴趣,很希望可以从事这方面的工作。
第五篇:软件实训心得
转眼间,到昆山已经两个多月了。不知不觉中我已经从一个在校生变成了一个职员。这跟在我们学校是完全不一样的。除此之外,安博还制定了严格的制度,这些使我们在安博的培训像职工在公司工作一样,让我们提早接触到公司的氛围。
来安博最重要的目的还是学技术,那就说说这里的教育情况吧。安博实行的是上午授课,下午上机练习的制度。我觉得我们这个班上午的授课经理非常好,他对java的理解非常透彻。我在大学学了半年的java,仅仅停留在表面上,对实质的内容根本都不了解。比如说==与equals的区别,方法的覆盖,变量的隐藏等等。老师通过图的方式,给我们讲解它们在内存中的情况,使我们从本质上了解了这些东西。他的这种授课方式,既生动又形象,彻底地将问题讲明白,我们接受起来轻松容易,也不容易遗忘。
除了他的讲课方式以外,他还是一个非常幽默的人,坐在凳子上听四个小时的课,会很乏味的,他时不时的给我们说一些搞笑的事,或者开玩笑的话,使课堂气氛非常活跃。他每讲完一个新知识点,都给我们留一点时间练习,加深对新知识的理解。我们有什么问题,他都会很耐心的跟我们讲解,不管程度是好是坏,他都一样对待。总之,听他的课就是一种享受。他还把跟知识相关的材料发给我们,让我们有研究的空间。有时还给我们一些面试题,让我们提早看,只有准备好了去应聘才有机会。
昆山还给我们开了一些素质课,讲解一些职场素质,如何为人处事,如何同面试官讲话,还要求我们在日常生活中也尽量做到。在我们就业之前开这样的课,对我们这些即将踏入社会的大学生来说是非常重要的。公司招聘员工,一看实力,二看素质,两者缺一不可。
总之在昆山的这段时间中,我学到了很多。时间虽短,但所学到的和知识的实用性很强。所有的老师们都教给了我们很多工作习惯、工作技巧、日常礼仪、职业素养和心态方面的东西。使我们对今后的工作有了新的认识,增添的极大的信心。
学会学习和团结
我们学了半个多月的基础知识,也该是用一用的时候了。这半个多月,应该算是安博给我们安排的p阶段的训练时间。我们开始接触一些小型的系统,实训员工管理系统等。这些小型的系统巩固了我们的基础知识,让我们学会了一些编程的技巧,以及一些验证的方法。
每做完一个系统,我们都有一个项目演示环节。自己带着项目在全班学生的面前演示。讲解自己是如何实现的,说出自己系统的亮点和不足,然后由其他学生来挑系统的毛病,找出漏洞。通过这种方式,你可以学到其他学生的优点,别人好的编程思想你可以在以后的项目中运用。这是一个自我提高的方式。
接下来我们做了一个财务管理系统,用mvc三层架构实现的,jsp+struts+hibernate,这个系统是我们小组共同完成的,jsp用于前台的显示,struts调用bean的方法与数据库连接。这个系统做完之后,我觉得一个项目的流程图是十分的重要。如果没有总体的框架,后期修改会是很麻烦的。做项目之前我们应该先总体考虑一下布局,不要急着编程。在做项目的这段时间里,我感觉自己的知识面太窄了,书到用时方恨少。做项目不仅检查了我们的基础知识掌握程度,而且给我们提供了自我提高的机会。项目做完以后,我感触颇深。以前在学软件工程的时候,一直不觉的文档很重要,老是认为编码最重要,做这个项目纠正了我的错误认识。我认识到概要设计,详细设计是何等的重要。团队合作,最重要的是合作精神,不能自己一个人编程,不管其他的人。项目都是分模块做的,每个模块直接是有联系的,组内必须协调好,否则在整合的过程中会出很多的问题。一个大项目给个人自我发挥的余地是很大的。如果数据库里的数据太多,在显示的时候就应该考虑分页,分页的方法有很多种,这就是一个值得钻研的问题。在此期间我学会了自己解决问题的能力,在发现错误的过程中,才能学到更多的知识。知识是无穷的,不要为了就业而学习,而是为了提高而学习。多读书,能提高自己的逻辑思维能力。要多和其他人交流,不要闭门造车。
实习感受
不知不觉在大学已经度过了2年的时光,为了让即将面临毕业的我们能有一个好的就业前景,中国管理软件学院决定让我们把后半年作为一个实习年。由于我们是安博定向培养的所以我们实训有安博来提供基地。
做了十几个小时的火车,我终于来到了很多人都向往的江苏。由于第一次到南方,心里也隐藏着那么多的诱惑。
但是在学习的过程中,总有那么多新鲜事物进入我的视野,这时才感叹自己的知识面是多么的狭窄,同时也为自己在学校里没有好好学习感到愧疚。书到用时方恨少,这种感觉让我深深体会到自己的无知。来到这里以后我的求知欲望更加强烈了,想的最多的就是如何将自己的学到的知识真正的融入到现实技术中。
软件业,让多少人为之疯狂,它的魅力的确很大,涉及的知识是那么的广泛,让我总觉得自己的知识不够用,每天早上8点半,到下午5点半的培训时间要学习企业中所需的技术知识,其他的时间,就只剩自己疯狂的练习;来到这里才感觉自己在大学的生活是那么悠闲自在。
也许人都是那样,往往都是事情来临的时候才为自己的所作所为感到后悔。来到这里没有联系太多的朋友,心中唯一的目标就是将需要的知识好好学到手,以便能够更好的在工作时熟练使用。
有时候寂寞只是一种态度。来这里没有感觉太多的孤独,每天都充满激情的去迎接新事物,去面对新知识。一步一步设计自己未来的路线并将其实现。
虽然来这边的同学还有很多,但大家都很清楚的自己的职责,我们抵挡住了很多诱惑,都在为着自己的目标而奋斗。在这里我只想说一句,就是感谢安博能够提供给我们这个机会,让我们提前接触社会,认识自己,相信出来培训的同学都将会有一个更加深刻的认识,来为自己的未来奋斗!
或得或失
2个月的培训眼看就要结束了,刚开始觉得好漫长,现在却感觉过得好快啊,也就是一眨眼的时间。可是,通过这次培训我懂得了好多,明白了好多。
随着毕业时间的临近,心里越来越不安,也变得很浮躁,不知道自己毕业后该去哪里。这时才体会到社会上说得“毕业就意味着失业”和老师所说的就业压力。
回想自己2年的大学生活,感觉就这样不知不觉走了过来,似乎昨天才踏进大学校门,今天就要毕业了。2年里自己都做了什么,学到了什么,想到这里,心里就更没底了,似乎什么也没有学到,什么也没有做过。
学习期间深深体会到自己在大学里学的东西其实都很重要,以前以为没有用的科目,到了这儿才知道这千丝万缕的关系,所有的课程都是有用的。学校的科目是基础,所以不要认为自己现在学的没有用,知识不管是在什么时候总是有用的。
走编程这条路其实不是自己原本的打算,以前一直以为自己压根就不是编程的料,认为编程从来都不会是自己想做的事情,把编程看的很难很难。经过自己的努力以后才发现,原来很多事情都是我们自己把它想复杂了,编程也不是那么的难。只要努力,没有什么是不可能的。
总之,我不后悔自己的选择,也会一直坚持下去。