我在美国的研发经历分享

上传人:仙*** 文档编号:67670828 上传时间:2022-03-31 格式:PPT 页数:131 大小:1.11MB
收藏 版权申诉 举报 下载
我在美国的研发经历分享_第1页
第1页 / 共131页
我在美国的研发经历分享_第2页
第2页 / 共131页
我在美国的研发经历分享_第3页
第3页 / 共131页
资源描述:

《我在美国的研发经历分享》由会员分享,可在线阅读,更多相关《我在美国的研发经历分享(131页珍藏版)》请在装配图网上搜索。

1、我在美国的研发经历分享甲骨文公司仲秋MAIL:参考资源http:/wiki.org/wiki.cgi?WhatIsWikihttp:/www.house.gov/cao-opp/PDFSolicitations/SDLCPOL.pdfhttp:/www.iso.org/iso/en/iso9000-14000/index.htmlhttp:/www.uml.org/,http:/www.visual-http:/en.wikipedia.org/wiki/Design_pattern_(computer_science)http:/ C+)使用应用配置应用配置平台平台使用应用开发部应用开发部工

2、具开发部工具开发部最终客户最终客户应用开发部应用开发部工具开发部工具开发部所谓二级开发、二级用户l由工具开发部门根据总体框架用第三代语言设计和开发构件库及各种工作平台。l由应用开发部门根据用户需求用4GL二次开发、组装构件, 制订应用产品的商务逻辑.l工具开发部门开发应用配置平台. 工具开发部门,应用开发部门和最终用户都可以使用它配置自己的工作环境。(不同的商务逻辑和商务数据)l工具开发部门开发提供运行平台,使用用户配置的商务数据和应用开发部门配置的商务逻辑,合并成最终的产品.多级开发的优点加强知识和技能的分工细化,降低开发员的素质要求和开发的复杂度,利于人才的招聘和分配,提高开发效率。分离商

3、务逻辑和构件工具实现逻辑(商务引擎),实现体系结构一定程度上的松耦合。多条产品线可以在两极并行发展。给予最终用户和测试员一定的自由度去组合各种工作环境。开发员可利用交叉测试的策略孤立故障到应用层或工具层。组合出各种工作环境第N-1代运行平台(商务引擎)第M-1代应用的商务逻辑应用部门工作环境应用部门工作环境工具部门工作环境工具部门工作环境第M代应用的商务逻辑第N代运行平台(商务引擎)测试部门工作环境测试部门工作环境多级开发的潜在问题 各级开发部门不了解彼此的领域知识和实现。在调试一个具体的应用产品时难以独立完成。 对构件和工具的功能和约束条件存在不同的理解和假设,易在问题责任上纠缠。避免多级开

4、发问题的策略主要靠统一文档资料和规范1.3多阶段/周期的开发模式l一步到位式开发bigbangdelivery(小项目)l渐进式迭代开发evolutionarydelivery(大项目) 举例举例每个阶段/周期又细分为若干环节(分别适用于工具和应用层)l需求l计划l设计l编程l测试l部署l维护l产品补丁及升级l体系结构重构l评估和优化1.4多视图(代码视图)的开发模式l主产品视图(开发员和维护员工作交接点)l子项目开发视图(开发员工作视图)l对应已部署在客户方正在使用的视图(维护员工作视图)1.5多工作环境的开发模式-是通过配置平台控制的l开发环境(DevelopmentEnvironment

5、)1.6工作流开发模式-控制软件开发流程及其管理系统l横向由分工很细的团队,这是为了更快地开发出优质的产品,在市场竞争中生存下去。l纵向按中需求、计划、设计、编程、测试、部署(编译和集成打包)、维护、再开发和产品补丁升级的几个环节。l每个环节中,各团队分别完成整个开发过程中的某些职能,并合作组成一些工作流,由此组成了。l通过软件开发工作流程的来协调和组织各团队的开发工作。(它与国内目前采用的项目管理系统略有不同)。以工作流方式用文档和规范来管理的管理系统 管理系统是用于管理工作流程的软件。 各工作流之间是通过来连接,项目和维护的开始创建工作单。 流程表现为工作单按内部状态机规则在状态间流动。

6、工作单属性包括:问题描述,重要度,从属分支,讨论,解决方案等各种文档。 系统根据工作单当前状态通知下一个接受者,并还优先权加入接受者的工作单队列。 接受者(程序员,测试员,客户,经理等)的对工作单的不同状态有不同的控制职责,权限和规定。 工作单的终点是项目的解决或推翻。 三大公司都有自己的独立开发的管理系统,融合了自己公司的管理特性。由于工作单的细节属于公司内部的知识产权,不易公布。举例:简化的维护过程中的工作单状态图答疑:可提问第二部分:软件开发生命周期中各环节简述l我将按如下统一的格式介绍开发生命周期中的几个环节.每环节分以下五方面讲述:趣味案例想一想问题的本质是什么问题案例一:安装盘失败

