当前位置: 首页 > 其他范文 > 调研报告

软件开发调研报告(共5篇)

作者:唱响鹏城 | 发布时间:2020-08-11 06:57:39 收藏本文 下载本文

第1篇:软件开发专业调研报告

软件开发专业调研报告

为了更好的进行专业建设,在2008-2009上学期以及假期对软件专业进行市场调研,在调研过程中侧重与软件编程和手机软件方向,主要地点是沈阳,现将调研结果总结如下: 一、调研的目的此次进行调研的主要目的是了解软件行业的人才需求目标,能力要求以及行业的工作过程,以此来修改人才培养方案和进行课程建设。二、调研的主要方式

1、要想了解企业对人才的要求,最好的方式我认为就是看招聘启示,一个企业的硬性需求都写在招聘启示中了。所以我首先上网查询本行业相关的大型企业的招聘要求,了解行业所需的前沿知识。

2、由于计算机学科的特殊性,知识体系翻新速度非常快,了解整个行业的发展动态有助于我们制定我们的人才培养方案和课程建设,所以我又在网上查找行业的最新动态以确定我进行企业调研的方向。

3、走访企业,利用假期时间我走访了沈阳三好街的多家软件相关企业,参观了位于浑南的中科院研究所,并与其进行座谈研究了本专业的教学计划

4、利用自己的人际关系进行电话访谈,由于一些朋友目前在一些软件公司,所以可以借此关系向其请教有关本专业的专业计划的问题,了解东软等大型企业中的工作流程。

5、既然是关于手机软件开发,就要了解最新的科技,所以我也走访了各大商场的手机专柜,了解最新的手机有什么样的功能。

三、调研的主要内容

1、软件行业的发展现状 2、软件行业的人才需求状况 3、沈阳地区的软件企业现状 4、我们所培养的学生适合的岗位群

5、如何根据调研内容提出对人才培养方案的修改建议 四、调研结果 1、关于软件行业

近年来,软件行业的迅速发展为社会创造了巨大的价值的同时,也为人才市场提供了大量的就业岗位。根据教育部的相关报告称,我国每年的软件人才缺口仍然居高不下。此外除了常规的软件服务行业外,还发展了一些新的领域的软件服务,例如移动服务(手机软件的开发),网络服务等。这也说明了在常规的软件人才之外,我们的教育还需要为社会提供新领域的软件开发人才。目前软件从业人员中主要以大量的本科生为主,缺乏高端人才的同时也缺乏大量的软件“蓝领”,行业人才呈现“橄榄形”。行业的用人需求也在根据市场不断进行调整,最初对学历,经历要求较高,但是随着行业不断发展,现在的软件行业注重的不仅仅是学历更重要的是项目的实践能力,所有企业都希望企业员工在进入企业的时候就可以独当一面。这也正是我们高职院校培养的目标,所以随着行业的发展,计算机软件专业的毕业生就业率不断提高,证明我们的职业教育是十分必要的。这其中最重要的就是我们要时刻追随市场的脚步,看到用人单位对人才的需求。

那么现阶段企业对人才到底有那些需求呢,这从每家企业的招聘启事中就可以看到,例如:(企业的招聘要求)

职位描述: 职责:

1 带领小组人员协调配合,开发原创项目 2 不断完善手机游戏的构架和引擎

3 不断寻找新的游戏逻辑和算法,并加以优化 4 编写技术文档,并对其他程序进行培训 要求:

1 良好的思维方法和技巧,精益求精的工作态度 2 精通Java编程,出色的调试和优化技巧 3 二年以上j2me开发经验

4 喜爱游戏,有志于游戏程序的开发

5 强烈的责任感及团队合作意识,出色的自学能力和分析能力 一般的应聘中,学生将面对两种身份人的考核,公司的人力资源主管以及公司的技术人员,其中技术人员主要考核应聘者的专业知识(包括编程能力,数据结构能力,算法,逻辑思维,实践经验,项目开发经验),而人力资源主管则对应聘者的社会经历,实习经历,是否当过学生干部,组织能力和人际关系感兴趣。所以从上面可以看出来,在应聘时除了要求具有专业知识外,企业更注重学生的个人素质以及实践动手能力。

2、学生存在问题

我们的学生在毕业面对就业时普遍存在的问题: 外语水平,由于计算机专业的特殊性,要求学生掌握基本的英文阅读能力,但是目前我院学生的英文水平普遍不高,这也反应出在英语教学上的问题。

知识体系不完善。由于教学时间的限制以及计算机学科的多样性,所以在校期间不可能学习所有应用知识,学生通常掌握的是比较流行的编程语言,对于周边知识的掌握反倒不够。

缺乏团队精神,80后的名词代表着独升生子女,同时也代表着不善人际沟通,以自我为中心。

盲目跟随认证,不知如何规划自己的学习生涯。3、手机的终端集成功能趋势

随着通信硬件的成熟,如今手机已经集成了越来越多的功能,如照相功能、MP3播放功能、蓝牙、存储功能等,而随着半导体技术的不断进步,这种趋势在未来将愈演愈烈。手机功能的日渐增多缘于用户需求的增多,用户除了要求手机外观呈现基本属性,还希望手机基本配备有照相及MP3播放功能。同时铃声的质感要佳,要有来电震动功能,且必须要有USB传输甚至是蓝牙传输的功能,其它功能需求虽然目前相对较低,但通过对消费者的移动增值服务需求调查,可以预见未来5年用户对手机集成的需求还将包括移动电视、Wi-Fi、GPS、E-mail等新功能。

照相手机窜红,普及率可高达80%~90% 专为特殊群体设计的手机开始问世

手机电视正在蓬勃兴起 GPS手机将走向大众市场

智能手机持有率有待提升

3G:视听娱乐,视频通话,地图导航 4、关于教学改革的一点建议 1. 专业化

计算机的科目非常多样,从就业方向上可分为网站开发,游戏软件开发,服务软件开发,移动软件开发等;开发工具更是多种多样,java,c++,vb等,每种工具有其适合的开发领域。而高职学生真正教学时间只有两年,四个学期,绝对无法学习所有的课程,更加无法精通。高职教育具有专向性,我们需要为岗位量身定做学生类型,把专业在软件开发的基础上更加细化,将专业知识做到“专”,“细”,“精”。

2.课程设置的不断更新

随着计算机产业的发展,所需人才缺口不断加大,除了高校的大量招生之外,社会的职业培训也在不断壮大,所以我们在进行课程设置的同时也应该借鉴职业培训的课程体系,根据软件行业的发展不断调整课程体系。

3、应加强实践能力的培养

目前沈阳的大型企业较少,多数软件企业较小。多数企业希望应聘人员具有较高的实践能力和项目开发能力。

4.综合素质培养

在知识经济快速发展的时代,毕业生紧紧掌握已有的知识是完全不够的,重要的是要有良好的专业素质。所以在传授专业知识的同时也要注重再学习能力和解决问题能力的培养,此外沟通能力和团队合作能力也是用人单位重视的重点。

