【www.scfx8.com--其他工作总结】

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

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

第2篇:房地产开发个人先进事迹

一心为民务实事,行动诠释公仆心

***,女,中共党员,现任蓬莱市房地产综合开发管理办公室科员。在蓬莱市的房地产开发企业中,只要提起开发办***,无不交口称赞,都称她是踏实肯干、热情服务、一心为民的好公仆,在开发办同事眼中,她是一个爱岗敬业,默默奉献,争创一流的好同事。有人说,她是一名幸运儿,确实,能从建设局众多年轻人中脱颖而出,成长为骨干力量,谱写出一曲曲茁壮成长的赞歌,她是幸运的,然而,幸运的背后,埋藏的是她近10年如一日脚踏实地、认真细致的工作作风,永不满足、力争上游的工作态度,大胆开拓、敢于创新的工作魄力和真诚待人、严于律己的人格魅力。

一、心系群众,务实肯干

“踏踏实实做好每一件事,群众不看你怎么说,就看你怎么做”,这是***常说的一句话。工作以来她正是以这句话为准则,在一步一个脚印走过来。开发办的主要工作是负责全市的房地产开发管理,企业多工作面广,业务量大,很多工作都涉及企业的发展和运营,稍有差池和延误就可能会给企业带来不可挽回的影响。多年的基层工作,她摸索了一套自己的守则:工作面前“细”一点,权力眼前“慎”一点。在开发企业眼中,她就是一个“好管家”,企业工作人员前来办手续时,她总是不厌其烦的指导,清楚细致的告知需要注意的事项,帮助企业一次性办完;业务审批时,她总是专心细致,反复核对,确保审批事项零失误;年终报表时,全市78家房地产开发企业,3000多条数据,她逐项核对检查,耐心指导企业修改,确保数据准确;资质年检时,有的企业可能需要修改4-5次资料才能合格,她每次都对企业提交的资料进行检查,从不嫌麻烦;日常工作中,她经常结合自身经验,给企业相应的指导和帮助,很多企业遇到疑难问题,都会来开发办问问她,业务范围内的,她总是能够给予及时精准的指导,帮助企业答疑解惑,避免企业 “走弯路”,不在业务范围内的,她也及时联系相应部门,落实具体情况,避免企业来回跑。在老百姓眼里,她是群众的“知心人”,遇到群众投诉时,她总是微笑接待,耐心记录,详细了解每位群众的诉求,并及时落实反馈,缓和双方矛盾,做好企业和群众的沟通人,宁夏的林大姐需要在我市办理退房手续,因路途遥远手续繁琐寻求开发办帮助,***二话没说,积极地帮助林大姐办理各种手续,耐心热情的服务打动了林大姐,最后关头林大姐取消了退房,还与***成为了忘年交,并把自己的经历分享给亲朋好友,在朋友圈掀起了来蓬购房安家的热潮。

开发办工作人员少、业务量大,加班加点是常有的事,***同志经常放弃双休日和休息时间,一个人默默地加班,甚至在工作日晚上也时常加班到八点多,走的时候只有漆黑的走廊陪伴,工作的辛苦只能自己一个人承担和感受。有时候单位上的同志们不理解地问:“你怎么老加班?”,家人也经常埋怨地说:“你一个女同志怎么天天这么晚回家”。但是她从没有一句怨言,工作再忙再苦,也没有提任何要求,她始终坚信,工作总是需要有人来做的,既然领导把这么重要的工作交给我,我一定要完成好,为住建局和开发办贡献自己的力量。

创新服务,争当先锋

现在的房地产市场正处于深度调整期,很多企业面临的形式比较严峻,加之群众的法律意识不断加强,开发办的工作压力日益加大。***同志在工作中不断摸索有效的工作方法,努力创新工作机制,提高服务水平,为企业和群众排忧解难。针对目前《商品房买卖合同》纠纷频发的现象,她根据领导部署,建立了《商品房买卖合同》内容备案制度,要求开发企业在办理项目预售许可证时,将拟与消费者签订的合同内容进行备案,开发办根据实际情况给予指导,尽量减少合同纠纷的发生。这一制度的建立,对业主和消费者来说都是有利的,但对于该工作的执行者***来说,工作量又加大了,不仅要逐条审理合同,还要不断充实自己的法律知识,但她非但没有抱怨,反而以饱满的热情投入到该项工作中,她对企业提报的合同样本仔细研读,每个条款都深入推敲,遇到法律问题还会咨询法律专家,做到理论知识扎实,实践经验丰富,在给企业消除后顾之忧的同时,也有效的保护了消费者的权益。

“一个人应该为社会做点事,一名住建局员工应该给城市的建设和发展留下一点值得称赞的痕迹”,这句话是***当做奋斗目标的一句话,也是督促她继续努力的一句话。她将把群众的需求当作工作动力,把群众的认可化作继续前行的力量,一步一个脚印地向前走去。

第3篇:软件开发心得

软件开发

08软件(1)班 陈会敏 24号

岁月流转,时光匆匆,转眼间我的大学生活已经接近了尾声。回首往昔,有太多美好的,也有太多艰辛。我的大学生活的主旋律还是学习,我所选学的专业是软件技术,在这条道路上走了那么久,也有一些小小的感悟与体会。

还记得上初中时,英语课本上有一篇关于比尔盖茨的文章,当时真的很佩服比尔盖茨,也就是那时我才第一次接触到软件一词,学过那篇文章后我有个想法,就是也要做个比尔盖茨,可是由于家庭条件的限制,那也只能是个美好的梦想。后来上了高中,再报考时我就选择了软件技术这个专业,这样我想就向那个遥远而又美好的梦想迈进了一点点吧。

然而当我真正上了大学,学了这个专业,我才知道要做个比尔盖茨是多么的难,要想学好我的专业要花费很大的精力。第一学期我们开设了C语言这门课程,当时我学着真的是云里雾里、一窍不通,很是失落,学了不久之后我开始觉得自己可能并不喜欢这个专业,只是一时昏了头,错以为喜欢了。现实的打击让我有点不知所措,然而我已经选择了它,有句话说:既然选择了远方便只顾风雨兼程。我既然选择了这个专业,我便也只有硬着头皮也要走下去了。有了这样的想法之后,在之后的一段时间里,只要是没课的时候我就抱起了C语言课本,努力的看,记语法知识,语法规则,学语句、小算法等等。经过一段时间的研究学习,我发现C语言并没有我想象中的那么难

了,还是很有意思的。就这样在学与玩中我的大学第一个星期就过完了。

后来又开设了很多课程,有VB、网络、数据库、操作系统、数据结构等。在这些课程中最令我头疼的就是数据库了,老师讲的时候老是划重点,讲的很少,当时学的时候真的好难受,一学期下来啥也不会,后来看书上的操作,一步一步的操作,才终于学会了建个数据库,做下备份还原等操作。开设的那么多课程也有我很喜欢的课程,比如数据结构,这门课程理论的比较多,上机操作的很少,这门课程是很需要理解的,当然有的还是要死记的。学习这门课的时候,我觉得并不像其它课程那么吃力,可能高中是学理科的缘故吧,理解起来并不太费劲。所以当时就很喜欢这门课,然而这门课表皮的好学,但要深学起来还是很有难度的,所以期末考试的时候我的成绩并不太理想,但这些打击不了我对它的兴趣,至少我知道我所学的这个专业还是有很多我是很喜欢的。

这样走着走着就到了大二的下学期了,那个学期,我们有一门课是C++,这门课的老师很和蔼,能力也很高,从他那里我学到了很多东西。老师教给了我们很多算法,也很系统的讲解了语法知识,还教我们做小系统,有的时候他会给我门们一些小系统的代码,让我们去改写,刚开始的时候我也是不会,后来经过学习请教改写成功了,这个时候我就会很开心,很有成就感。就这样在学与玩中,在快乐和忧愁中我们迎来了我们的大三时光。

大三刚一开学,老师们就告诉我们这学期就上十二周的课,然后

