详细设计说明书.docx

上传人:b****6 文档编号:7726030 上传时间:2023-01-26 格式:DOCX 页数:13 大小:116.51KB
下载 相关 举报
详细设计说明书.docx_第1页
第1页 / 共13页
详细设计说明书.docx_第2页
第2页 / 共13页
详细设计说明书.docx_第3页
第3页 / 共13页
详细设计说明书.docx_第4页
第4页 / 共13页
详细设计说明书.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

详细设计说明书.docx

《详细设计说明书.docx》由会员分享,可在线阅读,更多相关《详细设计说明书.docx(13页珍藏版)》请在冰豆网上搜索。

详细设计说明书.docx

详细设计说明书

 

分布式文件收集备份系统

详细设计说明书

 

执笔者

xxx

日期

2014.7.2

指导教师

xxx

 

二○一四年六月二十八日

计算机科学与技术系

目录

1引言2

1.1编写的目的2

1.2背景说明2

1.3定义2

1.4参考资料3

2总体设计3

2.1功能规定3

2.2运行环境3

3系统实现----详细编程计划4

3.1程序流程图4

3.2主要模块4

3.3各个目录的情况简介5

4本项目用到的相关技术和知识点13

5涉及到的技术难点:

13

 

1引言

当今社会,人们的信息越来越多,也越来越重要,人们对信息的安全和保护的意识也越来越高。

为了能给人们的重要信息提供备份和保护,我们准备开发一套“分布式的文件收集备份系统”,这个系统包括服务端和客户端两大方面,客户端用来监控和发送信息,服务端用来接收和保护信息,这套系统将起到对重要文件的自动采集与备份的作用,让人们不再为重要信息的丢失而担心。

1.1编写的目的

本文档将对《分布式文件收集备份系统》软件开发详细设计进行描述,本文档的读者是程序员、项目策划、设计和评审人员。

1.2背景说明

a.待开发的软件系统的名称:

《分布式文件收集备份系统》

b.本项目的任务提出者:

本项目组

c.开发者单位:

河北工程大学科信学院计算机科学与技术1班

d.开发者:

王鹏,刘延召,陆桂华,姚晓媛,张荣荣

1.3定义

流程图:

表示生产过程中事物各个环节进行顺序的简图。

功能结构图:

将系统的功能进行分解,按功能从属关系表示的图表。

管理信息系统的各子系统可以看作是系统目标下层的功能,对其中每项功能还可以继续分解为第三层、第四层……甚至更多的功能。

1.4参考资料

[1]《Unix环境高级编程》------------------W.RichardStevens著

[2]《Unix网络编程,卷1》----------------W.RichardStevens著

[3]《C语言程序设计》-------------------BrianW.Kernighan,DennisM.Ritchie著

[4]《计算机网络·第五版》-------谢希仁著

2总体设计

2.1功能规定

功能简介:

在客户端实现对客户重要信息的监控和发送,客户端要保证监控到客户所有重要信息,不出错,保证对信息的传出速度要快,保证程序的健壮性,安全性。

在服务端实现对分布式客户端信息的采集,接收和备份保护,服务端要保证能够实现对N台客户端的负载,并发处理客户端的请求,提高对N台客户端的处理速度,保证程序的健壮性和安全性。

2.2运行环境

2.2.1设备

硬件最低要求:

内存256MB以上,硬盘40MB以上。

2.2.2支持软件操作系统及编程工具:

(1)linux操作系统

(2)gcc编译器

(3)vim编辑器

(4)支持makefile

(5)支持网络功能

3系统实现----详细编程计划

3.1程序流程图

以上是本次项目的程序的大致流程图,这是目前的设计状况,如果有需求变化,我们还可以改进

3.2主要模块

本系统将主要分为服务端和客户端两大模块,服务端与客户端运行时是独立的,互不干扰的,所以他们分别在不同的文件夹下,计划设计为如下:

-------------------------------------------------------------

有两个目录分别是:

(1)Client目录-------负责客户端的程序

(2)Server目录-------负责服务端的程序

还有一个目录:

sync_file---------负责日志文件的处理工作:

-------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------

3.3各个目录的情况简介

下面对各个目录的情况进行简要分析:

3.3.1client目录:

在client目录中,将会有以下文件:

——————————————————————————————

下面对这些文件的作用进行进行简要讲解:

(1)check_send_file.h中是对监控系统函数的定义,主要有以下函数的定义

——————————————————————————————

他们实现了监控系统的主要工作。

(2)监控系统的实现,将使用linux的inotify事件监控机制。

Inotify是文件系统事件监控机制,计划包含在即将发布的Linux内核中作为dnotify的有效替代。

dnotify是较早内核支持的文件监控机制。

Inotify是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。

使用inotify取代dnotify的原因有很多。

第一个原因是,dnotify需要您为每个打算监控是否发生改变的目录打开一个文件描述符。

