Oneteam0.9技术报告
一.总体
1.编写说明
从技术角度对交付系统进行分析。
2.系统简介
Oneteam项目集成管理系统是一个基于项目过程的协同工作和管理平台,以CMMI理论为基础,结合PSP/TSP、PMBOK、Scrum等理论,进行有机地整合。
功能包括:
个人工作管理 | 时间管理、工作日历、工作报告、工作排期、工作负荷分析、博客、便签等 |
团队协作 | 通讯录、资料共享、信息共享和交流(门户、评论、关注、消息)、信息发布(通知、新闻、博客)、问题管理、干系人管理、公文流转 |
项目管理 | 项目计划、项目范围、风险管理、工作量估算、工作报告、项目监控、项目分级管理(计划、范围)、项目评审 |
敏捷开发 | 冲刺、障碍、需求排期、燃尽图、看板、工作认领、每日站立会议 |
工程 | 需求开发和管理、测试管理 |
知识管理 | 提问、建议、资料共享(支持多用户编辑)、知识库搜索、过程资产库、知识能力、知识达人 |
过程管理 | 项目生命周期、文档模板、支持项目QA |
组织 | 组织视图、部门管理、组织级项目管理、支持组织级对人员、项目的可视化分析和监管 |
系统管理 | 系统设置、组织结构管理、参数维护、安全管理、系统监控、批处理、二次开发、软件注册升级等 |
3.架构
序号 | 技术 | 版本 | 备注 |
1 | flex | 3.6A |
|
2 | tomcat | 6.0.20 |
|
3 | grails | 1.3.7 |
|
4 | mysql | 5.1.54 |
|
5 | jdk | 1.6.0_21 |
|
6 | vdk | 0.9 | Voneteam的开发库 |
4.系统规模
序号 | 要素 | 数量 | 备注 |
1 | 操作 | 56 | 通过菜单调用的操作 |
2 | 表单 | 229 | swf文件 |
3 | 工作流 | 9 |
|
4 | 查询 | 199 |
|
5 | 构件 | 26 |
|
6 | 数据库表 | 106 |
|
7 | 代码行数 | 85063 |
|
8 | 缺陷数 | 173 |
|
二.代码分析
1.前台
前台采用flex3进行开发,代码情况如下:
| 文件数 | 代码行数 | 平均 | 注释行数 | 注释率 | 备注 |
总 | 1009 | 65112 | 65 | 26369 |
|
|
其中:自动生成 | 307 | 11791 | 38 | 6788 |
|
|
手工编写 | 702 | 53321 | 76 | 19581 | 26.9% |
|
其中:界面 | 340 | 26228 | 77 | 3548 | 12% |
|
界面控制 | 669 | 38884 | 58 | 22821 | 37% |
|
其中:构件接口-被调用 | 27 | 1918 | 71 | 1910 | 49.9% | 用于供其他构件调用 |
构件接口-调用 | 19 | 723 | 38 | 549 | 43% | 用于调用其他构件 |
分析:由于前台表单普遍采用模式+vdk,使前台开发越来越少碰到障碍,并且能够保持非常好的界面一致性。
2.后台
后台采用grails进行开发,代码情况如下:
| 文件数 | 代码行数 | 平均 | 注释行数 | 注释率 | 备注 |
总 | 312 | 19951 | 64 | 10314 | 31.4% |
|
其中:自动生成 | 182 | 8209 | 45 | 3769 |
|
|
手工编写 | 130 | 11742 | 90 | 6545 | 35.8% |
|
其中:构件接口-被调用 | 18 | 2154 | 120 | 1518 | 41.4% | 用于供其他构件调用 |
构件接口-调用 | 10 | 153 | 15 | 153 | 50% | 用于调用其他构件 |
分析:由于后台采用groovy+vdk,使后台代码量已非常小,常规的增删改查等已无需代码。
3.数据库
数据库共有106个表,每个表字段分布如下:
4.按构件分析
整个系统共分为26个构件,分析如下:
构件 | 数据库 | 前台 | 后台 | |||||||
| 表 | 字段 | 文件 | 代码 | 代码/表 | 代码/字段 | 文件 | 代码 | 代码/表 | 代码/字段 |
appframe | 22 | 23 | 107 | 6975 | 317 | 14 | 20 | 2443 | 111 | 5 |
ask | 1 | 47 | 6 | 301 | 301 | 6 | 1 | 53 | 53 | 1 |
bat | 1 | 10 | 4 | 180 | 180 | 18 | 2 | 189 | 189 | 19 |
comment | 1 | 14 | 11 | 587 | 587 | 42 | 4 | 141 | 141 | 10 |
common | 2 | 32 | 18 | 1375 | 688 | 21 | 2 |
|
|
|
custom | 2 | 32 | 6 | 362 | 181 | 6 | 2 | 18 | 9 | 0 |
daylog | 3 | 28 | 18 | 1823 | 608 | 22 | 6 | 756 | 252 | 9 |
dict | 1 | 8 | 3 | 186 | 186 | 23 | 2 | 80 | 80 | 10 |
door |
|
| 53 | 5308 |
|
| 2 | 497 |
|
|
holder | 3 | 19 | 11 | 638 | 213 | 11 | 4 | 92 | 31 | 2 |
info | 4 | 24 | 20 | 1309 | 327 | 14 | 4 | 79 | 20 | 1 |
issue | 1 | 55 | 10 | 541 | 541 | 10 | 2 | 39 | 39 | 1 |
know | 7 | 22 | 30 | 2340 | 334 | 15 | 8 | 554 | 79 | 4 |
message | 1 | 16 | 4 | 241 | 241 | 15 | 2 | 95 | 95 | 6 |
pdp | 7 | 19 | 35 | 2068 | 295 | 16 | 8 | 290 | 41 | 2 |
personWeek | 4 | 33 | 23 | 2040 | 510 | 15 | 5 | 528 | 132 | 4 |
plan | 5 | 50 | 48 | 4255 | 851 | 17 | 7 | 1120 | 224 | 4 |
product | 3 | 31 | 11 | 590 | 197 | 6 | 4 | 74 | 25 | 1 |
projectWeek | 4 | 38 | 21 | 2132 | 533 | 14 | 3 | 648 | 162 | 4 |
query | 9 | 19 | 37 | 2499 | 278 | 15 | 10 | 477 | 53 | 3 |
review | 1 | 84 | 32 | 2161 | 2161 | 26 | 2 | 116 | 116 | 1 |
risk | 1 | 42 | 4 | 338 | 338 | 8 | 2 | 64 | 64 | 2 |
scope | 6 | 37 | 44 | 3714 | 619 | 17 | 7 | 915 | 153 | 4 |
suggest | 1 | 53 | 8 | 374 | 374 | 7 | 1 | 6 | 6 | 0 |
test | 6 | 36 | 46 | 3467 | 578 | 16 | 7 | 916 | 153 | 4 |
work | 2 | 28 | 18 | 1454 | 727 | 26 | 3 | 541 | 271 | 10 |
workflow | 8 | 32 | 52 | 4949 | 619 | 19 | 9 | 876 | 110 | 3 |
结论:
1. 前台代码行数与数据库设计时,表的字段数量有较强的正相关。
2. 后台由于groovy和vdk,代码量已非常小,常规的增删改查等已无需代码。
三.质量分析
代码行数为85K。
缺陷总数:173
缺陷密度 = 173/85 = 2个/千行代码
加权缺陷密度 = 402.5/85 = 4.7 /千行代码
致命:10 严重:5 一般:2轻微:0.5建议:0
四.重用分析
1.构件
序号 | 构件 | 重用级别 | 说明 |
1 | appframe | 组织级 | 规模较大,可考虑拆分 |
2 | ask | 产品级 |
|
3 | bat | 平台级 |
|
4 | comment | 平台级 |
|
5 | common | 组织级 |
|
6 | custom | 产品级 |
|
7 | daylog | 产品级 |
|
8 | dict | 平台级 |
|
9 | door | 产品级 |
|
10 | holder | 产品级 |
|
11 | info | 组织级 |
|
12 | issue | 产品级 |
|
13 | know | 组织级 |
|
14 | message | 组织级 |
|
15 | pdp | 产品级 |
|
16 | personWeek | 产品级 |
|
17 | plan | 产品级 |
|
18 | product | 产品级 |
|
19 | projectWeek | 产品级 |
|
20 | query | 平台级 |
|
21 | review | 产品级 |
|
22 | risk | 产品级 |
|
23 | scope | 产品级 |
|
24 | suggest | 产品级 |
|
25 | test | 产品级 |
|
26 | work | 产品级 |
|
27 | workflow | 平台级 |
|
平台级:一般与业务无关。
组织级:多个产品一般都会具有的业务。
产品级:一般在某个业务领域的业务,具有较强的业务相关性。
2.控件
序号 | 控件 | 名称 | 说明 |
1 | PageGrid | 分页表格 | 支持编辑、分页、查询、统计、图表汇总等 |
2 | VTreeGrid | 树形表格 | 支持树形数据的编辑、浏览。 |
3 | VsDataGrid | 轻型表格 | 在PageGrid基础上简化,去掉查询、统计、图表等,提高性能 |
4 | Lamp | 信号灯 |
|
5 | SelectTreeNode | 打开树选择节点 | 在此基础上,衍生出SelectDepart、SelectCity等 |
6 | TopMenu | 菜单按钮 |
|
7 | VsLineChart | 折线图表展示 | 支持多折线 |
8 | VsRichTextEditor | 富文本编辑 |
|
9 | VsTextArea | 文本编辑 |
|
10 | VTab | 竖型TabNavigator |
|
| 窗口 |
|
|
1 | ImageWindow | 显示图片窗口 |
|
2 | SendFileWindow | 上传文件窗口 |
|
3 | EditRichTextWindow | 富文本编辑窗口 |
|
4 | ReadRichTextWindow | 富文本阅读窗口 |
|
5 | LineChartWindow | 折线图表展示窗口 |
|
6 | PrintWindow | 打印窗口 |
|
|
|
|
|
3.切面
序号 | 切面 | 说明 |
1 | 基于许可证的版权控制 |
|
2 | 基于保密级别的记录级数据权限控制 |
|
3 | 基于word的富文本编辑、显示 |
|
4 | 基于离线的软件升级 |
|
5 | 基于在线翻译的国际化 |
|
4.操作模式
序号 | 模式 | 说明 |
1 | 表格集成编辑模式 | 例:通知管理 |
2 | 树集成编辑模式 | 例:工作地点维护 |
3 | 面板模式 | 浏览、操作一个对象的相关信息,例:项目面板 |
4 | 视图模式 | 查看一个对象及其相关信息,例:项目视图 |
5 | 查看模式 | 查看一个对象,例:查看通知 |
6 | 工作流模式 |
|
7 | 修改模式 | 修改单记录,例:系统设置 |
5.通用交易
序号 | 交易 | 说明 |
1 | AddOne | 增加一个 |
2 | SaveOne | 保存一个(新增或修改) |
3 | UpdateOne | 修改一个 |
4 | BatchUpdate | 批量修改 |
5 | BatchSet | 批量设置 |
6 | DeleteOne | 删除一个 |
7 | BatchDelete | 批量删除 |
8 | DeleteOneTree | 删除一个节点及其后代 |
9 | GetOne | 获取一个对象 |
10 | ReadOne | 读取一个对象及其相关信息 |
11 | Browse | 根据条件浏览一个表 |
12 | Query | 根据条件查询一个表 |
13 | GetNow | 获取服务器时间 |