就考试,就毕业了。这让我很有紧迫感,一想到毕业在即,心头就有种不舍,这儿有我美好的时光,然而我就要对这里说再见了。大三了我们的课全变成了专业课,也几乎全成了上机课,老师还给我们布置了一个程序,就是一个小组要交一个系统来算作成绩。我们这小组所选的课题是图书管理系统,针对这个系统,我们上机的时候,利用网络资源在网上查找了相关的资料,因为说实话,我们对此并不太理解,也只有通过网络来查找信息,做好需求分析,功能模块设计等工作。在这同时我们还去了学校的图书馆理解了相关的信息,这个系统并不要求功能有多么强大,关键在与一种锻炼,思维的锻炼,对所学东西的等。建立数据库时我们就根据需要建立几个表,里面的数据也是从我们学校图书馆里找来的。后来的界面设计,为了追求美观,我们又在网上搜了很多美丽的图片来美化界面。具体到功能的时候,有很多东西都不会,后来老师在课堂在做了讲解,我们就把它用到了我们的系统中,真的就是学一步做一步的。整个的系统做下来,我学到了很多东西,也对那么知识有了很好的应用能力。

现在这个星期也就到了期末,这短暂的校园时光也在飞速的流逝着。回首过去学习的经历,真是苦中有乐,乐中亦多苦,然而无论如何这些都已经走过去了,未来的路还要我们好好的走下去。人生本就是一个不断的学习的过程,也是一个不断完善的过程,在未来的道路上我会更加努力地学习,走出一个美好的人生。

第4篇:软件开发流程

某软件项目开发流程

1.总纲

目的

主要讲述如何组织开发软件项目,使之更加快速、有效的完成。并分成以下几个阶段进行详细讲述:项目计划阶段、需求分析阶段、软件开发阶段、测试阶段、管理软件开发过程、各参与角色的具体职责描述及对人员的要求。

适用范围

开发周期3周、开发人月2人月的项目,中小型(3-7人)软件项目的开发指南,而大型软件项目使用RUP会更好。

注:周期小于上述范围,使用开发任务需求单进行安排,走任务开发流程。

总体流程

计划阶段-》需求分析阶段-》软件开发阶段-》测试阶段-》完成

2.项目计划阶段

项目计划草案和风险管理计划作为第一步,当有一个商业机会后,根据公司高层负责制定的初步商业计划书来完成项目的计划草案,确定、分析项目风险并确定其优先级,还要制定风险解决方案。本阶段的目的是确立产品开发的经济理由。

当确定开发之后则制定软件开发计划、人员组织结构定义及配备、过程控制计划。

(1)项目计划草案

项目计划草案应包括产品简介、产品目标及功能说明、开发所需的资源、开发时间和里程碑。

(2)风险管理计划

也就是把有可能出错或现在还不能确定的东西列出来,并制定出相应的解决方案。风险发现得越早对项目越有利。

(3) 软件开发计划

软件开发计划的目的是收集控制项目时所需的所有信息,项目经理根据项目计划来安排资源需求并根据时间表跟踪项目进度。项目团队成员根据项目计划以了解他们的工作任务、工作时间以及他们所依赖的其他活动。

可将计划分成总体计划和详细计划,总体计划中每个任务为一个里程碑,详细计划中必须将任务落实到个人。

软件开发计划还应包括产品的应收标准及应收任务(包括确定需要制订的测试用例)。

(4)人员组织结构定义及资源计划

常见的人员组织结构有垂直方案、水平方案、混合方案。垂直方案中每个成员充当多重角色。水平方案中每个成员充当一到两个角色。混合方案则包括了经验丰富的人员与新手相互融合。具体选择根据人员实际技能情况进行选择。

适用范围:开发人月大于5人月、周期超过2个月、投入人员4人以上的项目必须编写计划,低于范围的则可省略或者简化

(5) 过程控制计划

过程控制计划的目的是收集项目计划正常执行所需的所有信息,用来指导项目进度的监控、计划的调整,确保项目按时完成。

适用范围:开发人月大于5人月、周期超过2个月、投入人员4人以上的项目必须编写计划 低于范围的则可省略或者简化

3.需求分析阶段

需求分析阶段的目的是在系统工作方面与用户达成一致。

(1)软件需求规约

详细说明系统将要实现的所有功能。

参考文档:

(2) 用户界面原型

可以有三种表示方法:图纸(在纸上)、位图(绘图工具)、可执行文件(交互式)。

参考文档:

4.软件开发阶段

本阶段从物理上实现目标系统。采用了面向对象方法。

(1)软件架构

说明软件的组织结构、部署结构及运行环境。

(2)类设计

定义类之间的关联和类的属性、方法。

(3)数据库设计

定义数据库表之间的关联和各个表的字段。

(4)编码和单元测试

按照设计文档进行编码,每完成一个模块应进行单元测试。

(5)集成系统

按软件组织结构的要求将各个子系统组合起来。

四、测试阶段

测试的目的是在发布之前找出程序的错误。包括:核实每个模块是否正常运行(参考设计文档)、核实需求是否被正确实施(参考需求文档)。

(1)测试计划

收集和组织测试信息,为测试工作提供指导。

(2)测试数据

尽量使用真实数据。

(3) 测试报告

记录测试结果,详细描述问题,提出解决办法。

(4)帮助文件和用户操作手册

五、管理软件开发过程

有以下几方面地工作:

(1)组织会议

讨论会议、总结会议等。

(2)评审程序

对各个阶段的工作结果进行审核。

(3)协调人员

(4) 配置管理

使用一些配置管理工具进行开发文档管理,如:Visual Sourcesafe,Teamsouce等

六、各参与角色的具体职责描述及对人员的要求

(1) 项目经理

职责:

1、制定产品的目标。

2、制定各个工作的详细任务表,跟踪这些任务的执行情况,进行控制。

3、组织会议对程序进行评审。

4、综合具体情况,对各种不同方案进行取舍并做出决定。

5、协调各项目参与人员之间的关系。

人员要求:

对产品有激情,具有领导才能。

对问题能正确而迅速地做出确定。

能充分利用各种渠道和方法来解决问题。

能跟踪任务,有很好地日程观念。

能在压力下工作。

(2)系统分析员

职责:

1、了解用户需求,写出《软件需求规约》。

2、建立用户界面原型。

人员要求:担任系统分析员的人员应该善于协调,并且具有良好的沟通技巧。担任此角色的人员中必须要有具备业务和技术领域知识的人才。

(3)设计员

职责:

1、定义类的方法和属性以及各个类之间的关联,画出类图。

2、进行数据库设计。

人员要求:掌握面向对象分析与设计技术,统一建模语言(UML)。

(4)程序员

职责:按项目的要求进行编码和单元测试。

人员要求:良好的编程技能和测试技术。

(5)测试员

职责: 执行测试,描述测试结果,提出问题解决方案。

人员要求:了解被测试的系统,具备诊断和解决问题的技能,编程技能

根据每个人的特长来担任其中的一个或多个角色。最好是每个人都能参与设计和编码工作,每个人都能够建立起系统地全局观

第5篇:软件开发流程

开发流程

第一步:需求调研分析1相关系统分析员和用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。2 系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。3 系统分析员和用户再次确认需求。

第二步:概要设计首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计 进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。

第三步:详细设计在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实 现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。

第四步:编码在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。

第五步:测试测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。

第六步:软件交付准备在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。

第七步:验收用户验收。

第6篇:软件开发合同

XXXX公司

XXXXXXXXXXXXXXX系统

开 发 合 同

甲方:XXXXXXXXXXXX公司 乙方:XXXXXXXXXXXX公司 合同编号: 签订地点:XXXX

根据《中华人民共和国合同法》及有关法律法规,XXXX公司(下简称甲方)与XXXXX公司(下简称乙方)本着精诚合作、公平合理的原则,经友好协商,就甲方委托乙方开发XXXXXX一事签订本协议,协议如下:

一、项目名称 :XXXXXXXXXXXXXXXXX

二、项目实施内容 XXXXX 详细的功能需求以双方共同确认的《XXXX系统建设方案书》为准,系统方案书作为本合同的有效附件。。

三、甲方权利与义务

1.甲方负责提供业务需求资料。

2.甲方负责软件运行所需的软硬件设备、通信线路、系统安全设施等运行所依赖的环境,如需乙方提供前述设备、设施,应另立合同。

3.甲方须及时配合乙方对软件进行测试和试运行,并及时反馈修改意见给乙方。

4.甲方保留在项目的关键点对项目进行质量检查的权利。乙方应协助甲方完成质量检查,并提供甲方需要的材料和信息。

5. 甲方与乙方共同对项目实施结果进行验收,出具验收结论性报告。 6. 甲方应配备乙方维护人员进行日常性系统管理和数据维护,与乙方技术人员一起完成维护工作,以保持系统运行在最佳状态。

7. 甲方应在约定的时间内向乙方支付软件开发费用和维护费用。

四、乙方权利与义务

