1、实行软件工程项目管理 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导、控制、管理和规范某个软件和软/硬件系统建设的人,项目经理(负责人)是最终对客户负责的人。 软件项目经理(负责人):软件项目经理(负责人)对一个项目的所有软件活动负完全责任,控制一个项目的所有软件资源,按照软件约定与项目经理(负责人)打交道。 软件工程组:软件工程组是负责一个项目的软件开发和维护活动(例如:需求分析、设计、编程和测试)的人员(包括管理人员和技术人员) 。 系统工程组:系统工程组是负责下列工作的人(既有经理也有技术人员)的集团:规定系统需求;将系统需求分配给硬件、软件和其它成分;规定硬件、软件
2、和其它成分之间的界面;以及监控这些成分的设计和开发以保证它们符合其规格说明。 系统测试组:系统测试组是一些负责策划和完成独立的软件系统测试的个人(既有经理又有技术人员)的集团,测试的目的是为了确定软件产品是否满足对它的要求。 软件质量保证组:软件质量保证组是一些计划和实施项目的质量保证活动的个人(既有经理又有技术人员)的集团,其工作的目的是保证软件过程的步骤和标准得到遵守。 项目管理培训软件配置管理组:软件配置管理组是一些负责策划、协调和实施软件项目的正式配置管理活动的个人(既有经理又有技术人员)的集团 总体流程如下: 计划阶段需求分析阶段软件开发阶段测试阶段完成 一、项目计划阶段 项目计划草
3、案和风险管理计划作为第一步,当有一个商业机会后,根据公司高层负责制定的初步商业计划书来完成项目的计划草案,确定、分析项目风险并确定其优先级,还要制定风险解决方案。本阶段的目的是确立产品开发的经济理由。 当确定开发之后则制定软件开发计划、人员组织结构定义及配备、过程控制计划。 (1 )项目计划草案 项目计划草案应包括产品简介、产品目标及功能说明、开发所需的资源、开发时间和里程碑。 (2 )风险管理计划 项目经理博客也就是把有可能出错或现在还不能确定的东西列出来,并制定出相应的解决方案。风险发现得越早对项目越有利。 (3 ) 软件开发计划 软件开发计划的目的是收集控制项目时所需的所有信息,项目经理
4、根据项目计划来安排资源需求并根据时间表跟踪项目进度。项目团队成员根据项目计划以了解他们的工作任务、工作时间以及他们所依赖的其他活动。 项目管理培训可将计划分成总体计划和详细计划,总体计划中每个任务为一个里程碑,详细计划中必须将任务落实到个人。 软件开发计划还应包括产品的应收标准及应收任务(包括确定需要制订的测试用例) 。 (4 )人员组织结构定义及配备 常见的人员组织结构有垂直方案、水平方案、混合方案。垂直方案中每个成员充当多重角色。水平方案中每个成员充当一到两个角色。混合方案则包括了经验丰富的人员与新手相互融合。具体选择根据人员实际技能情况进行选择。 (5 )过程控制计划 过程控制计划的目的
5、是收集项目计划正常执行所需的所有信息,用来指导项目进度的监控、计划的调整,确保项目按时完成。 二、需求分析阶段 需求分析阶段的目的是在系统工作方面与用户达成一致。 (1 )软件需求规约 详细说明系统将要实现的所有功能。 (2 )用户界面原型 可以有三种表示方法:图纸(在纸上) 、位图(绘图工具) 、可执行文件(交互式) 。 三、软件开发阶段 本阶段从物理上实现目标系统。采用了面向对象方法。 (1 )软件架构 说明软件的组织结构、部署结构及运行环境。(2 )类设计 定义类之间的关联和类的属性、方法。 项目经理博客(3 ) 数据库设计 定义数据库表之间的关联和各个表的字段。 (4 )编码和单元测试
6、 按照设计文档进行编码,每完成一个模块应进行单元测试。 (5 )集成系统 按软件组织结构的要求将各个子系统组合起来。 四、测试阶段 测试的目的是在发布之前找出程序的错误。包括:核实每个模块是否正常运行(参考设计文档) 、核实需求是否被正确实施(参考需求文档) 。 (1 )测试计划 收集和组织测试信息,为测试工作提供指导。 (2 )测试数据 尽量使用真实数据。 项目经理圈子(3 )测试报告 记录测试结果,详细描述问题,提出解决办法。 bbs。mypm。net(4 )帮助文件和用户操作手册 五、管理软件开发过程 有以下几方面地工作: 文章(1 )组织会议 讨论会议、总结会议等。 (2 )评审程序
7、对各个阶段的工作结果进行审核。 (3 )协调人员 (4 )配置管理 使用一些配置管理工具进行开发文档管理,如:visualsourcesafe,teamsouce 等 六、各参与角色的具体职责描述及对人员的要求 转自(1 )项目经理职责: 1、制定产品的目标。 2、制定各个工作的详细任务表,跟踪这些任务的执行情况,进行控制。 3、组织会议对程序进行评审。 4、综合具体情况,对各种不同方案进行取舍并做出决定。 5、协调各项目参与人员之间的关系。 人员要求: 对产品有激情,具有领导才能。 对问题能正确而迅速地做出确定。 项目经理博客能充分利用各种渠道和方法来解决问题。 能跟踪任务,有很好地日程观念
8、。 能在压力下工作。(2 )系统分析员 职责: 1、了解用户需求,写出软件需求规约 。 2、建立用户界面原型。 人员要求:担任系统分析员的人员应该善于协调,并且具有良好的沟通技巧。担任此角色的人员中必须要有具备业务和技术领域知识的人才。 (3 )设计员 职责: 1、定义类的方法和属性以及各个类之间的关联,画出类图。2、进行数据库设计。 人员要求:掌握面向对象分析与设计技术,统一建模语言(uml) 。 (4 )程序员职责:按项目的要求进行编码和单元测试。 人员要求:良好的编程技能和测试技术。 (5 )测试员职责:执行测试,描述测试结果,提出问题解决方案。 人员要求:了解被测试的系统,具备诊断和解
9、决问题的技能,编程技能软件项目开发流程第一个步骤是市场调研,技术和市场要结合才能体现最大价值。第二个步骤是需求分析,这个阶段需要出三样东西,用户视图,数据词典和用户操作手册。用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了很多操作方面的流程和条件。数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成了一半多。用户操作手册是指明了操作流程的说明书。请注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成这些,就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的,因果颠倒,顺序不分,开发工作和实际需求往往因此产生隔
10、阂脱节的现象。需求分析,除了以上工作,笔者以为作为项目设计者应当完整的做出项目的性能需求说明书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方(客户或公司市场部门)能够有真正的沟通和了解。 第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源要求。作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和经验教训的总结,还要重新进行详细设计的步骤第四个步骤是详细设计,这是考验技术专
11、家设计思维的重要关卡,详细设计说明书应当把具体的模块以最干净 的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软件系统在完成了一半的时候,其实还没有开始一行代码工作。那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。 第五个步骤是编码,在规范化的研发流程中,编码工作在整个项目流程里最多不会超过 1/2,通常在 1/3 的时间,所谓磨刀不误砍柴功,
12、设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug 永远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不发补丁的时候吗?从来没有! 第六个步骤是测试测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3 个月到 1 年的外部测试都是正常的,因为永远都会又不可预料的问题存在。完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营状况并持续修补升级,直到这个软件被彻底淘汰为止。