Your SlideShare is downloading. ×
Yanggang wps
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Yanggang wps

1,127

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,127
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 从 WPS 到 Wps on Web 大型应用软件架构的变迁
  • 2. WPS V6 项目介绍
    • www.wps.cn
    • 项目介绍
      • 2002 年至今, 100-200 人
      • Windows 平台, C++ ,界面采用 Delphi
    • 特点
      • 规模大、周期长、耦合度高
      • 完全自有整体架构
      • 几乎不用第三方框架、库
  • 3. Wps on Web 项目介绍
    • 开发中
    • 项目介绍
      • 2009 年立项,现处于开发期,目前 50 多人
      • 前端: Flex 平台
      • 后端:核心 C++ ,服务总线 Java ,整合应用 Python
    • 特点
      • 从客户端到服务端计算的变迁
      • 从桌面应用到浏览器( RIA )的变迁
      • 从完全自有架构到混合( Hybrid )架构的变迁
  • 4. WPS 架构团队的演化
    • 核心程序员
    • 个体架构师
    • 架构组
    • 多架构组
  • 5. 关于本报告
    • 不适合做理论性讲解
      • 大型工程的规模效应使得问题复杂化
      • 任何一个实践的推行都需要大量时间和辅助工作
      • 没有一个实践能完美解决大型工程问题
    • 不适合面面俱到
      • 整个工程管理体系比较复杂,涉及的点非常多
      • 以后会在个人博客中与大家探讨
    • 选择几个有趣的点与大家分享
      • 不多,就三个
  • 6. 关于开发语言
  • 7. C++ 语言
    • WPS 使用最多语言
      • 具有最大的底层控制能力
      • 具有最大的优化潜力
      • 具备用于构建大型系统的能力
      • 大型复杂应用系统需要
    • 缺陷
      • 语言体系复杂,难以精通
      • 容易犯错,底层错误难以调试
      • 开发效率低
  • 8. 多语言开发
    • WPS V6 方案
      • C++ 与 Delphi
    • 使用效果
      • 接口语义复杂
      • 交互频率高
      • 有效率要求
      • 紧耦合边界不适用跨语言方案
  • 9. C-- 工程
    • 使用于 Wps on Web 项目
    • 提供 RAD 语言的代码风格
      • Java/C# 风格支持
      • 类库
      • 部分动态语言特性
    • 完全使用标准 C++ 构建
      • 无需更换开发工具
      • 原生 C++ 代码,和普通 C++ 无缝交互
      • 获得开发效率和执行效率的平衡
    • 准备作为开源项目发展
  • 10. Sample: C# 和 C++
    • void DeleteFiles(string dir)
    • {
    • string[] files = Directory.GetFiles(dir);
    • foreach (string s in files)
    • File.Delete(s);
    • string[] dirs = Directory.GetDirectories(dir);
    • foreach (string s in files)
    • DeleteFiles(s);
    • }
    • void DeleteFiles(stringx dir)
    • {
    • Array<stringx> files = Directory::GetFiles(dir);
    • foreach (stringx, s, files)
    • File::Delete(s);
    • Array<stringx> dirs = Directory::GetDirectories(dir);
    • foreach (stringx, s, dirs)
    • DeleteFiles(s);
    • }
  • 11. 关于整体框架
  • 12. WPS V6 整体框架
  • 13. Wps on Web 设计框架
  • 14. 在线表格部分细化
  • 15. 框架设计的变化
    • 部署模型
      • 不再是整体一块
      • 即使在服务端,也可能分布在不同的环境(设备)上
    • 通信模式
      • 直接函数调用转变为基于网络协议的调用: REST 、 SOAP 、基于 Socket 的 RPC 框架等
      • 根据通信需求,以及双方的构建技术决定
    • 耦合度降低
      • 尽可能可插接
      • 不能依赖另一个模块总是正确工作
  • 16. 关于质量保证
  • 17. 与质量保证相关的开发实践
    • 单元测试
      • TDD 与单元测试
    • 面向契约
      • C++ / AS 中的契约框架
      • 内核扫描
    • 持续集成系统
      • 代码覆盖率工具
  • 18. 内核扫描技术
    • 内核扫描是广义的 DbC
      • 一个经过规划的时刻触发,对更大范围数据进行检查的诊断过程
      • 更大尺度的目标数据集,更复杂的规则集合
      • 扫描时机受控
    • 内核扫描在 WPS 电子表格开发中的应用
      • 细节设计不完善问题
      • 不符合设计的隐患(对于测试有很大的辅助作用)
    • 在在线表格中引用内核扫描
      • 服务端
      • 客户端
  • 19. 代码覆盖率工具
    • 语言支持
      • C/C++, Python, Flex(AS3)
    • 覆盖统计
      • 代码行、函数、类
    • 动态覆盖统计
      • 运行时统计覆盖率
    • 代码高亮
      • 代码有效和无效高亮
    • 执行频率统计
      • 代码执行频率计算
  • 20.  
  • 21.  
  • 22.  
  • 23. 谢谢大家 www.gridbear.com blog.wps.cn

×