速度与品质王千祥 北京大学 2015-05-28 于 软博会 速度与品质 —— “互联网+...
TRANSCRIPT
王千祥 北京大学
2015-05-28 于 软博会
速度与品质
—— “互联网+ ”时代的软件工程工具
2/38
作为一部文艺作品,更多地关注激情!
软件行业同样需要激情!为社会创造更多的价值!
软件行业的激情有单独话题:软件开发心理学
软件开发关注的核心是 “效率”与“质量”
是激情驱动的“速度”与“品质”!
靠什么获得速度与品质?光有激情是不够的!
还要有工具:战士的矛与盾
软件从业人员的“矛”与“盾”在哪里? 各种软件工程工具!
过程无处不在 CMMI 偏重流程、方法 敏捷等更重视工具
过程
方法
工具
成本 目标
手段
方法 与 工具 :互相促进!
效率 质量
因为创新 开发过程包含了大量的不确定因素 开发过程需要反复迭代(试错) 敏捷、DevOps、……
软件开发是一个典型的创新过程 与传统工程不同,开发出完全相同的制品没有意义 对应于传统工程的设计环节 设计与实施的关系类似于:设计食谱 与 根据食谱做菜
对软件开发的几点新认识
面向PaaS的在线开发平台
本报告的狭义标题:
经验分享 Vs 观念倡导
“互联网+”时代软件的角色
互联网
应用领域/行业 商业 社交 搜索 交通 ……
靠什么“加”?各种 云应用软件!
= 嘀嘀快的、车来了、
= 淘宝 = 微信 =百度、搜房
主流软件形态的变迁 单机应用 Web应用(云应用,SaaS)! 包括手机应用,多数后端在云里 云应用运行平台的变迁 IaaS平台 => PaaS平台
部署在 PaaS平台上的云应用将成为软件的主流形态
主流的软件形态:云应用
什么是PaaS?
云计算的三种服务模式之一
让资源得到更好的利用? IaaS:Infrastructure
让开发人员专注业务 PaaS:Platform
让用户更方便地使用软件 SaaS:Software
产生背景
BaaS:Backend
典型代表
国际(公有): Salseforce 的 Force.com(最早) Heroku(最大: 400多万应用) 谷歌的GAE(最有名Google App Engine) 微软的Azure
国内: 公有:SAE(45万)、BAE、JAE 私有:用友、华为、阿里、… 微信公众号 总数超过 800 万(?)
软件开发相关的云平台 云托管:svn/git (开源推动) 云运行:IaaS(虚拟机),PaaS(BaaS), 云开发:刚刚起步
如何处理剩余资源?
目前的主流PaaS应用开发:本地开发、上传部署
与软件开发有什么关系?
软件开发也要云化! 贴近云化的运行平台!
For learning language
CodePad
CodeSkulptor
Ideone
LiveWorkSpace
PHP Assist
Python Fiddle
For learning
Web development
Codepen.io
CSSdeck.com
Dabblet.com
Fiddle Salad
JSbin.com
JSFiddle
kodtest.com
Liveweave.com
RunJS
For Web Development
Akshell
CodeAnywhere
Codio
Erbix
ICEcoder
For Mobile
App Development
Icenium.com
CloudPebble
General IDE
Cloud9
Codenvy (ex: Cloud IDE)
Coderun Studio
Codiad
Collide
Compilr
ECCO
Koding (ex: Kodingen)
Neutron Drive
Nitrous
Orion
ShiftEdit
Sourcekit
SourceLair
在线 IDE--wiki
IBM: Eclipse,JazzHub(orion) 微软:Visual 系列 (Azure)
基础: PaaS的蓬勃发展、在线IDE蓄势待发 开发在往后端延伸:持续集成、上线维护、……
优势: 本地不用再安装 IDE! 积累大量与开发过程的数据 开发环境一致!任何地方都可以编程 协作(social)、记录细粒度的开发活动 方便集成各种服务: 测试、动态定位错误、OpenAPI,…
面向Paas的在线开发平台
1、本地开发环境的配置
版本管理、依赖的软件库等
频繁的人员流动
2、本地运行环境的配置
数据库、通信机制、使用的各种服务等
是否与 实际运行环境一致?
3、开发与运行的隔阂
频繁的应用迭代
“一键部署”
为软件开发组织解决的痛点
代表性的在线开发平台
• Cloud9 • Codenvy • POP
典型平台介绍: Cloud9
特点: 先锋 编辑功能强大
典型平台介绍: Codenvy
特点: 后起之秀 支持DevOps
典型平台介绍: POP
特点: 国内先锋 从教学到实战
平台对比:编程语言
Cloud9 Codenvy POP
PHP √ √ √
Node √ √ √
Python √ √ √
C/C++ √ √ √
Java × √ √
Android × √ ×
Ruby √ √ ×
Go √ √ ×
平台对比:部署方式
Cloud9
• 命令行
• Heroku
• Windows Azure Web Sites
• GAE
• Openshift
• CloudFoundry
• NodeJitsu
• Modulus
• Divshot
Codenvy
• 图形界面
• GAE
• Appfog
• Openshift
• CloudFoundry
• Heroku
POP
• 图形界面
• BAE
平台对比:版本控制
Cloud9
• 命令行
• Git/SVN
Codenvy
• 图形界面
• Git/SVN
POP
• 图形界面
• Git/SVN
POP: PKU(Public) Online Programming)
起步于2009年
Online IDE-> Online Programming
Java, C/C++, HTML/JS/PHP,Python, Node.JS
服务化的插件、编程行为录制与回放
在线的调试技术(3项专利)
安全机制:敏感方法禁用 => Docker
VMware中国大学生云计算创意大赛 第二名 ( 2010 )
国际服务大赛 ServiceCUP 第三名 ( 2011 )
首届 中国云•移动互联网创新大奖赛 二等奖 ( 2012 )
首届 中国计算机学会 软件研究原型比赛 一等奖 (2013)
POP获奖情况
在教学领域的应用已经比较成熟
应用于(部分与计蒜客合作):
超过10多所学校 (北大, 南大, 南开, 北京科技大学,
清华大学,…)
30 多门次课程(编译实习, Java语言, 计算概论, …)
MOOC课程: Coursera 课程《计算概论》,《数
据结构与算法》、TopU课程 《C语言》
面向真实的软件项目
运行平台
BAE、用友
开发平台
在线编程
代码池
code.csdn
部署 开发/维护
首先应用于:2015全国计算机设计大赛
POP特色:集成“在线缺陷检测”与“自动测试”
• 从动态测试到静态检测
– 服务化软件:运行时间长
– 内存泄露、安全漏洞等等
• 缺陷分析工具 – Coverity, Findbugs, Fortify, SonarQube, PCLint
– CODAS
– PSBD
CODAS: Code Defect Analyzing Service
可以方便地集成到不同的开发平台中
针对软件服务需要长期运行的特点,研究了资源释放等软件缺陷,并提出了一种特
定于项目的缺陷查找方法
发表于国际软件工程顶级会议FSE, 典型用户: **公司、中国软件评测中心
PSBD:特定于项目的缺陷查找工具
使用场景 如何用 优势: 与其它互补
测试自动化
测试用例自动执行
传统的测试自动化
手工或半自动化生成测试用例
测试用例自动化生成 + 测试用例自动执行 + 测试结果报告及分析
测试自动化
自动程序测试工具
• 基于基本路径测试方法,自动生成基本路径集,保证程序的语句覆盖
• 使用遗传算法生成测试数据,并自动生成JUnit测试用例
• 自动执行测试用例,包括测试覆盖,以及不可达语句比率
• Parasoft公司的Jtest工具只支持JUnit
代码框架,并不是测试用例本身,更没有任何测试覆盖保证
2011年全国软件与应用会议