1. 乙方负责根据甲方的具体需求进行设计,并及时与甲方沟通,确保设计的功能符合实际操作和管理需要。 2. 乙方负责软件代码的编写,确保软件质量,提供高质量的运行软件;并确保运行可靠、数据准确、实用、简捷、界面友好。

3. 乙方负责培训甲方人员,提供操作说明文档。 4. 乙方负责软件的后期维护,并持续跟进系统运行情况,及时解决运行中的问题。

5. 乙方负责根据甲方的需求变更,在本合同界定的功能范围内适时进行软件的修改、升级工作。

6. 乙方应当保证其交付给甲方的研究开发成果不侵犯任何第三方的合法权益。如发生第三方指控甲方实施的技术侵权的,乙方应当承担相应责任。

7. 乙方需保守甲方的商业秘密,不得利用工作之便外泄资料,避免给甲方带来损失;并在软件交付使用时向甲方提交的软件产品包括含有软件代码的载体(光盘或磁盘)和相应的文档。软件载体中包括可安装的程序运行文件和以下文档:《用户需求说明书》、《系统概要设计说明书》、《系统详细设计说明书》、《测试报告》、《用户使用手册》、《数据字典》。 8. 机房工作:甲乙双方参与本项目的工作人员应严格遵循各方安全制度,共同保障各方资料和设备的安全。乙方如需进入甲方机房工作,乙方只能在甲方规定的工作区域内对项目涉及的设备进行操作,严禁触动与项目无关的任何设备(包括任何操作行为),如需跨区操作必须得到甲方项目联系人确认。

9. 乙方为甲方提供的产品不加密,不限制安装次数和安装的终端数量。

10.乙方须提供满足本项目正常开展的人员配臵,包括(但不限于):项目经理、测试人员、研发人员等。并须指定一名专业人员作为代表与甲方配合,定期与甲方代表对本项目的进度进行沟通,及时解决项目实施过程中可能出现的问题。乙方应提供如下的项目管理服务:对本项目的所有任务和活动提供全面的管理,有效的沟通;提供项目工作计划。项目工作计划应包括:a)任务的描述;b)估计需要的工作量,项目人员;c)期望的开始和结束的时间;d)预估本项目的风险,筹划应对策略;提供项目进展报告。乙方应每个月向甲方提供由乙方项目经理签名的项目进展报告。进展报告应包括:乙方在上一份进展报告以来的工作成果(包括已交付的软件模块);出现的问题以及解决的办法;下一步工作计划;要关注的主要问题(特别是那些会影响服务范围、项目费用、工作成果等的问题)

11. 乙方保证开发出来的软件完全符合本合同的要求,不能与甲方的信息安全防御体系有任何冲突(包括甲方要求打上的程序补丁以及安装的任何设备),如发生冲突乙方必须负责完全解决,以适应甲方的信息安全防御体系;在保障期内,乙方有义务对所有不符合要求的部分予以修正。所有这类工作在保障期内都是免费的。(功能重大增加或调整以及安全防御体系与系统终验时发生改变的情况除外)。 12.安全防御体系包括:防病毒软件 norton、symantec、kaspersky等企业版客户端;windows操作系统补丁,主要是针对win server200

3、win server200

8、winxp、win

7、win8操作系统。

13. 隐蔽功能:乙方保证在其交付的软件中,不包含任何以下的部分:“后门”(Black Door);时间炸弹(Time Bomb);自动根据时间的控制而停止系统运行的功能(不包括甲方因为技术支持的需要而授权的设计);没有计算机病毒(Virus):特洛伊木马(Trojan horse)、蠕虫(Worm)、或其它的允许非法对系统进行访问(包括删除,关闭等)的功能。 14. 网络信息安全:未经甲方公司的同意不得利用甲方公司的网络及平台进行短信、彩信发送,造成的一切后果由乙方负责。

15. 账号信息安全:乙方对甲方提拱的临时使用账号要保密,不得公开,对组件开发的账号密码需进行加密,避免信息安全的泄露。

五、开发时间

合同签订之日起,60天内完成软件开发工作,投入试运行。详见附件三《XXXX实施计划》。乙方须严格执行进度计划要求,如因乙方原因而造成总工期的延误,则乙方须承担由此造成的相应责任和损失。

六、维护条款

1.乙方负责本项目的维护工作,确保系统安全、稳定、正常地运行;提供7日*24小时响应维护服务; 2.服务专员: 电话:

3.乙方负责本项目所涉及的技术性维护,其工作范围为:软件版本升级和错误更正;合同所界定的功能范围内的局部调整。

4.当出现故障时,甲方应立即通知到乙方。如属于严重故障,乙方立即委派工程师进行处理;如属于一般故障,乙方委派工程师在一小时内开展问题处理工作;必要时到现场进行紧急处理,甲方提供必要的协助。

5. 由甲方负责日常性管理工作,包括信息更新、数据维护和系统管理,乙方提供必要的技术性协助。

七、项目造价 1. 开发费用:人民币 ¥0.00元,大写:人民币壹元整; 2. 维护费用:第一年免维护费;维护起始期从软件通过终验之日起计算。

八、项目验收

1. 验收标准:本项目采用现场验收方式验收,验收标准以符合相关附件所提供的功能和甲方的要求准。

2. 验收由双方人员共同参与。系统开发或配臵完成后,经乙方内部测试通过,即可按照项目进度配合甲方进行系统初验,所有系统功能模块符合本协议要求,能够正常运行。同时乙方须提供软件文档(包括《用户需求说明书》、《系统概要设计说明书》、《系统详细设计说明书》、《测试报告》、《用户使用手册》、《数据字典》、《系统部署文档》)以及可安装的程序运行文件,软件文档部分的验收通过后,即视为初验通过。

3. 初验完成后,系统整体试运行三个月后,初验遗留问题已解决,乙方确认系统具备正常运行条件,即通知甲方系统已准备就绪,等待最终验收。当系统通过测试时即终验完毕,甲方向乙方签发终验报告。

4. 系统达到验收条件后,由乙方提出验收申请。 5. 甲方根据乙方提交的验收申请进行确认。 6. 甲方验收不合格,应出具书面的异议;甲方怠于通知或者自验收申请收到之日起15日内未通知乙方的,视为自动验收合格。

7. 验收分初验和终验两次,初验通过后系统至少试运行三个月以上才能进行终验。验收可进行多次,如不合格,乙方应及时加以修改纠正,直到验收合格为止。

九、付款条件

1. 预付款:合同签订后一周内,自甲方收到乙方开具符合国家财务规定的相应数额的正式发票后10个工作日内,甲方向乙方支付开发费用的40% ,即¥0.00元,人民币大写:零元整。

2. 初验款:系统开发或配臵完成后,项目初验收合格后一周内,自甲方收到乙方开具符合国家财务规定的相应数额的正式发票后10个工作日内,甲方向乙方支付开发费用的20% ,即¥0.00元,人民币大写:零元整。

3. 终验款:系统试运行三个月后进行项目终验,终验合格后一周内,自甲方收到乙方开具符合国家财务规定的相应数额的正式发票后10个工作日内,甲方向乙方支付开发费用的20% ,即¥0.00元,人民币大写:零元整。

4. 质保维护款:项目终验合格并且一年免费维护期后, 自甲方收到乙方开具符合国家财务规定的相应数额的正式发票后30个工作日内,甲方向乙方支付开发费用的10%, 即¥0.00元,人民币大写:零元整。

5. 乙方账户信息如下: 公司名称 XXXXXXXXXXXXXXXXX公司 开 户 行 :

开户名称 :XXXXXXXXXXXXXXXXX公司

十、违约责任

1.如因甲方的业务需求产生较大的变更、外在不可抗力因素等原因,致使项目期限需要延长的,乙方应及时知会甲方,在取得甲方同意的情况下,工期可以适度顺延,但累计延期不得超过30天。

2.如因甲方人员不积极配合、不能满足试用或使用条件,而导致项目延误,乙方有权适当顺延项目期限,直到满足条件为止。甲方应承担由此引起的延期责任。

3.剔除以上因素,如果乙方不能按甲方的需求完成项目,或项目质量达不到要求,乙方如数向甲方退回所收款,本合同自动失效。

4.如甲方拖欠乙方的开发费或维护费,从应付款截止日起,一个月后开始计收滞纳金,每月按应付款的2%加收滞纳金。 5.如乙方无正当理由逾期交付软件,从应交付之日起,一个月后开始计收逾期罚款,每月按项目造价的2%加收罚款。 6.如因甲方无正当理由拒绝接收乙方交付的软件,甲方应支付给乙方全额的开发费用。

