Transcript 开源软件开发实践
开源软件开发实践 高雅 00448017 黄顺平 00448261 项目介绍 网络问卷调查/分析 系统 网络调查问卷的撰写、 发布、回收、统计分 析的综合系统 “泰兆基金” 项目 目前已用于学校教务 的网上教学评估 项目介绍 名称PAPO 提供不同于纸质问卷 全新调查形式,网络上 无形的paper. 来源:papyrus 解释:PAPO,a paper online. 采用php编写 php+mysql,天生开源 支持sybase数据库 程序开发 开发语言/数据库的选择 组织分工 软件结构设计 代码风格 开发流程 版本控制 BUG管理 开发语言/数据库的选择 适合网页形式,存储大量数据 尽量避免版权/费用问题,开源 php vs asp mysql vs SQL Server 简单,易于上手,可用资料多 网页脚本语言(php,jsp,asp) 数据库(MySQL, PostgreSQL, SQL Server) php vs perl/jsp 最终选择 — 所谓LAMP开发框架 Linux-Apache-MySQL-PHP, support sybase 妥协:MS windows 组织分工 充分利用每个人的优势 — “扬长避短” 每个人熟悉的技术不同:PHP,SQL,XML,HTML, CSS,Javascript… 分工尽量侧重自己熟悉的方面 开发经历 设计数据库/软件结构 — “统一调度” 制作过网页-CSS/HTML/Javascript 接触过数据库-SQL/XML 集中讨论商定 中途个人不得擅自更改,除非讨论商定 按功能模块化 — “各自为战” 联系紧密的模块交由一个人负责 模块间接口尽量统一 软件结构设计 阅读代码,向“大牛s” 学习 Wordpress, Discuz! ,Xoops 学习代码风格/组织结构 在保证功能前提下,尽量兼顾低版本 尽量使用php默认库,而非可选库 模块划分 技术层—做成Library,要统一 数据库访问,XML解析,图表生成 外观模版,sessions/权限控制 功能层—做成web页面,要灵活 基本功能:用户管理,问卷设计,答案统计,数据分析 定制功能:课程管理,流程控制,数据库对接 代码风格 文档结构高度统一 技术层Lib统一文件名 功能层web页,每个功能统一前缀 user_add.php, user_edit.php, user_update.php 目录结构 dbi.php, data_functions.php, system_ functions.php, template_functions.php --web功能页 --style目录,存储外观模版 --includes目录,存储Lib 代码制定统一标准 有一定原则 不限制(也难以限制)具体细节 代码风格 函数/变量的命名风格 函数名:小写字母、下划线 局部变量:小写字母、下划线 全局变量大写,统一前缀 $G_ENV,$G_TABLE 尽量不使用常量,用全局变量统一控制 get_result(), not getResult() $G_ENV["charset_html"], not “gb2312" Tab缩进 Include统一位于文件头 简单注释 开发流程 准备工作 需求调查 管理者:教务 使用者:学生、教师 定义“常量”——统一规则 开发语言,代码风格 设计框架 模块划分,组织分工 数据库结构 按照范式设计,避免冗余 给经常访问的表建立索引 开发流程(cont.) 分头编写 不同部分独立编写 阶段性的合并调试 展示自己成果 挑对方的不足 关键性备份 要修改公用lib时 有新进展时(可能会带来bug) 开发流程(cont.) 内部测试 开发者自己测试 小范围内试用(06级信科分流)——有效测试途径 得到反馈意见并完善 教务意见(改变选择题样式、滑动条…) 学生意见(润色界面,增加问卷反馈…) 交付使用 本学期的教学评估工作 版本控制 开始没有考虑到 旧文件覆盖新文件 发送信息提醒更新 问题常出现在全局配置文件的修改 A: “我修改了xxx.php,快更新.” B: “我也正在改呢……” -_-/// 选用SVN 对代码版本控制更加方便 编写前update,编写完commit Bug管理 SVN管理Bug 创建Bug汇报文件 把bug文件看成代码来管理 以表单格式存放bug信息 发现bug的时间,bug表现,涉及的模块,简单解决办法 Bug发现者填写前两部分,解决者填写后两部分 在阶段合并的时候重新测试以前的bug Bug管理(cont.) 有些bug事先无法预期 复杂事物难以考虑周全 Bug举例 原因 表现 系统中的XML, 以text属性存放于数据库. Sybase对text属性预先保留2K磁盘空间 当表中数据太多时,保留空间耗费过多,造成服务器崩溃 解决办法 尽量减少用text 对短字符串使用char,varchar 对较长字符串使用文件保存. License GNU General Public License (GPL) 传染性 调用的 GPL Lib Jpgraph—绘制统计图 Phpdomxml—XML解析(php<5.0) 项目主页 暂存于实验室服务器 http://162.105.71.47/~webtest/papo/ Thanks! 欢迎大家多提建议~