我在美国的研发经历分享.ppt
《我在美国的研发经历分享.ppt》由会员分享,可在线阅读,更多相关《我在美国的研发经历分享.ppt(131页珍藏版)》请在三一办公上搜索。
1、我在美国的研发经历分享,甲骨文公司 仲秋MAIL:,背景,本人科大毕业后在软件所特宝科公司做开发软件工作,在亚里桑纳大学取得硕士学位后,前后在爱德华(J.D.Edwards)、仁科(PeopleSoft)、甲骨文(Oracle)三大公司做软件开发工作。主要的工作范围:维护和开发中间件。维护和开发应用软件的构件开发平台,调试平台和运行平台。对运行平台实现代码的分析,优化和二次开发。本报告不代表任何公司见解和立场,不妥之处请指正。所讲内容可从以下提供的线索找到,但本报告是以我亲身经历来谈我的体会。,参考资源,WIKI http:/wiki.org/wiki.cgi?WhatIsWikiSystem
2、s Life Cycle http:/www.house.gov/cao-opp/PDFSolicitations/SDLCPOL.pdfISO9000 http:/www.iso.org/iso/en/iso9000-14000/index.htmlUML http:/www.uml.org/,http:/www.visual-Design Patternhttp:/en.wikipedia.org/wiki/Design_pattern_(computer_science)Borland CaliberRM http:/Together http:/Project Server http:
3、/JDeveloper http:/Test http:/en.wikipedia.org/wiki/Unit_testingIBM WSAD http:/TestDirector http:/QuickTest Professional http:/LoadRunner http:/WinRunner http:/http:/www.junit.org/index.htmJsUnit http:/http:/Ant http:/ant.apache.org/Boland StartTeam http:/SourceSafe http:/Rational ClearCase http:/htt
4、p:/http:/Optimizeit http:/Web Studio http:/Suite http:/,报告安排,目的:学习国外经验,指导国内发展第一部分:公司中的开发过程的各模式概述。多部门合作的、多环境、多级(多平台)、多阶段、多代码视图、和工作流开发模式。第二部分:在软件开发周期或各阶段中各环节的工程技术和工具。每个环节分五个方面讲述挑战问题、解决办法、工作流程、工具介绍和个人体会。,报告目的学习国外经验,指导国内发展,国内策略学习经验正确起步避免弯路快速跟上改进创新,国外发展长期摸索总结经验吸取教训竞争淘汰技术领先,第一部分:软件企业中的各开发模式概述,1.1 多部门合作的模式
5、1.2 多级(平台)的模式1.3 生命周期的多阶段模式 1.4 多种代码视图模式1.5 多环境开发的模式1.6 工作流开发模式,1.1多部门开发模式-软件开发的部门分工,总经理,应用开发部,工具开发部,质量保证部,产品维护及客户关系部,营销决策部,研究部门,后勤人事部,测试员,维护员,文档员,客户方,领域专家,产品主管,构架员程序员部署员,1.2 多级(平台)的开发模式-二级开发,二级用户,应用开发部,工具开发部,最终客户,应用构件开发,管理,调试,测试平台,应用产品,应用运行平台,开发,开发,使用,使用,运行,应用程序的商务逻辑(4GL),3GL(JAVA,C+),使用,应用配置平台,使用,
6、应用开发部,工具开发部,最终客户,应用开发部,工具开发部,所谓二级开发、二级用户,由工具开发部门根据总体框架用第三代语言设计和开发构件库及各种工作平台。由应用开发部门根据用户需求用4GL二次开发、组装构件,制订应用产品的商务逻辑.工具开发部门开发应用配置平台.工具开发部门,应用开发部门和最终用户都可以使用它配置自己的工作环境。(不同的商务逻辑和商务数据)工具开发部门开发提供运行平台,使用用户配置的商务数据和应用开发部门配置的商务逻辑,合并成最终的产品.,多级开发的优点,加强知识和技能的分工细化,降低开发员的素质要求和开发的复杂度,利于人才的招聘和分配,提高开发效率。分离商务逻辑和构件工具实现逻
7、辑(商务引擎),实现体系结构一定程度上的松耦合。多条产品线可以在两极并行发展。给予最终用户和测试员一定的自由度去组合各种工作环境。开发员可利用交叉测试的策略孤立故障到应用层或工具层。,组合出各种工作环境,第N-1代运行平台(商务引擎),第M-1代应用的商务逻辑,应用部门工作环境,工具部门工作环境,第M代应用的商务逻辑,第N代运行平台(商务引擎),测试部门工作环境,多级开发的潜在问题,各级开发部门不了解彼此的领域知识和实现。在调试一个具体的应用产品时难以独立完成。对构件和工具的功能和约束条件存在不同的理解和假设,易在问题责任上纠缠。,避免多级开发问题的策略主要靠统一文档资料和规范,对构件和工具的
8、界面,功能和约束条件制订公开,详细,与产品同步和易查阅的界面文档资料.双方以此为依据,作为责任仲裁依据.(建议使用版本控制的超文本或WIKI)如在实际应用开发和使用中发现文档资料中的含糊不清和缺陷的地方,双方开发代表要及时统一规范,落实到界面文档中.对新构件和工具功能的开发,要双方开发代表(stakeholder)共同协商需求,权衡代价和利益,设计测试,补充界面文档,并以签字标志通过.在运行平台上,在商务逻辑调用构件界面的地方,实现详细的日志(包括构件,功能名,参数和返回值).一半的责任问题可单纯的审查日志来决定.在升级测试阶段,工具开发部先通过自己的测试,在交给应用开发部测试,以防止工具层的
9、问题困扰应用开发层.,1.3 多阶段/周期的开发模式,一步到位式开发big bang delivery(小项目),渐进式迭代开发evolutionary delivery(大项目),举例,每个阶段/周期又细分为若干环节(分别适用于工具和应用层),需求计划设计编程测试,部署维护产品补丁及升级体系结构重构评估和优化,1.4 多视图(代码视图)的开发模式,主产品视图(开发员和维护员工作交接点)子项目开发视图(开发员工作视图)对应已部署在客户方正在使用的视图(维护员工作视图),主产品视图,子项目开发视图,子项目开发视图,客户方正在使用的视图,分支,归并,上线,分支,归并,上线,1.5多工作环境的开发模
10、式-是通过配置平台控制的,开发环境(Development Environment)是应用或工具开发员自己的工作环境(sandbox),没有特定的商务数据。测试环境(Test or Staging Environment)是测试员自己的工作环境包含测试员的对客户环境模拟商务数据,用于回归测试,一般不允许开发员过多的直接操作。商务数据被定期初始化。客户产品环境(Production Environment)客户端的实际使用的商业环境,不允许开发员和测试员直接操作商务数据。,1.6 工作流开发模式-控制软件开发流程及其管理系统,横向由分工很细的团队组成部门(who),这是为了更快地开发出优质的产品
11、,在市场竞争中生存下去。纵向按生命周期(when)中需求、计划、设计、编程、测试、部署(编译和集成打包)、维护、再开发和产品补丁升级的几个环节。每个环节中,各团队分别完成整个开发过程中的某些职能,并合作组成一些工作流,由此组成了职能流程图(what)。通过软件开发工作流程的管理系统(how)来协调和组织各团队的开发工作。(它与国内目前采用的项目管理系统略有不同)。,以工作流方式用文档和规范来管理的管理系统,管理系统是用于管理工作流程的软件。各工作流之间是通过工作单来连接,项目和维护的开始创建工作单。流程表现为工作单按内部状态机规则在状态间流动。工作单属性包括:问题描述,重要度,从属分支,讨论,
12、解决方案等各种文档。系统根据工作单当前状态通知下一个接受者,并还优先权加入接受者的工作单队列。接受者(程序员,测试员,客户,经理等)的对工作单的不同状态有不同的控制职责,权限和规定。工作单的终点是项目的解决或推翻。三大公司都有自己的独立开发的管理系统,融合了自己公司的管理特性。由于工作单的细节属于公司内部的知识产权,不易公布。,举例:简化的维护过程中的工作单状态图,答疑:可提问,?,第二部分:软件开发生命周期中各环节简述,我将按如下统一的格式介绍开发生命周期中的几个环节.每环节分以下五方面讲述:挑战问题解决办法工作流程工具介绍个人体会,趣味案例想一想问题的本质是什么,问题案例一:安装盘失败案例
13、问题案例二:汽车车窗失败案例问题案例三:键盘的低效格式,2.1 形成需求报告,2.1.1 挑战问题形成”需求报告”的重要性和复杂性,重要性维护中发现的问题多数根源于需求。需求错误:设计错误:编程错误=-100$:-10$:-1$:复杂性不稳定,常修改。(需求管理问题)难完整,多漏洞。(用例不足和完整性问题)太含糊,难测试。(精确度问题)多矛盾,难理解。(逻辑正确性问题)太复杂,难实现。(过分追求可用性)太简单,不实用。(过分追求低成本)太混乱,没条理。(规范化组织化问题),2.1.2 解决办法,由构架师与领域专家、编程员、产品主管等人员共同完成、并达到可用性和可行性的平衡。标记认同签名和需求锁
14、定。修改方案要重标签再通过。遵循填写格式和保证各主要抽象层间的互相追溯关系和优先权。避免使用含糊词汇(如也许,多,界面友好等)和定义有特别含义词汇。,2.1.3 需求文档形成的抽象结构图,主要抽象层的定义和追溯关系,商业需求:客户的高层需求(市场需要,商业目标,主要特性,客户简历等),界面需求:系统与外部交互的要求(硬件,软件和通讯需求),功能需求:系统的行为描述和执行功能,非功能需求:系统约束条件,环境平台,特殊规范的支持度,技术需求:程序员制定的技术实现细节,用户需求:描述用户要使用系统完成的任务,表达方式是用例,测试设计:测试员制定的测试方案,领域专家最少责任线,商业决策点,2.1.3.
15、1抽象层的文档定义是需求工作的目标,具体讨论每个抽象层追溯关系特点表达方式举例,商业需求,最原始的需求,一切的根源表达要用简单扼要的自然语言特点:突出商业价值和目标例子(以自动取款机为例)本银行要开发一直接该银行客户使用的自动取款机系统以减轻银行职员在简单的取款,存款,查询业务上负担.,用户需求,特点追溯到商业需求,但更具体焦点是讨论用户和系统的业务交互过程又用例集表达每用例可有一些属性:代号,重要等级从用户角度看,每用例可有树型的类别和层次关系每用例可由不同低粒度的子用例组合每用例可被其他高粒度用例重用每用例分一个常规和多个非常规路线每用路线有入口条件和出口断言(用来衔接用例)每路线分多步骤
16、步骤可以有条件分支,循环和跳跃.每步骤由应答格式表达:用户操作-系统反馈,用户需求(以自动取款机用例为例),取款过程(U1)注册(U1A)常规路线-正常注册(入口:用户未注册,出口:用户可接触主服务项目)1用户插卡-系统校验卡,接受,提示密码输入2用户输入密码-系统验证密码并显示主服务项目非常规路线-插错卡(入口:用户未注册,出口:用户不可接触主服务项目,退卡)1a用户插错卡-系统校验卡,不接受,退卡.非常规路线-没收卡(入口:用户未注册,出口:用户不可接触主服务项目,丢卡)1(不变)2b用户输入密码-系统验证密码2b.1 错2b.1.1 错三次以上,到32b.1.1 错二次以下,并要求密码重
17、新输入,到2.2b.2 对,新出口:用户可接触主服务项目3b系统没收卡取款(U1B略)(入口:用户可接触主服务项目,出口:用户得到钱和收据,用户可接触主服务项目)略注销(U1C略)存款过程(U2)注册(U1B略),功能需求,特点:追溯到用户用例,但比用户用例的粒度更小,更面向设计焦点是讨论系统的行为和能力,而不直接讨论用户的行为表达上的格式是以”系统”为主语-”系统可以做”从构架师角度看,系统分解成要开发的可评估开发代价的重用模块功能有一些属性:代号,重要等级从功能分化上看,可有树型的类别和层次关系可由不同低粒度的子功能组合可被其他高粒度功能重用,功能需求(以自动取款机为例),安全功能(F1)
18、系统可以校验卡(F1A)系统可以验证用户密码(F1B)系统可以提示密码输入(F1C)系统可以提示密码错误(F1D)系统可以没收卡(F1E)系统可以注册用户(F1F)系统可以注削用户(F1G)业务功能(F2)系统可以显示主服务项目(F2A)取款(F2B)系统可以允许用户选择出款帐号(F2B1)系统可以允许用户选择金额(F2B2)系统可以允许用户选择是否要收据(F2B3)系统可以更新用户帐号金额(F2B4)略存款(略),追溯到用户用例焦点是要定义被开发的软件子系统和所有周围接触的外部实体的信息交流规范和到功能的映射表达形式界面元素允许外部实体触发控制系统的功能界面元素允许系统触发控制外部实体的功能
19、.,界面需求,被开发的软件子系统,用户,网络,卫星,其他软件子系统,硬件,用户界面,硬件界面,软件界面,通讯界面,界面需求(以自动取款机为例),用户界面(I1)触摸屏(I1A)密码输入框允许用户向系统提供密码(I1A1)服务菜单允许用户选择系统的服务功能(I1A2)选择”取款”(I1A2A)选择”存款”(I1A2B)选择”查询”(I1A2C)硬件界面(I2)读卡机(I2A)出纳机(I2B)存钱接受机(I2C)打印机(I2D)软件界面(I3)与中央银行服务器的软件接口(I3A),非功能需求,特点:焦点是讨论系统在扩展性和约束条件,例如软件兼容(底层数据库类型流览器)种类和版本硬件的最低标准支持语
20、言(中文,英文)对残疾人帮助功能表达上的格式是”系统支持某规范或产品或版本”非功能表示非商务相关功能,但不代表没有开发和测试的代价正相反,控制非功能需求对控制开发和测试的工作量极其重要,非功能需求(以自动取款机为例),语言:系统支持英文,中文对视觉障碍者:系统提供语音提示货币货币类型:系统只接受和出纳美元货币单位:系统只出纳$20 面值的货币出纳上限:$300触摸屏支持厂家和型号是:XX出纳机支持厂家和型号是:XX,技术需求,特点:追溯到功能需求,甚至界面和非功能需求.焦点是解决从功能模块到软件设计的过度.设计软件子模块的接口规范和之间的关系定义软件子模块的职责和内部逻辑表达上的格式是灵活多样
21、的.(UML,表格,流程图)多数情况可在设计阶段进行例子(略),测试设计,特点:追溯到功能,界面和非功能需求多数情况可在设计阶段进行焦点是解决从底层需求到测试步骤和验证的映射,确保所有的需求是可测试的.要在资源允许下覆盖尽可能多的非功能需求表达上类似用户用例的应答格式.要覆盖常规路线和非常规路线测试,但是单线过程,没有条件分支和跳跃.,测试设计,例子测试11用户插卡-系统校验卡,接受,提示密码输入2用户输入密码-系统验证密码错,并要求密码重新输入3用户输入密码-系统验证密码对,并显示主服务项目4用户选择”取钱”-系统询问选择哪个出款帐户,2.1.3.2 角色定义需各种技术人员共同协同完成,领域
22、专家架构师程序员测试员主管部门,领域专家,领域专家维护用户方的目标和利益得到最终的贯彻和保证,注重需求的市场价值,制定完备的用例而不被构架师曲解和忽略,审查各阶段成果。领域专家起草高层需求(商业需求)和把它细化为以用例为单位的用户需求。,程序构架师,构架师是开发员的领队和代言人,但不同于国内,他的权力是有限的。构架师的责任是严谨周详的理解和归纳原始的用户事例,发现和提出逻辑漏洞和未定义的潜在用例。验证需求的技术可行性,评估实现代价。构架师的任务是他和领域专家合作制定细节的界面,功能,非功能需求,并最终和其他程序员完成技术需求和实现。,测试员,不同于国内,测试员有责任参与需求分析。测试员的责任是
23、审视所有需求的描述是否有含糊不清和无法度量的地方。能把需求描述转化成可执行的步骤和可以验证的信息反馈,最终书面表达为测试计划和执行。,产品主管,产品主管的责任是通过比较开发成本和市场价值来保证项目开发向使公司赢利的方向发展。对不赢利和低赢利的项目应该考虑放弃或减低他的优先权,或寻求工效比最优的折衷方案。,2.1.4需求阶段的工具介绍(CaliberRM),界面保证格式。树形视图保证需求从属关系。维护起源追溯关系以防出现无中生有和半途而废的需求。对人力资源核算汇总。生成word和HTML文档资料。多基线版本控制,比较,锁定和电子签名。,2.1.5 体会,美国大公司当前都认识到对需求下的代价都很大
24、,以确保今后工作顺利。以前犯下的忽视需求的错误,十年后仍然后患无穷。有时后,由于公司人力资源有限,程序员身兼数职(领域专家和测试),但要认识到这样作的潜在的危机-破坏了权利制约和监督,开发畸形发展。因此尽量不兼职。为降低开发风险和尽可能提高效益,需求也可以有优先权,并指导在计划,设计,编程和测试中实现优先权化。,2.1.6获取需求的工作流程,2.2 制订计划阶段的任务,如何有效快速地布局资源和人力。如何监视项目的进度。如何按实际情况及时调整。如何考虑未知的技术障碍。,2.2.1 计划(项目管理),解决方案合理安排Capacity(80%留用余地)让多个程序员作独立的成本估算每个子功能需求,综合
25、信息。对潜在的技术难关,要先做原型来证明可行性(可在需求阶段作)。排序任务时先看主从和依赖(追溯)关系,再看优先级。对松耦合的功能集划分多个开发周期。测试员要作类似的成本估算。并行某些任务以提高效力。(例如周期1的测试和周期2的开发,多个程序员的独立开发)定期了解程序员和测试员的进度,调整计划。,B:P3,T1,C:P2,T1,D:P3,T2,F:P2,T2,G:P1,T1,A:P3,T2,I:P1,T5,开发和计划例子-阶段分化,H:P2,T4,E:P3,T3,K:P2,T4,L:P1,T3,P:P2,T1,O:P2,T2,N:P3,T1,Q:P1,T2,M:P3,T4,J:P3,T2,R:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 美国 研发 经历 分享
链接地址:https://www.31ppt.com/p-5427743.html