7.如乙方维护消极,甲方有权扣减维护费10%~20%。 十

一、不可抗力

甲乙双方任何一方由于不可抗力(如地震、洪水、火灾)原因不能履行合同时,应及时向对方通报不能履行或不能完全履行的理由,以减轻可能给对方造成的损失,在取得有关机构证明后,允许延期履行、部分履行或不履行合同,并根据情况可部分或全部免予承担违约责任。 十

二、争议的解决

1.如因软件的质量问题发生争议,由法定的质量技术鉴定机构进行质量鉴定,双方应当服从该鉴定的结论。 2.若执行本合同的过程中发生纠纷,双方当事人应当及时协商解决;协商不成时,则提交甲方所在地有管辖权之人民法院提起诉讼。 十

三、无效合同

甲乙双方如因违反法律和有关规定,合同被宣告无效的,有过错的一方应当承担赔偿责任,双方都有过错的,各自承担相应的责任。 十

四、保密协议

1.保密内容(包括技术信息和经营信息):甲方提供或项目过程中了解的经营秘密及相关资料 ;乙方交与甲方的任何资料、图表、文字、计算过程、电子文件、访谈记录等。 2.涉密人员范围:项目组成员、甲方公司。 3.保密期限:两年。 4.乙方未经甲方同意,不得将所接触到的甲方技术或业务资料、数据用作其他用途或以任何形式泄露归第三方,否则乙方需承担由此引起的法律责任和赔偿甲方的经济损失。 十

五、合同权利义务转让/变更/修改/补充

1.未经甲方同意,乙方不得将本合同权利和义务转让第三方承担。但有下列情况之一的,乙方可以不经甲方同意,将本合同项目部分或全部研究开发工作转让第三方承担:第三方是乙方的分公司、子公司或有控股、交叉持股、股权关系、长期业务合作关系的关联企业;部分软件产品的开发和生产。 若甲方增加本合同以外的服务内容,需向乙方另行支付费用,经甲、乙双方协商一致同意,对本合同修改或补充的条款由双方授权代表签署补充协议,费用标准及金额由双方订立的书面补充协议具体规定,成为本合同的组成部分.2.双方均可由于对方未履行其在本合同内的义务而终止本合同,但应提前一个月以书面形式通知对方。

十六、技术成果和知识产权

1.本合同正常完成后,乙方为执行该合同而实际制作的软件、源程序、数据文件、文档、记录、工作日志、或其它和该合同有关的资料的所有权与知识产权归乙方所有。 2.支撑该系统开发和运行的第三方编制的软件的知识产权仍属于第三方。 3.乙方提供软件产品(包括软件载体和文档)和相关系统接口,仅限于甲方使用,未经乙方书面许可不能对外转让;软件不加密,不限制安装次数和安装的终端数量。

十七、培训

双方确定,乙方应在向甲方交付研究开发成果后,根据甲方的请求,为甲方指定的人员提供技术指导和培训,或提供与使用该研究开发成果相关的技术服务。

十八、其他条款

1.本合同一式四份,具备同等法律效力。

2.本合同自双方法人或授权代表签字盖章后生效,未尽事宜,

本着友好协商的精神共同解决。 十

九、附件

附件一:《软件设计说明书》 附件二:《报价单》 附件三:《实施计划》

甲方(盖章):XXXXXXXXXXX公司 法定代表人或 授权代表(签字) 日 期:年 月 日

甲方(盖章):XXXXXXXXXXX 公司 法定代表人或 授权代表(签字): 日 期:年 月 日

第7篇:软件开发报告

负载均衡器软件

开发报告

院系: 班级: 成员:

目录

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

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

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.软件开发

2

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软件的概要设计

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

3

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

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

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

3.3软件的详细设计

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

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

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

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

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

4

不同应用对系统资源的消耗可能差异很大,而连接数无法反映出真实的应用负载,因此在使用重型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(); }

5

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, "\\\\0", BUF_SIZE ); memset( m_srv_buf, "\\\\0", BUF_SIZE ); }

6

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 )

7

{ 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

8

}

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

9

{ 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 );

11

} #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( if ( ! cur_time ) {

2 1

return; }

char arg_buffer[ LOG_BUFFER_SIZE ]; memset( arg_buffer, "\\\\0", LOG_BUFFER_SIZE ); strftime( arg_buffer, LOG_BUFFER_SIZELOG_EMERG ] );

va_list arg_list; va_start( arg_list, format ); memset( arg_buffer, "\\\\0", LOG_BUFFER_SIZE ); vsnprintf( arg_buffer, LOG_BUFFER_SIZE - 1, format, arg_list ); printf( "%s\\\\n", 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, "\\\\0", 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] == "\\\\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, "\\\\0", 1024 ); char* tmp_hostname; char* tmp_port; char* tmp_conncnt; bool opentag = false; char* tmp = buf; char* tmp2 = NULL; char* tmp3 = NULL;

1

6 met met

char* tmp4 = NULL; while( tmp2 = strpbrk( tmp, "\\\\n" ) ) { *tmp2++ = "\\\\0"; 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, "\\\\0", 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

1

7

file failed" ); return 1; } *tmp4 = "\\\\0"; 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 = "\\\\0"; 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 = "\\\\0"; tmp_host.m_conncnt = atoi( tmp_conncnt ); }

1

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++ = "\\\\0"; 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, "\\\\0", 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, "\\\\0", 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 )

2

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;

2

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 );

2

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 );

2

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

第8篇:软件开发保证书

受理号

非职务软件开发保证书

申请者:工作单位:

本人单独或参与开发的名称为版本号为的软件,是本人利用业务时间及个人的物质技术条件开发完成的,并且:

□与本人的本职工作内容无直接联系

□本人无工作单位属非职务软件开发行为

本人愿意承担由此引起的一切法律责任。

特此保证

保证人签字:

年月日

注:工作单位应填开发软件期间所在的工作单位,若无单位,在“工作单位”栏内填写“无”。

第9篇:软件开发专业

软件开发专业

软件开发专业,软件开发高级工程师专业,做为IT行业内,最具技术含量和发展潜力的软件开发专业。一直以来备受各位童鞋的青睐。

但是在大家眼里,软件开发专业也是一个深不可测的专业,虽然无比向往,但却不敢触摸。今天,作为一个业内人士,在这里也为大家说说我对软件开发专业的看法,以期为希望从事软件开发专业的人们一些帮助!

1、软件开发专业前景分析:

目前,我国对软件人才的需求已达530万,并且以每年20%左右的速度增长。在未来5年内,合格软件人才的需求将远大于供给。我国软件人才的缺口已达80万,软件人才的就业前景非常乐观。

IT业巨大的人才缺口使其成为名副其实的高薪职业。目前,具有3~5年开发经验的工程师,拥有年薪10万元是很正常的一个薪酬水平。而且根据相关数据表明IT人才的薪金每年都呈现20%~30%的增幅,就业前景好。

2、软件开发专业学习内容:

(1)、基础阶段:

网页图形图像设计与制作网页动画设计与制作

WEB开发基础(HTML及DIV+CSS)ASP基础及动态网页制作

(2)、提升阶段:

C语言Java语言

JSP基础及应用开发SQL Server网络数据库技术

JavaScript客户端验证和页面特效制作PHP基础、CMS及SEO优化

(3)、高级阶段:

电路分析基础软件技术基础

软件工程C#基础

.NET基础及运用Ajax技术"

(4)、实战阶段:

Oracle大型数据库LinuxApache Tomcat大型WEB服务器架设毕业实践报告

3、如何选择软件开发专业学校

选择软件开发专业学校,主要有五点:

(1)、学校历史长,拥有丰富的专业教育经验

(2)、专业从事IT培训,不要什么专业都有。

(3)、选择直营式的学校,不要选择加盟式学校。保障教学质量

(4)、拥有独立校园,实训设施完善,能够理论与实际结合。

(5)、要有完善的就业推荐体系,保证学以致用,专业对口。

当然,在四川地区,符合软件开发专业的学校并不多,而四川新华电脑学校就是其中的领头羊!建议大家可以实地考察。(软件开发专业,软件开发专业)

第10篇:软件开发合同

XXXXX 开发服务合同

合同编号:

甲 方:

乙 方:

签署日期: 年 月 日

XXXXX 开发服务合同

甲方: 乙方:

本合同甲方委托乙方研究开发XXXXX项目及其它服务,并支付研究开发与其他服务的经费和报酬,乙方接受委托并为此项工作进行研究开发与服务。双方经过平等协商,在真实、充分表达各自意愿的基础上,根据《中华人民共和国合同法》的规定,达成如下协议并申明,双方都已理解并认可了本合同的所有内容,同意承担各自应承担的权利和义务,忠实地履行本合同。 第一章 委托业务目标及内容

1.技术目标:在本项目的开发过程中,确保XXXXX的实用性、可扩展性、经济性、安全性,以及技术上的先进性和成熟性。通过使用XXXXX进行交易,有效促进甲方XX业务的全面展开,从整体上提高甲方 。

2.本合同规定的项目的工作内容、工作进度安排等信息由附件载明,详细内容请参见附件。

3.本合同附件为本合同不可分割的一部分,与合同正文具有同等法律效力。 第二章 双方的权利和义务 1.甲方的权利和义务

1.1.有权要求乙方按照双方商定的委托业务,在双方约定的时间内完成合同中规定的内容。

1.2.以可编辑电子文档的形式提供有关甲方的材料及图片等,应保证材料完整准确,图片清晰。向乙方提供的资料不会侵犯第三方的权利,若发生侵犯第三方权利的情形,由甲方承担全部责任。

1.3.在网页制作的过程中应给予乙方积极配合,在双方商定的时间内拿出全面确定的修改意见。

1.4.甲方应当按照国家要求对其名下的网站在相关部门进行备案及其他可能的审

1

批申请,由于甲方过错造成的网站不能上线运营、运营过程中被关闭等后果由甲方承担相应责任。

1.5.甲方委托乙方完成的工作成果的知识产权由甲方独家享有。 2.乙方的权利和义务

2.1.按照双方商定的委托业务,在双方约定的时间内按照甲方提供的材料完成网站建设项目。

2.2.保证网站整体艺术设计具有独创性,为甲方设计的网站在知识产权方面如因乙方原因与第三方发生法律纠纷,责任由乙方承担。若甲方与第三方发生的知识产权纠纷由甲方提供给乙方使用的资源或由甲方指定使用的资源导致,则乙方不承担相应责任。【注:“资源”是指在网站制作过程中涉及到的文字、图片、视频、音频、标示等内容,包括但不限于以上文件类型。】

2.3.乙方在网站设计过程中不提供包含人物面部、人物身体等元素的图片,若甲方需要在网站内容部分使用到此类图片,则图片应由甲方提供并由甲方承担与此相关的版权责任。

2.4.对甲方网站中由于乙方失误造成的页面错误、程序缺陷进行修改。乙方保证最终测试合格的功能都能达到合同中关于功能的描述。

2.5.在合同范围内,对甲方在制作过程中提出的合理修改要求尽力配合,并交甲方验收通过。完成网站建设后,及时向甲方提供工作成果供甲方使用。在本协议工作完成并经甲方验收合格后,乙方应当将甲方提交的资料全部返还给甲方。 按照合同约定的付款方式,收取合同费用。

2.6.乙方在合同履行过程中对其所知悉的甲方信息及本协议信息负有保密义务,未经甲方书面同意,乙方不得对外泄露或用作本协议之外的其他用途。 第三章 网站制作流程

1.合同签订:甲乙双方就网站建设事宜达成一致,并签订《XXXXX开发服务合同书》。同时,甲方向乙方支付网站建设款项。

2.网站资料提供:在合同签订后的15日以内〔包括非工作日〕,甲方向乙方提供网站建设所需的必要资料,这些资料包括但不限于:主体设计要求、首页主要板块、网站栏目设置、功能实现要求等。由于必要资料提交不及时造成的项目延期,乙方不承担责任。

2

3.网站制作:乙方在收到相关资料后,开始网站的制作和开发。制作周期从乙方收到甲方完整资料后的下一个工作日开始计算。平行进口车商城的制作流程为:开发、测试、上线开通三个阶段。

4.测试:乙方制作完成后,将网站内容上传至测试服务器,甲方通过该服务器进行网站测试。甲方将修改意见及时提交给乙方,乙方根据甲方意见进行修改和完善。

5.验收:甲方对网站验收通过后,乙方提供《项目验收申请单》,并由甲方签字确认。

6.网站开通:网站开通的标准为网站域名是否与网站挂接,即是否可以通过指定域名访问乙方制作的网站页面。 第四章 开发周期

PC端系统开发周期为 工作日

制作开始日期:自201X年X月X日起,至201X年X月X日止 第五章 网站维护

1.网站维护分为技术维护和内容维护两部分:技术维护服务是指排除、解决网站运行中发生的功能故障,保证网站正常运行,一般双方所谈的维护即指技术维护。乙方提供每年技术维护和电话技术支持服务,服务费用由双方协商而定。乙方将确保网站的各项功能均能正常使用,不出现BUG或对出现的BUG进行及时免费的修改,以确保网站程序部分正常运行。总之,对于该网站,乙方将承担网站程序部分的全部技术维护工作。

2.内容维护是指对于网站页面中的内容进行添加、修改和删除等。网站内容维护分为两种方式:由乙方代为维护或者网站建成后的三个月之后,乙方可培训甲方员工对网站后台进行自主管理和内容添加、发布。如由乙方代为进行内容维护,需以附件形式另行商定服务费用。

3.甲方对网站验收合格之日起,除网站功能出现与原合同不符的故障、缺陷外,乙方不提供对网站功能的修改和增加。

4.如果甲方需要对于网站进行非内容性的修改,例如网站功能的添加、修改和删除,或对网站整体风格及页面布局进行调整,其费用根据甲方的具体需求另行

3

商定,该费用不包含在本合同内。 第六章 费用明细及结算方式

1.本合同总金额(含税)共计¥XXXXXX元(人民币XXXXX圆整)。

2.合同签订后五日内,甲方向乙方支付合同总额50%,即¥XXXXX元(人民币XXXXX圆整)。

3.网站验收合格后五日内,甲方向乙方支付合同总额50%,即¥XXXXX元(人民币XXXXX圆整)。

4.甲方按照合同要求每次付款前或付款后,乙方提供该次付款金额X%的XXXXX发票。

5.乙方开户银行名称、地址和帐号为: (1) 账户名: (2) 帐 号: (3) 开户银行: 第七章 保密条款 1 甲方:

1.1 保密内容(包括技术信息和经营信息):项目设计思路和分析文档;项目实现的技术方案;项目相关软件资料等。

1.2 涉密人员范围:直接或间接涉及本合同技术的有关人员。

1.3 保密期限:永久性保密(不因合同废止而失效)。

1.4 泄密责任:承担由泄密而影响研发工作进展的一切后果并赔偿本次合同金额的100%。 2 乙方:

2.1 保密内容(包括技术信息和经营信息):甲方的管理流程、业务操作流程以及客户信息,甲方及使用单位提供的相关资料、以及本合同项目下甲方委托开发的一切事物。

2.2 涉密人员范围:参与方案设计人员、技术研发人员及知悉上述保密内容的管理人员等。

2.3 保密期限:永久性保密(不因合同废止而失效)。

4

2.4 泄密责任:承担由泄密而影响研发工作进展的一切后果并赔偿本次合同金额的100%。 第八章 其他条款

1.双方当事人应当保守在履行本合同过程中获知的对方商业秘密。本合同签订后,经双方当事人协商一致,可以对本合同有关条款进行变更或者补充,但应当以书面形式确认。上述文件一经签署,即具有法律效力并成为本合同的有效组成部分。因不可抗力或者其他意外事件,使得本合同的履行不可能、不必要或者无意义的,任一方均可以解除本合同。

2.本合同所称不可抗力、意外事件是指不能预见、不能克服、不能避免且对一方当事人造成重大影响的客观事件,包括但不限于自然灾害以及社会事件如战争、动乱、政府行为等,但受不可抗力影响的一方应当及时通知对方并采取合理措施防止损失的扩大。

3.双方当事人对本合同的订立、解释、履行、效力等发生争议的,应友好协商解决,协商不成的,则提交乙方所在地人民法院诉讼解决。 4.本合同经双方授权代表签字并盖章,自签订日起生效; 5.本合同一式两份,甲乙双方各执一份,具有同等法律效力。

甲 方: 乙 方:

法人或委托代理人签字: 法人或委托代理人签字:

联系电话: 联系电话:

签署日期: 年 月 日 签署日期: 年 月 日

5

附件:系统功能模块

