对日软件外包的软件开发过程_第1页
对日软件外包的软件开发过程_第2页
对日软件外包的软件开发过程_第3页
对日软件外包的软件开发过程_第4页
对日软件外包的软件开发过程_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.对日软件外包的软件开发过程第1章对日软件外包1.1对日软件外包的开展全球应用软件外包市场近几年平均每年以29%的速度增长,2005年整个市场规模将到达389亿美元。目前全球的软件产值中,三分之一需要通过对外发包来完成。软件外包已经成为世界软件产业开展的一个重要趋势。在这一趋势下,?振兴软件产业行动纲要?提出,从2001年到2005年,中国软件出口要从年出口7亿美元提升到50亿美元。按照预定的目的,2004年国内软件企业将要完成的出口额将到达35亿美元。这对于中国软件企业而言确实是个不小的数字。为了实现这一目的,有关人士指出,中国企业应积极拓展对欧美软件外包业务,把软件外包做强做大。但如今美国

2、市场主要被印度垄断,欧洲市场被爱尔兰垄断,中国企业的核心竞争力需要较长时间的积累,而对日软件外包,我们那么有优势。在对美软件外包市场上,中国软件企业与印度软件企业的差距是明显的,从英文程度到签证难度,从法制制度的不同到对知识产权认识程度的差异,中国软件企业要在对美软件外包市场赶上印度企业还需加以时日。美国IT从业人员中印度和中国人员的比例是31,中国软件企业目前做的外包只占日本软件外包的2%多一点。以英文为主导的软件外包市场正在逐渐萎缩,并且在这个市场上我们和印度相比竞争优势不明显。而对日软件外包市场相对印度来说,中国软件企业有地域优势和有限的语言优势,应当成为国内软件外包企业的开展导向。1.

3、2对日软件外包的现状对日外包市场潜力宏大,据IDC统计数据,2005年日本IT外包市场规模为164亿美元,而同年我国来自日本的软件发包量约为5.6亿美元,仅占日本IT外包市场的3.4%。IDC预测2020年日本IT外包市场将到达23,363亿日元约226亿美元,2020年我国对日外包将近40亿美元,占比上升为17.7%。由此可见我国对日软件外包将来的市场潜力宏大。国内现有的对日软件外包企业,主要为面向日本资讯科技行业的客户提供外包软件开发效劳,而该等客户其本身又是为日本客户或全球客户提供软件开发效劳。也就是一种工程转包性质的开发。以我如今所在公司为例,从事过制造业工程、CAD软件工具、证券金融

4、软件、物流软件等等。1.3对日软件外包的软件开发特点由于外包客户也是多为软件公司或是大公司的软件开发部分,而且由于是外包软件开发,所以开发层次比较低,或者说不是一个完好意思上的软件开发过程。根据个人在对日软件开发公司工作多年的经历,总结以下几点特点:1.技术含量低,从事低层次工作。通常,软件开发过程都要经历商业建模、需求分析、系统分析和设计、实现、测试和部署等核心流程。然而,对日外包的开发流程被严格划分开来的,外包客户从事商业建模、需求分析、系统分析和设计等高层次的工作,然后将设计书发包到国内,而国内公司仅仅只是严格根据客户的设计书,将其代码实现并通过单体测试就算完工。所以,国内对日外包企业只

5、是担当了实现、测试两个阶段的任务。也有个别工程会担当些简单的设计任务。2.工期短工作量大由于国内劳动力相对日本国内廉价许多,许多日本IT企业将开发和测试环节移到中国国内,根据客户的功能设计书或详细设计书,完成开发及测试。这样即可以降低软件开发本钱,又不至于有太大的开发风险,因为设计是日本人自己完成的。但是,时常会发生因为客户的设计不合理或不详细或理解不同等等客观原因,无法按照原来合同中规定的工数完成任务,所以常常要靠加班来争取时间。3.品质要求高谁都想花钱买到好东西,软件外包也是一样,日本公司也想花钱买到更好的客户,详细表达就是提供优质的代码成果物。然而,由于软件企业的流动性比较大,公司出于本

