URN Logo
UNIX Resources » BSD » FreeBSD » FreeBSD China » 技术交流 » 352 » 给后来者:使用FREEBSD做开发的一些实现方式-I
announcement 声明: 本页内容为FreeBSD China的内容镜像,文章的版权以及其他所有的相关权利属于FreeBSD China和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
freebsdchina.org
  中文文档计划
  Chinese Ports 讨论
  初学指南
  技术交流
  设备驱动
  WEB服务
  Proxy服务
  JAVA平台
  软件发布
  休闲话题
  静语轩
  系统编程
  脚本编程
  内核开发技术
  网络安全
  mail系统
  X-Win系统
  信息交流
  历史-文化-设计-实现
  安装-配置-优化-安全
  中文-桌面-开发-调试
   
给后来者:使用FREEBSD做开发的一些实现方式-I
Subject: 给后来者:使用FREEBSD做开发的一些实现方式-I
Author: million    Posted: 2002-07-30 01:25:02    Length: 2303 byte(s)
[Original] [Print] [Top]
Warning:
警告:

1. LICENSE: BSD License
1、许可证:BSD许可

2、NOTICE: Under Freebsd/Linux, this document maybe including unreadable and blank area
2. 注意:本文章使用中文,可能在freebsd/linux下有乱码和空白

3、VERSION:0.1
3、版本:0.1



主要内容:

简要描述开发FREEBSD系统的一些经验和设计实现模式,希望有所反馈。

背景:
做了一段时间的FREEBSD的开发工作,以FREEBSD为开发平台和开发对象都有。拥有了一些经验和弯路,一并写出,希望大家有所获益。


A、开发环境

1、FREEBSD平台
1.1 FreeBSD 最小安装 + 所有的源码
1.2 安装ports目录环境
1.3 选择sh作为基本的shell,这样符合GNU编码标准
2、准备开发环境
2.1 cvsd;
2.2 apache;
2.3 postgresql;
2.4 autoconf;
2.5 automake;
2.6 emacs / vi.
3、启动开发环境,设置相应的CLIENT用户


B、开发开始

第一步:建立开发项目环境

1、建立project目录;
2、建立research目录;用来记录项目进程的问题分析、解决文档
3、建立doc目录;用来记录已经成型的系统设计文本;
4、建立GNU目录;用来存放基本的GNU文件、许可、README;
5、建立src0目录;用来编写最为原始的程序和实现测试程序;
6、建立src1目录;用来存放比较完整的库程序和程序;
7、建立src2目录;用来存放最终的产品程序。


第二步:实现系统分析

1、推荐选择首先设计开发系统的库文件:MySoftware API,这样开发软件比较容易,并且容易扩展;也容易让第三方开发自己的系统;
2、推荐设计测试程序,这样软件可以通过比较容易的方式进行测试,包括测试环境、测试负载、功能测试(宏测试),程序最好留出测试接口;
3、 采用GNU的编码标准,并且建立自己的编码标准,并且尽量进行提高;


第三步:协同开发(同步开发/异步开发)

1、采用local的cvs服务控制自己的开发进程,并且拥有私有记录,便于回溯;
2、利用网络的cvs服务器进行比较完整的程序的版本控制,并且可以协作;


第四步:项目测试

1、测试程序测试、宏测试;
2、测试环境测试;
3、实际环境测试;
4、压力环境测试。


第五步:项目打包、发布

1、采用*.tar.gz,可以包含源码,让更多的了解和参与;
2、写出可以顺利使用的交互式方式,例如:电子邮件;
3、指出你的项目帮助文档所在的位置。


To Be continoued ......
未完待续......
[Original] [Print] [Top]
Subject: II --- 第二章
Author: million    Posted: 2002-08-02 06:25:58    Length: 1499 byte(s)
[Original] [Print] [Top]
接上篇:


C、项目开发模版:

1、分析自己的项目;
2、寻找可以借鉴的开源项目源码;
3、寻找合适的开发工具;
4、充分利用win界面环境;
5、快速反馈的渠道;
6、充足的时间面对屏幕。


现在进行逐条的解释:

-1:对于项目进行分析,评价可行性和可用性,这样可以坚定信心,并且让项目拥有一个持续扩展的潜力;

-2:借鉴源码,可以让系统一开始就拥有一个比较成熟的结构,特别是可测试性,这个非常关键,往往成为下一阶段开发的灵感源泉和动力;

-3:合适的开发工具:对于开源项目来说,其实拥有非常多的开发工具可以使用(tons of ...),但是,选择是非常关键的,例如:cflow,sourcesight等等,需要开发者进行专业的选择;

-4:充分利用win界面:现阶段,很多的资源、联系方式,都通过win界面来进行,开发者也可以利用这些资源。通过ssh登陆,CVS提交,可以轻松的解决编码、编译、协作的问题,而不必处于一个不断变化的系统中;