1

第11篇:殡葬软件开发

一、系统建设背景

济南金民电子科技有限公司是全国最早专注于殡葬软件开发及技术支持与服务的高新技术企业。公司长期与民政系统合作,熟悉民政系统的各项业务,于2001年着手开发殡葬软件; 2003年6月,民政部下发《关于安装运行全国殡葬管理信息系统的通知》(民办函[2003]79号),要求全国各省、直辖市、自治区及各下属各基层单位使用此系统,实现全国殡葬行业信息化联网。并于2003年8月份在民政部举办了全国殡葬系统培训班,对与会的30多个省市自治区的业务主管领导进行培训、进行交流,并采纳各个单位的不同建议,补充到该软件中。目前山东、辽宁、吉林、甘肃、新疆、陕西、安徽、云南、云南、广西、湖南、广东、江苏等省已经使用此殡葬管理软件。经过广大客户近十年的使用,我们积累了大量的信息资源,同时也吸取了广大使用者的合理建议,我们对产品不断改进、完善,推出新的升级版本,可满足不同层面的客户需要。金民电子本着为客户负责的原则,为您提供切实、可行的殡葬系统解决方案。

二、殡仪馆行业现状分析

随着信息技术的发展,已进入互联网时代,Internet/Intranet技术、网络技术、数据库技术的应用,不断改造着我们的传统产业,电子政务、电子商务、电子社区、各业务信息平台等为人们的生活提供了极大的方便;同时,增加了政府办事的透明度,提高了办事效率。因此,信息化建设日益受到各行各业的重视。民政部门作为主管有关社会行政事务的政府组成部门,如果不能面对这一形势,迎接这一挑战,迅速果断地付诸行动,民政部门就不可能在改革、发展、稳定的大局中发挥更大的作用,做出更大的贡献。各职能部门认识到信息化的重要性,制定符合自己业务要求的方案措施。 殡葬管理是国家行政管理的组成部分,而殡葬服务业是一个特殊的服务行业,无论是管理还是服务,都直接关系到群众的切身利益以及单位的效益,但其信息化发展目前明显落后于其他的行业。我国推行殡葬改革已经40多年,其管理与服务方式基本停留在手工管理阶段,管理效能不强,服务档次较低,难以适应事业发展的需求。虽然个别殡仪馆和公墓配备了计算机,也有的有一些简单的殡葬管理软件,但没有统一的网络体系和应用软件平台,不能实现管理单位和基层单位的信息共享,现代化的设备不能充分发挥作用,大量的殡葬数据不能得到很好的开发和利用,造成很大程度上的信息资源浪费。近几年来,随着各级民政部门对信息化建设的重视,基层对应用计算机管理要求的呼声日益高涨。而且殡仪馆比较规范的工作流程,严密的管理措施和良好的经济基础,非常适合计算机管理;网络技术的发展,为建立统一的网络体系,实现数据实时传递提供了条件;政府主管部门对殡葬基层单位的监控逐步加强,对统计数据的准确性、可靠性逐步提高,更需要现代化的管理手段。目前服务行业的竞争会日趋激烈,运用现代化的管理手段提高竞争力势在必行。因此,开发殡葬管理信息系统平台,全面提升殡葬行业的管理与服务档次,跟上时代发展的步伐,树立殡葬行业的新形象,使之成为民政部门为民服务的一个闪亮窗口,并为单位的管理效率提供可实际操作的工具。

四、系统建设的意义

强化管理:通过业务的信息化管理,可以规范服务流程,提高服务水平,提高企业的竞争力;领导可以及时调整部署,检查的力度和深度得到加强。

提高单位效益:现今殡葬行业的垄断格局已经被打破,只有通过规范管理,提高工作效率,方便用户办事,转变长期以来人们对殡葬行业的误解,才能赢得用户的心,赢得市场,从而提高单位的经济效益。

节省时间,减少失误:以往手工操作,导致大量材料堆积,保存不便,查询、统计非常繁琐,且经常出错。使用软件后,查询、统计非常方便,鼠标轻松点击即可实现无纸化办公,节约资源,节省开支。

智能化的提醒功能:数据量大,不可能对每一个数据都能准确掌握,系统根据所设置的参数以不同的颜色显示不同格位的到期状态,便于对到期的格位进行催费。

领导实时监控:领导可以及时了解工作进展情况以及各种数据的汇总、统计。

方面快捷的财务统计:运用本系统强大的查询功能,可以查询某段时间的费用情况,具体到每一个逝者的每一项收费的交费退费都能够清晰准确的查询。

方便民众查询:逝者的告别、火化、寄存等办理情况亲属可自己在终端查询系统上(触摸屏)上进行查询,及时掌控逝者业务的办理情况。

车辆、冷藏棺、告别厅等的合理调度:在系统中,合理调度车辆、冷藏棺、告别厅等殡葬资源,有效防止资源利用的冲突。

五、系统特点

系统紧密的与殡仪馆的各种设备结合在一起,组建殡仪馆的ERP系统,将当前的业务流程,全部借助计算机来进行管

理,结合先进的管理思想,借助现代计算机技术和方法,提高信息纵向横向传输效率和质量,通过信息化手段规避不必要的风险(火化、告别身份识别的控制等),规范企业管理,从而提高办公效率,降低管理费用,提高企业形象,使企业的生产、经营信息得到及时反馈,从而有效管理、监督、控制企业经营活动,规避企业经营风险,为最终实现企业经营目标服务。

可借助计算机技术,结合本单位具体情况,准确及时的对经营管理、财务等信息进行及时采集、加工处理、存贮、查询和检索,并及时提供各种统计、分析报告。利用网络技术实现资源共享,从而最大限度的减少重复劳动,提高工作效率。 利用现代信息通讯技术和方法,实现殡仪馆日常生产经营活动的即时监督管理。

该系统信息高度统一管理原则出发,建立并优化信息资源共享的主题数据库,提高管理信息资源的利用效率;在殡仪馆内部建成一个高效的管理信息网络,建成企业级的信息局域网络。提高殡仪馆内部管理能力和各部门工作效率,规范服务流程。

系统可对生产经营、财务等企业经营活动中的主要信息资源作深层次的处理、分析,为殡仪馆领导对生产运营的协调控制、反馈修正提供及时、快捷、准确、可靠的信息支持,并使管理行为由事后处理提高到事前预测、事中监控的管理水平,另外需要跟踪各用户的业务流程执行情况。

构建身份识别系统和业务过程控制系统,对进出殡仪的业务进行校验报警和过程监控。

六、殡仪馆综合业务管理信息系统建设内容

5.1车辆管理信息系统

*实现车辆预约管理

*实现派车接运遗体的管理,并可实现对整个车队的派车管理工作

实现数据的共享可与其他业务关联使用,一个节点的数据信息作为基础数据记录到整个数据库中,其他业务节点可联网使用

实现在派车管理信息系统中实现条码管理的功能,并生成唯一的生成逝者编号,该编号在整个系统中使用可根据车型、时间等自动计算费用,并记录在系统中,以便一起结算

可查询出车记录,并可对出车司机的业务工作量进行统计,以便进行考核

5.2冷藏管理信息系统

实现冷藏信息的关联使用,系统可自动过滤是否占用等情况

可对接运的遗体通过条码识别系统进行冷藏的办理工作,并将有关信息传输到数据库中,以便前台调用

自动生成冷藏协议单据,并打印以便丧主(办理人)签字确认

*遗体出柜可通过条码进行身份的识别

系统可自动的根据冷藏出柜时间,计算费用

5.3业务洽谈管理系统

实现逝者信息的录入,并根据录入信息生成火化档案

*实现二代身份证的数据导入功能

可在系统中选择预先维护的骨灰盒、丧葬用品及服务等

实现整容选择的有关事项,并可将整容事项发送到整容组,并可进行有关的划价、确认等

实现告别服务的选择有关事项及挽幛内容等,并可与棺内显示系统相结合,将有关信息发送到显示系统上实现系统记录后在火化时刻根据所选择的火化机结合条码进行身份识别,避免火化出错,并可自动计费

告别厅、火化机可根据预定时间的空闲状况来进行预定,避免错定、重复预定的发生

*实现根据所选择业务形成报表的功能,并可打印业务洽谈单(委托书),并经丧主(经办人)签字确认;并保留凭证

5.4整容管理系统

*实现整容前的身份识别功能

实现整容项目的无纸化操作,通过洽谈业务在系统中获取整容内容,整容完毕后进行确认工作