7、案例问题案例二:汽车车窗失败案例问题案例三:键盘的低效格式2.1形成需求报告2.1.1挑战问题形成”需求报告”的重要性和复杂性l重要性2.1.2解决办法l由与、等人员共同完成、并达到可用性和可行性的平衡。l标记认同签名和需求锁定。l修改方案要重标签再通过。l遵循填写格式和保证各主要间的互相追溯关系和优先权。l避免使用含糊词汇(如也许,多,界面友好等)和定义有特别含义词汇。2.1.3需求文档形成的抽象结构图l主要抽象层的定义和追溯关系商业需求商业需求:客户的高层需求(市场需要,商业目标,主要特性,客户简历等)界面需求界面需求:系统与外部交互的要求(硬件,软件和通讯需求)功能需求功能需求:系统的行

8、为描述和执行功能非功能需求非功能需求:系统约束条件,环境平台,特殊规范的支持度技术需求技术需求:程序员制定的技术实现细节用户需求用户需求:描述用户要使用系统完成的任务,表达方式是用例测试设计测试设计:测试员制定的测试方案领域专家最少责任线领域专家最少责任线商业决策点商业决策点2.1.3.1l具体讨论每个l最原始的需求,一切的根源l表达要用简单扼要的自然语言l特点:突出商业价值和目标l例子 以自动取款机为例l特点以自动取款机用例为例l取款过程(U1)l特点:以自动取款机为例l安全功能(F1) 追溯到用户用例 焦点是要定义被开发的软件子系统和所有周围接触的外部实体的信息交流规范和到功能的映射 表达

9、形式被开发的被开发的软件子系统软件子系统用户网络,卫星其他软件子系统硬件用户界面硬件界面软件界面通讯界面以自动取款机为例l用户界面(I1)l特点:以自动取款机为例l语言:系统支持英文,中文l对视觉障碍者:系统提供语音提示l货币l特点:l特点:l例子2.1.3.2角色定义需各种技术人员共同协同完成l领域专家l架构师l程序员l测试员l主管部门领域专家l领域专家维护用户方的目标和利益得到最终的贯彻和保证,注重需求的市场价值,制定完备的用例而不被构架师曲解和忽略,审查各阶段成果。l领域专家起草高层需求(商业需求)和把它细化为以用例为单位的用户需求。程序构架师l构架师是开发员的领队和代言人,但不同于国内

10、,他的权力是有限的。l构架师的责任是严谨周详的理解和归纳原始的用户事例,发现和提出逻辑漏洞和未定义的潜在用例。验证需求的技术可行性,评估实现代价。l构架师的任务是他和领域专家合作制定细节的界面,功能,非功能需求,并最终和其他程序员完成技术需求和实现。测试员l不同于国内,测试员有责任参与需求分析。l测试员的责任是审视所有需求的描述是否有含糊不清和无法度量的地方。l能把需求描述转化成可执行的步骤和可以验证的信息反馈,最终书面表达为测试计划和执行。产品主管l产品主管的责任是通过比较开发成本和市场价值来保证项目开发向使公司赢利的方向发展。l对不赢利和低赢利的项目应该考虑放弃或减低他的优先权,或寻求工效

11、比最优的折衷方案。2.1.4需求阶段的工具介绍(CaliberRM)l界面保证格式。l树形视图保证需求从属关系。l维护起源追溯关系以防出现无中生有和半途而废的需求。l对人力资源核算汇总。l生成word和HTML文档资料。l多基线版本控制,比较,锁定和电子签名。2.1.5体会l美国大公司当前都认识到对需求下的代价都很大,以确保今后工作顺利。以前犯下的忽视需求的错误,十年后仍然后患无穷。l有时后,由于公司人力资源有限,程序员身兼数职(领域专家和测试),但要认识到这样作的潜在的危机-破坏了权利制约和监督,开发畸形发展。因此尽量不兼职。l为降低开发风险和尽可能提高效益,需求也可以有优先权,并指导在计划

