分类:
2007-07-22 12:27:54
一、项目名称:apex-server-ftp
二、项目简介:
apex-server-ftp 是一个开源的FTP服务器项目,是为我在Linux、网络协议、SOCKET等方面学习的一个综合实践,同时也作为我2008年本科毕业的的毕业设计。
我计划用一些简单的软件工程方法来开发这个项目。一方面由于我对服务器模型和FTP协议并不是很精通,另一方面对我个人而言,这个FTP server项目规模也比较大,而如果使用线性顺序模型开发方法对个人软件的技术要求太高,所以我选用了演化软件过程模型中的增量开发模型方法,首先进行核心框架的开发,然后逐步的建立并加入各种功能模块。
三、项目计划:
开始时间:2007年7月24日(由于在这之前,已经搜集了部分关于FTP协议和服务器模型的相关资料,所以对于资料搜集工作不再项目计划之中罗列,使用需要时进行的方法)。
结束时间:2008年1月(在这个时间内,完成的工作不包含试用、发布等工作)。试用、发布与改进的工作主要是在这个时间以后,到2008年6月之间,而这个结段,我本人主要是在找工作以及实习的结段,所以很难有时间来做这个工作,这是选用这个结段的原因。
<1>项目分析学习结段:由于我对FTP协议、服务器模型以及SOCKET通信了解尚浅,所以加入本结段,为项目开发做足准备工作。
<2>项目过程分析与抽象:这个结段是对项目分析的总结,分析功能,对FTP服务器的工作过程进行模拟使用,从这个过程中抽象出系统所需要的各个对象以及这些对象要做的工作,并对对象内部进行简单设计。本结段在整个项目开发中最为重要。
<3>对象内部分析与外部关系分析:分析对象内部的主要属性和方法,并分析各个对象之前的关系。本结段在项目中也非常重要。
<4>类化和类的详细设计:对象归类,设计出系统的类层次。生成类层次模型。进行类内部的详细设计,生成各个类模型。
<5>框架设计:主要的框架设计,对类也主要是生成框架,只实现很少一些必须的属性和功能,这一部分要进行编码.
<6>编码:增量开发模型方法主要体现在这一个结段,在这个结段,对编码的实现采用增量模型的编码设计方法,利用生成好的框架,对类具体内部加入一些属性和方法,以实现对应的功能,并进行相应的测试(主要是排除语法错误、异常以及具体功能实现的测试),完善此功能后,对这个过程进行迭代,逐步实现各种功能。
<7>测试:项目的各个功能已完成,具体的功能测试在编码结段也进行了,这个结段的测试主要是功能测试的检查、边缘值测试和各个功能关系的测试,由于自己对测试方面没有经验,测试与测试方法的学习共同进行。
<8>安全性检查:利用一些攻击手段对服务器进行攻击入侵,然后分析并针对此问题进行反攻击的设计,加以完善服务器在安全性上的要求。
<9>基本文档的生成:这个结段主要进行文档整理,写出较为专业的文档。
<10>发布、试用与改进:由于当今网络中有很多优秀的FTP服务器,对本项目的发布(试用版)上主要针对于想对FTP服务器进行学习的专业程序设计人员,试用暂时也主要针对这些人群。还包括对文档的进一步完善。
具体的说明:
由于没有项目经验,很难去估算出各个结段需要的时间,所以在项目进行之前,不对各个结段时间进行要求,但对于项目的大体时间还有有计划的。
对于第一个结段,分析学习的时间不能超过2个周,要赶在8月8日之前完成这一结段的所有工作。
项目过程分析与抽象结段在整个项目中的地位是很重要的,但由于缺乏项目的经验所以很难完成好这个工作,所以这个结段的时间能太长,1个周,这一周里完成FTP服务器工作过程的分析、系统各对象的抽象,找出各个对象在FTP服务器中所要做的工作,完成由工作过程到对应对象的抽象,然后对对象进行分类归并,还要在网络上搜集一些已完成的FTP服务器成功案例,用以完善本项目的分析工作。
对象内外部分析主要对上一个结段抽象出的对象进行具体化,生成一些较为形象的对象,对对象内部的属性和方法的描述,找出对象之间的关系,形象化的对象可以用pseudocode(伪码)的方式进行描述://对象完成的工作是什么。。 //由工作抽象出的对象的构成(当然对应一个类,其它具体的方法不进行实现,只写出方法接口,实现在不在些结段),如下: class example_of_object { 抽象出的功能: functionname_1 { 描述这个方法实现了对象的哪个工作。。。 抽象出功能需要的属性: int data_1; //这个属性在对象工作中的作用。。。 int data_2; //这个属性在对象工作中的作用。。。 char data_3; //这个属性在对象工作中的作用。。。 } functionname_1 { 描述这个方法实现了对象的哪个工作。。。 抽象出功能需要的属性: int data_1; //这个属性在对象工作中的作用。。。 int data_2; //这个属性在对象工作中的作用。。。 char data_3; //这个属性在对象工作中的作用。。。 } 。。。 抽象出的属性://各个功能中属性集合的并集; int data_1; //这个属性在对象工作中的作用,这个属性在哪个功能中会出现。。。 int data_2; //这个属性在对象工作中的作用,这个属性在哪个功能中会出现。。。 char data_3; //这个属性在对象工作中的作用,这个属性在哪个功能中会出现。。。 关联的对象: 对象1:与这个对象的关系(不只是指继承关系,还有其它的一些关系,如另一个对象 要使用本对象中的一些属性,需要本对象中一些值等等); 对象2:与这个对象的关系(不只是指继承关系,还有其它的一些关系,如另一个对象 要使用本对象中的一些属性,需要本对象中一些值等等); 对象3:与这个对象的关系(不只是指继承关系,还有其它的一些关系,如另一个对象 要使用本对象中的一些属性,需要本对象中一些值等等); };
类化和类的详细设计这个结段主要是对上一结段结果进行建模,生成两个模型:一个是项目中类的层模型,另一个是项目中每个类的内部设计,本结段生成类内部属性和方法,但对方法不进行实现。
框架设计实现对FTP服务器的运行,这个结段也很重要,主要是实现服务器模型和一些类的对象化,写出一些代码来让FTP服务器运行起来,会实现一些类,并对类内部的部分属性和方法进行实现。这个过程只实现很少一部分的类和类内部属性和方法,主要是使FTP服务器能够运行起来。
对于以上结段实现了一个简单的可运行的服务器,但不能算是一个FTP服务器,而这个服务器是一个FTP服务器的原型,以后的结段(编码、测试等等)都是对这个原型的扩充,使这个原型一步一步的加入FTP服务器的各种功能,来完善这个FTP服务器,来完成apex-server-ftp这个program。