项目迭代开发手记--文件分割存储用例的实现过程(1)

原创 2004年10月13日 13:37:00

  本文详细描述了在尝试使用极限编程在软件开发中的一个实现例子,在小步迭代开发中逐步的实现用例需要的功能,同时每个迭代都能集成实现的功能。

关键字 极限编程

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

在一次项目开发中我们开发组遇到了一个需求,该需求的要使用的技术是我们所不熟悉的,就是说在开发过程中我们必须逐步的掌握该项技术,同时希望能够尽可能的保持代码有好的结构,因为在不断增加功能的过程中,会让代码逐渐的变得复杂降低可阅读性。

 

该需求的用例很简单,就是把图档文件保存到数据库中,同时在需要时提取出来显示。但是有的图档文件会比较大,在向数据库提交过程中可能会有性能问题,还有图档文件格式的问题,(.bmp,.Jpeg)

小组讨论的时,大家提出了首先要对要保存的数据进行压缩,同时对较大的文件要分割成合适的块,这样提交到数据库中才不会有性能问题。这样提取图档文件过程中就得对分割压缩的数据进行解压和拼接才能获得原始数据,还有就是文件格式的转换问题。

该项功能我想对于熟悉的开发人员来说可能很简单,但是由于我们组的开发人员没有类似的开发经验,就不可能在一开始获得优良的设计,只能在不断的开发进程中改进你的设计,在以往的开发中我们尝试过小步迭代开发的好处,就是在不断累积中实现需求的功功能,同时减少过程中的挫折感——你的每一步都很好的实现了需求的功能,还能每日集成你的软件,实时掌握你的开发进度。

每次迭代实现认为优先级高的功能。

我们认为图档文件的保存和提取在开发中是优先级最高的,我们首先保证可以向数据库提交图档,同时可以提起图档。这样在我们完成这个功能后其它开发组就可以使用这项功能了(虽然会有因为图片太大保存和提取的效率问题,但是它是可以使用的功能了)。我们使用的开发工具是Delphi数据库是Oracle

 

迭代1:文件以二进制的形式保存到数据库中,然后再以二进制的形式从数据库中提取出来。

       通过查找资料后我们决定Oracle数据库使用Long Raw 类型的字段来保存二进制数据,Delphi里面使用TBlobField来把流装载都字段中向数据库提交。本文的例子简化了表的设计和使用简化后的代码

 

表的设计

字段名

字段类型

字段长度

字段说明

 

FID

Number

 

主键

 

F_NAME

VarChar2

50

文件名称

 

F_BINARY_DATA

Long Raw

 

二进制图档数据

 

 

 

 

 

 

 

 

 

 

procedure TForm1.Button2Click(Sender: TObject);

var

  OpenDialog: TOpenDialog;

  lFileFullName: string;

  lBlobStream: TMemoryStream;

begin

  lFileFullName := '';    

  OpenDialog := TOpenDialog.Create(Self);

  lBlobStream := TMemoryStream.Create;

  try

    OpenDialog.InitialDir := extractfilepath(Application.ExeName);

    if OpenDialog.Execute then

      lFileFullName := OpenDialog.FileName;

 

    if lFileFullName <> '' then

    begin

      lBlobStream.LoadFromFile(lFileFullName);

      ClientDataSet1.Append;

      ClientDataSet1.FieldByName('F_ID').Value := 2;

      ClientDataSet1.FieldByName('F_NAME').Value := lFileFullName;

      (ClientDataSet1.FieldByName('F_BINARY_DATA')
 as TBlobField).LoadFromStream(lBlobStream);

      ClientDataSet1.Post;

    end;

  finally

    OpenDialog.Free;

    lBlobStream.Free;

  end;

end;

 

这样就可以在向数据库提交图档数据了,这里图档文件先装载成流然后以二进制流的形式提交到数据库中的。

提取的方式就是

(ClientDataSet1.FieldByName('F_BINARY_DATA')
 as TBlobField). SaveToStream(lBlobStream);

这样就完成图档文件的保存和提取功能。由于对该项技术不熟悉实现该功能花了我们3小时时间。在下午下班的时候我们提交了可以使用的保存图档文件的程序。

 