系统实现自动的记录整容员的信息,并与被整容人一一对接,出现问题可进行追究

实现整容完毕后的确认功能,其他部门可根据业务流程办理其他服务

实现特殊整容先划价后计费的操作模式,并经丧主确认后处理

5.5告别管理系统

实现礼厅管理员通过系统中所洽谈的告别内容进行布置告别厅有关事项等

可通过系统控制告别厅的电子屏幕显示内容

*可结合本馆的门禁系统,根据所选择的告别厅对进入告别厅的遗体进行身份识别,避免出错

礼厅准备完毕,礼厅管理员进行确认,出现问题可查看日志追究有关人员责任

实现每个礼厅分别显示当天进行告别人员的时间安排等

5.6火化管理系统

*实现火化前的身份识别功能,根据条码扫描自动的打开火化机

可实现火化前的火化机调整功能

*可实现火化后与装骨灰的衔接问题

可统计月度、季度、年度火化机的使用情况及收费情况,便于领导决策

在休息室等地设置大屏幕,亲属可了解当前火化的情况,并通过大屏幕通知亲属进行取灰业务的操作

5.7取灰身份鉴别系统

*可通过骨灰盅上的条码调取登记的取灰人的信息

可打印取灰单据,并与系统核实后签字领取

5.8取灰身份鉴别系统

可根据洽谈业务进行收费操作

可根据授权根据国家有关规定对五保、烈属进行减免收费的操作

可根据丧主要求追加收费项目并打印有关票据

可根据操作权限可进行退费业务的操作

实现收费项目以及变动与个人信息关联,以便对业务人员进行绩效考核,账务出现问题也可进行追查处理实现自动提醒票据是否打印,避免重打等

5.9火化统计

可根据数据字典中维护的乡镇、行政村统计各地的火化数据

*可将火化数据导出,与民政部的台账系统相结合

火化数据可自动的转化为火化档案进行保存,便于以后查询

可统计火化数据与收费情况的对比,便于领导决策支持\\\\

5.10收费查询及库存等查询功能

可统计某段时间的收费以及每笔业务的收费明细,便于财务进行月底的对账管理

*可对业务操作流程可进行跟踪、查询,了解业务的办理情况,及时的掌握业务运营状况

可对车俩状态查询,并根据空闲情况进行调拨

对各项费用可出具日、月、季度及年报表

可根据逝者或者所选择项目来查询收费情况

可查询车辆、火化炉火化、冷藏(查询冷藏棺的当前状态,掌握冷藏棺的使用情况)等信息;并根据实际需要进行综合查询的定制

可自定义组合条件查询收费、退费及具体的逝者费用及信息等

可进行进货的管理以及成本、数量的管理等

丧葬用品、骨灰盒销进销存管理及数据的查询、盘点,便于掌握仓库物品以及进行盘点

5.11寄存业务管理

可实现骨灰寄存业务的操作,包括收费功能以及打印功能以及磁卡管理,根据磁卡来进行费用的缴纳等。能实现寄存信息的录入功能,包括历史档案的录入以及新新来业务的处理。

实现双格位以及多格位的骨灰合并操作。

可实现对续存、变更寄存格位、取走、骨灰祭奠等操作

可查询当前占用、取走的的格位以及原占用人信息。

可通过图形化的界面查询当前格位的占用者的详细信息;

可查询费用收取情况以及以及欠费情况,并进行欠费收缴工作的管理

可查询寄存到期信息,及时的与到期骨灰的申请人进行沟通;并根据需要导出数据。可实现寄存的收费管理、退费管理并打印寄存、收费等单据。

可通过门禁系统实现对寄存楼的骨灰的管理

第12篇:简历软件开发

个人基本信息

姓名:

性别:

出生年月:

教育程度:

毕业学校:

所学专业:

现所在城市:

参加工作时间:

婚姻状况:

职业概况/求职意向

求职意向:

意向工作地点:

北京市

意向职位:

软件工程师,工程实施工程师,工程实施人员,项目实施工程师,项目实施人员,软件测试人员,软件测试工程师 意向公司性质:

不限

工作类型:全职

期望月薪:面议

自我评价

通过一年半的.NET开发工作中让我拥有了很强的开发能力,具有良好的进去精神和团队精神,很好的分析问题与解决问题的能力,具有较强的学习新技术的能力和编码能力,很好的适应IT技术快速的发展。同时通过项目开发培养了我的团队合作精神和沟通能力,可以让我更快的融入新的工作团队。

工作经验

2010.1-2011.5 [ 1年 4个月 ] 武汉维创科技有限公司 软件开发 所属行业: 计算机软件 工作地点: 武汉 工作性质: 全职 职位类别: 软件工程师 职位级别: 中级职位(两年以上工作经验) 职责和业绩: 项目分析,编码,测试

项目经验

2010.8-2011.4 游乐园(游戏交易平台) .net程序员 软件环境: Windows Server 2003 ,SQL Server 2005数据库 硬件环境: 1G内存 开发工具: Microsoft Visual Studio 2008 项目描述: 目标:(游乐园网站开发)为广大网友建立一个集 网游交易,代练服务,点卡买卖,互动交友,游戏资讯,娱乐休闲,个性空间,综合性论坛 于一体的大型网络社区。

功能描述:

游乐园主页主体显示界面

会员注册系统玩家注册成为本站会员,及会员类型升级功能

网络交易系统会员(玩家)可自由进行交易信息的发布和查看,并按需求进行交易

代练业务系统会员(玩家)可以按需求发布代练订单,以及加盟为代练工作室

物品交换系统会员(玩家)可以自由进行交换信息的发布和查看,并按需求进行交换

信用评价系统会员(玩家)可在交易完成的状态下对本次交易过程进行客观的评价

在线充值系统会员(玩家)可以进行游乐币的充值,并获取相应积分

点卡销售系统会员(玩家)向网站支付游乐币(或其他支付方式)购买游戏点卡

游戏资讯系统会员(玩家)可浏览网站提供的游戏的动态资讯,及游戏下载等服务

互通交友系统会员(玩家)展示自我,广交益友的互通平台

用户管理系统会员(玩家)自行管理自己的相关信息的个性空间

论坛交流区域会员(玩家)交流互动的大型平台。 项目职责: 项目中主要负责会员登录功能,注册系统,物品交换,论坛交流的代码编写及测试。

2010.5-2010.7 湖北国土资源职业技术学院网站设计与维护 .net程序员 软件环境: Windows Server 2003,MySql数据库 硬件环境: 1G内存 开发工具: Microsoft Visual Studio 2008 项目描述: 前台学校信息展示,后台数据操作的编码与测试 项目职责: 负责整个网站的开发

2010.1-2010.5 武汉维创科技有限公司办公系统 .net程序员 软件环境: Windows Server 2003 ,SQL Server 2005 硬件环境: 1G内存 开发工具: Microsoft Visual Studio 2008 项目描述: 办公系统详细地描述了某公司的详细信息以及员工的工作流程。系统实现了如下功能:

1.文档管理:实现公文归档的自动化,实现规范、灵活的包括著录标引、整理、保管、统计在内的档案管理工作;针对于复杂的分类和查阅权限,实现合理存取,管理的功能。

2.人事管理:人事管理功能主要包括:员工资料管理,员工薪资管理,员工考勤管理,员工权限管理,部门机构管理等人事管理的所有功能。

3.信息管理:相关邮件和信息的阅读。

4.日程管理:可以为用户提供日常工作中的约见、会议、工作任务等日程事务的记录和提醒功能

5.系统管理:系统管理员对数据库和用户进行管理,如设置用户,分配权限、职能、人员信息表,统计重要数据等。

6.考勤管理:管理员工的出勤记录,对于迟到早退可以有清楚的记录。 项目职责: 项目主要负责系统管理和消息管理两大模块代码编写及测试

掌握技能

熟练使用三层设计模式下的编程开发

熟练使用三层架构模式,减少各业务逻辑的耦合度。

熟练运用Microsoft Visual Studio 2008发工具及SQL Server 2005 数据库。

熟练使用 .NET ,Ajax, Xml 等技术。

使用PHP+MYSQL技术完成湖北国土资源职业技术学院网站的开发

熟练使用SQL server 2005,了解 oracle及MySql;

熟练掌握javascript/JQuery/html/c/xml等Web技术;

熟练 Web 2.0 相关开发标准,精通DIV CSS布局;

了解webservices,有相关的运用和开发经验;

