第一篇:软件开发管理规定
软件开发管理规定
第一条 第二条 第三条 为规范自有软件研发以及外包软件的管理工作,特制定本制度。本制度中软件开发指新系统开发和现有系统重大改造。
本制度中自行开发是指主要依赖公司自身的管理、业务和技术力量进行系统设计、软件开发、集成和相关的技术支持工作,一般仅向外购置有关的硬件设备和支撑软件平台;合作开发是公司与专业IT公司(合作商)共同协作完成IT应用的项目实施和技术支持工作,一般形式是公司负责提供业务框架,合作商提供技术框架,双方组成开发团队进行项目实施,IT系统的日常支持由IT管理小组和合作商共同承担,IT管理小组负责内部(一级)支持,合作商负责外部(二级)支持;外包开发是指将IT应用项目的设计、开发、集成、培训等任务承包给某家专业公司(可以是专业的IT公司或咨询公司等),由该公司(承包商)负责应用项目的实施。
第四条 软件开发遵循项目管理和软件工程的基本原则。项目管理涉及立项管理、项目计划和监控、配置管理、合作开发管理和结项管理。软件工程涉及需求管理、系统设计、系统实现、系统测试、用户接受测试、试运行、系统验收、系统上线和数据迁移。
第五条 除特别指定,本制度中项目组包括业务组(或需求提出组)、IT组(可能包括网络管理员和合作开发商)。
第二节 立项管理
第六条 提出开发需求的信息技术部门参与公司层面立项,进行立项的技术可行性分析,编写《立项分析报告》,开展前期筹备工作。《立项分析报告》应明确项目的范围和边界。
第七条 第八条 应用系统主要使用部门将《立项分析报告》上交公司进行立项审批。《立项分析报告》得到批准后,成立项目组(如果是外包开发,则成立外包商项目组;如果是合作开发,则与外包商共同成立合作开发项目组,以下统称“项目组”),项目组应包括业务组(由公司相关业务部门组成)和IT组(自行开发为办公室网络管理员;外包开发为外包商成员;合作开发为网络管理员和外包商成员)。公司委派一名员工负责监督项目的进度,进
第九条
第十条
第十一条第十二条第十三条第十四条第十五条第十六条第十七条行项目管理工作,确保开发能及时完成并能满足业务需要。项目组人员的选择应满足项目对业务及技术要求,项目组人员应有足够的业务和IT技术方面的专业知识来胜任项目各方面的工作。
第三节 需求分析
立项后业务组对用户需求进行汇总整理,出具《业务需求说明书》,并确保《业务需求说明书》中包含了所有的业务需求。经系统使用部门审批确认,作为业务需求基线。
IT组在获得《业务需求说明书》后,提出技术需求和解决方案,并对系统进行定义,出具《系统需求规格说明书》。《系统需求规格说明书》需详细列出业务对系统的要求(界面、输入、输出、管理功能、安全需求、运作模式、关键指标(KPI)等)。《系统需求规格说明书》需要由业务组提交给相关业务流程负责人确认。
对于合作开发的项目,当业务需求发生变更时,业务组应提交《需求变更申请》,IT组组长审批后交给合作开发商实施。
项目组应对需求变更影响到的文档及时更新。
第四节 项目计划和监控
软件开发采用项目形式进行管理。项目经理负责整个项目的计划、组织、领导和控制。
需求分析过程中,项目经理组织制定详细的《项目计划书》,包括具体任务描述和项目进度表等。
在项目的各个阶段,业务组组长和IT组组长需配合项目经理制定阶段性项目计划。业务组组长和IT组组长需配合项目经理对项目计划执行情况进行监控,确保项目按计划完成。
项目计划需要变更时,项目经理填写《项目计划变更说明》,并提交公司主管领导审批,通过审批后,交给业务组组长和IT组组长执行。
第五节 系统设计
系统设计应分为概要设计和详细设计,系统设计要遵循完备性、一致性、第十八条 第十九条
第二十条
第二十一条第二十二条第二十三条第二十四条第二十五条第二十六条第二十七条第二十八条第二十九条扩展性、可靠性、安全性、可维护性等原则。
在系统设计阶段中,用户应充分参与,确保系统设计能满足系统需求。项目组进行详细设计,出具《设计说明书》和《单元测试用例》。《设计说明书》中需要定义系统输入输出说明和接口设计说明。公司主管领导组织相关人员对概要设计进行评审,出具《设计评审报告》。业务组组长和IT组组长应参加此评审并对评审意见签字确认。
设计评审均以《业务需求说明书》和《系统需求规格说明书》为依据,确保系统设计满足全部需求。
对已确认通过的系统设计进行修改需获得管理部门、业务组组长和IT组组长的审批后方可进行。
对系统设计的修改的文档须由文档管理人员进行归档管理。
第六节 系统实现
项目组根据《设计说明书》制定系统实现计划,并提交项目经理对计划可行性进行审批。
系统实现包括程序编码、单元测试和集成测试。
项目组保证开发、测试和生产环境独立,为各环境建立访问权限控制机制,并明确项目成员的职责分工。对开发环境、测试环境与生产环境在物理或逻辑方面应该做到隔离;如果环境的分隔是通过逻辑形式实现的,应定期检查网络设置。项目组对已授权访问生产环境的人员进行详细记录,并对该记录进行定期检查,确保只有经授权的人员才能访问到生产环境。
项目组进行单元测试和集成测试,测试人员签字确认测试结果。
第七节 系统测试和用户测试
项目组制定《系统/用户测试计划》,并提交项目经理对计划可行性进行审批。
《系统/用户测试计划》必须定义测试标准,并明确各种测试的测试步骤和需要的系统设置要求。
项目组向数据拥有部门申请获取测试用业务数据的使用权,对获取的数据进行严格的访问控制,确保只有相关项目人员才能访问及使用。
第三十条 项目组负责测试数据准备,测试用数据要足够模拟生产环境中的实际数据。对已评定为敏感信息的数据进行敏感性处理和保护。
第三十一条 IT组或合作开发商建立测试环境进行系统测试。在系统测试中对新系统内部各模块之间的接口和与其他系统的接口进行充分测试。出具《系统测试报告》,测试人员签字确认测试结果。
第三十二条 系统测试通过后,IT组配合业务组建立用户测试环境,业务组根据用户测第三十三条
第三十四条 第三十五条 第三十六条 第三十七条 第三十八条 第三十九条 第四十条 试用例进行用户测试,出具《用户测试报告》,业务组组长和IT组组长应在用户测试报告中签字确认。
项目组完成系统帮助文档(其中包括《用户操作手册》和《安装维护手册》)。凡涉及应用系统的变更,应对系统帮助文档及时更新。
第八节 试运行
系统主要使用部门根据项目规模及影响决定试运行策略。
项目组制定《试运行计划》,并制定试运行验收指标,上报公司主管领导审批。《试运行计划》中应包含问题应对机制,明确问题沟通渠道和职责分工。
项目组联合试运行单位进行相关系统部署工作,准备培训资料,对相关用户和信息技术人员进行培训。用户培训的完成度应为实施后评估的指标之一。
项目组根据《试运行计划》进行系统转换和数据迁移。系统转换前,检查系统环境,确保运行环境能满足新应用系统的需要。系统转换时必须详细记录原系统中的重要参数、设置等系统信息,并填写试运行报告相关内容。系统参数、设置的转换工作作为系统上线的验收的评估指标之一。
数据迁移前,应制定详细的《数据迁移计划》,《数据迁移计划》中应包含迁移方案、测试方案、数据定义,新旧数据对照表、迁移时间、回退计划等信息。数据迁移计划需经项目经理和主管领导签字审批。
数据迁移后,项目组对数据迁移的完整性和准确性作出检查,出具《数据迁移报告》,其中包括数据来源、转换前状态、转换后状态,数据迁移负责人、对完整性检查情况、对准确性检查情况等内容。各相关部门验收转换结果后在该报告上签字确认。
系统转换和数据迁移由试运行单位业务部门和公司主管领导共同监督并进行验收。
第四十一条 系统转换和数据迁移验收通过后,正式启动试运行。在试运行过程中,试运行单位办公室把系统运行情况(系统资源使用,反应速度等)记录到试运行报告中。必要时,项目组应根据系统运行情况对应用系统进行优化。
第四十二条 试运行达到试运行计划规定的终止条件时,项目组编写《试运行报告》。此
第四十三条 第四十四条 第四十五条 第四十六条 第四十七条 第四十八条 第四十九条 报告应由项目组和试运行单位签字确认,并提交公司主管领导审阅。公司主管领导审阅试运行结果,决定试运行结束或延期。
第九节 系统验收
系统主要使用部门及信息技术部门联合组成独立系统验收小组,也可授权原项目组作为验收小组。验收小组从功能需求及技术需求层面对系统进行综合评估。
验收小组应根据验收情况整理形成《系统验收报告》提交系统主要使用部门和信息技术部门审阅。
系统主要使用部门和信息技术部门负责人根据系统测试、试运行情况签署验收意见。
第十节 系统上线
系统上线应遵循稳妥、可控、安全的原则。通常情况下,系统上线包含数据迁移工作。
项目组制定《系统上线计划》,上报公司主管领导审批。在上线计划得到批准后才能开始部署上线工作。
《系统上线计划》内容应包括但不限于:
1、部署方式和资源分配(包括人力资源及服务器资源);
2、上线工作时间表;
3、上线操作步骤以及问题处理步骤;
4、项目阶段性里程碑和成果汇报(项目执行状态的审阅、进度安排等);
5、数据迁移的需求和实施计划;
6、完整可行的应急预案和“回退”计划;
7、用户培训计划(包括:培训计划、培训手册、培训考核等);
8、公司下发的系统标准参数配置。
第五十条 上线单位在上线初期需加强日常运行状态监控,出现问题时应及时处理,对重大问题应启动紧急预案。
第五十一条 在完成上线后要填写《系统验收评估报告》,上报公司项目组汇总整理。第五十二条 第五十三条
第五十四条 第五十五条 第五十六条 第五十七条 第五十八条 第五十九条 第六十条
第六十一条 第六十二条 第六十三条 第六十四条 《系统验收评估报告》内容包括:数据准确性、系统性能及稳定性、接口问题、权限问题、业务操作影响度、问题处理情况、备份、批处理等。
上线单位管理层要对《系统验收评估报告》进行审批签字。
公司主管领导批准结项后,业务组和IT组将整理的文档提交各自部门统一管理。
第十一节 合作开发管理
合作开发商的选择应遵循公司相关规定,合作商资质认定参见第三方管理制度。
合作开发商必须遵循公司《软件开发管理制度》。
项目经理同合作开发商明确规定项目变更的范围和处理方式,重点关注需求和设计变更。
项目经理负责监控合作开发商的项目管理及软件开发活动。合作开发商应按计划定期向项目经理报告进展状态,并提交阶段性成果文档。发生重大问题时,合作开发商需及时向项目经理汇报。
IT组组长派专人监控合作开发商的质量保证过程。项目组同合作开发商商定验收的标准和方法。以上各要求需要在开发合同中明确。
第十二节 外包开发管理
立项申请得到公司主管领导的审批后,选定开发商,签订外包开发合同。项目经理负责监控外包开发商的项目管理及软件开发活动。外包开发商应按计划定期向项目经理报告进展状态,并提交阶段性成果文档。发生重大问题时,外包开发商需及时向项目经理汇报。
项目经理监控外包开发商的质量保证过程。项目组同外包开发商商定验收的标准和方法。第六十五条 以上各要求需要在开发合同中明确。
第二篇:软件开发安全管理规定
xxx软件开发安全管理规定
第一章
总则
第一条
为加强xxx软件开发的安全管理,保护软件开发中软件和信息的安全,依据《》、《》等要求,特制订本规定。
第二条
本规定适用于xxx软件开发过程中需求分析、设计、开发及测试等阶段的安全管理。
第二章
软件安全需求分析
第三条
业务需求提出人员应会同需求分析人员,确定业务持续性、输入输出、身份欺骗及抗抵赖等方面的业务风险。
第四条
业务需求提出人员应会同需求分析人员,依据业务风险,提出系统功能、性能及数据等方面的业务安全需求。
第五条
需求分析人员应根据业务安全需求,进行资产识别、资产分析和风险分析,确定软件的安全需求。
第六条
需求分析人员应明确软件系统的安全目标,并提交安全需求规格说明书(或需求规格说明书包括安全需求部分),包括系统需要保护的要素、保护程度,应用系统中存在的威胁、脆弱性及其风险等。
第七条
xx部门应会同信息安全相关处室组织对整体安全目标进行评审并确认。
第三章
软件安全设计
第八条
设计人员应根据安全目标进行安全设计,在符合xxx信息化架构规划的基础上,确保安全功能的完整实现,并提交安全设计方案(或总体方案设计文档中包括安全方案设计部分)。
第九条
安全设计应遵循:
(一)保护最薄弱的环节原则:保护最易受攻击影响的部分;
(二)纵深防御原则:不同层面、不同角度之间需要相互配合;
(三)最小权限原则:只授予执行操作所需的最小权限;
(四)最小共享原则:使共享文件资源尽可能少;
(五)权限分离原则:授予不同用户所需的最小权限,并在它们之间形成相互制约的关系。
第十条
安全设计应包括:
(一)确定安全体系架构,设计安全协议和安全接口;
(二)确定访问控制与身份鉴别机制,定义主体角色和权限;
(三)信息输入的安全过滤,信息输出的校验和控制;
(四)数据结构安全设计,选择加密方法和算法;
(五)确定敏感数据保护方法;
(六)内部处理逻辑安全设计;
(七)评估内部通信机制,确定完整性机制。
第十一条
xx部门会同信息安全相关处室组织对安全设计方案进行评审并确认。
第四章
软件安全开发
第十二条
开发人员根据安全设计方案进行系统安全开发,确保开发环境、编码及系统流程控制的安全。
第十三条
开发环境安全管理要求:
(一)软件系统开发、测试不得在生产环境中进行;
(二)开发环境中所使用的操作系统、开发工具、数据库等必须是正版软件;
(三)开发环境中的开发用机应进行统一安全配置,及时进行系统补丁升级和漏洞修复。
第十四条
编码安全要求:
(一)遵循代码编写安全规范,根据代码编写安全规范以及安全设计方案进行系统开发;
(二)遵循通用安全编程准则,包括输入验证、缓存溢出、安全调用组件和程序编译等;
(三)遵循机密性要求,保护用户访问信息的机密性,严禁在客户端存放敏感数据,避免内存溢出,严格检查和验证输入输出信息等;
(四)遵循结构化异常处理机制,捕捉并处理程序异常,防止系统信息泄露;
(五)遵循代码脆弱性防范要求,包括缓冲区溢出、SQL注入、跨站脚本攻击、XML注入攻击、HTTP
HEAD注入等。
第十五条
开发流程安全要求:
(一)开发过程中应对阶段性开发成果进行有效管理;
(二)开发过程中应定期进行代码静态分析,使用代码审核工具对源代码进行检测,并报告源代码中存在的安全弱点。
第十六条
开发人员不得超越其规定权限进行开发,不得在程序中设置后门或恶意代码程序。
第五章
软件安全测试
第十七条
测试内容应包括代码的安全测试和安全功能测试。代码的安全测试是指使用代码测试工具来识别代码的安全脆弱性,并应按照其提供的修复建议进行修复。安全功能测试主要包括身份认证和访问控制的功能测试。
第十八条
测试系统环境应尽可能模拟生产环境,并与生产环境进行安全隔离。
第十九条
真实数据不得直接在测试环境中使用,须进行适当修改或屏蔽。在测试完成之后,须立即从测试应用系统清除运行信息。
第二十条
测试人员编制安全测试方案,构造安全测试用例。
第二十一条
测试人员不得由开发人员兼任。
第二十二条
信息安全等级保护定级为二级及以下的应用软件,由xx部门组织代码漏洞检测;信息安全等级保护定级为三级及以上的应用软件,xx部门应聘请有相关资质的专业机构进行代码漏洞检测,并提交分析报告。
第六章
文档安全管理
第二十三条
xx部门应对源代码的变更和版本发布进行统一控制,对程序资源库的任何修改、更新和发布都需经xx部门主管领导授权和批准。
第二十四条
xx部门应指定专人妥善保管程序源代码及相关技术文档(见附),对于源代码与技术文档实行授权访问。
第二十五条
软件程序不得篡改应用软件所运行的环境或平台中任何安全配置、安全文件和安全程序。
第七章
外包开发安全管理
第二十六条
xx部门应与外包开发单位签署相关知识产权保护协议和保密协议。
第二十七条
外包开发单位进行系统开发过程中,须严格遵循本规定软件开发各阶段的相关安全要求。
第二十八条
xx部门在系统开发过程中,须指派专人监督审核外包开发单位在各个阶段安全要求的执行情况。
第二十九条
外包开发单位在系统开发完成后向xx部门提供程序源代码和相关技术文档,不得将计算机系统采用的关键安全技术措施和核心安全功能设计对外公开。
第三十条
xx部门应对开发完成后的应用软件进行审查或检测。
第八章
附则
第三十一条
xxx参照执行本规定。
第三十二条
本规定由xxxx负责解释和修订。
第三十三条
本规定自发布之日起执行。
附
系统开发相关技术文档清单:
业务需求书(其中包含信息安全业务需求部分)
安全需求规格说明书(或需求规格说明书包括安全需求部分)
安全方案设计文档(或总体方案设计文档中包括安全方案设计部分)
程序源代码
开发过程中产生的记录
测试方案
测试过程记录
测试报告
代码分析报告
系统配置文档
系统使用指南及操作手册
附件无
文档内容仅供参考
第三篇:软件开发管理流程
软件开发管理流程
根据我公司目前工作现状,开发管理流程涉及到三个方向的工作管理;一是全新项目开发整体流程;二是二期项目开发管理流程(项目已部分上线,二期进行其它公司或模块上线);三是维护工作管理流程;
一、升级项目流程
针对我公司现有的BSP项目,存在有些省份的BSP项目存在部分上线而对于后期需要继续上线其他部分的情况,提出以下工作流程。
总体流程
计划阶段-》需求分析阶段-》软件开发阶段-》测试阶段-》部署上线—》验收完成(一)计划阶段
制定整体开发计划,计划体现整个开发周期,包括需求、编码、测试周期以及资源要求;
(二)需求分析阶段
修订需求版本,提供需求说明书,并提出需求评审申请。
评审:发起需求评审的同时提交评审资料至项目管理部—》项目管理部给相关
人员发放资料并通知评审安排--》记录评审结果(需整改时整改之后可再次评审)--》确定需求版本。
(三)软件开发阶段
编码开发前:开发环境搭建,其中包括迁出代码最新版本,从线上复制出数据库(或者导出基础数据库表数据);其目的为开发环境与正式环境保持一致,为上线前的部署做好准备。
编码开发中:开发组长对整个开发过程做好监控,保证质量的同时保证进度;并且要求开发人员做好工作记录;加强团队的协作与沟通。
编码开发完:提交相关资料(操作手册、部署文档:sql脚本、代码文件路径记录、流程文件路径记录),组长整理部署文档并且提交测试申请;部署文档要求写明部署步骤及部署内容及相应注释;
(四)测试阶段
测试组长根据测试申请中的测试内容安排测试。测试环境模拟线上测试环境,根据部署文档进行部署,并且记录所有补丁包。测试过程中开发人员在修改bug的同时需要维护部署文档。
(五)部署
部署人员根据部署文档中描述的步骤部署系统。完成之后实施人员安排验收。
二、全新项目开发管理流程
总体流程
计划阶段-》需求分析阶段-》软件开发阶段-》测试阶段-》部署上线—》验收完成(一)计划阶段
项目计划草案和风险管理计划作为第一步,确定、分析项目风险并确定其优先级,还要制定风险解决方案。本阶段的目的是确立产品开发的经济理由。当确定开发之后则制定软件开发计划、人员组织结构定义及配备、过程控制计划。
项目计划草案
项目计划草案应包括产品简介、产品目标及功能说明、开发所需的资源、开发时间和里程碑。
风险管理计划
就是把有可能出错或现在还不能确定的东西列出来,并制定出相应的解决方案。风险发现得越早对项目越有利。
软件开发计划
软件开发计划的目的是收集控制项目时所需的所有信息,项目经理
根据项目计划来安排资源需求并根据时间表跟踪项目进度。项目团队
成员根据项目计划以了解他们的工作任务、工作时间以及他们所依赖的其他活动。
项目管理培训
可将计划分成总体计划和详细计划,总体计划中每个任务为一个里
程碑,详细计划中必须将任务落实到个人。
软件开发计划还应包括产品的应收标准及应收任务(包括确定需要
制订的测试用例)。
人员组织结构定义及配备
常见的人员组织结构有垂直方案、水平方案、混合方案。垂直方案
中每个成员充当多重角色。水平方案中每个成员充当一到两个角色。
混合方案则包括了经验丰富的人员与新手相互融合。具体选择根据人
员实际技能情况进行选择。
过程控制计划
过程控制计划的目的是收集项目计划正常执行所需的所有信息,用来
指导项目进度的监控、计划的调整,确保项目按时完成。
(二)需求分析阶段
需求分析阶段的目的是在系统工作方面与用户达成一致。
(1)软件需求规约
详细说明系统将要实现的所有功能。
(2)用户界面原型
可以有三种表示方法:图纸(在纸上)、位图(绘图工具)、可执行文件(交互式)。
(三)软件开发阶段
本阶段从物理上实现目标系统。采用了面向对象方法。
(1)软件架构
说明软件的组织结构、部署结构及运行环境。
(2)功能设计
定义功能点之间的关联。
(3)数据库设计
定义数据库表之间的关联和各个表的字段。
(4)编码和单元测试
按照设计文档进行编码,每完成一个模块应进行单元测试。
(5)集成系统
按软件组织结构的要求将各个子模块组合起来。
(四)测试阶段
测试的目的是在发布之前找出程序的错误。包括:核实每个模块是否正常运行(参考设计文档)、核实需求是否被正确实施(参考需求文档)。
(1)测试计划
收集和组织测试信息,为测试工作提供指导。
(2)测试数据
尽量使用真实数据。
(3)测试报告
记录测试结果,详细描述问题,提出解决办法。
(4)用户操作手册
(五)管理软件开发过程
有以下几方面地工作:
(1)组织会议
讨论会议、总结会议等。
(2)评审程序
对各个阶段的工作结果进行审核等。
(3)协调人员
(4)监控进度
软件项目开发流程
第一个步骤是市场调研,技术和市场要结合才能体现最大价值。
第二个步骤是需求分析,需求人员出需求分析说明书。发起需求评审申请,项目管理部组织开发团队进行评审;
评审:发起需求评审的同时提交评审资料至项目管理部—》项目管理部给相关人员发放资料并通知评审安排--》记录评审结果(需整改时整改之后可再次评审)--》确定需求版本。
第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源要求。按照公司现状,使用快速原型设计方法完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和经验教训的总结,还要重新进行详细设计的步骤
第四个步骤是详细设计,这是考验技术专家设计思维的重要关卡,详细设计说明书应当把具体的模块以最‘干净’的方式提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低。
第五个步骤是编码,开发人员需严格按照编码规范及需求文档编码,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在以前的开发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的。项目组长需提高对开发过程中问题的管控能力。尽量避免重大问题,提高工作效率。
第六个步骤是测试,测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。总之,测试同样是项目研发中一个相当重要的步骤。
第七个步骤是部署,搭建部署环境,按照部署方案进行部署,完成后验收测试;
第四篇:软件开发项目管理(范文)
管理目标
1、所有关系人清晰明确地了解项目的需求和期望,努力做到满足项目所有关系人的不同需求;项目关系人包括:项目团队成员和项目团队外(内部/外部客户,内部/外部合作伙伴,经销商/客户等)。
2、项目管理三要素平衡(时间/成本/质量),即开发项目按需按时按质的完成。
3、目标:功能满足需求,设计支持变化,开发快速迭代,成果持续交付。
执行概述
1、建立有效的工作流程保证项目的顺利进行,初期使用传统RUP过程,引入部分敏捷方法,团队磨合完成后逐步实现敏捷开发全流程管理。
2、明确项目目标,制定具有可行性的项目计划,有效明确的分解项目需求。
3、跟踪设计/开发/测试/回归/发布全流程,推动项目按预定计划执行。
4、解决项目过程中出现的问题和冲突,一般集中在需求不明/工作量或时长/开发难度/跨部门协调等几个方面。
5、调动开发团队的积极性,创造力,推动团队成员在项目过程中的学习成长。
6、风险识别、风险控制以及风险的预案。
项目管理
1、需求阶段
对项目进行技术可行性分析、技术评估、成本评估以及风险评估。与需求提出方的代表进行需求讨论,明确项目的目标、价值。确定项目范围、功能及优先级。
组建项目团队,特别要搞清楚项目的关键人。项目启动会议,相关的关系人都必须参加。
2、设计阶段
根据确认后的软件需求规格说明书,制定项目进度计划,工作任务分解(WBS);资源申请,项目涉及到的开发资源、测试资源、设计资源(包括人员和软硬件资源);数据库设计;系统设计;文档(包括系统用例、Demo、测试用例等);评审会议。
设计阶段结果交付一般为系统用例/系统原型/系统设计文档(概要设计和详细设计)/数据库设计文档等。
该阶段交付成果需要进行评审。
3、执行阶段(开发和测试)准备开发环境、测试环境。跟踪,推动项目按计划进行。
项目成员以日报/项目负责人以周报的形式通报各关系人当前项目的进展情况。按里程碑对阶段成果进行评估,以确保该阶段完成的质量。代码审核,包括CS审核、SQL审核、WEB审核等。对需求变更进行控制管理。
测试阶段BUG响应及改进、收集反馈意见。对项目风险进行管理。
4、发布阶段
包括制定项目发布计划,用户培训,发布上线。
5、试运行阶段
数据监控(日志、服务器状态),根据监控出现的问题,及时进行处理,改进性能问题,特定情况执行补丁升级。
6、收尾阶段
产品交付,项目总结会。
常见问题
1、开发时间的估算
制定项目计划时,需要估算每个任务所需的时间,其中主要是开发任务中模块的分配和时间估算,在公司现有的技术框架下,开发人员主要的工作是投入在具体的业务逻辑实现上。通常单个模块开发时间取决于以下因素:
1、负责模块的业务逻辑的复杂程度。
2、开发人员的技术水平和对项目所在应用的熟悉程度(包括对框架和应用的熟悉程度)。
3、模块技术实现上是否存在难点,所谓的技术难点定义是:在现有系统中还未实现的、开发人员自身未没接触过的技术。对于这样的难点,开发者没有相关的代码可以参考,自己也没有经验,所以需要投入学习时间用于研究解决。
模块分配和开发时间估算的步骤:
1、在划分好模块后,首先项目管理人员预先估算各个模块所需要的开发时间。
2、召集所有开发人员,讨论模块的分配和开发时间估算。将划分好的模块,分配给开发人员,如状况允许可允许开发人员自主选择以提高开发人员的主动性和参与性。分配模块的时为确保开发的速度和质量,基本原则如下:
A、类似的模块由同一人负责开发,比如用户信息的增删改应由同一开发者负责。这样开发者对相关逻辑会比较熟悉,代码/接口的定义也会相对明确,沟通的成本低,相应可以降低功能实现的缺陷概率。
B、技术难度较大的模块由技术水平比较高的人负责。C、业务逻辑比较复杂的由对业务逻辑比较了解的人负责。
3、模块分配完成后,开发人员评估自己负责开发的模块所需要的时间。在此过程中应
4、对开发人员估算的时间进行确认。在确认过程中作为,项目管理者将预估时间和开与开发者讨论每个模块的技术实现细节,使时间的估算更加准确。发人员估算时间进行比较。那些差异较大的,与人员探讨其中的缘由。对于时间周期比较长的任务,将任务拆分为更小的子任务,每个任务的完成时间为8-24工时,消除时间周期较长的任务,避免不确定性影响项目的进度。
2、CodeReview CodeReview是保证项目中代码质量非常重要的一个环节,在这一环控制不严往往是测试后出现大量bug的主因,有时甚至导致返工;关于CodeReview执行,首先应有编码规范和代码审查规范。通过这两个文档来规范开发人员的代码实现,代码编写者必须要严格按照规范来进行;代码审核者根据这些标准来CodeReview代码,同时在CodeReview过程中需要不断完善该文档。
CodeReview一般可按以下步骤实施:
1、检查开发者的代码实现是否遵循了编码规范。
2、从代码的易维护性、可扩展性角度考察代码的质量,提出修改建议。
3、代码编写者和代码审核者坐在一起,由代码编写者按照UseCase依次讲解自己负责的代码和相关逻辑,代码审核者在此过程中可以随时提出自己的疑问,同时积极发现隐藏的bug,对这些bug记录在案。
4、代码讲解完毕后,代码审核者给自己安排几个小时再对代码审核一遍。代码需要检查Bug。同时全面兼顾,确保代码整体上结构优良;审核完毕后,代码审核者编写“代码审核报告”记录发现的问题及修改建议,提交给相关人员。
5、代码编写者根据“代码审核报告”给出的修改意见,修改好代码,有不清楚的地方可积极向代码审核者提出。
6、代码编写者bugfixed完毕之后给出反馈。
7、代码审核者把CodeReview中发现的有价值的问题更新到“代码审核规范”的文档中,对于特别值得提醒的问题可群发email给所有技术人员。
3、需求变更管理
需求变更管理也是项目管理中最重要的一个环节,对需求变更管理的有效性将直接影响对待需求变更的正确态度:
1、需求变更是不可避免的。
2、需求变更要必须被管理。
3、积极发现引起变更的因素,促使变更尽可能早的出现,减低变更带来的风险。需求变更管理的目标:
1、相关的干系人必须清楚地了解发生的变更。
2、变更处于有效的管理中。
3、尽量降低变更带来的风险。
通过制定需求变更的流程,确保项目中的需求变更有效地进行,实现上述的目标。需求变更流程:
1、确定需求的基准线。将以UserCase作为需求基准线,在UserCase确认之后的任项目的成功与否。何需求改变,都需要走需求变更流程。
2、项目管理者接收到需求变更的要求。需求变更的提出者可以是项目中的任何人包括产品经理、市场人员、开发人员、测试人员等。
3、项目管理者评估该需求变更。针对接收到的需求变更的要求,召集相关人员讨论该需求变更的合理性、可行性,实施的代价以及对项目的影响。项目管理者对项目的成功与否负有主要的责任。需求变更的决策应由项目管理者做出。
4、需求变更确认后,由专人将生成需求变更单记录下来,通知给项目中所有关系人。
5、确定变更的负责人。承担需求变更的具体工作,比如基线控制,对需求变更的记录,并通知相关人员。
6、相关人员接收到确认的需求变更后,需求分析人员修改需求说明书和UserCase的相关内容。测试人员修改测试用例的相关内容。开发人员修改代码中的相关部分。
7、按照变更后的计划实施项目,并进行检查,跟踪,对变更后的实施反馈和可能出现的问题及时沟通和处理。
8、需求冻结。项目越到后期,需求变更对项目的影响就越大,所以在一定时候要进入需求冻结阶段,不再接收新需求或需求的变更。
4、风险管理
影响项目成败的因素涉及方方面面,并且风险伴随着项目的始终,是客观存在的,风险引起的负面后果集中体现在进度延后、成本超支、质量不达标等方面,常见风险如下:
1、目标以及需求不明确
为了市场竞争或内部管理决策的需要,业务部门提出的需求往往要求的时间比较紧迫,需求的提出大多停留在几张纸或口头的传达上,没有正式的业务需求文档,在没有明确的需求范围的情况下,有时为了迎合业务部门的口味匆匆开工,过程中用户不断地提出新的想法,技术人员开始疲于奔命和应付,很难保证项目的进度和质量,也难以取得业务部门的认可。
在项目的前期一定要采取相应的手段或措施,与业务部门共同明确项目目标、需求范围,充分考虑现有的时间和资源约束,将需求排定优先级,对于关键的需求优先实现,其他辅助性的根据过程中的具体情况进行滚动式计划,并取得业务部门的书面确认。在此过程中要注重挖掘用户的隐性需求,可以通过引导、系统原型等手段让用户在前期充分暴露自己的想法和需求。
2、项目目标扩大以及需求变更
在有了明确的目标和需求范围的情况下,需求的变更还是不可避免的,业务部门在看到具体系统的真实雏形之后,源源不断地要求、新想法随之产生,如果不对此加以控制,新的需求的加入通常会影响已实现的需求,并且对项目进度和成本产生很大的影响。项目管理者针对这种情况一定要采取严格的变更控制流程,不能碍于面子,否则最终的结果往往是出力不讨好。针对用户提出的新需求,按照正式流程提出变更申请,组织相关团队成员进行分析及评估,作为是否实施的依据,变更控制负责人根据分析结果判断是否批准,如果批准,那项目组可以安排实施,否则,正式拒绝用户的请求。
前期的需求讨论要详细、充分。需求文档中需求的范围要明确、功能描述要清楚。找出项目中需求的决策者(通常会是产品经理、相关职能主管、客户),所有的需求要经过他们的认可。客户在项目过程中的全程参与有助于降低此类风险。需求讨论、需求确认、UserCase确认、测试阶段的客户验收等环节,都要要求客户参与。在发生需求变更时,严格按照需求变更流程执行。在分析设计阶段的中的确认和评审也是降低此类风险的重要手段。
3、代码质量风险
质量风险主要指开发代码的质量。在制定项目计划时,对开发时间的评估要尽可能的合适。合理的开发时间对开发质量的影响很大。开发人员为了赶进度在比较紧张的时间需要完成指定的任务,可能就存在很大的开发质量问题。在编码前,开发人员要对框架熟练掌握;一份好的系统设计文档对指导开发非常重要。
往往有这样一种情况,每个团队成员按照项目计划报告进度都是100%完成,但一到最后系统交互测试或集成的时候就会发现一大堆问题。这需要在项目实施过程中采取有效的措施来规避风险,通常的做法有同行评审,比如概要设计完成之后,邀请其他项目组的技术专家进行技术评审以发现架构设计问题;管理评审,通过组织级的质量审计看产品以及实施过程是否满足质量要求;代码走查,在编码过程中加入至少一次的代码走查,排查不符合规范或性能要求的代码,走查通常能够发现50%-70%的错误;每日构建,这是一种非常有效的方法,可以避免把各部分的集成问题拖到最后,并且能够及时发现相应的错误,日构建一般在项目的中后期开始,每天自动从版本服务器上获取源代码进行自动编译和测试。
4、人员技能和资源的不足
项目实施过程中由于人员技能欠缺造成的进度延后和软件质量问题并不少见,一个熟练的技术人员完成同样一个任务需要3天,但一个新手可能就需要7-10天。项目管理者应该在前期就分析清楚项目所要采用的技术以及相应的人员技能要求,针对不同的角色,及时采取相应的技能培训,以保证项目的顺利实施。开发过程中遇到技术难题,导致开发时间延迟或者需求不得不发生变更。在项目开始前的技术评估阶段,明确技术难点,提前安排人员进行攻克。如果在可预期的时间内无法解决,如果可以,将向需求提出方要求变更需求或寻找可替代方案。这样的风险应该在项目的前期阶段就应该解决在萌芽状态来避免这样的风险在后期或中期出现。
5、缺乏良好的团队协作
软件项目实施属于知识型,要发挥团队成员的创造力,不同于制造业计件生产,各模块最终要集成在一起形成一个有机的整体,这就需要各小组之间的密切配合,界定清楚工作界面及接口关系,并在实施过程中持续地沟通交流和共享,首先团队要融为一体,产出的软件才能融为一体。这是一个团队的软实力,团队之间的协作好坏也将是个潜在的风险问题,在项目启动和团队组建的时候就应该加以规避这样的风险出现。
6、项目会议
组织会议是项目执行过程中一项非常重要的工作任务,项目过程中很多重要的决定都是在会议中做出的,不成功的会议会对项目本身造成了不好的影响。
不成功的会议通常表现为如下形式:
1、会议氛围不好,参与者发言不踊跃;
2、会议讨论常常偏离主题;
3、会议没有取得预期的结果;
4、会议时间常常一拖再拖。
这些不成功的会议最终的结果就是:既浪费了大家的宝贵时间又没有达到会议的目的,很多人都对这样的会议都有抵触情绪,对此也是深恶痛绝。以下是组织会议时应该注意的问题,也可看作组织会议的最佳实践。在列出最佳实践之前有三点我们必须要清楚:
1、会议是否会取得成功很大程度上取决于会议的组织者。只有组织得有力,会议才有可能取得成功,这是会议成功的充分条件。
2、会议的组织者和参与者的想法通常是不一致的,有时候甚至会大相径庭。所以不要希望会议的参与者和你一样,对会议有着如此的期待,对大多数参与者而言,在会议中他只是一个发表想法的人,他不用对会议的成功承担责任。
3、以下十一条最佳实践是形式上的约定,具体的实施可以根据实际情况来做。组织会议的十一条最佳实践:
1、只有需要开会时才开会。有时候两三个人单独小范围沟通会更加有效。
2、提前发出会议议程,以便会议参与者知道他们来做什么。
3、请对人很重要,不要把非必要的人召来开会,当然也不要漏掉那些关键人物。在确保必要人物都在的情况下一次会议参与者越少效果越好。
4、提前预约参与者的时间,以确保他们能按时到场。
5、会议的开场很重要。会议组织者要在开始前做好几件事情。通常我建议有几点要在开场时说: A、再一次强调会议的目标,我们来做什么。
B、强调会议的主题与基调。比如:本次会议是一个需求确认会,而非需求讨论会,主要是讨论做还是不做以及告知大家我们要做什么,而不要把太多的精力放在讨论如何做上面。
C、说明一下会议的规则。如要发言,请举手;不要有小圈子讨论;不要打断别人的讲话,等别人说完你再说等等。
6、会议过程中时刻注意引导和控制会议,以确保会议按照目标进行。一次会议的氛围是否良好,讨论是否充分,好的引导至关重要。比如多提一些开放式的问题。
7、会议记录很重要,把一些结论和有价值的内容记录下来,这些是本次会议的重要成果之一。
8、会议要有结论。我们常在会议上听到有人说:“大家讨论了这么半天,结论呢?”。没有结论的会议是没有意义的。
9、会议后别忘发会议纪要,以及一些Action,什么人什么时候做什么。
10、会议后的action执行情况的反馈很重要。反馈是对会议参与者的尊重,同时也告知了会议的效果。否则会让大家感觉到这是一个可无可无的会议,大家以后参与的积极性也会降低。很多会议往往都不注意这一点。
11、按时结束的会议会受到所有人的欢迎。
第五篇:浅谈软件开发项目管理
浅谈软件开发项目管理
摘要:在软件项目开发的过程中,软件项目管理的成功与否是决定一个项目是否能够顺利高效率完成的重要保证。但是我国大部分的软件企业在进行项目管理时都存在着各种问题,从而使项目不能顺利有效地完成。文章探讨了在项目管理过程里出现的常见问题,并给出了相应的解决策略。
关键词:软件项目管理;项目经理;项目计划
软件行业在现在的众多行业里是一个极具挑战性和创造性的行业,体现了软件开发者的智慧和汗水,同时软件开发是一项复杂的系统工程。牵涉到许多方面的因素,在实际工作中,经常会出现各种各样的问题,甚至会面临失败。如何总结、分析失败的原因。得出有益的教训,对于项目开发人员来说,是在今后的项目中取得成功的关键。
一、软件开发中实行项目管理的意义
项目管理就是在项目活动中运用一系列的知识、技能、工具和技术,以满足或超过相关利益者对项目的要求,实际上就是通过项目各方干系人的合作,把各种资源应用于项目,以实现项目的目标,满足项目干系人的需求,其本质就是对时间、质量和成本的管理。随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,项目开发的管理日益受到重视。
二、目前在软件项目管理中存在的误区
现在大多数企业都认识到了在项目中进行管理的重要性,但是仍然有许多企业在实施项目管理的过程中存在着这样那样的误区,主要表现在:项目经理不够专业。在软件企业中,缺乏专业的项目管理人员来实施项目管理及担任项目经理,通常被任命的项目经理主要是因为他们能够在技术上独当一面,但是他们在管理方面特别是项目管理方面的知识比较缺乏。项目计划缺乏纲领性。项目经理对总体计划、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑:阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。缺乏有效的管理意识。部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成人员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。缺乏有效的沟通制度和机制。在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失:有些人没有每天定时收邮件的习惯,以至于无法及时接收最新的信息。风险管理意识淡泊。有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用。项目干系人的不确定性。在范围识别阶段,项目组对客户的整体组织结构、有关人员及其关系、工作职责等没有足够了解以至于无法得到完整需求或最终经权威用户代表确认的需求:或者是多个用户代表各说各话、昨是今非,但同时又要求项目尽早交付:项目后期需求变化随意,造成项目范围的蔓延,进度的拖延,成本的扩大。缺乏项目团队的合理分工。项目团队内部有时由于各阶段不同角色或同阶段不同角色之间的责任分工不够清晰而造成工作互相推诿、责任互相推卸的现象;有时各阶段不同角色或同阶段不同角色之间的责任分工比较清晰,但是各项目成员只顾完成自己那部分任务,不愿意与他人协作。这些现象都将造成项目组内部资源的损耗,从而影响项目进展。
三、解决软件项目管理中存在的误区的有效策略
要想解决上面描述的误区,归根到底还是要从管理学的角度入手,即在软件项目的开发过程中加入过程管理的内容,这样我们可以在软件开发中对各个过程的质量加以控制,从而达到保证软件产品质量的目的。为了有效提高管理水平,我们应该努力做到:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。制定有效的沟通制度和沟通机制,提高沟通意识:采取多种沟通方式,提高沟通的有效性。通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于特别重要的内容要采用多种方式进行有效沟通以确保传达到位,例如:除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法,掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。项目的目的就是实现项目干系人的需求和愿望。项目干系人管理应当从项目的启动开始,项目经理及其项目成员就要分清项目干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。项目经理应当对项目成员的责任进行合理的分配并清楚地说明,同时应强调不同分工、不同环节的成员应当相互协作,共同完善。
实施有效的项目管理绝非易事,对于软件企业而言,这不是一个小的改变,而是一种变革,企业需要为此付出艰苦的努力,同时,成熟有效的项目管理无疑将对企业起着至关重要的作用,项目管理的水平将是企业核心竞争力之一。