项目迭代开发手记--文件分割存储用例的实现过程(3)

项目迭代开发手记--文件分割存储用例的实现过程(3)       上午的迭代2完成后,我们获得了一个有完整压缩流功能的实现代码,这次迭代完成的代码是可用的,我们在迭代2中完成了我们既定的任务。在下午的...
  • haozi
  • haozi
  • 2004年10月20日 21:53
  • 544

项目迭代开发手记--文件分割存储用例的实现过程(2)

项目迭代开发手记--文件分割存储用例的实现过程(2)   在第二天早上的开发中我们扩展了第一天迭代开发的用例,我们考虑增加了压缩流的功能,减少数据的存储负担。迭代2:用例:对向数据库提交的二进制流进行...
  • haozi
  • haozi
  • 2004年10月13日 16:05
  • 809

文件分割存储用例的实现过程(2)

在第二天早上的开发中我们扩展了第一天迭代开发的用例,我们考虑增加了压缩流的功能,减少数据的存储负担。迭代2:用例:对向数据库提交的二进制流进行压缩;那么从数据库提取的时候要进行解压操作,以获得原始图档...
  • lwjghhh
  • lwjghhh
  • 2004年10月22日 17:01
  • 537

文件分割存储用例的实现过程(3)

上午的迭代2完成后,我们获得了一个有完整压缩流功能的实现代码,这次迭代完成的代码是可用的,我们在迭代2中完成了我们既定的任务。在下午的小组讨论中,我们继续考虑下一阶段的迭代目标,由于没有决定图档文件的...
  • lwjghhh
  • lwjghhh
  • 2004年10月22日 17:02
  • 671

小项目组迭代开发流程

迭代开发流程,阶段可以分为: 迭代计划阶段: Backlog准备 对各个Story估时,确定交付的需求内容。 迭代开发流程,阶段可以分为: 迭代计划阶段: Backlog准备 对各个Sto...
  • chunyexiyu
  • chunyexiyu
  • 2016年07月14日 22:22
  • 553

文件分割存储用例的实现一

摘  要 本文详细描述了在尝试使用极限编程在软件开发中的一个实现例子,在小步迭代开发中逐步的实现用例需要的功能,同时每个迭代都能集成实现的功能。关键字 极限编程 在一次项目开发中我们开发组遇到了一个需...
  • lwjghhh
  • lwjghhh
  • 2004年10月22日 16:59
  • 639

迭代开发的典型特点

迭代开发是UP和大多数其他现代方法中的关键实践,在这种周期方法中,开发被组织成一系列固定的短期小项目,称为迭代,每次迭代都产生经过测试、集成并可执行的局部系统。每次迭代都具有各自的需求分析、实现和测试...
  • baidu_36586543
  • baidu_36586543
  • 2016年12月06日 11:08
  • 789

迭代开发 --读“程序员,不要让自己做兔子”

“程序员,不要让自己做兔子”中的情况,可能每个程序员都会遇到这种情况。但是一个职微言轻的程序员,如何能够改变这种情况呢?其实也遇到过这种情况,经理总在旁边催着交产品,但是只给了个别人的产品,说是照着做...
  • cccbuiler
  • cccbuiler
  • 2007年03月25日 23:36
  • 716

《IT项目经理成长手记》读后有所思

最近看了一本潘东、韩秋泉先生合著的一本书《IT项目经理成长手记》,虽然与IT项目经理相关的书我看的不多,对于这个行业了解也不算太多,但是我依然认为这是一本很值得想要从事互联网产品、通信行业解决方案管理...
  • u013816144
  • u013816144
  • 2016年06月20日 21:53
  • 3876

项目例子——随手记

介绍:          随手记可以手机记账,在线理财,上随手记网站,你可以更方便的去发现自己的财务漏洞。随手记,记账方便!生活场景设计,左手拿满东西,右手大拇指也能记完账。这次我们分享的是随手记的...
  • MYBOYER
  • MYBOYER
  • 2013年05月21日 08:27
  • 934
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:项目迭代开发手记--文件分割存储用例的实现过程(1)
举报原因:
原因补充:

(最多只允许输入30个字)