有较强的艺术鉴赏力,突出的设计能力,有优秀的web网页设计和开发能力,对用户体验有深入的实战经验,熟练使用Dreamweaver工具进行网页设计制作;

了解Photoshop绘图软件,能完成简单的图片制作。

技能: ASP.NET(C#)[熟练,使用时间36个月] 技能: MSSQL SERVER[熟练,使用时间36个月] 技能:

Oracle[初级,使用时间12个月] 技能: MySQL[初级,使用时间6个月] 技能: Acce[初级,使用时间3个月] 技能: MS Office[熟练,使用时间36个月] 技能: PHP[熟练,使用时间12个月] 技能: HTML[熟练,使用时间36个月] 技能: XML[熟练,使用时间24个月] 技能: Java Script[熟练,使用时间24个月]

教育经历

2006.9-2010.6 武汉科技大学 [武汉] 本科 专业: 软件开发[电气信息类] 专业描述与主修课程:熟练使用三层设计模式下的编程开发

熟练使用三层架构模式,减少各业务逻辑的耦合度。

熟练运用Microsoft Visual Studio 2008发工具及SQL Server 2005 数据库。

熟练使用 .NET ,Ajax, Xml 等技术。

使用PHP+MYSQL技术完成湖北国土资源职业技术学院网站的开发

熟练使用SQL server 2005,了解 oracle及MySql;

熟练掌握javascript/JQuery/html/c/xml等Web技术;

熟练 Web 2.0 相关开发标准,精通DIV CSS布局;

了解webservices,有相关的运用和开发经验;

有较强的艺术鉴赏力,突出的设计能力,有优秀的web网页设计和开发能力,对用户体验有深入的实战经验,熟练使用Dreamweaver工具进行网页设计制作;

了解Photoshop绘图软件,能完成简单的图片制作。

证 书

2011年 国家信息产业部软件工程师证 颁发机构: 国家信息产业部软件工程师证 2011年 653技术更新证 颁发机构: 国家信息产业部

语言能力

英语综合能力:一般 口语水平:;

英语等级水平: 英语专业四级

第13篇:软件开发合同

软件开发合同书

(编号:)

甲方:(以下简称甲方) 乙方:(以下简称乙方)

一、合同内容:

甲方为, 委托乙方进行“”软、硬件的开发工作。 经双方共同友好协商后, 订立此合同共同遵守。

二、系统需实现的功能

详细功能见合同附件《软件系统功能需求》。

三、合同总价:

人民币佰拾万仟佰拾元角分正(¥元)。

四、双方责任:

乙方责任:

1.按照合同及其附件所规定进行软件开发,保证质量。

2.在合同规定的时间内完成软件开发;

3.向甲方提供软件使用说明书;

4.负责软件安装;

5.提供甲方结算用合法发票。

6.触摸一体机按照附件标准进行安装。

甲方责任:

1.积极配合乙方工作,及时向乙方提供必需的原始资料(文字、图片、电子文档等)及解答乙方的有关疑问;

2.在完成总体结构开发后,立即组织人员进行初步评审;

3.软件开发完成后及时组织验收。

五、合同执行进度:

签订合同并资料提交齐全后,于天内完成总体结构开发和硬件安装,于

个工作日内完成整个软件的开发工作。

\n\n

(视软件的复杂程度制订不同的开发进度)。

六、付款方式:

签定合同后甲方先付合同款,即人民币拾元角分正(¥元)给乙方;软件开发完成,经甲乙两方共同验收合格后,甲方在天内向乙方付合同款的%即人民币佰拾万仟佰拾元角分正(¥元)。

(以上付款方式应视软件的复杂程度,结合开发进度,和客户共同讨论制定)

七、服务承诺:

1.软件投入使用后个月内,甲方在使用过程中如发现与原软件功能需求有差别时,

乙方将在接到甲方书面或传真通知后24小时内做出响应,并在不影响甲方工作的前提下及时作出修改。

2.对于甲方使用过程中提出的超出本合同规定的软件功能需求时,在不影响原软件总体

功能的前提下,乙方将对原软件进行升级开发,费用从优。

3.维护响应时间原则上为24小时内(工作时间)。

4.乙方为甲方免费提供2人1天上门培训服务。

八、验收标准:

1.乙方向甲方提供软件安装盘及使用说明书;

2.软硬件安装正确、运行正常。

九、违约责任:

双方应共同遵守合同的有关规定,如遇到不可意料之事,使合同执行发生困难时,应向对方及时提出,并经两方协商同意后可及时更改合同的有关条款。任何一方随意更改合同的有关条款,即视为违约,所引起的一切后果由违约方负责。

十、其它未尽事宜,由双方友好协商后可补签合同解决。

十一、此合同一式肆份, 甲乙双方各执两份,自签订之日起生效,附件与本合同具同等法律效力。

甲方(盖章):乙方(盖章):

代表人(签字):代表人(签字):

年月日年月日

附表:

关于合同号的有关说明:

2003.07:合同签订年份及月份

01:本月份内签订的工程(软件开发)合同序号

关于合同签订代表的说明:

工程额小于五万元:由郑庭光或张晓峰审核后由业务员直接和客户签订 工程额超过五万元:由郑庭光和客户签订

工程额超过十万元:由张晓峰和客户签订

第14篇:软件开发合同

甲方:_______________________

电话:_______________________

传真:_______________________

地址:_______________________

邮编:_______________________

乙方:_______________________

电话:_______________________

传真:_______________________

地址:_______________________

邮编:_______________________

甲乙双方在平等互利基础上,订立下列合同条款,共同信守。

第一条 名称:_______________________;

总价:_______________________;

币种:_______________________。

第二条 定单编号

_______________________

第三条 开发周期______天。

第四条 该软件所实现的功能以“______软件开发策划”为准。

第五条 该软件交付给甲方使用,只包括该软件的应用程序,不包括该软件的源代码、可行性报告等。

第六条 付款条件

甲方付予乙方的所有款项分三次付清。 甲方在签订此合同时,应先付予乙方预定金。预定金数额为总价的______%。 在乙方为甲方开发出软件后,并且把已做好的软件(试用版)交甲方试用,同时甲方付予乙方总价的______%。 在试用期结束后______天以内(试用期为______天,开发周期不包含试用期),甲方必须把剩余款项付予乙方,否则乙方将有权停止该项目的服务,并且乙方将不退还已付金额。 在甲方付清所有款项后,乙方在一个工作日内向甲方提供该软件的注册码。(该软件即可正常使用)

第七条 甲方权利义务

作为乙方的客户,甲方应向乙方提供软件开发所需的资料,以便乙方能更好的为甲方开发软件。如因甲方未能提供开发所需的相关资料而造成的损失一律由甲方自行承担。 乙方与甲方在此合同中填写的资料为有效资料,如甲方的联系地址、联系电话等资料有变动时,须及时通知乙方予以更新(单位须加盖公章)。 甲方仅拥有该软件的使用权,未经乙方允许甲方不得将该软件进行翻录、拷贝、租借、销售或转让。

第八条 乙方权利义务

为甲方提供软件开发的服务,在签订此合同后按开发周期所规定的时间内将该软件的试用版交予甲方试用。 乙方有权对甲方所提供的资料给予审核,凡所涉及到:*情、反动和违反中华人民共和国政策、法律和法规的资料,乙方立即终止和甲方的合作,所造成的后果一律由甲方承担。 乙方将完全拥有该软件的产权和最终解释权。

第九条 违约责任

甲方向乙方提出软件开发服务时,双方应遵守该服务项目协议,该协议均以附件(______软件开发策划)和此合同共同生效。 在乙方服务期间内若甲方提出停止乙方的所作服务,乙方将不给予甲方任何偿还。 若甲方违反此合同的条款规定,乙方将停止对甲方的服务,乙方将不退还甲方已付金额,并依法向甲方追究法律责任。 若乙方未能在开发周期内完成该软件,乙方将偿还甲方付予乙方该项目的定金。 由于不可抗拒力而影响乙方正常的服务和支持时,不应视作乙方违约,甲方对此表示认同。

第十条 争议解决办法:若双方发生争议,双方在不能自行解决的情况下,就上交法院解决。

第十一条 此合同于_______年____月____日在____市用____文签署,正本一式两份,甲乙双方各持一份,具有同等效力。

甲方:____________________

代表签字:________________

单位盖章:________________

日期:____________________

乙方:____________________

代表签字:________________

单位盖章:________________

日期:____________________

本文来源:http://www.scfx8.com/gongzuozongjie/82835.html