代码改变世界

软件外包相关职业规划

2011-10-17 12:14  张剑  阅读(611)  评论(0编辑  收藏  举报

有学生问相关的问题,可能大家对软件外包及软件项目流程还不是太清楚,所以在这里给大家做个简单的分析:

一. 软件外包的目的:
软件外包就是企业为了专注核心竞争力业务和降低软件项目成本,将软件项目中的全部或部分工作发包给提供外包服务的企业完成的软件需求活动。

二.软件外包的主要内容:
现在业务流程外包(BPO)已经成为外包服务新的发展趋势,在未来几年内将成为外包的主要内容。BPO包括人力资源、采购、财会、客户中心、后勤、研发、营销、工厂运作、培训,这些大类还可以进一步细分。不仅IT行业需要BPO,而且BPO的每项业务都离不开IT业务的支持,从而产生IT外包机会。

三.软件外包项目开发简要流程:
调研 :根据客户提出的需求进行详细的需求调研,编写需求规格说明书;
系统分析 :客户确认需求,对需求进行系统分析,确定功能点与业务流程;
系统设计 :根据系统分析的结果进行初步设计,按功能点进行详细设计;
程序开发 :编写代码,提交测试计划;
测试 :按功能点进行测试,整体测试;
交付 :交给客户试用,反馈、修正,正式提交客户。

四.软件外包项目开发复杂流程:
计划阶段-》需求分析阶段-》软件开发阶段-》测试阶段-》完成 
1、项目计划阶段 

项目计划草案和风险管理计划作为第一步,当有一个商业机会后,根据公司高层负责制定的初步商业计划书来完成项目的计划草案,确定、分析项目风险并确定其优先级,还要制定风险解决方案。本阶段的目的是确立产品开发的经济理由。 
当确定开发之后则制定软件开发计划、人员组织结构定义及配备、过程控制计划。

(1)项目计划草案

项目计划草案应包括产品简介、产品目标及功能说明、开发所需的资源、开发时间和里程碑。 
(2)风险管理计划

也就是把有可能出错或现在还不能确定的东西列出来,并制定出相应的解决方案。风险发现得越早对项目越有利。

(3) 软件开发计划

  软件开发计划的目的是收集控制项目时所需的所有信息,项目经理根据项目计划来安排资源需求并根据时间表跟踪项目进度。项目团队成员根据项目计划以了解他们的工作任务、工作时间以及他们所依赖的其他活动。 可将计划分成总体计划和详细计划,总体计划中每个任务为一个里程碑,详细计划中必须将任务落实到个人。软件开发计划还应包括产品的应收标准及应收任务(包括确定需要制订的测试用例)。

(4)人员组织结构定义及配备

         常见的人员组织结构有垂直方案、水平方案、混合方案。垂直方案中每个成员充当多重角色。水平方案中每个成员充当一到两个角色。混合方案则包括了经验丰富的人员与新手相互融合。具体选择根据人员实际技能情况进行选择。

(5)过程控制计划 
过程控制计划的目的是收集项目计划正常执行所需的所有信息,用来指导项目进度的监控、计划的调整,确保项目按时完成。

2、需求分析阶段

需求分析阶段的目的是在系统工作方面与用户达成一致。 
(1)软件需求规约
详细说明系统将要实现的所有功能。 
(2) 用户界面原型 
 可以有三种表示方法:图纸(在纸上)、位图(绘图工具)、可执行文件(交互式)。

3、  软件开发阶段 

本阶段从物理上实现目标系统。采用了面向对象方法。
(1)软件架构 
 说明软件的组织结构、部署结构及运行环境。 
(2)类设计 
定义类之间的关联和类的属性、方法。 
(3)数据库设计 
定义数据库表之间的关联和各个表的字段。
(4)编码和单元测试
 按照设计文档进行编码,每完成一个模块应进行单元测试。
(5)集成系统 
按软件组织结构的要求将各个子系统组合起来。

4、测试阶段

测试的目的是在发布之前找出程序的错误。包括:核实每个模块是否正常运行(参考设计文档)、核实需求是否被正确实施(参考需求文档)。 
(1)测试计划 
    收集和组织测试信息,为测试工作提供指导。
(2)测试数据 
    尽量使用真实数据。 
(3) 测试报告 
    记录测试结果,详细描述问题,提出解决办法。 
(4)帮助文件和用户操作手册

5、 管理软件开发过程 
有以下几方面地工作: 
(1)组织会议 
讨论会议、总结会议等。 
(2)评审程序 
对各个阶段的工作结果进行审核。 
(3)协调人员 
(4) 配置管理

        使用一些配置管理工具进行开发文档管理,如:visual sourcesafe,teamsouce等

六、 各参与角色的具体职责描述及对人员的要求 

(1) 项目经理
职责:

1、  制定产品的目标。 
2、  制定各个工作的详细任务表,跟踪这些任务的执行情况,进行控制。 
3、  组织会议对程序进行评审。 
4、  综合具体情况,对各种不同方案进行取舍并做出决定。 
5、  协调各项目参与人员之间的关系。

人员要求:

对产品有激情,具有领导才能。
对问题能正确而迅速地做出确定。 
能充分利用各种渠道和方法来解决问题。 
能跟踪任务,有很好地日程观念。 
能在压力下工作。

(2)系统分析员

职责: 
1、  了解用户需求,写出《软件需求规约》。
2、  建立用户界面原型。 
人员要求:担任系统分析员的人员应该善于协调,并且具有良好的沟通技巧。担任此角色的人员中必须要有具备业务和技术领域知识的人才。

(3)设计员 
职责: 
1、  定义类的方法和属性以及各个类之间的关联,画出类图。 
2、  进行数据库设计。 
人员要求:    掌握面向对象分析与设计技术,统一建模语言(uml)。 
(4)程序员 
职责:按项目的要求进行编码和单元测试。 
人员要求:良好的编程技能和测试技术。 
(5)测试员 
职责: 执行测试,描述测试结果,提出问题解决方案。
人员要求:了解被测试的系统,具备诊断和解决问题的技能,编程技能。