5.强化学生就业指导 将学生推向社会时候,我们必须对学生进行适当的就业指导以提高学生的综合素质,同时也教会学生如何面对企业的面试。学生的接触面较窄,学校有义务为学生提供一些就业聚到,一方面要建立校企挂钩或校企结合的机制,一方面要形成适合软件专业特点和区域特色的学生就业推荐模式,建立和疏通学生就业渠道。

五、调研感受

通过本次调研,我感触颇深,原来教育不仅仅是将书本的知识传授给学生就可以,作为一名教师,尤其是计算机教师更应该了解行业的前沿知识,不可以固守书本。同时教育本身是为社会服务的,所以为岗位量身定做学生就是我们高职教育的职责,为学生量身定做人才培养计划更是我们教师的职责。相信通过本次调研,以及调研后的教学计划改革,我们一定可以使专业培养更贴近社会化。

第2篇:软件开发报告

负载均衡器软件

开发报告

院系: 班级: 成员:

目录

1.可行性分析报告..........................................................................................................................1 1.1 项目背景..............................................................................................................................1 1.2产品分析...............................................................................................................................1 1.3 结论意见..............................................................................................................................2 2.项目开发计划..............................................................................................................................2 2.1 总体功能要求......................................................................................................................2 2.2 软件开发平台要求..............................................................................................................2 2.3 软件项目的开发实施过程管理要求...................................................................................2 3.软件开发......................................................................................................................................2 3.1 软件的需求分析..............................................................................................................3 3.3软件的详细设计...................................................................................................................4 3.4 软件的编码..........................................................................................................................5 3.5软件的测试.........................................................................................................................31 3.5.1测试计划.....................................................................................................................31 3.5.2 软件测试....................................................................................................................31 4.项目开发总结报告....................................................................................................................32

I

1.可行性分析报告

1.1 项目背景

面对庞大的数据流量,面对集中性的访问,是不是觉得网络服务器岌岌可危呢?不用怕,负载均衡器就能帮你缓解这个问题。负载均衡器通过虚拟IP地址方法,解决了轮流排程所面临的许多问题。使用了负载均衡器集群系统,在外部看来,像是具有一个IP地址的单一服务器一样,当然,这个IP地址是虚拟的,它映射了集群中的每一台机器的地址。所以,在某种程度上,负载均衡器是将整个集群的IP地址报漏给外部网络。

当请求到达负载均衡器时,它会重写该请求的头文件,并将之指定到集群中的机器上。如果某台机器被从集群中移除了,请求不会别发往已经不存在的服务器上,因为所有的机器表面上都具有同一个IP地址,即使集群中的某个节点被移除了,该地址也不会发生变化。而且,internet上缓存的DNS条目也不再是问题了。当返回一个应答时,客户端看到的只是从负载均衡器上所返回的结果。也就是说,客户端操作的对象是负载均衡器,对于其更后端的操作,对客户端来讲,是完全透明的。

1.2产品分析

服务器一致性负载均衡器读取客户端发出的每一个请求中所包含的cookies或url解释。基于所读出的这些信息,负载均衡器就可以重写报头并将请求发往集群中合适的节点上,该节点维护着相应客户端请求的会话信息。在HTTP通信中,负载均衡器可以提供服务器一致性,但并不是通过一个安全的途径(例如:HTTPS)来提供这种服务。当消息被加密后(SSL),负载均衡器就不能读出隐藏在其中的会话信息。

通过故障恢复机制获得高可靠性故障恢复发生在当集群中某个节点不能处理请求,需将请求重新导向到其他节点时。主要有两种故障恢复:

请求级故障恢复。当集群中的一个节点不能处理请求时(通常是由于down机),请求被发送到其他节点。当然,在导向到其他节点的同时,保存在原节点上的会话信息将会丢失。

透明会话故障恢复。当一个引用失败后,负载均衡器会将之发送到集群中其他的节点上,以完成操作,这一点对用户来说是透明的。由于透明会话故障恢复需要节点具备相应的操作信息,因此为了实现该功能,集群中的所有节点必须具有公共存储区域或通用数据库,存储会话信息数据,以提供每个节点在进行单独进程会话故障恢复时所需要的操作信息。

既然所有的Web应用请求都必须经过负载均衡系统,那么系统就可以确定活动会话的数量,在任何实例访问中的活动会话的数目,应答的次数,高峰负载

次数,以及在高峰期和低谷期的会话的数目,还有其他更多的。所有的这些统计信息都可以被很好的用来调整整个系统的性能。

1.3 结论意见

虽然此项目存在一定的技术难度和风险,但我们对项目要达到的目标十分清楚,对所要开发系统将要实现的功能也非常了解。而且有一些成品作为参考,并且在项目的实施过程中我们能够获得帮助,我认为只要我们能够认真思考、仔细规划、明确分工,我们可以承担此项目的开发。

2.项目开发计划

2.1 总体功能要求

1.扩展网络设备和服务器的带宽 2.增加吞吐量

3.加强网络数据处理能力 4.提高网络的灵活性和可用性

2.2 软件开发平台要求

Visual c++ 6.0 SQL Server 2008 C++ Builder 网络架构:

完全支持TCP/IP协议

2.3 软件项目的开发实施过程管理要求

3.软件开发

3.1 软件的需求分析

1.DNS负载均衡最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。

2.代理服务器负载均衡 使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。

3.地址转换网关负载均衡 支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。

4.协议内部支持负载均衡除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的最高层。

5.NAT负载均衡NAT简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。

6.反向代理负载均衡普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

7.混合型负载均衡在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能。将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。

3.2软件的概要设计

软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一

个或多个附加软件来实现负载均衡,DNSLoadBalanceCheckPointFirewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。

一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。

全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过企业内部互联网来达到资源统一合理分配的目的。

3.3软件的详细设计

1.轮转法:轮转算法是所有调度算法中最简单也最容易实现的一种方法。在一个任务队列里,队列的每个成员(节点)都具有相同的地位,轮转法简单的在这组成员中顺序轮转选择。在负载平衡环境中,均衡器将新的请求轮流发给节点队列中的下一节点,如此连续、周而复始,每个集群的节点都在相等的地位下被轮流选择。这个算法在DNS域名轮询中被广泛使用。

轮转法的活动是可预知的,每个节点被选择的机会是1/N,因此很容易计算出节点的负载分布。轮转法典型的适用于集群中所有节点的处理能力和性能均相同的情况,在实际应用中,一般将它与其他简单方法联合使用时比较有效。

2.散列法:散列法也叫哈希法(HASH),通过单射不可逆的HASH函数,按照某种规则将网络请求发往集群节点。哈希法在其他几类平衡算法不是很有效时会显示出特别的威力。例如,在前面提到的UDP会话的情况下,由于轮转法和其他几类基于连接信息的算法,无法识别出会话的起止标记,会引起应用混乱。

