企业开发领域的语言特性
TRANSCRIPT
About Amos
• 程序猿 * • * Un;l Jan 15, 2011
• Thinker
* 图片来自互联网
企业软件
与开发有关的部分特性: • 开放源代码 • 快速订制和开发 • 容易升级和维护 • Bug 很少
– 平台强大 – 高度集成 – 代码很少
议程
• 管理集成:源码管理 & 客户服务 • 类型集成:数据字典 & 语法元素 • 界面集成:数据字典 & UI元素 • 扩展集成:一处修改 & 处处修改 • 流程集成:I18N流程 & Portal流程 • 环境集成:开发环境 & 运行环境 • 企业集成:技术创新 & 业务需求
管理集成
例子:打补丁需要多长时间 • 在超过150G的程序中修改生效一行 • 包括部署到客户系统上以解决问题
打补丁
• 编译型语言 vs. 解释型语言 – Na;ve (C, C++, Delphi, VB, VC, … ) – .NET – Java – Script (JavaScript, PHP, Python, Ruby, TCL, … )
• 有没有可能在10分钟之内完成? – ABAP since 1983
不同的 Run;me
Source Code Text
Complied Applica;on
Run;me Manual Load
Source Code Text Complied Applica;on Run;me Auto Load
源代码管理
* 图片来自SAP
Change Request 对象
Change Request Transport 过程
议程
• 管理集成:源码管理 & 客户服务 • 类型集成:数据字典 & 语法元素 • 界面集成:数据字典 & UI元素 • 扩展集成:一处修改 & 处处修改 • 流程集成:I18N流程 & Portal流程 • 环境集成:开发环境 & 运行环境 • 企业集成:技术创新 & 业务需求
类型集成
例子:数据库表的列 • 数据库表格的列 = 源代码中的数据类型 • 数据库表格的列 =UI元素的 Label • 数据库表格的列 = Value Help + F1 Help
类型集成-数据库表的列
对比 (非公平) • Java :各种框架,配置繁琐,一致性问题 • .NET, Delphi: Data Binding (Anders) • Ruby:配置 à 约定 à 集成工具
– “约定优于配置” – 集成工具优于约定
数据库表的列
数据库表的列的外键
数据库表的列的定义
Dynpro: 窗口程序
• 关键字:Parameters
窗口程序:程序代码中直接使用数据库表名字作为 Structure, 引用数据库的列
窗口程序:根据数据库的列自动生成的界面
窗口程序:根据数据库的列的外键自动生成的 Value Help
窗口程序:复杂查询条件叠加;外键套外键
窗口程序:根据数据库的列的定义,自动生成的帮助文档
Web Dynpro: 网页程序
• Meta Data:顺便解决了浏览器兼容性问题
业务逻辑
Meta Data
网页程序
Web程序:MVC -‐ 网页代码中直接引用数据库列
Web程序:MVC -‐ 向导自动生成界面
Web程序:运行中
Web程序:根据数据库的列的外键自动生成的 Value Help
Web程序:根据数据库的列的外键自动生成的 Value Help
议程
• 管理集成:源码管理 & 客户服务 • 类型集成:数据字典 & 语法元素 • 界面集成:数据字典 & UI元素 • 扩展集成:一处修改 & 处处修改 • 流程集成:I18N流程 & Portal流程 • 环境集成:开发环境 & 运行环境 • 企业集成:技术创新 & 业务需求
界面集成
例子1/2:Type Range • Type Range vs. 复杂条件选择界面 • Type Range vs. OPEN SQL 语句
例子2/2:Search Help
界面集成
• 对比 – .NET、Java、PHP、Python 、Ruby 、 C …
UI Layout: Web, Window
Business Logic: Language-‐Specific Blocks
Database Driver / O-‐R Mapping File
Oracle MSSQL MySQL …
Type Rang via Select Op;on vs. OPEN SQL keyword IN
Type Rang via Select Op;on – Start
Type Rang via Select Op;on – Category 1/2
Type Rang via Select Op;on – Category 2/2
Type Rang via Select Op;on – Priority 1/3
Type Rang via Select Op;on – Priority 2/3
Type Rang via Select Op;on – Priority 3/3
Type Rang via Select Op;on – Debug
Type Rang via Select Op;on – Debug Inspector 1/2
Type Rang via Select Op;on – Debug Inspector 1/2
Type Rang via Select Op;on – Result
Type Rang via DDIC: 1/2
Type Rang via DDIC: 2/2
Type Rang via Code : 1/3
Type Rang via Code : 2/3
Type Rang via Code: 3/3
界面集成
例子1/2:Type Range
例子2/2:Search Help • Search Help vs. Customizing • Search Help vs. Coding • Search Help vs. User Interface
Search Help -‐ Source Code
Search Help -‐ Start
Search Help -‐ Structure Search 2/3
Search Help -‐ Structure Search 3/3
Search Help -‐ Defini;on 1/4
Search Help -‐ Defini;on 2/4
Search Help -‐ Defini;on 3/4
Search Help -‐ Defini;on 4/4
议程
• 管理集成:源码管理 & 客户服务 • 类型集成:数据字典 & 语法元素 • 界面集成:数据字典 & UI元素 • 扩展集成:一处修改 & 处处修改 • 流程集成:I18N流程 & Portal流程 • 环境集成:开发环境 & 运行环境 • 企业集成:技术创新 & 业务需求
扩展集成
例子:Structure Include • Structure in Programming Language
= Database Table Defini;on
Database Layer
Model Layer API Layer UI Layout
Customer Defined Field -‐ Web UI
Customer Defined Field -‐ DDIC 1/2
Customer Defined Field -‐ DDIC 2/2
Structure in Source Code
Customer Defined Field -‐ Web Page Design
扩展集成
• 对比 – 语义级支持扩展 – 运行时支持扩展
• 当工具不具备的时候,可以自己做
议程
• 管理集成:源码管理 & 客户服务 • 类型集成:数据字典 & 语法元素 • 界面集成:数据字典 & UI元素 • 扩展集成:一处修改 & 处处修改 • 流程集成:I18N流程 & Portal流程 • 环境集成:开发环境 & 运行环境 • 企业集成:技术创新 & 业务需求
流程集成
例子1/2:I18N流程 • DDIC Label: Window, Web Page • Message Class • OTR Text: Web Page • Tagged Text: Class, Program
例子2/2:Portal流程
流程集成 – I18N
开发部门(分布式)
翻译部门(外包)
测试部门(半外包)
Packaging 部门
维护 & 客户服务部门
InfoQ 架构师杂志,2010年第12期
Visual Studio 2010 Express C#
* 图片来源于网络:Code Project, and un-‐well-‐known
NetBeans IDE 6.9
Example from Sun Java Web Site & NetBeans IDE 6.9
流程集成 – I18N
• 一种新的语法 – 括号语法:‘Some Text’ (001)
• 一种新的语言对象 – 针对 Web Dynpro 程序:OTR Text – 针对 Window (Dynpro) 程序:Message Class
SAP ABAP Code Example for I18N 1/3
SAP ABAP Code Example for I18N 2/3
SAP ABAP Code Example for I18N 3/3
流程集成 – I18N
• 一种新的语法 – 括号语法:‘Some Text’ (001)
• 一种新的语言对象 – 针对 Web Dynpro 程序:OTR Text – 针对 Window (Dynpro) 程序:Message Class
SAP OTR Library: Search or an OTR Text
SAP OTR Library: OTR Text Object
SAP Web Dynpro: Using OTR Text Object 1/2
SAP Web Dynpro: Using OTR Text Object 2/2
流程集成
例子1/2:I18N流程
例子2/2:Portal流程 • 开发部门:Content, System Config. • 支持部门:User Authoriza;on, Customizing • 业务专家:Portal
流程集成 – Portal
• Apache Jet Speed • IBM Portal • Microson Share Point • SAP Enterprise Portal • à iGoogle, My Yahoo!
议程
• 管理集成:源码管理 & 客户服务 • 类型集成:数据字典 & 语法元素 • 界面集成:数据字典 & UI元素 • 扩展集成:一处修改 & 处处修改 • 流程集成:I18N流程 & Portal流程 • 环境集成:开发环境 & 运行环境 • 企业集成:技术创新 & 业务需求
环境集成
开发环境 + 运行环境 • 二合一的平台
企业级调试 • 用户断点,条件断点 • 断点的回退 和 跳跃 • 动态修改变量的值
开发调试环境
Visual Studio
Eclipse / NetBeans
Notepad, Eclipse, NetBeans
… …
运行环境
Standalone Applica;on / Windows IIS
Applica;on Server: Tomcat, WebSphere, JBoss, WebLogic
Apache + PHP Extension
… …
开发调试环境 vs. 运行环境
开发调试环境 + 运行环境
业务应用程序
运行环境
Services Basis
开发调试环境
SAP NetWeaver Architecture
环境集成
开发环境 + 运行环境 • 二合一的平台
企业级调试 • 用户断点,条件断点 • 断点的回退 和 跳跃 • 动态修改变量的值
用户断点,Session断点
条件断点 – 基于静态对象
条件断点 – 基于动态对象
断点跳跃-‐1/2
断点跳跃-‐2/2
断点回退-‐1/2
断点回退-‐2/2
修改变量的值-‐1/3
修改变量的值-‐2/3
修改变量的值-‐3/3
议程
• 管理集成:源码管理 & 客户服务 • 类型集成:数据字典 & 语法元素 • 界面集成:数据字典 & UI元素 • 扩展集成:一处修改 & 处处修改 • 流程集成:I18N流程 & Portal流程 • 环境集成:开发环境 & 运行环境 • 企业集成:技术创新 & 业务需求
技术 vs. 业务
例子1/3: 演示-‐Xcelsius for 业务部门 • Inter-‐Department Communica;on • Flash vs. HTML5
业务部门 IT 部门
* 图片来自互联网,有修改
技术 vs. 业务
例子2/3: 视频-‐BI Explorer for 决策者 • 以思维的速度探查业务 • Column based Database • In Memory Compu;ng
业 务 部 门 * 图片来自互联网,有修改
技术 vs. 业务
例子3/3: 视频-‐卓有成效的GRC风险管控 • 采用最成熟稳定的技术框架
中国制造 vs. 中国创造
发明正确的技术来解决问题 • Invented in China
SAP创新社区 – ABAP学习交流中心(免费)�www.sdn.sap.com
n 专栏�
n 在线教程�
n 中文专家博文分享�
n 英文专家博文分享�
n 维基百科�
n 中文论坛�
* PPT由SDN提供
Thank you!
Amos Shi
SAP Labs China 1001 Chenhui Road 201203 Shanghai
T +86/21/6108-‐3245 F +86/21/6108-‐3233
[email protected] www.sap.com