软件项目开发流程以及人员职责
作者:dracula    来源:网友原创    日期:2007-9-3   
实行软件工程项目管理

▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导、控制、管理和规范某个软件和软/硬件系统建设的人,项目经理(负责人)是最终对客户负责的人。
▲ 软件项目经理(负责人):软件项目经理(负责人)对一个项目的所有软件活动负完全责任,控制一个项目的所有软件资源,按照软件约定与项目经理(负责人)打交道。
▲ 软件工程组: 软件工程组是负责一个项目的软件开发和维护活动(例如:需求分析、设计、编程和测试)的人员(包括管理人员和技术人员)。
▲ 系统工程组: 系统工程组是负责下列工作的人(既有经理也有技术人员)的集团:规定系统需求;将系统需求分配给硬件、软件和其它成分;规定硬件、软件和其它成分之间的界面;以及监控这些成分的设计和开发以保证它们符合其规格说明。
▲ 系统测试组:系统测试组是一些负责策划和完成独立的软件系统测试的个人(既有经理又
有技术人员)的集团,测试的目的是为了确定软件产品是否满足对它的要求。
▲ 软件质量保证组: 软件质量保证组是一些计划和实施项目的质量保证活动的个人(既有经理又有技术人员)的集团,其工作的目的是保证软件过程的步骤和标准得到遵守。
       软件配置管理组: 软件配置管理组是一些负责策划、协调和实施软件项目的正式配置管理活动的个人(既有经理又有技术人员)的集团
 
总体流程如下:

计划阶段-》需求分析阶段-》软件开发阶段-》测试阶段-》完成

一、项目计划阶段 

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

1)项目计划草案

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

2)风险管理计划

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

3 软件开发计划

  软件开发计划的目的是收集控制项目时所需的所有信息,项目经理根据项目计划来安排资
源需求并根据时间表跟踪项目进度。项目团队成员根据项目计划以了解他们的工作任务、工作时间以及他们所依赖的其他活动。

可将计划分成总体计划和详细计划,总体计划中每个任务为一个里程碑,详细计划中必须将任务落实到个人。

软件开发计划还应包括产品的应收标准及应收任务(包括确定需要制订的测试用例)。

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

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

5)过程控制计划


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

二、需求分析阶段

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

三、  软件开发阶段 

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

四、测试阶段

测试的目的是在发布之前出程序的错误。包括:核实每个模块是否正常运行(参考设计文档)、核实需求是否被正确实施(参考需求文档)。
1)测试计划
    收集和组织测试信息,为测试工作提供指导。
2)测试数据
    尽量使用真实数据。
3 测试报告
    记录测试结果,详细描述问题,提出解决办法。
4)帮助文件和用户操作手册
五、 管理软件开发过程
有以下几方面地工作:
1)组织会议
讨论会议、总结会议等。
2)评审程序
对各个阶段的工作结果进行审核。
3)协调人员
4 配置管理


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

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

1 项目经理

职责:

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

人员要求:

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

2)系统分析员

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

职责:

1  定义类的方法和属性以及各个类之间的关联,画出类图。
2  进行数据库设计。
人员要求:    掌握面向对象分析与设计技术,统一建模语言(uml)
4)程序员
职责:按项目的要求进行编码和单元测试。
人员要求:良好的编程技能和测试技术。
5)测试员
职责: 执行测试,描述测试结果,提出问题解决方案。
人员要求:了解被测试的系统,具备诊断和解决问题的技能,编程技能
成功项目管理的秘诀
作者:    来源:网友原创    日期:2007-6-26   
    编者按:在企业的实际运作中,项目管理已经成为越来越多企业亟待补习的一门功课。然而,由于在这个方面的先天不足,国内IT企业常常苦于不得门径而入。

    在交流中,黄绍良先生还表达了这样的思维,希望能够把中国文化特和项目管理相结合,构建一个更加完美的项目管理模式。确实,中国这样一个具有悠久历史文化的国家,当然有资格有能力对世界经济文化的发展施加更为深刻的影响,我们输出的应该远远不仅是物质产品。立足在这个意义上,我们也希望这个栏目能够成为和有志于此的同道们交流的窗口。

    当我开始在从事项目管理的工作时,首先是负责一些服务交付的项目。这段时间常常发觉合约的内容跟实际要交付的服务不相符,而且工作量比较竞投时的估算要高,更有些时候要提供一些正在研发过程中的产品或从没有进行过的集成工作。后来负责一些系统升档和维护服务的项目,那时候是每天都像救火员,每天都要解决一些客户支援的优先权分配问题,解