6、钱考虑,常会雇佣一些经历缺乏的实习人员直接投入工程开发中,导致品质较低,而为了弥补品质上问题,又需要用加班的方式来争取大量时间进步质量。4.文档要求高有些日本客户公司,施行了CMM3或更高级别的控制标准,同样也要求中国的外包公司按照其标准施行,当然这样对于国内公司自身管理才能也是一种进步。但是,有些客户公司过于注重文档,而无视了对于最更本的代码的重视程度。第2章RUP RUP是Rational统一过程Rational Unified Process的简称,它是Rational公司现归属IBM公司推出的一种软件过程产品。从软件过程形式角度看,RUP又是一种典型的软件过程形式,它以迭代增量式、架构

7、为中心、用例驱动的软件开发方法、采用UML语言描绘软件开发过程为主要特征,其中以用例驱动乃是贯穿软件开发始终的方法。2.1 RUP的特点1.迭代式开发。在软件开发的前期阶段完全并准确的掌握用户全部的需求几乎是不可能的。实际上,经常遇到,需求在整个软件开发工程中会不断改变,从而使得软件工程难于管理而产生较大风险。而迭代的开发方式允许在每次迭代过程中需求有所变化,通过不断细化来加深对问题的理解,最终实现完全满足用户需求的软件。迭代式开发不仅可以降低工程的风险,而且使得软件开发过程具备较强的控制性。2.管理需求。完善用户需求是一个渐进的过程,开发人员在开发系统之初不可能完全详细的说明一个系统的真正需

8、求。RUP描绘了如何提取、组织系统的功能和约束条件并将其文档化,用例和脚本的使用以被证明是捕获功能性需求的有效方法。3.基于组件的体系构造。组件使重用成为可能,系统可以由组件组成。基于独立的、可交换的、模块化组件的体系构造有助于管理复杂性,进步重用率。RUP描绘了如何设计一个有弹性的、能适应变化的、易于理解的、有助于重用的软件体系构造。4.可视化建模。RUP和UML结合在一起,对软件系统建立可视化模型帮助人们提供管理软件复杂性的才能。RUP告诉我们如何可视化的对软件系统建模,获取有关体系构造于组件的构造和行为信息。5.验证软件质量。在RUP中软件质量评估不再是事后进展或单独小组进展的别离活动,

9、而是内建于过程中的所有活动,这样可以及早发现软件中的缺陷。6.控制软件变更。迭代式开发中假设没有严格的控制和协调,整个软件开发过程很快就陷入混乱之中,RUP描绘了如何控制、跟踪、监控、修改以确保成功的迭代开发。RUP通过软件开发过程中的制品,隔离来自其他工作空间的变更,以此为每个开发人员建立平安的工作空间。2.2 RUP的核心工作流RUP中有9个核心工作流,分为6个核心过程工作流Core Process Workflows和3个核心支持工作流Core Supporting Workflows。尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这些

10、工作流在整个生命周期中一次又一次被访问。9个核心工作流在工程中轮流被使用,在每一次迭代中以不同的重点和强度重复。1.商业建模Business Modeling描绘了如何为新的目的组织开发一个设想,并基于这个设想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。2.需求Requirements描绘系统应该做什么,并使开发人员和用户就这一描绘达成共识。为了到达该目的,要对需要的功能和约束进展提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。3.分析和设计Analysis&Design将需求转化成将来系统的设计,为系统开发一个强健的构造并调整设计使其与实现环境相匹配,优化

11、其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计活动以体系构造设计为中心,体系构造由假设干构造视图来表达,构造视图是整个设计的抽象和简化。4.实现Implementation包括以层次化的子系统形式定义代码的组织构造;以组件的形式源文件、二进制文件、可执行文件实现类和对象;将开发出的组件作为单元进展测试以及集成由单个开发者或小组所产生的结果,使其成为可执行的系统。5.测试Test验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。RUP提出了迭代的方法,意味着在整个工程中进展测试,从而尽可能早地发现缺陷,从根