12、,设计,编程和测试中实现优先权化。2.1.6获取需求的工作流程如何有效快速地布局资源和人力。如何监视项目的进度。如何按实际情况及时调整。如何考虑未知的技术障碍。2.2.1计划(项目管理)l解决方案B:P3,T1C:P2,T1D:P3,T2F:P2,T2G:P1,T1A:P3,T2I:P1,T5开发和计划例子-阶段分化H:P2,T4E:P3,T3K:P2,T4L:P1,T3P:P2,T1O:P2,T2N:P3,T1Q:P1,T2M:P3,T4J:P3,T2R:P3,T3阶段开发计划测试计划1周期1开发:I,G,H,F,C无2周期2开发:D,A,E,B;周期1测试Q,L,K,P,O,N3解决周期2

13、测试N,M,J,R4解决所有遗留问题回归测试注解圆:功能需求方:测试项目P:优先权T:工时阶段1(7工时)阶段2(7工时)阶段3(5工时)阶段4(7工时)开发员1IIIIIGE E E B 解决周期1的问题解决周期1,2的问题解决所有遗留问题,文档资料工作开发员2H H H H FFC D D A A从事其他项目工作测试员1从事其他项目工作N O O K K K K M M M M回归测试测试员2从事其他项目工作P Q Q LLLR R R JJ进一步安排每个测试员和开发员的工作日程2.2.2制订计划所用的工具MicrosoftProjectServerl自动生成进程表。l可调整工作容量百分比

14、。l可用实际时间矫正进度。l可保证主从和依赖关系在时序的体现。l监视项目的进度。(不同的颜色代号和%度)2.2.3体会l软件产业是创造性的企业,区别于可预测的重复性的制造企业。所以精确预测每一个新开发项目人工量是不现实的。因此要灵活认识到计划的可靠性不高,误差大。l针对技术攻关的快速原型会减小计划误差。l计划往往受公司早以公布的升级部署日期和现有的人力资源约束。过于紧缩的计划可能导致开发员为期限而牺牲产品质量。2.2.4计划制定的工作流程2.3设计阶段l2.3.1.体系结构设计l2.3.2.子系统设计2.3.1体系结构设计l运行平台体系结构(本次简单介绍J2EE)l构件开发平台体系结构(略)l

15、构件管理平台体系结构(略)l配置映射平台体系结构(略)l构件调试平台体系结构(略)体系结构l面临的问题体系结构l要收集以下资料并权衡各种制约条件J2EE体系结构的评价标准l支撑力(scalable)l易维护l易扩展l易重构l易测试l简洁性l可靠性l重用性最有效的策略:子系统间松耦合许多体系结构的革新和成就是基于解决子系统间松耦合上的技术性突破.J2EE运行体系结构中的子系统l功能层分类l部署分离客户层UITier(clientTier)中间层(可以是再分布多级的)MiddleTier数据库层DatabaseTier网络服务层WebServiceTier客户端表达逻辑clientpresenta

16、tionlogic客户端表达引擎clientpresentationengine服务器端表达逻辑serverpresentationlogic商务逻辑businesslogic商务引擎businessengine商务数据businessdata设计的核心技术是要解决是对这些功能子系统进行部署和实现松耦合的交互技术.早期的J2EE运行体系结构的一个范例客户层中间层数据库层客户端表达逻辑客户端表达引擎服务器端表达逻辑商务逻辑商务引擎商务数据商务逻辑商务逻辑l从现在角度看,早期的软件和硬件的技术局限性造成不优化的紧耦合体系结构新的J2EE运行体系结构的一个范例客户层中间层数据库层12网络服务层2客户

17、端表达逻辑1客户端表达引擎4服务器端表达逻辑10商务逻辑6商务引擎8商务数据门户其他分布系统35791113l部署l实现技术l相邻功能层的交互技术和促进松偶合的革新(1)客户端表达引擎l部署(2)客户端表达逻辑l部署(3)客户端表达引擎与革新早期使用WINDOW(受OS约束)HTML规范提供了在通用流览器与J2EE服务器的松偶合,使多流览器同时支持成为可能.随着不同类的可移动小硬件(PDA和iPhone)的出现和推广,需要一种新的抽象界面表达规范能够进一步使界面开发有重用性.(4)服务器端表达逻辑l部署(5)客户端表达逻辑与服务器端革新l早期使用WINDOWRMIlHTML规范提供了在通用流览

18、器与J2EE服务器的松偶合,使多流览器同时支持成为可能.但是,这只能满足是低频交互(lowinteractivity)的需要.l随着不同厂商(IE,NetScape,Firefox)从JAVASCRIPT原始标准上分化,和新的表达丰富的流览器插件的出现(SVG,Flash,Flex,SiverLight),出现了对高频交互(highinteractivity)的需要.lAJAX技术出现提供上述所有技术通用的更灵活的交互策略(XMLrequest,局部更新).利用JavaScript语言的灵活性,强大的DOM操作能力和与其他插件的交互能力,可以配合AJAX技术,实现Adapter,用于彻底的屏蔽