决资源调配的纷争,开发一些系统附加功能的需求。最后开始被指派去负责一个竞投项目的时候,才晓得竞投项目的压力和供应商间的激烈竞争,在短短十多天的时间内把建议书完成,往往在限期的前一天晚上需要工作到深夜,把各技术人员和分包商所提供的资料和收集有关销售说明书整理,按标书的指示安排,统一,打印,装证,然后在最后的一分种交付业务人员拿去递交。从不断的项目回顾过程中,在其他资深项目经理的训导下,在一些从业人员的经验交流聚会中,才慢慢地领会出项目管理技巧的实际应用。同时更领会到除了实际的经验外,还需要不断地跟其他从业人员交流经验,从别人的失败和成功个案中学习,才能够提升自己的管理能力和技巧。 
     
    第一秘诀:经验交流

    这个专栏的目的是跟各位读者分享我过去三十多年来在国外一些高新技术企业中的项目管理经验,从高新技术企业的基本运作过程中:包括营销阶段中的业务竞投项目,服务交付期间的系统开发和安装项目,系统维护期间的更新和维护项目等三个不同的营运阶段来探讨一些项目管理知识体系的应用和技巧。把自己过去的经验提供读者参考,同时也希望能够抛砖
引玉,让读者在看完了每一期的内容后,也能把各自的经验告知电脑商情报在此专栏中刊登,让其他从业人员能够有机会分享和交流。

    读者要是对内容有任何的疑问,又或者在项目管理过程中所遇到的各种疑难,都可以提出来让我们共同探讨如何应用知识体系来解决,建立一个比较完善的运作模式,让我们能共同提升国内项目管理从业人员的能力,打造出中国项目管理的特。

    第二秘诀:不断协调

    大家都知道项目经理没有固定的团队组合,在没有项目的时候更没有实权,有项目的时候需要从别的部门借调人力,最后得到的资源未必一定是项目所需的,往往是经验不足,或者是技术不到位的次等人员。

    同时,项目的范围在接收的时候往往含糊不清,需要跟客户和业务人员确认,又或者项目范围太广,远远超出项目的财务和时间预算,这一切都要不断地跟项目赞助人,各部门的主
管和客户协调才能够建立可交付的项目指标和有资源来进行项目的交付。

    在项目进行的过程中,还是需要不断地跟客户,主管,或者是组员的领导进行协调,来有效地管理范围变更的要求,或延长组员借用的时间等工作。能够有效地跟各方面进行协调是成功项目管理很重要的一环。

    第三秘诀:不要做老大

    很多项目经理认为在进行项目的时候,便有全权去进行项目有关的决策。于是把自己放在项目组织架构的最上、最大的位置中,害怕别人不知道自己是这项目的经理。其实这是最大的误点。当你接收项目的时候,每一个项目涉及人都已经知道你是项目经理,成功地完成项目的时候当然是最理想,但历史告诉我们科技项目的失败率达到百分之七十,所以当失败的时候,你也将负全责。

    聪明的项目经理会借助领导的权力来达到自己的目标。让客户的领导和自己的领导来做整
个项目的监管,有重要决定的时候让他们去替你作主,替你去推动你要推动的工作或目标。项目成功的时候,你还是那个众所周知的项目经理。万一失败的时候,也有这帮领导替你分担一部分的责任,何乐而不为呢! 
         
    第四秘诀: 让组员投入而不是参与

    话说有一头母鸡和一头猪走过一家孤儿院,看到里面的小孩瘦骨垒垒,好像多天没有好好地吃一顿的样子,那母鸡和小猪便起了恻隐之心,互相商量如何提供一些帮助。想了一会儿,母鸡对小猪说:“我们让那些可怜的小孩好好的吃一顿吧,我可以生些鸡蛋来让他们做炒蛋,你也可以从大腿上割一块肉来让他们炒肉丝,你说可好?”小猪看着母鸡一会儿,然后对母鸡说:“能够帮助那些小孩是一件好事,你生一些鸡蛋,对你来说是‘参与’、我要从大腿上割一块肉出来,那可是全面的‘投入’哪!”

    换句话说,要能够让组员和项目涉及人全面投入,才能够让项目成功。这当然不能鼓励你用恐吓的手段,只是让项目涉及人理解到项目对他们将来业务和运作上的重要,和组员对自
己本身的自信和能力等方面,让大家能够同心协力地去完成项目,有效利用这一策略能提高士气和团队的结合力,减低组员和各方面的纷争和指责,共同为目标而努力。

    这些是我常对一些新进的项目从业人员所说的项目管理“软技巧(soft skill)”,可以从不同的项目中学习到不同的方法,也是属于项目管理知识体系范围之外,但必须拥有的项目管理技巧。能够跟其他项目管理从业人员互相交流这些软技巧,便能更快地提升自身的管理能力。