12、本上降低了修改缺陷的本钱。6.部署Deployment成功的生成版本并将软件分发给最终用户。描绘了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。7.配置和变更管理Configuration&Change Management描绘了如何在多个成员组成的工程中控制大量的产物。配置和变更管理工作流提供了准那么来管理演化系统中的多个变体,跟踪软件创立过程中的版本。描绘了如何管理并行开发、分布式开发、如何自动化创立工程。同时也阐述了对产品修改原因、时间、人员保持审计记录。8.工程管理Project Management平衡各种

13、可能产生冲突的目的,管理风险,抑制各种约束并成功交付使用户满意的产品。其目的包括:为工程的管理提供框架,为方案、人员装备、执行和监控工程提供实用的准那么,为管理风险提供框架等。9.环境Environment环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。环境工作流集中于配置工程过程中所需要的活动,同样也支持开发工程标准的活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。2.3 RUP裁剪步骤RUP是一个通用的过程模板,包含了很多开发指南、制品、开发过程所涉及到的角色说明,由于它非常庞大所以对详细的开发机构和工程,用RUP时还要做裁剪,也就是要对RUP进展配置。RUP就像

14、一个元过程,通过对RUP进展裁剪可以得到很多不同的开发过程,这些软件开发过程可以看作RUP的详细实例。RUP裁剪可以分为以下几步:1确定本工程需要哪些工作流。RUP的9个核心工作流并不总是需要的,可以取舍。2确定每个工作流需要哪些制品。3确定4个阶段之间如何演进。确定阶段间演进要以风险控制为原那么,决定每个阶段要那些工作流,每个工作流执行到什么程度,制品有那些,每个制品完成到什么程度。4确定每个阶段内的迭代方案。规划RUP的4个阶段中每次迭代开发的内容。5规划工作流内部构造。工作流涉及角色、活动及制品,他的复杂程度与工程规模即角色多少有关。最后规划工作流的内部构造,通常用活动图的形式给出。第3

15、章改进方案虽然,对日软件外包工程往往不是一个完好的软件开发过程,只是其中一部分或几部分而已,但是并不阻碍RUP在对日外包工程中发挥强大的作用。上一章节中,分析了如何根绝详细工程特性,对RUP过程进展裁剪,以适应不同的软件工程。本章节将根据裁剪步骤,结合如今公司的工程特点,细化制定适当的RUP开发过程。3.1确定工作流对日软件外包,通常是根据客户的功能需求书或详细设计书,完成代码实现和测试。所以只需要实现和测试两个工作流。结合我公司如今从事工程的特点,简单阐述一下各工作流。1.实现由于对日外包的特殊性,面对客户根本都是日本的IT企业,现阶段都处于较低层次,也就是只负责代码实现和测试,可能也会从事

16、部分简单设计。所以,根据客户的设计书完成符合要求的代码就是对日外包的主要工作任务。所以实现工作流也是最重要的工作流。而且,由于是根据日方的设计从事开发实现,所以除了实现本身的任务外,还有承前的工作要完成,比方:理解设计书的要求,开发环境搭建,判断设计中可能存在的不合理性等。而这些问题都可能直接影响到最后是否能顺利完成实现的工作任务。2.测试判断开发的代码是否能交付,也就是依靠测试用例了,我方只担任单体测试部分的任务,并将全部通过测试的代码和测试用例书作为成果物交付给日方。假设,由于单体测试内容不全面,而在结合测试中发现的问题,将作为Bug报告,再由担当者修正后提交。以上讲的两个工作流,是如今多

17、数对日外包公司承担的主要任务,当然也有部分公司可能承接的工程是个完好的软件过程,涉及到9个工作流中的绝大多数,在此不作重点依次展开。其实各个工程,由自身特点可以制定出自己的RUP软件过程。只要实用就是最好。3.2各工作流的职责和制品由于是委托开发,客户为了有效控制开发过程和质量,往往是通过各种文档来对工程进展管理和控制。对日外包开发中,文档的分类比较繁多,规格要求也根据不同公司有不同的要求。以以下举几种文档,在整个开发过程中起俄作用:1.功能设计书用户提出委托开发要求,中方根据功能设计书,理解所开发工程的所有需求,并估计工数和工程报价,假设对方客户对报价没有异议,就正常进入开发施行阶段。开发小