19、客户端表达引擎特征和服务器端.这要求客户端表达逻辑只阐述要客户端表达抽象的模型特征,而不解释如何表达和交该Adapter处理.(6)商务引擎l部署(7)服务器端表达逻辑与商务引擎革新WindowMVC(Strut,JSF,Maverick,WebWork)(8)商务数据l部署(最成熟和稳定的功能层)(9)商务引擎与商务数据革新ODBC,JDBC,EntityBean,JavaDataObject,TopLink,CocoBase,SQLJ(10)商务逻辑l部署(11)商务引擎与商务逻辑革新(12)网络服务层l实现技术的发展(13)网络服务层和中间层革新lEJBJMSlWSRP(WebServi

20、ceRemotePortal)是基于SOAP技术的远程门户规范.它的出现允许门户服务器(serviceconsumer)和J2EE服务器(serviceproducer)不再需要互相嵌入.一旦在producer实现两个必备和两个可选的WebService,在consumer处,可以只要花两分钟时间,实时的注册producer,便可开始使用producer提供的门户.在这之前,producer甚至都不知道consumer的存在.总之,lSOA技术为更高级的分布技术提供基础,便利了分布子系统的松偶合体系结构.老的体系结构的后患:工程上和理论上的差距逐渐增大l对一个多年从事开发某一老产品线的部门,不

21、敢按好的体系结构重构系统.l进一步发展到工程化的体系结构越来越偏离当前技术可行的理想体系结构.渐渐失去竞争力,增加维护和开发成本l如再开发基于不好的体系结构,恶性循环,象癌症扩散.有2000年历史的London城市交通规划有150年历史的Denver城市城市交通规划为什么体系结构工程上和理论上的差距逐渐增大l新需求和技术的出现往往预示老的原始设计的体系结构与当前综合需求的偏离.l软件企业的规则:体系结构(architecture)工程化=解决方案(solution)l理论上的体系结构主要基于当前的软硬件可用的公开技术和规范,有较少的约束条件,代表理想化的方向-结构简单明朗,没有杂质.l而工程上

22、的体系结构还要包括其他方面的约束条件:体系结构工程化J2EE运行体系结构工程化后客户层中间层数据库层客户端表达逻辑客户端表达引擎服务器端表达逻辑商务逻辑商务引擎商务数据遗留系统层EnterpriseInformationsystemTier(legacysystem)商务逻辑商务引擎网络服务层门户其他分布系统不敢按好的体系结构重构的原因l表面原因:缩短体系结构的理想化和工程化的策略.l要敢于重构,但是要在一开始为将来的重构打好基础.体会l对历史悠久的大公司,虽然拥有众多的长期老用户和老产品,但如果起步时失误,这个特性反会成为自身技术和体系结构革新的致命累赘.l新起步的公司也可因为没有这种累赘的

23、原因,并正确和扎实的起步,得到快速成长和领先的时机.l学习和采用其他公司的体系结构时要认识到历史发展约束造成工程结构缺陷,要取精华去糟粕,不要东施效颦2.3.3子系统设计阶段l面临的挑战2.3.2.1子系统设计l解决方案2.3.2.2UML的特点l是程序员之间的标准高效的软件蓝图的设计语言。l有比传统数据流图更丰富的表达能力。可表达继承,从属,界面,实现,实例,过程,逻辑。l体系结构图包括时序图,静态结构图,状态图,活动图,组件图,协作图,部署图,用例图等。设计模式的特点l包括多种创建模式,结构模式和行为模式,并在各种系统设计中广泛使用。l利用模式为基本设计构件可提高程序员的交流效率。l不仅局

24、限于OO语言C+, java。2.3.2.3设计阶段工具l工具介绍(BorlandTogetherControlCenter,JDeveloper,visual-paradigm)2.3.2.4体会l每个领域的开发都有其独特的设计模式,不要闭门造车,要从网上和书籍中广泛搜索思想。(例如,J2EE设计模型,javaScriptOO设计)l许多研究机构已经制订了各种设计规范,而等你去使用这个标准,而不要自己创造。(例如,门户规范WSRP,SOAWS规范)2.3.2.5设计阶段的工作流程2.4编程l面临的困境解决办法l以认同设计方案为起点。l以统一编程规范(工具,格式,命名)为准则。l以阶段性向领域

