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!
欢迎大家多提建议~