1 / 18

开源软件开发实践

开源软件开发实践. 高雅 00448017 黄顺平 00448261. 项目介绍. 网络问卷调查/分析系统 网络调查问卷的撰写、发布、回收、统计分析的综合系统 “ 泰兆基金 ” 项目 目前已用于学校教务的网上教学评估. 项目介绍. 名称 PAPO 提供不同于纸质问卷全新调查形式,网络上无形的 paper. 来源: papyrus 解释: PAPO,a paper online. 采用 php 编写 php+mysql, 天生开源 支持 sybase 数据库. 程序开发. 开发语言/数据库的选择 组织分工 软件结构设计 代码风格 开发流程

lilka
Télécharger la présentation

开源软件开发实践

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 开源软件开发实践 高雅 00448017 黄顺平 00448261

  2. 项目介绍 • 网络问卷调查/分析系统 • 网络调查问卷的撰写、发布、回收、统计分析的综合系统 • “泰兆基金” 项目 • 目前已用于学校教务的网上教学评估

  3. 项目介绍 • 名称PAPO • 提供不同于纸质问卷全新调查形式,网络上无形的paper. • 来源:papyrus • 解释:PAPO,a paper online. • 采用php编写 • php+mysql,天生开源 • 支持sybase数据库

  4. 程序开发 • 开发语言/数据库的选择 • 组织分工 • 软件结构设计 • 代码风格 • 开发流程 • 版本控制 • BUG管理

  5. 开发语言/数据库的选择 • 适合网页形式,存储大量数据 • 网页脚本语言(php,jsp,asp) • 数据库(MySQL, PostgreSQL, SQL Server) • 尽量避免版权/费用问题,开源 • php vs asp • mysql vs SQL Server • 简单,易于上手,可用资料多 • php vs perl/jsp • 最终选择 — 所谓LAMP开发框架 • Linux-Apache-MySQL-PHP, support sybase • 妥协:MS windows

  6. 组织分工 • 充分利用每个人的优势 — “扬长避短” • 每个人熟悉的技术不同:PHP,SQL,XML,HTML,CSS,Javascript… 分工尽量侧重自己熟悉的方面 • 开发经历 • 制作过网页-CSS/HTML/Javascript • 接触过数据库-SQL/XML • 设计数据库/软件结构 — “统一调度” • 集中讨论商定 • 中途个人不得擅自更改,除非讨论商定 • 按功能模块化 — “各自为战” • 联系紧密的模块交由一个人负责 • 模块间接口尽量统一

  7. 软件结构设计 • 阅读代码,向“大牛s”学习 • Wordpress, Discuz! ,Xoops • 学习代码风格/组织结构 • 在保证功能前提下,尽量兼顾低版本 • 尽量使用php默认库,而非可选库 • 模块划分 • 技术层—做成Library,要统一 • 数据库访问,XML解析,图表生成 • 外观模版,sessions/权限控制 • 功能层—做成web页面,要灵活 • 基本功能:用户管理,问卷设计,答案统计,数据分析 • 定制功能:课程管理,流程控制,数据库对接

  8. 代码风格 • 文档结构高度统一 • 技术层Lib统一文件名 • dbi.php, data_functions.php, system_ functions.php, template_functions.php • 功能层web页,每个功能统一前缀 • user_add.php, user_edit.php, user_update.php • 目录结构 • --web功能页 • --style目录,存储外观模版 • --includes目录,存储Lib • 代码制定统一标准 • 有一定原则 • 不限制(也难以限制)具体细节

  9. 代码风格 • 函数/变量的命名风格 • 函数名:小写字母、下划线 • get_result(), not getResult() • 局部变量:小写字母、下划线 • 全局变量大写,统一前缀 • $G_ENV,$G_TABLE • 尽量不使用常量,用全局变量统一控制 • $G_ENV["charset_html"], not “gb2312" • Tab缩进 • Include统一位于文件头 • 简单注释

  10. 开发流程 • 准备工作 • 需求调查 • 管理者:教务 • 使用者:学生、教师 • 定义“常量”——统一规则 • 开发语言,代码风格 • 设计框架 • 模块划分,组织分工 • 数据库结构 • 按照范式设计,避免冗余 • 给经常访问的表建立索引

  11. 开发流程(cont.) • 分头编写 • 不同部分独立编写 • 阶段性的合并调试 • 展示自己成果 • 挑对方的不足 • 关键性备份 • 要修改公用lib时 • 有新进展时(可能会带来bug)

  12. 开发流程(cont.) • 内部测试 • 开发者自己测试 • 小范围内试用(06级信科分流)——有效测试途径 • 得到反馈意见并完善 • 教务意见(改变选择题样式、滑动条…) • 学生意见(润色界面,增加问卷反馈…) • 交付使用 • 本学期的教学评估工作

  13. 版本控制 • 开始没有考虑到 • 旧文件覆盖新文件 • 发送信息提醒更新 • 问题常出现在全局配置文件的修改 • A: “我修改了xxx.php,快更新.” • B: “我也正在改呢……” -_-/// • 选用SVN • 对代码版本控制更加方便 • 编写前update,编写完commit

  14. Bug管理 • SVN管理Bug • 创建Bug汇报文件 • 把bug文件看成代码来管理 • 以表单格式存放bug信息 • 发现bug的时间,bug表现,涉及的模块,简单解决办法 • Bug发现者填写前两部分,解决者填写后两部分 • 在阶段合并的时候重新测试以前的bug

  15. Bug管理(cont.) • 有些bug事先无法预期 • 复杂事物难以考虑周全 • Bug举例 • 原因 • 系统中的XML, 以text属性存放于数据库. • Sybase对text属性预先保留2K磁盘空间 • 表现 • 当表中数据太多时,保留空间耗费过多,造成服务器崩溃 • 解决办法 • 尽量减少用text • 对短字符串使用char,varchar • 对较长字符串使用文件保存.

  16. License • GNU General Public License (GPL) • 传染性 • 调用的 GPL Lib • Jpgraph—绘制统计图 • Phpdomxml—XML解析(php<5.0)

  17. 项目主页 • 暂存于实验室服务器 • http://162.105.71.47/~webtest/papo/

  18. Thanks! 欢迎大家多提建议~

More Related