当同时监控多个目录时,这会消耗大量的资源,因为有可能达到每个进程的文件描述符限制。

Inotify的使用并不是很难,所以我们借助它来实现我们的监控系统。

(3)check_send_file.c中是以上函数的实现。

函数的实现将在下一学期完成。

(4)send_file.h,它里面将定义用来打包和发送文件信息的函数。

它将主要有以下内容:

——————————————————————————————

Fill_packet()函数负责信息的打包,打包时会用到我们自定义的简单协议包。

Send_file()函数用来负责对信息的发送,它将用到x_socket.h中定义的接口函数。

在概要设计书中,已有信息打包和发送的过程,下面再次对信息的打包和解包进行简要介绍:

协议包的定义如下:

_________________________________________________________

||||

|packet_length|data_type|data|

||||

|---------------------------------------------------------|

Packet_length的数据类型是int型,在32位系统下,占4个字节

Data_type的数据类型是short型,在32位系统下,占2个字节

Packet_length的意思是整个包体的长度。

Data_type的意思是data的类型,Data_type主要有四种,分别是:

TYPE_FILE_NAME,代表文件名

TYPE_FILE_SIZE,代表文件的大小

TYPE_FILE_CONTENT,代表文件内容

TYPE_FILE_END,代表文件结束

下面列举一个完整的打包发送,和解包的过程,让大家了解打包发送信息的流程。

比如,一个名称为file.txt的文件,其中的内容是“hello”。

那么,将这个文件发送到服务器的步骤是(注意:

我们每次向服务器发送内容,都是先将信息打包再发送,让后在服务器端,会有相应的方式解包):

a.将“file.txt”打包,打包后整个包体的内容包括:

packet_length,data_type和data。

packet_length的值是4加2再加上“file.txt”所占的字节数

data_type的值是TYPE_FILE_NAME

Data的值是“file.txt”

这样,信息“file.txt”就被打包好了,然后,会使用socket系列API,经过网络将其发送到服务器端。

当服务端收到这些信息后,它通过解包就会明白,它收到的这个信息是一个文件的文件名,服务端将会创建出子进程,让子进程去创建一个名为“file.txt”的空文件。

而父进程会继续监听其它客户端的连接。

b.将文件的大小发送过去,文件的内容是“hello”,文件的大小便是“hello”所占的字节数,假如是大小N。

将数字N打包后整个包体的内容包括:

packet_length,data_type和data。

packet_length的值是4加2再加上数字“N”所占的字节数

data_type的值是TYPE_FILE_SIZE

Data的值是“N”

这样,信息“N”就被打包好了,然后,使用socket系列API,经过网络将其发送到服务器端。

当服务端收到这些信息后,它通过解包就会明白,这是文件的大小,这样服务器就知道了它要备份的文件的大小。

c.将文件的内容发送过去,文件的内容是“hello”

将“hello”打包后整个包体的内容包括:

packet_length,data_type和data。

packet_length的值是4加2再加上“hello”所占的字节数

data_type的值是TYPE_FILE_CONTENT

Data的值是“hello”

这样,信息“hello”就被打包好了,然后,使用socket系列API经过网络将其发送到服务器端。

当服务端收到这些信息后,它通过解包就会明白,这是文件的内容,内容是“hello”,这时服务端就会将此内容写在刚才建立的名为“file.txt”的空文件中。

d.发送一个结束标志--TYPE_FILE_END,表示这个文件的全部信息已经发送完。

发送结束标志只发送包头即可,因为没有内容,也就没有包体。

此次要发送的包的内容包括:

packet_length,data_type

(注意,这里没有data)

packet_length的值是4加2

data_type的值是TYPE_FILE_END

当服务端收到这些信息后,它通过解包就会明白,一次完整的文件接收备份过程已经完成。

此时,服务器将释放本次工作用到的相关系统资源。

以上详细说明了一个文件在客户端打包发送,并在服务端进行解包备份的全过程。

这四步全部完成后,表示整个文件的所有信息发送完毕,这样一个重要的文件也就成功的备份到服务端。

(5)send_file.c,这里边将是以上函数的实现,下学期,我们将会对其进行实现。

(6)x_socket.h,我们将对socket系列API进行封装使用,这里是socket系列函数封装后的定义,它会完成客户端与服务端的连接,信息发送与接收,和网络优化等工作。

它的内容将会是如下:

——————————————————————————————————

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。

要学Internet上的TCP/IP网络编程,必须理解Socket接口。

Socket接口设计者最先是将接口放在Unix操作系统里面的。

如果了解Unix系统的输入和输出的话,就很容易了解Socket了。

网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。

Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。

关于linux/unix平台下的网络编程相关内容,我们主要参考了《Unix网络编程》本书,有兴趣学习,或想了解的同学,可以参考这本书。