18、组成员开场一起研究功能设计,解决理解和实现技术上的所有问题,尽可能防止因设计书理解缺乏,而导致工程失败。2.详细设计书通常,客户是不提供详细设计书,而是开发团队根据功能设计书,结合实现技术的特点,完成详细设计书,作为实现工作流的前期成果物,交付日方Review确认,只有通过Review后才能进入到正式的开发实现阶段。3.代码规约为加强代码具有良好的可读性,需要通过在开发前期就作好代码标准的教育工作,标准的代码才能有效提交代码的品质。4.开发环境构建步骤说明书外包开发通常客户是将完好的工程拆分成多个相对独立的模块,分别发包给一个或多个外包开发公司开发,所以需要提供详细完善的开发环境构建说明书,便

19、于开发团队尽快熟悉环境完成开发任务。5.代码代码程序当然是所有制品中最重要的,其质量直接影响到工程的成功与否。由于是委托开发,全部都是根据客户提供的功能设计书来完成代码开发的,所以往往可能因为设计书理解缺乏,或设计书内容存在错误等外部因素影响代码的质量。而一旦存在疑问时,就应该及时通过QA方式向日方确认。最后在完成全部代码实现后,需要和日方一起Review全部代码。总之,工程成败就取决于代码的质量如何了。6.代码目录构造说明书此文档只是一个说明性的文档,用说明各个代码文件的目录构造,编译环境的设置等相关详细内容。方便客户拿到代码文件后能尽快确认代码的正确性。7.测试用例书测试用例书也是整个开发

20、过程中又一个关键,也是保证代码质量的一种有效手段。通常分为正常系和异常系两大类测试用例,判断程序的正常执行结果是否符合需求,是否具有一定的判错才能等。与代码一样,测试用例书也是需要提交日方客户Review确认后,再能进入测试阶段的。8.测试数据测试过程用到的所有数据,可能因为测试数据的局限性导致有些Bug没有被发现,那就可以根据现有的测试数据内容判断测试是否全面而且有效了。9.测试结果书根据测试用例书,对最终的代码程序进展测试,并全部确认无误后,填写测试结果书提交给日方客户。10.辅助工具报告为了保证代码的质量,通常还会使用一些自动化测试工具,对性能,破绽,标准等方面进展测试,根据测试的结果报

21、告,尽可能修正后,将最终的报告书也需要提交给日方客户。3.3 4个阶段的划分RUP将整个开发过程划分成初始、细化、构造、交付四个阶段。每个阶段中都包含着多个工作流,只是工作的重点不同,同时还包含着复数个迭代过程。迭代次数和划分时间也许无法事先预计,但是可以大致规划,再根据详细情况,灵敏变动修改的。以下将以四个阶段为单位分别展开阐释。1.初始初始阶段主要完成的任务是:掌握功能设计书,熟悉开发环境,估算工程工数和规模。似乎初始阶段的任务并不难,但是其估算结果的正确与否会影响到最后的实现情况。所以需要全面而准确的理解功能需求,才能防止过大的偏向。初始阶段相对任务比较轻,一般一次迭代就能完成。在此迭代过程中也可以尝试实现部分代码,理解详细的工程难度,以便准确的估算。2.细化细化阶段主要任务是:作成详细设计书和测试用例书,并完成部分代码的实现。详细设计书和详细实现方法是有亲密联络的,所以应该在写详细设计书的同时编写并测试通过部分代码,以验证设计的可行性。而如今多数工程中存在的问题是,大家并不能意识到迭代开发的重要性,还不能掌握迭代开发的手段躲避和控制风险。比方,详细设计时,也会尝试调查,但是调查时候写的代码可能并不是最后要交付的代码,可以认为那是一定程度上的资源浪费。所以应该加强开发团队在细化阶段是,注重迭代开发,使得工程不断完善。3.构造构造阶段主要任务是:根据详细设计书

温馨提示

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

评论

0/150

提交评论