软件开发调研报告(共5篇)_第1页
软件开发调研报告(共5篇)_第2页
软件开发调研报告(共5篇)_第3页
软件开发调研报告(共5篇)_第4页
软件开发调研报告(共5篇)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

软件开发专业调研报告

为了更好的进行专业建设,在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.可行性分析报告..........................................................................................................................11.1项目背景..............................................................................................................................11.2产品分析...............................................................................................................................11.3结论意

见..............................................................................................................................22.项目开发计划..............................................................................................................................22.1总体功能要求......................................................................................................................22.2软件开发平台要求..............................................................................................................22.3软件项目的开发实施过程管理要求...................................................................................23.软件开

发......................................................................................................................................23.1软件的需求分析..............................................................................................................33.3软件的详细设

计...................................................................................................................43.4软件的编

码..........................................................................................................................53.5软件的测

试.........................................................................................................................313.5.1测试计

划.....................................................................................................................313.5.2软件测

试....................................................................................................................314.项目开发总结报告....................................................................................................................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软件开发平台要求

Visualc++6.0SQLServer2008C++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地址,一般用于未经注册的内部地址与合法的、已获注册的InternetIP地址间进行转换。适用于解决InternetIP地址紧张、不想让网络外部知道内部网络结构等的场合下。6.反向代理负载均衡普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。7.混合型负载均衡在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能。将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。3.2软件的概要设计

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

个或多个附加软件来实现负载均衡,DNSLoadBalanceCheckPointFirewall-1

ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过企业内部互联网来达到资源统一合理分配的目的。3.3软件的详细设计

1.轮转法:轮转算法是所有调度算法中最简单也最容易实现的一种方法。在一个任务队列里,队列的每个成员(节点)都具有相同的地位,轮转法简单的在这组成员中顺序轮转选择。在负载平衡环境中,均衡器将新的请求轮流发给节点队列中的下一节点,如此连续、周而复始,每个集群的节点都在相等的地位下被轮流选择。这个算法在DNS域名轮询中被广泛使用。轮转法的活动是可预知的,每个节点被选择的机会是1/N,因此很容易计算出节点的负载分布。轮转法典型的适用于集群中所有节点的处理能力和性能均相同的情况,在实际应用中,一般将它与其他简单方法联合使用时比较有效。2.散列法:散列法也叫哈希法(HASH),通过单射不可逆的HASH函数,按照某种规则将网络请求发往集群节点。哈希法在其他几类平衡算法不是很有效时会显示出特别的威力。例如,在前面提到的UDP会话的情况下,由于轮转法和其他几类基于连接信息的算法,无法识别出会话的起止标记,会引起应用混乱。而采取基于数据包源地址的哈希映射可以在一定程度上解决这个问题:将具有相同源地址的数据包发给同一服务器节点,这使得基于高层会话的事务可以以适当的方式运行。相对称的是,基于目的地址的哈希调度算法可以用在WebCache集群中,指向同一个目标站点的访问请求都被负载平衡器发送到同一个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=newchar[BUF_SIZE];if(!m_clt_buf){throwstd::exception();}

m_srv_buf=newchar[BUF_SIZE];if(!m_srv_buf){throwstd::exception();}reset();}conn::~conn(){delete[]m_clt_buf;delete[]m_srv_buf;}

voidconn::init_clt(intsockfd,constsockaddr_in&client_addr){m_cltfd=

sockfd;m_clt_addre=client_addr;}

voidconn::init_srv(intsockfd,constsockaddr_in&server_addr){m_srvfd=

sockfd;m_srv_addre=server_addr;}