-5:现阶段的反馈渠道经常变化,例如:电子信箱、论坛、IRC,聊天工具,开发者需要提供稳定而多样的反馈方式,否则导致反馈渠道不畅。


-6:进行开发,一定要拥有充足的时间面对屏幕,才能实现稳定的设计。一天耗费5-10个小时左右似乎比较普遍。



D、开发的一些技巧


1、宏功能和微功能( Macro Function and Micro Function )

在很多的情况下,我们的设计是基于宏功能的,而计算机的提供是微功能的,我们需要利用LIB的方式,将微功能组。合起来,实现宏功能,将宏功能组合起来,则形成我们所需要的软件。




未完待续……
to be continued .....
[Original] [Print] [Top]
Subject: II---第二章
Author: million    Posted: 2002-08-02 06:38:09    Length: 562 byte(s)
[Original] [Print] [Top]
接上篇


2、多进程并发操作

操作缓冲是非常重要的,可以显著的提高效率,可能需要设计几个缓冲层(越多越复杂);对于高负载的进程并发操作,我们可能需要利用汇编来保证原子级操作,并且具有最好的速度。


3、分布式负载

算法非常重要


4、过于复杂的系统

对于庞大的系统,分割成为清晰、简单的层次结构非常重要。此时,简单似乎占据上风(这是我们愿意看到的 :) )。使用分层(layer)的方式,是最好的解决方案。甚至系统的成败取决于分层设计是否正确。


未完待续……
to be continued.....
[Original] [Print] [Top]
Subject: II----第二章
Author: million    Posted: 2002-08-02 06:54:28    Length: 502 byte(s)
[Original] [Print] [Top]
接上篇


5、关于开发语言的选择

当然是C——允许有不同的观点。
以下仅仅是一些仅供参考的观点:
1、C++是不推荐的,主要是基于内存使用和运行的考虑;
2、对于CGI来说,使用C也是最好的选择。(也许不同的意见更多)。



6、程序设计,需要支持配置脚本

这样程序运行时,适用范围更广。
6.1拥有一个脚本库直接获得配置脚本的支持。
6.2如果是GUI界面,则需要对于这个脚本配置的工具程序



未完待续
to be continued......
[Original] [Print] [Top]
Subject: III----第三章
Author: million    Posted: 2002-08-06 01:09:59    Length: 1404 byte(s)
[Original] [Print] [Top]
E、系统开发的知识准备:

首先大致描述一下,细节待续

1、熟悉FREEBSD的系统数据结构。包括系统数据结构和网络相关的数据结构。
1.1 进程相关
1.2 I/O相关
1.3 Net相关

2、调整MAKE参数,支持相关的函数库,并且打开调试选项,可以更好的支持调试,并且简单通过make可以编译程序

3、参照系统设计,建立与系统进行I/O的LIB。

4、完善程序以构件模块为主,实现程序的更多扩展功能。

5、编译系统的选择:

5.1 对于大多数的项目,编译器系统几乎是任意的,但是选择一个稳定的编译器,对于项目也是非常重要的;
5.2 相信对于编译器、调试器的熟悉,也是一个成功项目的基础。

6、项目中间测试:

5.1 寻找典型的测试环境。这是非常重要的。在系统设计中,就需要这样的准备工作,并且保持这个测试环境的稳定,才能获得第一手的数据;
5.2 利用CVS进行测试版本的控制工作,防止测试版本的混乱;
5.3 虚拟测试环境(这是一个前卫的项目)

7、项目开发环境选择

7.1 推荐字符界面,相信大家喜欢一个干净的环境;
7.2 开发采用client/server的方式,也是一种较好的方案。Client采用win或bsd,在server上进行编译,在单机进行测试或者在server进行测试;
7.3 推荐开发者不要维护一个GUI界面,这样会浪费大量的时间。最好拥有一个独立的GUI测试平台;
7.4 相信一个reference目录是非常重要的。里面拥有的文档、书籍、例程在缺乏灵感的时候可以助你一臂之力,并且保持你的项目的标准。



未完待续
to be continued.......
[Original] [Print] [Top]
Subject: 建议整理成文发给我,我把它放到我们的专栏文章内。
Author: kinki    Posted: 2002-08-31 08:57:07    Length: 63 byte(s)
[Original] [Print] [Top]
Cool
[Original] [Print] [Top]
Subject: (空)
Author: netfayus#    Posted: 2002-08-31 15:54:33    Length: 102 byte(s)
[Original] [Print] [Top]
Laughing

不错。。很实用。。。谢谢
[Original] [Print] [Top]
Subject: (空)
Author: Fixend    Posted: 2007-01-18 16:44:31    Length: 22 byte(s)
[Original] [Print] [Top]
这东西居然沉了,顶上去.
----
三日不写程序则生活无趣。
[Original] [Print] [Top]
« Previous thread
问六:关于提示信息
技术交流
352
Next thread »
各位大虾帮帮忙,有关ADSL的问题
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2007-07-26 13:37:10, cost 0.016724109649658 ms.