(7)x_socket.c,这里将是以上函数的具体实现,我们将在下一学期完成。

(8)client.c,这里是整个客户端程序的逻辑流程,最后的客户端可执行程序,就由它来生成。

具体实现,我们将在下一学期完成。

(9)makefile,makefile文件会把整个项目的所有文件的逻辑关系,和依赖关系及编译方法,写清楚。

Makefile可以很复杂,也可以很简单。

具体的实现,我们下一学期,视情况而定。

以上,是client目录的情况,下面介绍server目录的情况。

3.2.2Server目录情况简介:

——————————————————————————————

——————————————————————————————

下面对各个文件进行简单介绍:

(1)x_socket.h和x_socket.c在介绍client目录时,已经介绍,它们的作用是对socket系列函数的封装和使用,负责网络和网络优化的工作。

这里不再做过多的介绍。

(2)recv_file.h,它负责接收客户端发来的信息,并解包和备份文件。

它的主要内容将主要有以下内容:

——————————————————————————————

——————————————————————————————

recv_file.c,它里边是对recv_file.h头文件中内容的实现,我问将在下一学期给出集体的实现过程。

(4)my_lib.h中是一些辅助处理细节的函数,比如守护进程的编写,等等。

(5)my_lib.c中是对my_lib.h中所定义的内容的实现,具体实现,我们将在下一学期给出来。

server.c,这里是整个服务端程序的逻辑流程,最后的服务端可执行程序,就由它来生成。

在它里边会有“并发服务器”的实现过程,能够同时为N台客户端服务,提高服务器的负载能力。

具体实现,我们将在下一学期完成。

(7)makefile,makefile文件会把整个项目的所有文件的逻辑关系,和依赖关系及编译方法,写清楚。

Makefile可以很复杂,也可以很简单。

具体的实现,我们下一学期,视情况而定。

3.2.3sync_file目录的情况如下:

其实就是一个小型的日志库,

——————————————————————————————

——————————————————————————————

本目录的内容,重要负责日志系统的相关实现,负责记录整个系统的运行情况,用户可以通过查看日志文件的内容,来了解系统的运行情况,系统是否出错等信息。

在客户端与服务端都会这个日志库,来分别记录客户端与服务端的运行情况。

一个稍微大型的日志库设计,就是一个不小的项目,需要顾及到很多方面。

在正真的工作当中,可能也不需要自己来编写日志库,因为有现成的或开源的日志库可用。

但也可能现有的日志库的性能不是太好,因为它是开源的,我们也可以根据下需要,去修改它,来方便自己的使用。

我们编写的这个小日志库,会实现最基本的日志需要,如果时间充足的话,我们可以再扩展这个日志库,使其能够应对更加多变的情况。

目前,这个小日志库的设计如下:

——————————————————————————————

以上是主要的日志函数的定义。

在x_log.c中将是以上函数的具体实现,详细的实现的过程,将在下一学期给出。

3.2.4配置文件

除了以上的内容,还有一个模块是配置文件的模块。

配置文件是在系统运行之前,用户对系统的配置,客户端与服务端都将会有配置文件。

常用的配置文件的格式主要有ini格式的,xml格式的,和json格式的等。

我们将选择其中一种来实现配置文件。

客户端需要的配置项主要有:

(1)服务器的ip地址。

(2)所监控的目录。

(3)日志文件存放的地方等。

服务端需要的配置项主要有:

(1)接收到的客户端的文件的存放的地方。

(2)日志文件存放的地方等。

下一学期,我们会给出配置文件的具体实现。

说明:

因为我们这套软件是在linux系统下做的开发,而在linux平台,大部分的操作都是命令行的,所以不需要有什么界面,因此,我们的这套系统,也没有设计什么用户界面,只需要在命令行中敲入简单的命令即可使用。

4本项目用到的相关技术和知识点

(1)c语言程序设计

(2)linux/unix开发平台的运用

(3)makefile的编写

(4)多进程程序的开发

(5)linux/unix文件目录的操作

(6)信号的控制和使用

(7)S/C模式的应用软件开发

(8)并发服务器的编写

(9)守护进程原理及其编写

(10)socket网络编程

(11)日志系统编写

(12)监控系统

(13)简单的引用层协议的设计

(14)配置文件编写

5涉及到的技术难点:

(1)怎样让一个服务器去应付成千上万的客户端的连接,怎样让服务器能够承受更大的负荷压力?

(2)怎样可以对网路的传输速度进行优化,使得文件在传输的过程中更快?

(3)怎样让服务器更加健壮,能够应付多样的突发事件,怎样编写高性能服务器?

(4)怎样让CPU的利用率降下来?

即让我们的程序占用最少的系统资源,去完成更多的工作?

(5)怎样保证客户端程序的健壮性,保证监控系统的健壮性?

(6)等等

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1