而采取基于数据包源地址的哈希映射可以在一定程度上解决这个问题:将具有相同源地址的数据包发给同一服务器节点,这使得基于高层会话的事务可以以适当的方式运行。相对称的是,基于目的地址的哈希调度算法可以用在Web Cache集群中,指向同一个目标站点的访问请求都被负载平衡器发送到同一个Cache服务节点上,以避免页面缺失而带来的更新Cache问题。

3.最少连接法:在最少连接法中,平衡器纪录目前所有活跃连接,把下一个新的请求发给当前含有最少连接数的节点。这种算法针对TCP连接进行,但由于

不同应用对系统资源的消耗可能差异很大,而连接数无法反映出真实的应用负载,因此在使用重型Web服务器作为集群节点服务时(例如Apache服务器),该算法在平衡负载的效果上要打个折扣。为了减少这个不利的影响,可以对每个节点设置最大的连接数上限(通过阈值设定体现)。

4.最低缺失法:在最低缺失法中,平衡器长期纪录到各节点的请求情况,把下个请求发给历史上处理请求最少的节点。与最少连接法不同的是,最低缺失记录过去的连接数而不是当前的连接数。

5.最快响应法:平衡器记录自身到每一个集群节点的网络响应时间,并将下一个到达的连接请求分配给响应时间最短的节点,这种方法要求使用ICMP包或基于UDP包的专用技术来主动探测各节点。

在大多数基于LAN的集群中,最快响应算法工作的并不是很好,因为LAN中的ICMP包基本上都在10ms内完成回应,体现不出节点之间的差异;如果在 WAN上进行平衡的话,响应时间对于用户就近选择服务器而言还是具有现实意义的;而且集群的拓扑越分散这种方法越能体现出效果来。这种方法是高级平衡基于拓扑结构重定向用到的主要方法。

6.加权法:加权方法只能与其他方法合用,是它们的一个很好的补充。加权算法根据节点的优先级或当前的负载状况(即权值)来构成负载平衡的多优先级队列,队列中的每个等待处理的连接都具有相同处理等级,这样在同一个队列里可以按照前面的轮转法或者最少连接法进行均衡,而队列之间按照优先级的先后顺序进行均衡处理。在这里权值是基于各节点能力的一个估计值。

3.4 软件的编码

#include #include #include #include "conn.h" #include "log.h" #include "fdwrapper.h"

conn::conn(){ m_srvfd =-1;m_clt_buf = new char[ BUF_SIZE ];if(!m_clt_buf){ throw std::exception();}

m_srv_buf = new char[ BUF_SIZE ];if(!m_srv_buf){ throw std::exception();} reset();}

conn::~conn(){ delete [] m_clt_buf;delete [] m_srv_buf;}

void conn::init_clt(int sockfd, const sockaddr_in& client_addr){ m_cltfd = sockfd;m_clt_addre = client_addr;}

void conn::init_srv(int sockfd, const sockaddr_in& server_addr){ m_srvfd = sockfd;m_srv_addre = server_addr;}

void conn::reset(){ m_clt_read_idx = 0;m_clt_write_idx = 0;m_srv_read_idx = 0;m_srv_write_idx = 0;m_srv_closed = false;m_cltfd =-1;memset(m_clt_buf, '', BUF_SIZE);memset(m_srv_buf, '', BUF_SIZE);}

RET_CODE conn::read_clt(){ int bytes_read = 0;while(true){ if(m_clt_read_idx >= BUF_SIZE){ log(LOG_ERR, __FILE__, __LINE__, "%s", "the client read buffer is full, let server write");return BUFFER_FULL;}

bytes_read = recv(m_cltfd, m_clt_buf + m_clt_read_idx, BUF_SIZEm_clt_write_idx)> 0)? OK : NOTHING;}

RET_CODE conn::read_srv(){ int bytes_read = 0;while(true){ if(m_srv_read_idx >= BUF_SIZE)

{ log(LOG_ERR, __FILE__, __LINE__, "%s", "the server read buffer is full, let client write");return BUFFER_FULL;}

bytes_read = recv(m_srvfd, m_srv_buf + m_srv_read_idx, BUF_SIZEm_srv_write_idx)> 0)? OK : NOTHING;}

RET_CODE conn::write_srv(){ int bytes_write = 0;while(true){ if(m_clt_read_idx

}

bytes_write = send(m_srvfd, m_clt_buf + m_clt_write_idx, m_clt_read_idxm_srv_write_idx, 0);if(bytes_write ==-1)

{ if(errno == EAGAIN || errno == EWOULDBLOCK){ return TRY_AGAIN;} log(LOG_ERR, __FILE__, __LINE__, "write client socket failed, %s", strerror(errno));return IOERR;} else if(bytes_write == 0){ return CLOSED;}

m_srv_write_idx += bytes_write;} } #ifndef FDWRAPPER_H #define FDWRAPPER_H

#include #include #include

int setnonblocking(int fd){ int old_option = fcntl(fd, F_GETFL);int new_option = old_option | O_NONBLOCK;fcntl(fd, F_SETFL, new_option);return old_option;}

void add_read_fd(int epollfd, int fd){ epoll_event event;

0 1

event.data.fd = fd;event.events = EPOLLIN | EPOLLET;epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &event);setnonblocking(fd);}

void add_write_fd(int epollfd, int fd){ epoll_event event;event.data.fd = fd;event.events = EPOLLOUT | EPOLLET;epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &event);setnonblocking(fd);}

void closefd(int epollfd, int fd){ epoll_ctl(epollfd, EPOLL_CTL_DEL, fd, 0);close(fd);}

void removefd(int epollfd, int fd){ epoll_ctl(epollfd, EPOLL_CTL_DEL, fd, 0);}

void modfd(int epollfd, int fd, int ev){ epoll_event event;event.data.fd = fd;event.events = ev | EPOLLET;epoll_ctl(epollfd, EPOLL_CTL_MOD, fd, &event);

} #endif #include #include #include #include "log.h"

static int level = LOG_INFO;static int LOG_BUFFER_SIZE = 2048;static const char* loglevels[] = { "emerge!", "alert!", "critical!", "error!", "warn!", "notice:", "info:", "debug:" };

void set_loglevel(int log_level){ level = log_level;}

void log(int log_level, const char* file_name, int line_num, const char* format,...){ if(log_level > level){ return;}

time_t tmp = time(NULL);struct tm* cur_time = localtime(&tmp);if(!cur_time){

2 1

return;}

char arg_buffer[ LOG_BUFFER_SIZE ];memset(arg_buffer, '', LOG_BUFFER_SIZE);strftime(arg_buffer, LOG_BUFFER_SIZELOG_EMERG ]);

va_list arg_list;va_start(arg_list, format);memset(arg_buffer, '', LOG_BUFFER_SIZE);vsnprintf(arg_buffer, LOG_BUFFER_SIZE-1, format, arg_list);printf("%sn", arg_buffer);fflush(stdout);va_end(arg_list);} #include #include #include #include #include #include #include #include #include #include #include #include #include #include