25、专家演示为需求保证。一般的编程注意事项l避免重复剪贴式编码(codeduplication)-造成多重维护l避免字面常数(literalconstantandmagicnumber)-需要分离逻辑和常数l避免变量的作用域太宽(visibilityandscope)-造成模块的紧耦合.l避免缩进不整齐,命名不规范l避免过长的子过程l使用注解(JAVADOC)l避免效率低下和内存泄露单元测试的意义l有利于鼓励围绕需求的测试(blackboxtest),减少围绕实现的测试(whiteboxtest)l逐步加强开发员开发自信心单元测试的特点l可以由程序员自写或互写自动单元测试并嵌入到测试驱动框架工具(

26、unittestframework)。l“单元”表示“独立”:各个测试可独立运行,不互相依赖。l测试单元可按测试集(TestSuite)分组。l测试驱动(testrunner)自动为每个测试单元,在启动前作准备(setup)和在结束或失败后作清理(teardown)工作。l测试驱动汇报所有测试中成功和失败记录。l虽然初期要用较多时间,但在后期面临大改动时,它是有效的快速测试方法。日志系统的特点l提供日志配置方式(配置文件或平台)编程工具l开发工具(ControlCenterTogether,JDeveloper,WSAD,VC.NET,JBuilder)体会l良好和不好的编程习惯无法直接从产品

27、的质量测试上看出,只有到别人维护时才会暴露出来,造成维护困难和后患。l个人经验,在一个大公司里,一个好的程序员领队对其他的队员的监督指导和代码审查(PeerReview),对整个队伍的素质提高有很大的影响力。编程阶段的工作流程2.5测试种类和不同阶段的重点lPre-Alpha测试l面临的困境解决办法l需求决定测试方案,而不是程序员,但程序员要参与测试方案审查。l用测试文档资料工具起草手工测试的文档好让其他的测试员和程序员能够重复。l准备稳定的数据是测试的前提工作。l测试也按重要性分级别,资源有限制时,宁可牺牲不重要的测试,而只做关键路径测试。l分散组合各种非功能需求,求广不求细。l不断提升的覆

28、盖率。(无人测试)l每个阶段都要回归测试。(积累以前完成的所有阶段)l代码分支的下并到主视图后和到客户端之前,仍要作一次主视图的集成回归测试。(积累以前所有测试)测试l测试工具介绍体会l测试的发展趋势是越来越自动化,又人力密集性到程序密集性过度。因此对测试员的要求更高,不仅会简单的机器操作,还要会使用工具和编程来实现自动测试。l但是保留一定程度的人工测试是不可避免的,因为人比机器可灵活,更敏感,更有创造力。l机器只是第一防线(廉价堡垒),人是最终防线(哨兵)。测试阶段的工作流程2.6部署-编译和集成打包阶段l面临的问题部署-编译和集成打包l解决方案部署-编译和集成打包l工具介绍。(Apache

29、Ant)体会l复杂的部署过程会吓跑客户,也会让开发员头疼。l有时,公司应该组织一些开发人员来对部署程序实现自动化和友好的交互界面,以提高整体的工作效率。2.7维护l维护大型软件中的问题维护l公司的对策维护l开发员和维护员的努力体会l开发一些维护用的调试工具和有效的日志系统。l开发该用户一个自助的问题诊断的专家系统和系统管理员监控系统,以节省维护的开销。l许多案件是用户对产品的使用不当。如果提供该用户完备的使用手册和产品教育会减少维护,同时也是公司的服务收入。维护阶段的工作流程2.8产品补丁及升级l面临的问题多流览器支持开发日历构件支持从右到左的阿拉伯语言再开发和产品布丁及升级l解决方案。归并的

30、例子分支视图的空间分布定义修改频率修改风险权限控制子视图开发视图频繁小弱主视图主产品视图经常中严客户视图已部署的客户正在使用的视图很少大很严分支的俩种形式l静态视图(staticvieworsnapshotview)归并的两种形式l上归并再开发阶段的工作流程l再开发和最初的原始开发的相同点是:产品补丁及升级l工具介绍。(BorlandStarTeam,MicrosoftSourceSafe,RationalClearCase)体会l充分利用代码管理工具的各种功能会很大的提高开发效率。l这三中工具各有千秋:2.9软件评估和优化的技术和工具l评估软件的健康性和复杂度和测试指标l评估性能和速度和内存卸露l软件的可维护性评估软件的健康性和复杂度和测试指标l工具介绍(McCabe,Together)l一些指标的定义和工程上的使用价值。评估性能和速度和内存卸露l工具介绍软件的可维护性2.10其它ISO 9000是企业的合格证书Wiki百科是将来共享知识库为何软件开发外资到印度多与中国版权收入到服务收入的转变拥有专利是保护企业的手段数据安全不可忽视 内部训练技术水平显示企业的成熟何时软件也要变成”MadeinChina”

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!