voidconn::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_CODEconn::read_clt(){intbytes_read=0;while(true){if(m_clt_read_idx>=BUF_SIZE){log(LOG_ERR,__FILE__,__LINE__,"%s","theclientreadbufferisfull,letserverwrite");returnBUFFER_FULL;}

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

RET_CODEconn::read_srv(){intbytes_read=0;while(true){if(m_srv_read_idx>=BUF_SIZE)

{log(LOG_ERR,__FILE__,__LINE__,"%s","theserverreadbufferisfull,letclientwrite");returnBUFFER_FULL;}

bytes_read=recv(m_srvfd,m_srv_buf+m_srv_read_idx,

BUF_SIZEm_srv_write_idx)>0)?OK:NOTHING;}

RET_CODEconn::write_srv(){intbytes_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)va_listarg_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

31

#include#include

#include"log.h"#include"conn.h"#include"mgr.h"#include"procepool.h"usingstd::vector;

staticconstchar*version="1.0";

staticvoidusage(constchar*prog){log(LOG_INFO,__FILE__,__LINE__,"usage:%sconfig_file]",prog);}

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

14[-v][-h][-f

case'v':{log(LOG_INFO,__FILE__,__LINE__,"%s%s",argv[0],version);return0;}case'h':{usage(basename(argv[0]));return0;}case'f':{memcpy(cfg_file,optarg,

strlen(optarg));break;}case'?':{log(LOG_ERR,__FILE__,__LINE__,"un-recognizedoption%c",option);usage(basename(argv[0]));return1;}}}

if(cfg_file[0]==''){log(LOG_ERR,__FILE__,__LINE__,"%s","pleasespecifiytheconfigfile");return1;}intcfg_fd=open(cfg_file,O_RDONLY);

51

if(!cfg_fd){log(LOG_ERR,__FILE__,__LINE__,"readconfigfilemeterror:%s",

strerror(errno));return1;}structstatret_stat;if(fstat(cfg_fd,&ret_stat)balance_srv;vectorlogical_srv;hosttmp_host;memset(tmp_host.m_hostname,'',1024);char*

tmp_hostname;char*tmp_port;char*tmp_conncnt;boolopentag=false;char*tmp=buf;char*tmp2=NULL;char*tmp3=NULL;

6metmet

char*tmp4=NULL;while(tmp2=strpbrk(tmp,"n")){*tmp2++='';if(strstr(tmp,"")){if(opentag){log(LOG_ERR,__FILE__,__LINE__,"%s","parseconfigfilefailed");return1;}5;procepool*pool=procepool::create(listenfd,logical_srv.size());if(pool){pool-

>run(logical_srv);deletepool;}

close(listenfd);return0;}#include#include#include#include#include#include0

2(structsockaddr*)&addre,#include#include#include#include#include#include#include#include#include

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

usingstd::pair;

intmgr::m_epollfd=-1;intmgr::conn2srv(constsockaddr_in&addre){intsockfd=socket(PF_INET,SOCK_STREAM,0);if(sockfd

if(connect(sockfd,(struct

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

21)&addre,}

mgr::mgr(intepollfd,consthost&srv):m_logic_srv(srv){m_epollfd=epollfd;intret=0;structsockaddr_inaddre;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__,"logcialsrvhostinfo:(%s,%d)",srv.m_hostname,srv.m_port);

for(inti=0;i

22

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

mgr::~mgr(){}

intmgr::get_used_conn_cnt(){returnm_used.size();}

conn*mgr::pick_conn(intcltfd){if(m_conns.empty()){log(LOG_ERR,__FILE__,__LINE__,"%s","notconnectionstoserver");returnNULL;}

map::iteratoriter=m_conns.begin();intsrvfd=iter->first;conn*tmp=iter->second;if(!tmp)

3enoughsrv

{log(LOG_ERR,__FILE__,__LINE__,"%s","emptyserverconnectionobject");returnNULL;}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__,"bindclientsock%dwithserversock%d",cltfd,srvfd);returntmp;}voidmgr::free_conn(conn*connection){intcltfd=connection->m_cltfd;intsrvfd=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));}

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

42

for(map::iteratoriter=m_freed.begin();iter!=m_freed.end();iter++){sleep(1);intsrvfd=iter->first;conn*tmp=iter->second;srvfd=conn2srv(tmp-

>m_srv_addre);if(srvfdinit_srv(srvfd,tmp->m_srv_addre);m_conns.insert(pair(srvfd,tmp));}}m_freed.clear();}

RET_CODEmgr::proce(intfd,OP_TYPEtype){conn*connection=m_used[fd];if(!connection){returnNOTHING;}if(connection->m_cltfd==fd){intsrvfd=

connection->m_srvfd;

52

switch(type){caseREAD:{RET_CODEres=connection->read_clt();switch(res){caseOK:{log(LOG_DEBUG,__FILE__,__LINE__,readfromclient:%s",connection-

>m_clt_buf);}caseBUFFER_FULL:{modfd(m_epollfd,srvfd,EPOLLOUT);break;}caseIOERR:caseCLOSED:{free_conn(connection);returnCLOSED;}default:break;}

if(connection->m_srv_closed){free_conn(connection);returnCLOSED;}break;

6"content

}caseWRITE:{RET_CODEres=connection->write_clt();switch(res){case

TRY_AGAIN:{modfd(m_epollfd,fd,EPOLLOUT);break;}caseBUFFER_EMPTY:{

modfd(m_epollfd,srvfd,EPOLLIN);modfd(m_epollfd,fd,EPOLLIN);break;}caseIOERR:caseCLOSED:{free_conn(connection);returnCLOSED;}default:break;}if(connection->m_srv_closed){free_conn(connection);returnCLOSED;}break;

72

}default:{log(LOG_ERR,__FILE__,__LINE__,"%s","otheroperationnotsupportyet");break;}}}elseif(connection->m_srvfd==fd){intcltfd=connection-

>m_cltfd;switch(type){caseREAD:{RET_CODEres=connection->read_srv();switch(res){caseOK:{log(LOG_DEBUG,__FILE__,__LINE__,readfromserver:%s",connection->m_srv_buf);}caseBUFFER_FULL:{modfd(m_epollfd,cltfd,EPOLLOUT);break;}caseIOERR:caseCLOSED:{modfd(m_epollfd,cltfd,EPOLLOUT);

8"content

connection->m_srv_closed=true;break;}default:break;}break;}caseWRITE:{RET_CODEres=connection->write_srv();switch(res){caseTRY_AGAIN:{

modfd(m_epollfd,fd,EPOLLOUT);break;}caseBUFFER_EMPTY:{modfd(m_epollfd,cltfd,EPOLLIN);modfd(m_epollfd,fd,EPOLLIN);break;}caseIOERR:caseCLOSED:{/*

if(connection->m_srv_write_idxconnection->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","otheroperationnotsupportyet");break;}}}else{returnNOTHING;}returnOK;}

03

3.5软件的测试

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

1运行测试;

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

3.5.2软件测试1.运行测试

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

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

在进行该项测试过程中,主要针对系统对业务的处理能力进行测试,检查了业务处理的连贯性、全面性和正确性,并检查业务处理结果是否满足客户需求。4.安全测试在进行该项测试过程中,检查了系统的安全登录,查看了系统内资料的安全保密性,以及系统会不会有漏洞容易遭受外部的攻击。5.性能测试

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

13

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

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

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

在对该项目进行开发的过程中,我们遇到了很多的困难。在于我们对于市场的研究和可行性考量的过程中。虽然我们明确了设计的目的,但国内以及国际市场的广阔性使我们在对客户需求的分析中走入了迷雾中,因此耽误了很多时间。但是,幸好最后我们还是完成了该项目。而从对该项目的开发中,我们也学到了以下几点。我们要尽量的让客户也参与到项目的开发团队中来,也就是说我们要使客户把自己也纳入到项目的开发团队中来。如此一来,我们掌握客户需求的真实性、可靠性就会大大的提高,也就不会为项目的后期功能开发埋下陷阱。在项目确立后,我们就需要做好项目开发计划,需求调研用时,开发用时,测试用时,实施用时,维护用时。在我们做好了计划后,我们要随时的跟踪计划任务的完成进度,从而使我们的项目进度掌控在我们的开发周期范围之内,今日计划、行动,明日成功。在其他行业中,人与人的之间的沟通是很重要的。项目开发也不例外,很好的沟通能够加快项目的进度,这就要求我们每一个开发人员要学会和善于沟通于客户和同事之间。在一个项目的开发过程中,我们与客户的沟通是一个不断交流和沟通的过程。在开发到一定的阶段,我们就需要和客户沟通已有功能,尽量的去避免一些隐藏的问题,及时的发现问题,解决问题,从而按时或者提前完成项目的开发。33

第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工作内容(简要说明项目的各项主要工作,介绍所开发软件的功能性能等.若不编写可行性研究报告,则应在本节给出较详细的介绍。)软件开发实习报告【1】短短两周的很快就过去了,在xx的实习马上就要过去了。虽然只有短短的两周,但我学会了很多知识,熟悉了软件开发的流程,也很好的增强了自己的动手能力。我是一名即将大四的学生,纵观现在的就业形势,国家高校的扩招,世界金融危机的横扫,大学生应该有一种居安思危的紧迫感,特别是对已经度过两年大学的我来说,毕业并不是一个遥远的词汇。宝剑锋从磨砺出,梅花香自苦寒来,缺少了平时的锻炼,没有厚积当然不能有薄发。首先我得有思想上的紧迫感,在学校学习的都是理论知识,实践经验则是少之又少。综合能力强的人才才是这个社会需要的,成长成为社会需要的人才是我的个人奋斗目标。有了强大的精神动力,有了坚如磐石的毅力,相信成功并不遥远。首先,我的自我能力得到了加强。在实习的前几天主要进行的是与JAVA有关知识的学习及预备知识的普及。在这之前由于种种原因我没有学习过JAVA,所以对于J我几乎一无所知。但我曾经学习过C++,所以对语言的理解和接受能力还不算太慢,尽管老师讲解速度较快但我还是尽量跟上老师的速度。在这个过程中我学会一种自学方法——可以在第一遍时不求甚解,先了解知识框架,之后再在使用的过程中不断加强对知识的理解,从而较快的学会知识并应用于实践。其次我的实际的操作能力得到了加强。知识讲解告一段落后我们就进入了紧张而又短暂的项目中。但不得不说刚开始就碰了一鼻子灰——代码书写总是出错。由于对原理理解不够透彻,语言使用缺乏足够经验所以进度极慢。在经过多次的讨论后我们对项目理解逐渐深入,所以在此投入的过程就比较顺利了。在这个过程中我明白了实践和理论的差距及二者不可分割的关系。最后是团队协作能力的提高。在整个过程中团队协作发挥着不可替代的作用。从在刚拿到项目时对项目进行分析,然后进行分工,之后就开始工作,既各干各的又不失默契的合作。在这个过程中我们谁遇到问题会互相帮助解决提高了工作效率。由于各种原因,我们这组也存在些问题……(自己编)。这次实习拉近了我就和社会的距离,也让自己在实践中开拓了视野,增长了才干。社会和大学一样也是受教育和学习的地方,在……(写实习地)的实习我收获颇丰,再次感谢实习期间各位老师的指导教诲,你们给我的知识财富将让我受益终生。但是我知道学无止境,仅仅这段时间的学习还是不够的,在以后的生活中我会继续努力学习,培养自己能力,进一步完善自己。软件开发实习报告【2】

初踏社会,心情激动、紧张、难过。激动的是我终于可以长大了,可以开始我真正的人生;紧张的是不知自己是否能适应这个社会,战胜这新环境;难过的是从此我就要在这纯真的学生生活上画上句号了。心里矛盾,脑子里翻天覆地。对于刚出校门我的,什么都不懂,又想从事it行业这个靠技术吃饭的行业,一开试我试着投了几家公司,人家面试问我有没有项目经验,我说没有,人家又问你java学的怎么样?说实话在那个时候我连简单的程序都不会编。结果就可想而知了,几次碰壁之后,觉得现在的自己根本找不到跟自己专业相关的工作,于是我想到利用暑假和实习的机会帮自己充电,于是和几个同学一起找了一家培训机构培训了下,培训的时候很痛苦但很很快乐,在那里我找了自己奋斗的目标,每天过的都很充实,不像在学校那样浑浑噩噩。那里有一群像我一样一开始迷茫的人,我们一起奋斗,那些时光我很怀念。过了几个月,我们培训结束了,开始找工作了。我被南通的一家软件公司录取了,因为他们对我们这些还没毕业的待遇还不错。因为这是我的第一份工作,很兴奋也很紧张,兴奋的是我自己自己挣钱了,紧张的是怕自己不能胜任这份工作,毕竟自己一点工作经验都没有。在公司我们进行为期7天的岗前培训,就是在公司的框架下实现他们要我们完成的功能。好在这些我们在培训的时候都学过,所以不太难。培训完我们被分到公司的开发一组,正好公司正在做一个项目,所以我们一上来就开始做项目的。对于我们这些菜鸟来说这是很痛苦的,有时我做个功能做几天都没做出来,挨了主管不少的骂。在这个时候我才发现百度和狗狗真是个好东西的啊,不会的就在上面搜。实在不会的问公司的高手,就这样我渐渐的熟悉的这个工作模式,主管给的任务每天也能做出来了。虽然做的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论