3 1

#include #include

#include "log.h" #include "conn.h" #include "mgr.h" #include "procepool.h"

using std::vector;

static const char* version = "1.0";

static void usage(const char* prog){ log(LOG_INFO, __FILE__, __LINE__, "usage: %s config_file]", prog);}

int main(int argc, char* argv[]){ char cfg_file[1024];memset(cfg_file, '', 100);int option;while((option = getopt(argc, argv, "f:xvh"))!=-1){ switch(option){ case 'x': { set_loglevel(LOG_DEBUG);break;}

1 4 [-v] [-h] [-f

case 'v': { log(LOG_INFO, __FILE__, __LINE__, "%s %s", argv[0], version);return 0;} case 'h': { usage(basename(argv[ 0 ]));return 0;} case 'f': { memcpy(cfg_file, optarg, strlen(optarg));break;} case '?': { log(LOG_ERR, __FILE__, __LINE__, "un-recognized option %c", option);usage(basename(argv[ 0 ]));return 1;} } }

if(cfg_file[0] == ''){ log(LOG_ERR, __FILE__, __LINE__, "%s", "please specifiy the config file");return 1;} int cfg_fd = open(cfg_file, O_RDONLY);

5 1

if(!cfg_fd){ log(LOG_ERR, __FILE__, __LINE__, "read config file met error: %s", strerror(errno));return 1;} struct stat ret_stat;if(fstat(cfg_fd, &ret_stat)balance_srv;vector logical_srv;host tmp_host;memset(tmp_host.m_hostname, '', 1024);char* tmp_hostname;char* tmp_port;char* tmp_conncnt;bool opentag = false;char* tmp = buf;char* tmp2 = NULL;char* tmp3 = NULL;

6 met met

char* tmp4 = NULL;while(tmp2 = strpbrk(tmp, "n")){ *tmp2++ = '';if(strstr(tmp, "")){ if(opentag){ log(LOG_ERR, __FILE__, __LINE__, "%s", "parse config file failed");return 1;} opentag = true;} else if(strstr(tmp, "")){ if(!opentag){ log(LOG_ERR, __FILE__, __LINE__, "%s", "parse config file failed");return 1;} logical_srv.push_back(tmp_host);memset(tmp_host.m_hostname, '', 1024);opentag = false;} else if(tmp3 = strstr(tmp, "")){ tmp_hostname = tmp3 + 6;tmp4 = strstr(tmp_hostname, "");if(!tmp4){ log(LOG_ERR, __FILE__, __LINE__, "%s", "parse config

file failed");return 1;} *tmp4 = '';memcpy(tmp_host.m_hostname, strlen(tmp_hostname));} else if(tmp3 = strstr(tmp, "

")){ tmp_port = tmp3 + 6;tmp4 = strstr(tmp_port, "");if(!tmp4){ log(LOG_ERR, __FILE__, __LINE__, "%s", "parse config file failed");return 1;} *tmp4 = '';tmp_host.m_port = atoi(tmp_port);} else if(tmp3 = strstr(tmp, "")){ tmp_conncnt = tmp3 + 7;tmp4 = strstr(tmp_conncnt, "");if(!tmp4){ log(LOG_ERR, __FILE__, __LINE__, "%s", "parse config file failed");return 1;} *tmp4 = '';tmp_host.m_conncnt = atoi(tmp_conncnt);}

8 tmp_hostname,else if(tmp3 = strstr(tmp, "Listen")){ tmp_hostname = tmp3 + 6;tmp4 = strstr(tmp_hostname, ":");if(!tmp4){ log(LOG_ERR, __FILE__, __LINE__, "%s", "parse config file failed");return 1;} *tmp4++ = '';tmp_host.m_port = atoi(tmp4);memcpy(tmp_host.m_hostname, tmp3, strlen(tmp3));balance_srv.push_back(tmp_host);memset(tmp_host.m_hostname, '', 1024);} tmp = tmp2;}

if(balance_srv.size()== 0 || logical_srv.size()== 0){ log(LOG_ERR, __FILE__, __LINE__, "%s", "parse config file failed");return 1;} const char* ip = balance_srv[0].m_hostname;int port = balance_srv[0].m_port;

int listenfd = socket(PF_INET, SOCK_STREAM, 0);aert(listenfd >= 0);

int ret = 0;struct sockaddr_in addre;

9 1

bzero(&addre, sizeof(addre));addre.sin_family = AF_INET;inet_pton(AF_INET, ip, &addre.sin_addr);addre.sin_port = htons(port);

ret = bind(listenfd, sizeof(addre));aert(ret!=-1);

ret = listen(listenfd, 5);aert(ret!=-1);

//memset(cfg_host.m_hostname, '', 1024);//memcpy(cfg_host.m_hostname, "127.0.0.1", strlen("127.0.0.1"));//cfg_host.m_port = 54321;//cfg_host.m_conncnt = 5;procepool* pool = procepool::create(listenfd, logical_srv.size());if(pool){ pool->run(logical_srv);delete pool;}

close(listenfd);return 0;} #include #include #include #include #include #include

0

2(struct sockaddr*)&addre,#include #include #include #include #include #include #include #include #include

#include #include "log.h" #include "mgr.h"

using std::pair;

int mgr::m_epollfd =-1;int mgr::conn2srv(const sockaddr_in& addre){ int sockfd = socket(PF_INET, SOCK_STREAM, 0);if(sockfd

if(connect(sockfd,(struct

sockaddr* sizeof(addre))!= 0){ close(sockfd);return-1;} return sockfd;

2 1)&addre,}

mgr::mgr(int epollfd, const host& srv): m_logic_srv(srv){ m_epollfd = epollfd;int ret = 0;struct sockaddr_in addre;bzero(&addre, sizeof(addre));addre.sin_family = AF_INET;inet_pton(AF_INET, srv.m_hostname, &addre.sin_addr);addre.sin_port = htons(srv.m_port);log(LOG_INFO, __FILE__, __LINE__, "logcial srv host info:(%s, %d)", srv.m_hostname, srv.m_port);

for(int i = 0;i

2 2

{ close(sockfd);continue;} tmp->init_srv(sockfd, addre);m_conns.insert(pair(sockfd, tmp));} } }

mgr::~mgr(){ }

int mgr::get_used_conn_cnt(){ return m_used.size();}

conn* mgr::pick_conn(int cltfd){ if(m_conns.empty()){ log(LOG_ERR, __FILE__, __LINE__, "%s", "not connections to server");return NULL;}

map::iterator iter = m_conns.begin();int srvfd = iter->first;conn* tmp = iter->second;if(!tmp)

3 enough srv

{ log(LOG_ERR, __FILE__, __LINE__, "%s", "empty server connection object");return NULL;} m_conns.erase(iter);m_used.insert(pair(cltfd, tmp));m_used.insert(pair(srvfd, tmp));add_read_fd(m_epollfd, cltfd);add_read_fd(m_epollfd, srvfd);log(LOG_INFO, __FILE__, __LINE__, "bind client sock %d with server sock %d", cltfd, srvfd);return tmp;}

void mgr::free_conn(conn* connection){ int cltfd = connection->m_cltfd;int srvfd = connection->m_srvfd;closefd(m_epollfd, cltfd);closefd(m_epollfd, srvfd);m_used.erase(cltfd);m_used.erase(srvfd);connection->reset();m_freed.insert(pair(srvfd, connection));}

void mgr::recycle_conns(){ if(m_freed.empty()){ return;}

4 2

for(map::iterator iter = m_freed.begin();iter!= m_freed.end();iter++){ sleep(1);int srvfd = iter->first;conn* tmp = iter->second;srvfd = conn2srv(tmp->m_srv_addre);if(srvfd init_srv(srvfd, tmp->m_srv_addre);m_conns.insert(pair(srvfd, tmp));} } m_freed.clear();}

RET_CODE mgr::proce(int fd, OP_TYPE type){ conn* connection = m_used[ fd ];if(!connection){ return NOTHING;} if(connection->m_cltfd == fd){ int srvfd = connection->m_srvfd;

5 2

switch(type){ case READ: { RET_CODE res = connection->read_clt();switch(res){ case OK: { log(LOG_DEBUG, __FILE__, __LINE__, read from client: %s", connection->m_clt_buf);} case BUFFER_FULL: { modfd(m_epollfd, srvfd, EPOLLOUT);break;} case IOERR: case CLOSED: { free_conn(connection);return CLOSED;} default: break;} if(connection->m_srv_closed){ free_conn(connection);return CLOSED;} break;

6 "content

} case WRITE: { RET_CODE res = connection->write_clt();switch(res){ case TRY_AGAIN: { modfd(m_epollfd, fd, EPOLLOUT);break;} case BUFFER_EMPTY: { modfd(m_epollfd, srvfd, EPOLLIN);modfd(m_epollfd, fd, EPOLLIN);break;} case IOERR: case CLOSED: { free_conn(connection);return CLOSED;} default: break;} if(connection->m_srv_closed){ free_conn(connection);return CLOSED;} break;

7 2

} default: { log(LOG_ERR, __FILE__, __LINE__, "%s", "other operation not support yet");break;} } } else if(connection->m_srvfd == fd){ int cltfd = connection->m_cltfd;switch(type){ case READ: { RET_CODE res = connection->read_srv();switch(res){ case OK: { log(LOG_DEBUG, __FILE__, __LINE__, read from server: %s", connection->m_srv_buf);} case BUFFER_FULL: { modfd(m_epollfd, cltfd, EPOLLOUT);break;} case IOERR: case CLOSED: { modfd(m_epollfd, cltfd, EPOLLOUT);

8 "content

connection->m_srv_closed = true;break;} default: break;} break;} case WRITE: { RET_CODE res = connection->write_srv();switch(res){ case TRY_AGAIN: { modfd(m_epollfd, fd, EPOLLOUT);break;} case BUFFER_EMPTY: { modfd(m_epollfd, cltfd, EPOLLIN);modfd(m_epollfd, fd, EPOLLIN);break;} case IOERR: case CLOSED: { /* if(connection->m_srv_write_idx connection->m_srvread_idx){ free_conn(connection);

9 ==

} else { modfd(m_epollfd, cltfd, EPOLLOUT);} */ modfd(m_epollfd, cltfd, EPOLLOUT);connection->m_srv_closed = true;break;} default: break;} break;} default: { log(LOG_ERR, __FILE__, __LINE__, "%s", "other operation not support yet");break;} } } else { return NOTHING;} return OK;}

0 3

3.5软件的测试

3.5.1测试计划 功能部分将使用单元测试来确定其适合符合需求,性能部分将使用自动化测试来检验。主要测试为:

1 运行测试;

2 逻辑测试; 3 业务处理能力测试; 4 系统安全性测试; 5 性能测试; 6 高负荷下工作测试; 7 稳定性测试; 8 易用性测试;

3.5.2 软件测试 1.运行测试

在进行该项测试过程中,按照按照《用户操作手册》对软件进行了全面详细的操作测试,对软件所罗列出的所有功能模块进行了精细的操作,发现了一些容错和反馈信息方面的问题,以及部分功能模块无法实现或出错。2.逻辑测试

在进行该项测试过程中,主要对软件的逻辑设计方面进行了深入评判,检查软件设计是否在某些方面有悖于正常的逻辑思维,是否在实际情况相符。发现了一些诸如单个包间可容纳客人数无限制、同一服务员可服务客人数无限制等逻辑错误。

3.业务处理能力测试

在进行该项测试过程中,主要针对系统对业务的处理能力进行测试,检查了业务处理的连贯性、全面性和正确性,并检查业务处理结果是否满足客户需求。4.安全测试

在进行该项测试过程中,检查了系统的安全登录,查看了系统内资料的安全保密性,以及系统会不会有漏洞容易遭受外部的攻击。5.性能测试

在进行该项测试过程中,对于系统的运行速度、加载速度、业务处理速度等进行了测试。结果发现如果数据库中有大量数据,此时进行数据库访问,性能将会下降。

6.高负荷下工作测试

1 3

在进行该项测试过程中,对于当数据库有大量数据,并长时间运行时,软件的运行速度、性能和资源使用情况进行了检查。通过性能监视器分别对服务器的内存、CPU、硬盘的I/O速度等系统资源的使用情况进行观察,发现系统的资源使用有所提高,查询性能有所降低,但不影响正常使用。7.稳定性测试

在进行该项测试过程中,主要看软件是否会出现死机、操作系统或者网络瘫痪、程序崩溃等问题。8.易用性测试

在进行该项测试过程中,考察了本软件的界面设计布局是否合理,外形是否美观,操作是否简单无歧义,帮助文档是否简单易懂。

4.项目开发总结报告

在对该项目进行开发的过程中,我们遇到了很多的困难。在于我们对于市场的研究和可行性考量的过程中。虽然我们明确了设计的目的,但国内以及国际市场的广阔性使我们在对客户需求的分析中走入了迷雾中,因此耽误了很多时间。但是,幸好最后我们还是完成了该项目。而从对该项目的开发中,我们也学到了以下几点。

我们要尽量的让客户也参与到项目的开发团队中来,也就是说我们要使客户把自己也纳入到项目的开发团队中来。如此一来,我们掌握客户需求的真实性、可靠性就会大大的提高,也就不会为项目的后期功能开发埋下陷阱。

在项目确立后,我们就需要做好项目开发计划,需求调研用时,开发用时,测试用时,实施用时,维护用时。在我们做好了计划后,我们要随时的跟踪计划任务的完成进度,从而使我们的项目进度掌控在我们的开发周期范围之内,今日计划、行动,明日成功。

在其他行业中,人与人的之间的沟通是很重要的。项目开发也不例外,很好的沟通能够加快项目的进度,这就要求我们每一个开发人员要学会和善于沟通于客户和同事之间。在一个项目的开发过程中,我们与客户的沟通是一个不断交流和沟通的过程。在开发到一定的阶段,我们就需要和客户沟通已有功能,尽量的去避免一些隐藏的问题,及时的发现问题,解决问题,从而按时或者提前完成项目的开发。

2 3

3 3

第3篇:手机客户端软件开发投资调研报告

【引言】

手机客户端作为登入移动互联网最便捷的方式,扼守着移动互联网的第一入口,为企业进入营销时代开辟了一条康庄大道。手机客户端为企业提供完善、便捷、多样、高效的移动营销,为依然徘徊在移动营销门外的企业提供了一条可供借鉴的营销模式和企业实现信息化之“道”。目前除了一些大型企业,比如腾讯,MSN,中关村等拥有自己的手机客户端外,其他企业无一例外因为技术问题而被手机客户端拒之门外。

手机客户端格式,顾名思义就是手机软件的格式。目前有:JAR格式、JAD格式、sis是S60V1-V2UIQ平台系统、sisx是S60V3平台系统、cab是SMmartphone平台系统、mpkg是OSXpackage苹果操作平台系统,apk是Googleandroid平台系统,xap是Windowsphone是微软开发的手机操作系统。MRP是由斯凯开发的一种专门针对国产机的游戏格式。nes格式,是手机模拟器游戏的格式,有些国产游戏手机会用。

【目录】

第一章 手机客户端软件开发投资项目所处行业发展现状

第一节 手机客户端软件开发投资行业发展现状

第二节 当前产业政策

第三节 手机客户端软件开发投资项目行业相关政策规范

第四节 项目审批部门意见与关注问题

第五节 行业同业竞争分析

一、行业集中度分析

二、行业竞争结构分析

第六节 行业盈利水平变化分析

一、行业盈利指标分析

二、影响因素

第七节 行业发展特点与趋势分析

第二章 手机客户端软件开发投资项目投资原料市场调查

第一节 手机客户端软件开发投资项目所需原料种类与规格

第二节 典型项目原料消耗量分析

第三节 原料市场调查

一、原料一

1.2007—2011年产销统计

2.2007—2011年价格统计

3.主要产区与重点企业产量

二、原料二

1.2007—2011年产销统计

2.2007—2011年价格统计

3.主要产区与重点企业产量

三、原料三

1.2007—2011年产销统计

2.2007—2011年价格统计

3.主要产区与重点企业产量

……

第四节 手机客户端软件开发投资原料市场发展趋势预测

第三章 手机客户端软件开发投资项目投资技术设备调查

第一节 手机客户端软件开发投资项目工艺流程

一、工艺流程图

二、工艺特点介绍

三、不同地区条件的适用性

第二节 手机客户端软件开发投资项目主要设备介绍

一、主体设备名录与规格

二、主要设备供应商介绍

第三节 手机客户端软件开发投资项目技术工艺发展历程

第四节 手机客户端软件开发投资项目国内外技术工艺对比

第四章 手机客户端软件开发投资项目投资产品市场调查

第一节 产品分类规格与主要用途

第二节 主要产品分类价格水平调查

第三节 手机客户端软件开发投资产品消费领域构成及其需求特点

一、主要消费领域需求特点

二、消费领域构成第四节 手机客户端软件开发投资产品地区产销格局

一、主要生产区域

二、主要消费地域

第五节 2007—2011年产品产销统计

一、国内产量

二、国内消费量

三、进出口量

第六节 产品主要生产企业产销调查

一、云南和康中草药有限公司

1.企业简介

2.主要产品产销

3.竞争优势劣势分析

4.近期手机客户端软件开发投资项目投资扩产规划

二、四川绿康中药有限公司

1.企业简介

2.主要产品产销

3.竞争优势劣势分析

4.近期手机客户端软件开发投资项目投资扩产规划

三、龙腾中草药有限公司

1.企业简介

2.主要产品产销

3.竞争优势劣势分析

4.近期手机客户端软件开发投资项目投资扩产规划

第七节 主要替代品及其发展

第八节 产品经销渠道构成调查

……

第五章 手机客户端软件开发投资项目投资市场前景预测

第一节 2012—2014年手机客户端软件开发投资项目产品国内市场容量预测

第二节 2012—2014年手机客户端软件开发投资项目产品出口量预测

一、出口量预测

二、国外市场消费格局

第三节 2012—2014年手机客户端软件开发投资项目产品价格水平预测

一、国内价格水平预测

二、出口价格水平预测

第四节 2012—2014年手机客户端软件开发投资项目产品国内地区供需格局预测

一、地区生产格局预测

二、地区消费格局预测

第五节 手机客户端软件开发投资项目技术与产品发展趋势及市场前景预测

第六节 手机客户端软件开发投资项目相关产业发展对其未来市场前景的影响

第六章 典型项目投资概算

第一节 设备项目总投资规模

一、固定资产投资

二、流动资金使用

三、项目总投资

第二节 手机客户端软件开发投资投资使用方案

一、固定资产投资

二、流动资金使用

第三节 资金筹措方案

第四节 财务效益计算的依据及说明

一、项目测算参考依据

二、项目测算基本设定

第五节 手机客户端软件开发投资项目产品成本估算

一、直接成本

二、工资及福利费用

三、折旧及摊销

四、修理费

五、财务费用

六、其它费用

七、总成本费用

第六节 营业收入、营业税金及附加、利润及分配

一、产品营业收入

二、营业税金及附加费用

三、利润及分配

第七节 盈利能力分析

一、投资利润率,投资利税率

二、财务内部收益率、财务净现值、投资回收期

三、项目投资现金流量表

四、项目资本金现金流量表

第八节 盈亏平衡分析

第九节 手机客户端软件开发投资项目综合经济评价

一、社会效益

二、经济效益

第七章 手机客户端软件开发投资项目投资组织实施建议

第一节 手机客户端软件开发投资项目组织团队组建

第二节 手机客户端软件开发投资项目实施进度安排

一、施工准备

二、设备安装

三、生产准备

四、产品试产

第三节 手机客户端软件开发投资项目资金筹措与管理

一、项目资本金

1.政府投资

2.股东直接投资

3.发行股票

4.吸收国外资本直接投资

二、负债筹资

1.银行贷款

2.发行债券

3.设备租赁

4.借用国外资金

第四节 手机客户端软件开发投资项目产品营销措施

第八章 中国手机客户端软件开发投资行业项目投资注意事项及可行性分析

第一节 产品技术应用注意事项

第二节 项目投资注意事项

第三节 产品生产开发注意事项

第四节 产品销售注意事项

第五节 行业分析基本结论

第六节 项目投资可研报告基本框架

【部分图表】

图表 手机客户端软件开发投资项目所处行业发展现状图示

图表 手机客户端软件开发投资项目行业政策规范列表

图表 项目审批部门关注问题

图表 手机客户端软件开发投资项目在所处行业中的地位

图表 行业同业竞争格局

图表 行业盈利水平变化图

图表 工艺流程图

图表 主体设备名录与规格

图表 主要设备供应商

图表 手机客户端软件开发投资项目技术工艺发展历程

……

中国项目可行性研究中心相关研究成果《》

第4篇:软件开发软件开发计划

XXXX公司

软件开发计划

1.引言

1-1编写目的(阐明编写软件计划的目的,指出读者对象。)

1-2 项目背景(可包括:(1)项目委托单位、开发单位和主管部门;(2)该软件系统与其他系统的关系。)

1-3 定义(列出本文档中用到的专门术语的定义和缩略词的原文。)

1-4参考资料

1-4-1项目经核准的计划任务书、合同或上级机关的批文;

1-4-2文档所引用的资料、规范等;列出资料的作者、标题、编号、发表日期、出版单位或资料来源。

2.项目概述

2-1工作内容(简要说明项目的各项主要工作,介绍所开发软件的功能 性能等.若不编写

可行性研究报告,则应在本节给出较详细的介绍。)

2-2条件与限制(阐明为完成项目应具备的条件 开发单位已具备的条件以及尚需创造的条件.必要时还应说明用户及分合同承包者承担的工作 完成期限及其它条件与限制。)

2-3产品

2-3-1程序(列出应交付的程序名称 使用的语言及存储形式。)

2-3-2文档(列出应交付的文档。)

2-3-3运行环境(应包括硬件环境 软件环境。)

2-3-4服务(阐明开发单位可向用户提供的服务.如人员培训 安装 保修 维护和其他运行支持。)

2-3-5验收标准

3.实施计划

3-1任务分解(任务的划分及各项任务的负责人。)

3-2 进度(按阶段完成的项目,用图表说明开始时间 完成时间。)

3-3预算

3-4关键问题(说明可能影响项目的关键问题,如设备条件 技术难点或其他风险因素,并说明对策。)

4.人员组织及分工

5.交付期限

6.专题计划要点(如测试计划 质量保证计划 配置管理计划 人员培训计划 系统安装计划等。)

编制人:

项目编号:XXXXX-1

XXXX公司

日期:

项目编号:XXXXX-2

第5篇:软件开发实习报告

软件开发实习报告

关于《 软件开发实习报告 》,是我们特意为大家整理,希望对大家有所帮助。

实习就是运用所学习的专业知识来了解会计的工作流程和工作内容,加深对财务会计工作的认识,将理论联系于实践,培养实际工作能力和分析解决问题的能力,达到学以致用的目的,为成功走向社会做准备。以下是软件开发实习报告范文,欢迎阅读!

软件开发实习报告【1】

短短两周的很快就过去了,在xx的实习马上就要过去了。虽然只有短短的两周,但我学会了很多知识,熟悉了软件开发的流程,也很好的增强了自己的动手能力。

我是一名即将大四的学生,纵观现在的就业形势,国家高校的扩招,世界金融危机的横扫,大学生应该有一种居安思危的紧迫感,特别是对已经度过两年大学的我来说,毕业并不是一个遥远的词汇。宝剑锋从磨砺出,梅花香自苦寒来,缺少了平时的锻炼,没有厚积当然不能有薄发。首先我得有思想上的紧迫感,在学校学习的都是理论知识,实践经验则是少之又少。综合能力强的人才才是这个社会需要的,成长成为社会需要的人才是我的个人奋斗目标。有了强大的精神动力,有了坚如磐石的毅力,相信成功并不遥远。

首先,我的自我能力得到了加强。在实习的前几天主要进行的是与JAVA有关知识的学习及预备知识的普及。在这之前由于种种原因我没有学习过JAVA,所以对于J我几乎一无所知。但我曾经学习过C++,所以对语言的理解和接受能力还不算太慢,尽管老师讲解速度较快但我还是尽量跟上老师的速度。在这个过程中我学会一种自学方法——可以在第一遍时不求甚解,先了解知识框架,之后再在使用的过程中不断加强对知识的理解,从而较快的学会知识并应用于实践。

其次我的实际的操作能力得到了加强。知识讲解告一段落后我们就进入了紧张而又短暂的项目中。但不得不说刚开始就碰了一鼻子灰——代码书写总是出错。由于对原理理解不够透彻,语言使用缺乏足够经验所以进度极慢。在经过多次的讨论后我们对项目理解逐渐深入,所以在此投入的过程就比较顺利了。在这个过程中我明白了实践和理论的差距及二者不可分割的关系。

最后是团队协作能力的提高。在整个过程中团队协作发挥着不可替代的作用。从在刚拿到项目时对项目进行分析,然后进行分工,之后就开始工作,既各干各的又不失默契的合作。在这个过程中我们谁遇到问题会互相帮助解决提高了工作效率。由于各种原因,我们这组也存在些问题……(自己编)。

这次实习拉近了我就和社会的距离,也让自己在实践中开拓了视野,增长了才干。社会和大学一样也是受教育和学习的地方,在……(写实习地)的实习我收获颇丰,再次感谢实习期间各位老师的指导教诲,你们给我的知识财富将让我受益终生。但是我知道学无止境,仅仅这段时间的学习还是不够的,在以后的生活中我会继续努力学习,培养自己能力,进一步完善自己。

软件开发实习报告【2】

初踏社会,心情激动、紧张、难过。激动的是我终于可以长大了,可以开始我真正的人生;紧张的是不知自己是否能适应这个社会,战胜这新环境;难过的是从此我就要在这纯真的学生生活上画上句号了。心里矛盾,脑子里翻天覆地。

对于刚出校门我的,什么都不懂,又想从事it行业这个靠技术吃饭的行业,一开试我试着投了几家公司,人家面试问我有没有项目经验,我说没有,人家又问你java学的怎么样?说实话在那个时候我连简单的程序都不会编。结果就可想而知了,几次碰壁之后,觉得现在的自己根本找不到跟自己专业相关的工作,于是我想到利用暑假和实习的机会帮自己充电,于是和几个同学一起找了一家培训机构培训了下,培训的时候很痛苦但很很快乐,在那里我找了自己奋斗的目标,每天过的都很充实,不像在学校那样浑浑噩噩。那里有一群像我一样一开始迷茫的人,我们一起奋斗,那些时光我很怀念。

过了几个月,我们培训结束了,开始找工作了。我被南通的一家软件公司录取了,因为他们对我们这些还没毕业的待遇还不错。因为这是我的第一份工作,很兴奋也很紧张,兴奋的是我自己自己挣钱了,紧张的是怕自己不能胜任这份工作,毕竟自己一点工作经验都没有。在公司我们进行为期7天的岗前培训,就是在公司的框架下实现他们要我们完成的功能。好在这些我们在培训的时候都学过,所以不太难。培训完我们被分到公司的开发一组,正好公司正在做一个项目,所以我们一上来就开始做项目的。对于我们这些菜鸟来说这是很痛苦的,有时我做个功能做几天都没做出来,挨了主管不少的骂。在这个时候我才发现百度和狗狗真是个好东西的啊,不会的就在上面搜。实在不会的问公司的高手,就这样我渐渐的熟悉的这个工作模式,主管给的任务每天也能做出来了。虽然做的有点慢,但我相信我坚持下去,我会达到我的目标的。然而实现的残酷很快我就体会到了。那是我们这个项目刚做完。公司的人事来找我们谈话。跟我说了很多。也跟我说了很多道理。希望把我调到技术服务组。所谓技术服务就是代表公司跟客户交流,说实话这个工作也蛮不错的。工作的压力没有在开发的大,如果做这份工作的话,那我在培训的知识很少用到。我怕我代码不经常写会渐渐的遗忘,本来技术就不好如果不在项目中学习的话,我很快就被淘汰。

和人事的谈完话,我想了很多。那时我动摇过,我不知道自己是否真的适合做开发。好在我还有一些朋友,跟他们聊了很多,他们给了很多建议。人生有很多选择,无论你选择了什么方向,你都应该为之奋斗。我一朋友给我说一句肖复兴的名言:一个人,在年轻的时候,有玩伴,年轻时有漂泊的经历,老年时有回忆的东西就是幸福啊。人生有挫折其实也是一种幸福。从那里跌倒了就从那里爬起来。后来我也想开的。既然自己有目标就应该坚持去追寻下去,路上的磕磕碰碰或许就是老时的美好回忆。

正好在个时候我们实习结束了,老师让我们回学校。我请了几天假。正好好好规划我的下面的路怎么走。无论怎么打算在这个实习的日子里我学到了很多,也明白了很多事。这个宝贵的经验会给我很多帮助。

自己总结几点:

1、要想等到别人的认可,你先认可你自己。

2、工作中不是你想象在学校那样,或许你讨厌一个人,但是你必须和他经常交流沟通。

3、工作中你要适应工作的压力。

4、不要特别在意别人的看法,你只要做你自己,相信自己。

5、如果别人对你说你不适合干某事,你不要在意,就是你的亲人对你说也不行(这是电影《当幸福来敲门》男主角说过的,我很喜欢这句话),因为这世上没有谁能否定你做某事

6、坚持你的理想,坚信自己会成功的。

软件开发实习报告【3】

转眼已经在东软实训这样的大家庭中生活快10个月时间了,之前的兴奋、喜悦如今已经让我熟悉,在这里的每一天都会让我有成为一名真正“财富”拥有者的冲动。也许对别人来说,一定不能体会为什么在这不到10个月的时间会让一个人有翻天覆地的变化,但是变化就是这样一点一点产生的。

在东软的实训生活中,我深深体会到了自己在专业知识方面的欠缺和不足,也意识到了自己做为计算机软件工程专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄外,还必须具备良好的心理素质,使自己在以后的途中无论经历什么样的困难,都立于不败之地。这正是本次实训的根本目的。

通过实训中心老师的课堂讲解与企业化标准的培训,使我加深了对自己专业的认识。从而确定自己以后的努力方向。要想在短暂的实训时间内,尽可能多的学到东西,就需要我们跟老师或同学进行很好的沟通,加深彼此的了解。只有我们跟老师多沟通,让老师更了解我们,才能跟真切的对我们进行培训工作。由此,班级的文化“共享”就在生活中慢慢形成了。

“纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而老师在专业认识周中所讲的,都是课本上没有而对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。在这些过程中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每个成员的意见,使我们的组合达到更加完美。

这次实训带给我太多的感触,它让我知道工作上的辛苦,事业途中的艰辛。让我知道了实际的工作并不像在学校学习那样轻松。

人非生而知之,虽然我现在的知识结构还很差,但是我知道要学的知识,一靠努力学习,二靠潜心实践。没有实践,学习就是无源之水,无本之木。这次实训让我在一瞬间长大:我们不可能永远呆在象牙塔中,过着一种无忧无虑的生活,我们总是要走上社会的,而社会,就是要靠我们这些年轻的一代来推动。这就是我们不远千里来实训的心得和感受,而不久后的我,面临是就业压力,还是继续深造,我想我都应该好好经营自己的时间,充实、完善自我,不要让自己的人生留下任何空白!

实训中除了学到不少专业知识,也了解一些社会的现实性,包括人际交往,沟通方式及相关礼节方面的内容,对于团队开发来说,团结一致使我深有体会。团队的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具体实践中,不仅加深我对理论的掌握和运用,还让我拥有了一次又一次难忘的开发经理,这是也是实训最大的收获。

现在我对“一个人最大的财富是他的人生经历和关系网络”这句话非常的有感情,因为它确实帮了我们不少。除此课本上的知识毕竟有限。通过实训,我班同学都有这样一个感觉,课本上的理论知识与实际工作有很大差距,只有知识是远远不够的,专业技能急需提高。

从最初的笨手笨脚,到现在可以熟练的按照流程开发软件,这都与我班每个人的努力是分不开的。十个月的实训,教会了我们很多东西,同时也锻炼了大家踏实、稳重的能力,每个人都很珍惜这来之不易的实训机会。

在实际工作中经常会和不同的人打交道,然而他们的态度是不可恭维的,你会感觉到他的不耐烦以及他的高傲,所以这就需要学会沟通的方式及说话技巧,学会灵活面对。通过这十个月的实训,我班同学都收获颇丰,总体来说对这次实训还是很满意的。尽管实训很累,每天早出晚归。但真的很感谢学校能够提供我们这样好的实训机会,以及东软给予我们的实训平台。我们深刻的了解到,只有经历过,才知道其中的滋味。对于我而言,喜欢体验生活,可以说通过这次实训,真真切切的让我了解了什么是软件开发,什么是软件工程,让我对于软件最初的观点也有了本质性的改变!程序员不仅仅是一份职业,更是一份细心+一份耐心+一份责任心=人生价值的诠释。即将走向工作岗位的我们更要不断加强自己的专业技能,社会不会要一个一无是处的人,所以我们要更多更快的从一个学校人向社会人转变。为此我们将会在以后的日子里继续努力,不断激励经验,不断磨砺自己,早日走向工作岗位。

软件开发述职报告(共4篇)

软件开发实习报告

软件开发述职报告

软件开发 实习报告

软件开发先进事迹(共14篇)

本文标题: 软件开发调研报告(共5篇)
链接地址:https://www.dawendou.com/fanwen/diaoyanbaogao/121820.html

版权声明:
1.大文斗范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《软件开发调研报告(共5篇)》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

重点推荐栏目

关于大文斗范文网 | 在线投稿 | 网站声明 | 联系我们 | 网站帮助 | 投诉与建议 | 人才招聘 | 网站大事记
Copyright © 2004-2025 dawendou.com Inc. All Rights Reserved.大文斗范文网 版权所有