资源描述
毕 业 设 计(论文)题 目:基于B/S模式的自动编译系统系 :信息工程系摘 要 本设计是基于采用Browser/Server(BS)和Clint/Server(CS)相结合的结构来进行开发,并通过网页传递相关编译参数,自动调用编译脚本进行编译,实现编译过程的可视自动化的一个自动编译系统。它是:1.以用户需求为中心,实现可以在客户端进行用户登录,密码修改,编译申请和编译查询功能的网页。2.以管理员需求为中心,实现可以在管理员进行增删用户,增删项目以及对用户进行密码修改,项目资源和编译权限分配的网页。3.据库的运用。设计出客户端与服务器端数据的合理存储,提取和解析方式。4.编译脚本的调用。 分析网页传送的信息自动调用脚本进行VSS操作和编译。主要用来解决以下的问题:第一,当我们完成单元开发,需要进行集成测试的时候,就必须把整个项目全部都checkout到本地,然后完成编译,而有些项目往往很大,需要高性能的计算机花很长的时间才能完成编译。于是我们想着用一台高性能的计算机专门做编译工作,这样做的问题是,我们必须每次都登到专用计算机上进行手动checkout,当编译完成后,还要根据编译的结果把生成文件或错误报告手动发送到各个项目成员的手中,这样做,不仅繁琐,还容易出错。第二,我们拿到一些很少的代码,需要马上进行编译,可是手头又没有编译软件,第三,有时,项目必须要在其他非windows平台上完成编译工作,而VSS没有其他平台的客户端。于是我们希望能通过web提交代码,即时查看编译状态,并保存编译结果。而自动编译系统的使用使得以前的很多问题都得以解决,并可以将手工编译的流程极大地自动化,缩短了时间花销和提高了工作效率。关键词:VSS:Microsoft Visual SourceSafe; web; 自动编译; windows平台 Browser/Server(BS); Clint/Server(CS) 等 ABSTRACTThis design is based on using is clicked/Server (BS) and Clint/Server (CS) combination of structure, and developed through a web transfer related compiler parameters automatically calls, realize the compilation script compile the compile process visual automation an automatic compilation system.It is: 1. To user needs as the center, can realize the client user login, password changing, compile application and compile inquires the function of web pages.2. Demand for the center with administrator, can realize the administrator to remove users, for users add projects and cipher modification, project resources and compile the page. Permissions distribution3. According to the use of library. Design the client and the server, the reasonable storage data extraction and analytical mode.4. Compiler script calls. Analysis the information transmitted is invoked automatically web pages for VSS operation and compile script.Its main to solve the follow problems :first, when we finish unit development, need to undertake integration test, you must put the whole project all checkout to local and complete compiled, and some items that are very big, require high-performance computer to take a long time before we finish compilation. So we are thinking with a high-performance computer specialized do, so that the compiler problem is, we have to put into a special computer every time the checkout, when manually compile completion, according to the result of even the compiler generated file or error report sent to each project members manually, and in so doing, the hands of not only trival, also easy to make a mistake. Second, weve got some very few code, need immediate compile in hand, but again without the compiler software, third, sometimes, the project must not Windows platforms in other known work, complete compiled no other VSS, so that the client platform, So we hope that we can submit code, instant via the web, and preserve state check compiled compile results. And the use of automatic compilation system makes the many questions are before settled.Keywords: VSS: Microsoft Visual SourceSafe; Web; Automatic compiler; Windows platform is clicked/Server (BS); Clint/Server (CS), etc 目 录第一章 绪论11.1基于B/S模式的自动编译系统的研究意义11.2 基于B/S模式的自动编译系统系统研究现状1第二章 基于B/S模式自动编译系统的简介32.1 基于B/S模式自动编译系统的分析32.2 基于B/S模式自动编译系统的解析4第三章 基于B/S模式自动编译系统的原理63.1 B/S模式自动编译系统的基本原理63.2 B/S模式自动编译系统的生成方法7第四章 基于B/S模式的自动编译系统的设计194.1设计基于B/S模式的自动编译系统的总体思路194.2 设计基于B/S模式的自动编译系统的测试与数据分析21第五章 结论与展望23致 谢24参考文献和书目25附 录26第一章 绪论1.1基于B/S模式的自动编译系统的研究意义为了把在软件开发过程中遇到没有编译软件或者编译不成功等情况下的问题,而通过开发一套结构完整,功能完善,客户端和服务器端结合的自动编译系统。它的主要工作为:1.用户申请账号后验证进入编译系统网页端,用户可对自己编译信息进行查看,管理员实现对用户、项目、服务器进行管理。2.用户进入编译页面要求用户填写相关的编译参数(立项时确定的几个参数由数据库里调入),socket通信传递参数将其写入的编译脚本中。3.编译申请的提交后,后台会自动检测编译通道繁忙程度选择编译服务器,调用编译脚本进行编译,应用程序能兼容Windows和Linux两种不同环境下的编译,同时用户可以对自己撤销编译的项目。 4.编译终止时,服务端会保存编译信息到日志文件中,将编译终止信息保存到数据库便于后来分析,同时将编译好的软件通过邮件发送给用户。该本系统能够跨越不同的操作系统平台,根据不同的编译请求、优先级连续的完成编译工作,并能够自动打包并发送编译结果。在管理中,还能够根据不同的管理需求,实现诸如中断编译,限制编译权限,为项目增加成员等功能。同时能大大减轻编译人员的手工劳动,提高工作效率,降低出错率,控制源代码的安全性。1.2 基于B/S模式的自动编译系统系统研究现状在编译系统中,项目管理人员手动的集中编译软件这一系列繁杂的工作量和偏低的编译效率是项目管理人员和研发人员无法忍受的。另外,由于目前编译方案没有系统的记录编译信息,对后来编译的查询分析带来了很大的不便。在软件开发的过程中把遇到了关于编译方面的一些问题:遇到了一些问题:第一,当我们完成单元开发,需要进行集成测试的时候,就必须把整个项目全部都checkout到本地,然后完成编译,而有些项目往往很大,需要高性能的计算机花很长的时间才能完成编译。于是我们想着用一台高性能的计算机专门做编译工作,这样做的问题是,我们必须每次都登到专用计算机上进行手动checkout,当编译完成后,还要根据编译的结果把生成文件或错误报告手动发送到各个项目成员的手中,这样做,不仅繁琐,还容易出错。第二,有时候,项目必须要在其他非windows平台上完成编译工作,而众所周知VSS没有其他平台的客户端,这样,操作起来将更加麻烦。有时甚至我们可能会遇到这样的问题:我们拿到一些很少的代码,需要马上进行编译,可是手头又没有编译软件,于是我们希望能通过web提交代码,即时查看编译状态,并保存编译结果。所以很有必要对基于B/S模式的自动编译系统系统的研究开发,使得在以后软件开发过程中遇到编译工作方面的问题可以很快的得以解决。第二章 基于B/S模式自动编译系统的简介2.1 基于B/S模式自动编译系统的分析基于B/S模式自动编译系统的是为了用来设计出一套自动提交软件编译申请后服务器端自动进行编译并压缩发送。软件分为两大部分,用户申请部分和服务器工作部分。用户申请部分(客户端)是以网页的形式实现,用户通过浏览器对可编译的目录进行查询并申请编译。数据管理部分(服务器端)则是通过分析网页传送的信息自动调用脚本进行VSS操作和编译,且管理员可以对客户端的权限进行控制。它是采用Browser/Server(BS)和Clint/Server(CS)相结合的结构来进行开发。自动编译系统软件分为服务器端和客户端两部分:客户端部分由用户使用,通过网页的方式实现,用户可使用浏览器通过局域网进行操作。服务器端软件由管理员日常维护和管理,管理员通过管理界面可对数据库进行操作和管理,并可以自动执行客户端输入的命令。1.web服务器负责对用户的管理,验证用户权限,并且接受用户的编译请求,并把编译请求发送到VSS服务器中。2.应用服务器根据web服务器发送来的编译请求,根据用户的权限,将需要编译的文件从VSS服务器取来,判断需要的编译服务器,然后将需要编译的文件发送到相应的编译服务器中。应用服务器还要能对返回的编译结果进行版本控制,并且能够把编译结果根据用户列表,发送到邮箱里。3.当编译服务器接受到编译请求后,对发送来的编译请求进行优先级判断,并对编译队列进行维护。编译完成后,将编译结果打包,发送给VSS服务器。4.在实际应用中,Web服务器,VSS服务器以及windows编译服务器可以用同一台服务器来担当。系统分布图2-12.2 基于B/S模式自动编译系统的解析自动编译系统软件分为服务器端和客户端两部分,当用户有什么请求都是通过客户端的登入,然后使用浏览器通过局域网进行操作。服务器端软件由管理员日常维护和管理,管理员通过管理界面可对数据库进行操作和管理,并可以自动执行客户端输入的命令。网页设计一、 登录页面要将管理员和用户登陆跳转分开,使管理员和一般用户登陆后呈现各自的页面。二、 用户页面1.分为软件编译、编译历史记录、当前编译显示和修改密码四个部分。页面简洁大方工整。每一部操作页面都有撤销选项,可后退到上一步。2.提交编译页面中的表格要制定限制,在页面上按照命名规范来严格检查,过滤掉错误的申请。3.提交编译页面表格下方添加按钮提示打印。三、 管理员页面1.分为用户管理、项目管理和编译查询三个部分。2.进入用户管理页面,显示用户列表,按部门区分。3.单选用户后,弹出新的页面,显示用户姓名和他有申请权限的项目列表,其中每个项目后有删除的选项,列表下有添加按钮,点击后弹出所有项目列表点击后选中,列表下显示确认按钮,选中项目后确认添加。最下方有保存按钮,即保存所有用户修改。如下图:图2-21.项目管理页面显示项目列表,按照国内和国外项目分类。列表下方有添加项目名称的按钮。2.查看编译情况部分要实现管理员能查看所有信息,并实现能撤销当前正在编译或排队的申请,能对正在排队的编译进行排序。3.用户密码需加密。通信和服务端:网络服务器和编译服务器要分开。主要解决网络服务器上的信息提交到编译服务器、信息保存到数据库和编译服务器的信息反馈。主要用script通信方式来实现:主要实现的功能:1.队列处理。2.出错信息返回。3.对脚本进行规范。4.撤销请求的设置第三章 基于B/S模式自动编译系统的原理3.1 B/S模式自动编译系统的基本原理 这是我们选择B/S模式为总体架构,具体的架构如下图:图3-1框架图实现的原理如下:1.Web前端能够完成用户管理,权限验证,接受用户的编译请求,查询编译状态。 2.VSS能够对用户权限进行二次认证,保证代码的安全。3.能够实现跨平台编译,并能对编译队列进行维护。编译完成后,还要能将结果返回VSS进行版本控制。4.能将编译结果通过邮件发送到指定邮箱。5.本系统要有较好的异常处理机制、扩展性、可移植性、安全性。系统的原理:1. 编译参数通过网页提交方式写入到编译脚本中,在参数提交时网页会提前作参数合法性检查,若采用手动设置脚本参数易在编译调用脚本时出现错误。编译时只用调用脚本即可完成全部编译过程和邮件的发送工作。2. 依据编译通道繁忙程度就可以平衡编译服务器之间的编译量,能够保障在编译时找到性能较好的服务器进行编译;同时在多任务等待情况下能找到等待任务较少的服务器,减少等待时间。最大编译数可以根据实际的编译服务器性能和网络状态进行调整,以达到较高编译服务器的使用率和编译效率。3. 采用分布式系统构建该系统,所有机器通过网络逻辑上相连。保障部分客户机或者编译服务器发生故障时,系统能正常运作;在该模式下模块之间相互独立,用户使用时不会对其他用户产生影响。3.2 B/S模式自动编译系统的生成方法在自动编译的生成过程中我们必须把它的各个小模块的功能实现,下面是在系统中一些必须的模块。1.电子邮件的发送模块:电子邮件服务作为Internet上应用最多和最广的服务项目得到了非常广泛的应用,在网络应用中也起到非常重要的作用。如同其他的网络服务,电子邮件系统也有其使用的传输协议,包括SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)、POP(Post Protocol,邮局协议)和IMAP(Internet Message Access Protocal,消息访问协议)等,这些协议应用于电子邮件的发送和接收。一些邮件处理软件如OutLook Express和FoxMail等就是按照SMTP和POP3 协议结合Windows Sockets套接字进行来收发邮件的。本文以SMTP协议为研究对象,在Visual C+ 6.0编程环境下按照SMTP协议通过套接字发送SMTP命令,接收并处理邮件服务器的反馈信息,从而实现对电子邮件的发送。 SMTP协议通讯模型SMTP协议是TCP/IP协议族中的一员,主要对如何将电子邮件从发送方地址传送到接收方地址,也即是对传输的规则做了规定。SMTP协议的通信模型并不复杂,主要工作集中在发送SMTP和接收SMTP上:首先针对用户发出的邮件请求,由发送SMTP建立一条连接到接收SMTP的双工通讯链路,这里的接收SMTP是相对于发送SMTP而言的,实际上它既可以是最终的接收者也可以是中间传送者。发送SMTP负责向接收SMTP发送SMTP命令,而接收SMTP则负责接收并反馈应答。可大致用下面的通讯模型示意图来表示:SMTP协议的命令和应答从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话 是靠发送SMTP的 SMTP命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反复多次,直至邮件处理完毕。SMTP协议共包含10个SMTP命令,列表如下:SMTP命令命令说明HELLO domain CRLF识别发送方到接收SMTP的一个HELLO命令MAIL FROM:reverse-pathCRLF reverse-path为发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。RCPT TO:forward-pathCRLF forward-path标识各个邮件接收者的地址DATA CRLF 接收SMTP将把其后的行为看作邮件数据去处理,以CRLF.CRLF标识数据的结尾。REST CRLF退出/复位当前的邮件传输NOOP CRLF要求接收SMTP仅做OK应答。(用于测试)QUIT CRLF要求接收SMTP返回一个OK应答并关闭传输。VRFY string CRLF 验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令。EXPN string CRLF 验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。HELP CRLF查询服务器支持什么命令注:CRLF为回车、换行,ASCII码分别为13、10(十进制)。SMTP协议的每一个命令都会返回一个应答码,应答码的每一个数字都是有特定含义的,如第一位数字为2时表示命令成功;为5表失败;3表没有完成。一些较复杂的邮件程序利用该特点,首先检查应答码的首数字,并根据其值来决定下一步的动作。下面将SMTP的应答码列表如下:应答码说明501 参数格式错误502 命令不可实现503 错误的命令序列504 命令参数不可实现211 系统状态或系统帮助响应214 帮助信息220domain服务就绪221 domain服务关闭421 domain服务未就绪,关闭传输信道250要求的邮件操作完成251 用户非本地,将转发向forward-path450 要求的邮件操作未完成,邮箱不可用550 要求的邮件操作未完成,邮箱不可用451 放弃要求的操作;处理过程中出错551 用户非本地,请尝试forward-path 452 系统存储不足,要求的操作未执行552 过量的存储分配,要求的操作未执行553 邮箱名不可用,要求的操作未执行354 开始邮件输入,以.结束554 操作失败其最基本的功能:1.本发送和接受邮件的功能。2.实现通信功能。3在以上基础上尽量实现发送附件的功能。4.程序还应可以判断整个过程是否能正常运行,如果不正常运行,必须给出错误信息。2.各模块之间的Socket通信模块:通过Socket通信,在它们之间也有很多的规范。 Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套Windows Sockets规范的网络软件,我们称之为Windows Sockets兼容的,而Windows Sockets兼容实现的提供者,我们称之为Windows Sockets提供者。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到现Windows Sockets兼容。任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口。我们称这种应用程序为Windows Sockets应用程序。 Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口. 应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图3-2。图3-2 Socket通信分布图3、TCP/IP 体系结构与特点(1.)TCP/IP体系结构 TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输层服务,而IP则是提供网络层服务。TCP/IP包括以下协议:(结构如图3.3)图3-3IP: 网间协议(Internet Protocol) 负责主机间数据的路由和网络上数据的存储。同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及这一层ARP: 地址解析协议(Address Resolution Protocol)此协议将网络地址映射到硬件地址。RARP: 反向地址解析协议(Reverse Address Resolution Protocol)此协议将硬件地址映射到网络地址ICMP: 网间报文控制协议(Internet Control Message Protocol)此协议处理信关和主机的差错和传送控制。TCP: 传送控制协议(Transmission Control Protocol)这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。UDP: 用户数据报协议(User Datagram Protocol)这是提供给用户进程的无连接协议,用于传送数据而不执行正确性检查。FTP: 文件传输协议(File Transfer Protocol) 允许用户以文件操作的方式(文件的增、删、改、查、传送等)与另一主机相互通信SMTP: 简单邮件传送协议(Simple Mail Transfer Protocol)SMTP协议为系统之间传送电子邮件。TELNET:终端协议(Telnet Terminal Procotol)允许用户以虚终端方式访问远程主机HTTP: 超文本传输协议(Hypertext Transfer Procotol)TFTP: 简单文件传输协议(Trivial File Transfer Protocol)(2.)TCP/IP特点 TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中实现。因此用户一般不涉及。编程时,编程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内实现,后者为核外实现。用户服务要通过核外的应用程序才能实现,所以要使用套接字(socket)来实现。图3-4是TCP/IP协议核心与应用程序关系图 图3-4客户机/服务器模式在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:(过程如下) 1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。2、等待客户请求到达该端口。3、接收到重复服务请求,处理该请求并发送应答信号。5、关闭服务器。客户方:1、打开一通信通道,并连接到服务器所在主机的特定端口。2、向服务器发送服务请求报文,等待并接收应答;继续提出请求3、请求结束后关闭通信通道并终止。下面是三种过程图:(1.)面向连接的套接字的系统调用时序图图3-5(2.)无连接协议的套接字调用时序图图3-6(3)面向连接的应用程序流程图图3-7以上这三种过程图是在本系统中用到的。4.VSS在系统中的软件的运用:VSS概述 版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。在软件开发和您需要比较两种版本的文件或找回早期版本的文件时,源代码的控制是非常有用的。Visual SourceSafe 是一种源代码控制系统,它提供了完善的版本和配置管理功能,以及安全保护和跟踪检查功能。VSS通过将有关项目文档(包括文本文件、图象文件、二进制文件、声音文件、视屏文件)存入数据库进行项目研发管理工作。用户可以根据需要随时快速有效地共享文件。文件一旦被添加进VSS,它的每次改动都会被记录下来,用户可以恢复文件的早期版本,项目组的其他成员也可以看到有关文档的最新版本,并对它们进行修改,VSS也同样会将新的改动记录下来。你还会发现,用VSS来组织管理项目,使得项目组间的沟通与合作更简易而且直观。VSS可以同 Visual Basic、Visual C+、Visual J+、Visual InterDev、Visual FoxPro 开发环境以及 Microsoft Office 应用程序集成在一起,提供了方便易用、面向项目的版本控制功能。Visual SourceSafe 可以处理由各种开发语言、创作工具或应用程序所创建的任何文件类型。在提倡文件再使用的今天,用户可以同时在文件和项目级进行工作。Visual SourceSafe 面向项目的特性能更有效地管理工作组应用程序开发工作中的日常任务。1.1 VSS中的文件当你要修改某个文档时,需要先从数据库中将它签出(check out),或者告诉VSS你要编辑该文档。VSS会将该文档的副本从数据库中拿到你的工作文件夹(working folder)中,你就可以修改你的文档了。如果其他用户再想对同一文档进行修改,VSS会产生一个信息,告诉他,该文档已被签出(check out),从而避免多人同时修改文档,以保证文档的安全性。当你完成修改之后,需要将文档 签入(check in)VSS。这个操作从你的工作文件夹(working folder)中复制被你修改的文档,并将它放回VSS数据库,以便其他用户能够及时看到文档的改动。VSS能够保存文档的所有改动,并显示最新版本,同时早期版本也会被跟踪记录下来。VSS对反增量技术的运用,仅需要用很少的磁盘空间就能使得用户获取文档的所有版本。如果你没有修改文档,你可以执行撤消签出(undo check out)命令,文档将被保存为被签出(check out)之前的状态。如果你只需读取某一文档而并不需要编辑它,你可以执行取出(get)命令,将文档放入你的工作文件夹,再选择查看文档(view),来查看你的文档的最新版本。1.2 VSS中的项目项目(project)是指用户存储在VSS数据库中的所有文件(file)的集合。用户可以在项目之间或项目内部实现文件的添加(add)、删除(delete)、编辑(edit)、共享(share)。一个“项目(project)”在很大程度上类似于一个普通系统的文件夹,不同的是它能更好地支持文件合并(merge)、跟踪(archive)和版本控制(version control)功能。文件保存在VSS数据库中的项目(project)里。你无须管理存储在VSS 中的文件正本,除非你要检查或与其它拷贝进行比较。VSS为每一位用户提供了一份备份文件放入工作文件夹(working folder),供用户对文件进行查看与编辑。尽管没有工作文件夹也可以查看文件,但要想真正实现对文档的处理,必须建立工作文件夹。1.3 VSS的版本控制功能VSS能够保存文件的多个版本,包括文件版本之间每一处微小的变动。版本控制有以下几方面的内容:l 组内合作在缺省的情况下,一般一个文件在某一时间只允许一个用户对其进行修改,这样可以防止文件意外地被其他用户改动或者覆盖。但管理员可以改动这种缺省的设置,允许文件多层签出。这种设置也能防止过多的、不必要的改动。l 版本追踪VSS能够对源代码和其他文件进行存储和早期版本的追踪,从而实现重建文件早期版本等有关功能。l 跨平台开发在多平台开发的情况下,版本追踪用于维护核心代码。 代码的再使用 追踪程序基准使得代码可重用。1.4 文件的拆分和共享在VSS中可以实现一个文件被多个项目共享(share)。在一个项目中对文件的改动可以自动反映到其他共享的项目中去。这正提倡了代码重用。在file菜单中的properties中,点击link,可以查看某一文件的共享情况。拆分(branch)是将文件从原来共享的项目中分离出来的过程。它使得VSS可以实现从不同的路径追踪文件。拆分文件就断开了共享连接,使得本项目中的文件与其他原来共享的项目无关。对此文件的修改将不会再反映到其他项目上。拆分是这样被建立的:两个文件以前有着共同的历史记录,从实现拆分开始,他们的历史记录将被VSS分别追踪。拆分文件之后,link按纽将不再显示已断开的连接,但你可以用path(file菜单中的properties项)按纽浏览拆分的历史记录。共享(share)文件就是在多个项目间建立文件的连接。拆分(branch)文件就是在项目之间建立了不同的文件路径。1.5 工作文件夹(working folder)VSS是存储和管理文件的工具,但是编辑和编译文件必须在VSS指定文件夹中进行。这个文件夹叫工作文件夹,它可以是现存的文件夹,也可以是VSS新建的文件夹。VSS浏览器在文件列表上方显示了文件的工作文件夹的路径。在VSS系统中,工作文件夹才是你真正用于处理文档的地方。当你要编辑或修改某个文档时,必须对文档实施check out 操作(详见3.3.5修改和编辑文件),VSS将该文档从项目中拷贝出来,放入你的工作文件夹。当你修改完毕并check in 文件之后,VSS又将文件重新拷贝到数据库中以记录你的修改。一旦你将文件签出,VSS就开始在你的本地机上创建并管理你的工作文件夹。每一个用户、每一个项目或每一台微机都可以有自己的工作文件夹。如果Joe在项目$/SpreadSheet和$/WordProcessor上工作,他就有相应的2个不同的工作文件夹。如果Hanna在同样的项目上工作,对于每一个项目她又有自己的工作文件夹。当你为某个项目设置了工作文件夹,你可以用它来放置你该项目中包括子项目再内的所这些都是在自动编译系统中所必须用到的。5.对客户端的请求的编译限制:系统允许最多同时进行5个软件编译,当申请人数超过5人时,自动排队待先编译的完成后。以上的程序都字附录里。第四章 基于B/S模式的自动编译系统的设计4.1设计基于B/S模式的自动编译系统的总体思路以下面的这个框架为总体思路: 4-1 系统流程图然后根据此框架的要求对其要求的功能一步步去实现,最终达到符合现状的软件自动编译系统、它所具有的功能和性能:功能:1.客户端的主要功能2.查询功能:3.查询用户能够编译的项目名等信息。3.申请编译功能:1)在项目列表中选择用户要编译的项目。2)显示一张表格,用户需在表格中详细填写项目路径,项目4. 服务器端的管理软件1)打label:根据输入的项目信息对相应的项目代码位置打上符合规范的label。2)编译:调用编译脚本进行编译,并生成符合命名规范的二进制文件。3)发送:能够将生成的二进制文件用rar压缩,并由内部邮箱发送至软件接收人(包括申请人和配置管理员)4)保存信息:将压缩后的二进制文件存放在固定目录下,并保存编译信息,包括编译项目名,路径,label,申请人,编译时间及编译是否成功的信息。性能:1.时间特性需求在网络连接正常的情况下,查询响应时间为秒级。2.灵活性当需求发生某些变化时,应用软件操作方式、数据结构、运行环境基本不会发生变化,变化只是将对应的数据库文件内的记录改变,或改变编译环境和项目权限。3. 可用性软件应该尽可能的一目了然,使一般用户能够使用。 4. 安全性本套自动编译软件系统所涉及的数据存放于数据库中,在程序中应尽可能的使用调用存储过程的方法以免使某人反编译软件后或入侵到服务器后对数据库的结构了如指掌,在程序中应该设置不同权限的人访问时的账户和密码。5. 可维护性5.1 应用程序的维护当用户使用本套自动编译系统软件时,遇到了软件本身的逻辑错误时,应当有软件的维护人员对软件进行修改;当用户遇到编译环境的错误时,应当由软件负责人对编译环境进行修改。5.2 数据库的维护应当有特定的数据库维护人员对数据库进行及时地进行备份,管理等操作,以保证数据库的安全性。6. 输入项用户通过软件输入必要的信息,然后保存到数据库,所输入的信息是经过需求分析限定的内容,同时也是数据库中每个字段中存储的内容。7. 输出项本套自动编译系统软件会将所有需要浏览的数据显示在屏幕上,以便使用户能够浏览到数据库中的数据或用户想要浏览范围中的数据。8.算法 1)将用户输入的数据,按字段保存到数据库中。2)将数据库中的数据,按字段提取到用户界面中。3)必要的去除重复项的算法。4)按条件修改、删除数据中的数据。5)保持表间数据的一致性。9.限制条件限制必要的条件,以排除由于用户的误操作造成不必要的错误。系统出错处理设计提交错误用户提交信息错误,导致系统找不到相应参数进行编译,则仅将打印信息用邮件发送给申请人。编译环境错误用户提交申请后,因编译环境有误导致编译未完成,则仅将打印信息用邮件发送给申请人。4.2 设计基于B/S模式的自动编译系统的测试与数据分析4.2.1 测试使用的设备与仪器设备与仪器:通过使用硬件配置:PC机1台软件配置:操作系统 Windows XP,DBMS:SQL Server,开发工具:Visual Studio。从而来实现编译的自动化及与平台无关性。客户端的运行环境:Windows xp、IE6及以上的浏览器(或其他浏览器)。服务器端的运行环境:Windows xp4.2.2测试结果的分析通过在客户端的请求,在WEB服务器对其判断,再在应用服务器中对其响应并从VSS软件中调用发送出要编译的文件,然后辨别是是windows编译服务器还是Linux编译服务器,并把编译的结果发送在后台服务器,最后以邮件的方式把编译的结果发送到客户的邮箱里。最后看上面的环节是否都运行成功,如果不成功则把错误打印以邮件的方式发送给申请人。并把出现错误的地方进行修改,使其能正确的运行。编译终止时,服务端会保存编译信息到日志文件中,将编译终止信息保存到数据库便于后来分析,同时将编译好的软件通过邮件发送给用户。第五章 结论与展望 通过不断的努力终于使基于B/S模式的自动编译系统成功的运行。在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品。达到了预期的目的,在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用。相互学习、相互讨论、研究,终于完成了最初的设想。虽然我们刚刚开始都对软件都不太懂,程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同组员的讨论,理清了思路,反而得心应手。但是通过自己的不断学习,终于把遇到的各个困难克服解决。并使我们以后再以后的日子里对软件的学习奠定了基础,同时对以前的知识有了进一步的提升。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次设计中学到了很多很多东西,这是最重要的,同时对我们各方面的进步有很大的帮助。希望我们在以后的学习和工作中,能够以一颗平常的心,去学习和工作。使得自己在这条路上能够走的更远。致 谢感谢学校给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。大学四年生活即将结束,回顾这几年历程,老师们给了我们很多指导和帮助。他们严谨的治学,优良的作风和敬业的态度,为我们树立了为人师表的典范。在此,我对所有教过我的老师表示感谢,你们传授的专业知识是我不断成长的源泉也是完成本论文的基础,祝你们身体健康,工作顺利! 参考文献和书目 【1】 版本控制软件的现状,各软件之间的优势劣势 【2】 各操作系统平台之间的通信过程及邮件协议的应用【3】 HTML语言的理解和运用;【4】 IIS的了解和A编程方式的运用【5】 网页编程语言的熟练运用【6】 数据库的运用【7】 陈禹,梁昌勇,信息系统分析与设计,高等教育出版社,2005年 【8】 计算机软件工程规范国家标准汇编,中国标准出版社,1998年【9】 C及C+从入门到精通【10】 范剑波,郭健康 基于Web和三层C/S结构的DBCAI系统的设计与实现 计算机应用,2001,(4):4749.【11】 惠晓实,王凯航,陆舟等 一种基于Web技术的网络数据库系统的设计 计算机应用研究,2000,17(1):8486.【12】 钟乐海 罗明英 ASP技术在开发基于B/S模式数据库系统中的应用 四川师范学院学报 第23卷 第4期【13】 戴建华 基于ASP技术学校考试系统的开发于研究 甘肃科技 第22卷 第3期【14】 高质量 C+&C编程指南【15】 文东戈 B/S结构网上考试系统的设计于实现 黑龙江科技学院学报 第12卷 第4期【16】 王秋云 董健康 基于B/S的在线考试系统的设计于开发 计算机于现代化 2006年第5期 2011年4月6日附 录电子邮件的程序:C语言利用SMTP协议发送邮件 #ifdef WIN32#include #include #else130#include #include #include #include #include #include #include #endifstruct data6unsigned int d4:6;unsigned int d3:6;unsigned int d2:6;unsigned int d1:6;/ 协议中加密部分使用的是base64方法char con628(char c6);void base64(char *dbuf,char *buf128,int len);void sendemail(char *email,char *body);int open_socket(struct sockaddr *addr);int main()char email = chunpulee;char body = From: rnTo: licprnSubject: HellornrnHello World, Hello Email!;sendemail(email, body);return 0;char con628(char c6)char rtn = 0;if (c6 26) rtn = c6 + 65;else if (c6 52) rtn = c6 + 71;else if (c6 62) rtn = c6 - 4;else if (c6 = 62) rtn = 43;131else rtn = 47;return rtn;/ base64的实现void base64(char *dbuf, char *buf128, int len)struct data6 *ddd = NULL;int i = 0;char buf256 = 0;char *tmp = NULL;char cc = 0;memset(buf, 0, 256);strcpy(buf, buf128);for(i = 1; i d1);dbuf(i-1)*4+1 = con628(unsigned int)ddd-d2);dbuf(i-1)*4+2 = con628(unsigned int)ddd-d3);dbuf(i-1)*4+3 = con628(unsigned int)ddd-d4);if(len%3 = 1)tmp = buf+(i-1)*3;cc = tmp2;tmp2 = tmp0;tmp0 = cc;ddd = (struct data6 *)tmp;dbuf(i-1)*4+0 = con628(unsigned int)ddd-d1);dbuf(i-1)*4+1 = con628(unsigned int)ddd-d2);dbuf(i-1)*4+2 = =;dbuf(i-1)*4+3 = =;if(len%3 = 2)132tmp = buf+(i-1)*3;cc = tmp2;tmp2 = tmp0;tmp0 = cc;ddd = (struct data6 *)tmp;dbuf(i-1)*4+0 = con628(unsigned int)ddd-d1);dbuf(i-1)*4+1 = con628(unsigned int)ddd-d2);dbuf(i-1)*4+2 = con628(unsigned int)ddd-d3);dbuf(i-1)*4+3 = =;return;/ 发送邮件void sendemail(char *email, char *body)int sockfd = 0;struct sockaddr_in their_addr = 0;char buf1500 = 0;char rbuf1500 = 0;char login128 = 0;char pass128 = 0;#ifdef WIN32WSADATA WSAData;WSAStartup(MAKEWORD(2, 2), &WSAData);#endifmemset(&their_addr, 0, sizeof(their_addr);their_addr.sin_family = AF_INET;their
展开阅读全文