软件开发过程管理(软件开发过程管理工具)
本篇文章给大家谈谈软件开发过程管理,以及软件开发过程管理工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
软件开发项目中,过程管理文档都包括什么?
在软件项目开发过程中,应该按软件开发要求撰写十三类文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性!\x0d\x0a需求阶段\x0d\x0a1、可行性分析报告\x0d\x0a说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。\x0d\x0a2、项目开发计划\x0d\x0a为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。\x0d\x0a3、软件需求说明书(软件规格说明书)\x0d\x0a对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。\x0d\x0a设计阶段\x0d\x0a4、概要设计说明书\x0d\x0a该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。\x0d\x0a5、详细设计说明书\x0d\x0a着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等。\x0d\x0a开发阶段\x0d\x0a6、开发进度月报\x0d\x0a该月报系软件人员按月向管理部门提交的项目进展情况报告,报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等。\x0d\x0a测试阶段\x0d\x0a7、测试计划\x0d\x0a为做好集成测试和验收测试,需为如何组织测试制订实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。\x0d\x0a8、测试分析报告\x0d\x0a测试工作完成以后,应提交测试计划执行情况的说明,对测试结果加以分析,并提出测试的结论意见。\x0d\x0a收尾阶段\x0d\x0a9、用户操作手册\x0d\x0a本手册详细描述软件的功能、性能和用户界面,使用户对如何使用该软件得到具体的了解,为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。\x0d\x0a10、项目开发总结报告\x0d\x0a软件项目开发完成以后,应与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本和投入的人力,此外,还需对开发工作做出评价,总结出经验和教训。\x0d\x0a11、软件维护手册\x0d\x0a主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于软件的维护。\x0d\x0a维护阶段\x0d\x0a12、软件问题报告\x0d\x0a指出软件问题的登记情况,如日期、发现人、状态、问题所属模块等,为软\x0d\x0a件修改提供准备文档。\x0d\x0a13、软件修改报告\x0d\x0a软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以及修改的影响作出详细的描述,提交审批。
软件项目的管理流程
导语:关于软件项目的管理流程,相关人员来了解一下吧。下面是我收集整理的软件项目管理流程,供各位阅读和参考。
一、 风险评估
软件项目风险是指在整个项目周期中所涉及的成本预算、开发进度、技术难度、经济可行性、安全管理等各方面的问题,以及由这些问题而对项目所产生的影响。项目的风险与其可行性成反比,其可行性越高,风险越低。软件项目的可行性分为经济可行性、业务可行性、技术可行性、法律可行性等四个方面。而软件项目风险则分为产品规模风险、需要风险、相关性风险、管理风险、安全风险等六个方面:
1. 产品规模风险
项目的风险是与产品的规模成正比的,一般产品规模越大,问题就越突出。尤其是估算产品规模的方法,复用软件的多少,需求变更的多少等因素与产品风险息息相关:
(1) 估算产品规模的方法
(2) 产品规模估算的信任度
(3) 产品规模与以前产品规模平均值的偏差
(4) 产品的用户数
(5) 复用软件的多少
(6) 产品需求变更的多少
2. 需求风险
很多项目在确定需求时都面临着一些不确定性。当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就会对项目的成功造成很大威胁。如果不控制与需求相关的风险因素,那么就很有可能产生错误的产品或者拙劣地建造预期的产品。每一种情况对产品来讲都可能致命的,这些的风险因素有:
(1) 对产品缺少清晰的认识
(2) 对产品需求缺少认同
(3) 在做需求分析过程中客户参与不够
(4) 没有优先需求
(5) 由于不确定的需要导致新的市场
(6) 不断变化需求
(7) 缺少有效的需求变化管理过程
(8) 对需求的变化缺少相关分析等
3. 相关性风险
许多风险都是因为项目的外部环境或因素的相关性产生的。控制外部的相关性风险, 能缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成部分,并觉察潜在的问题,与外部环境相关的因素有:
(1) 客户供应条目或信息
(2) 交互成员或交互团体依赖性
(3) 内部或外部转包商的关系
(4) 经验丰富人员的可得性
(5) 项目的复用性
4. 技术风险
软件技术的飞速发展和经验丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。 在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键,比如:培训、聘请顾问以及为项目团队招聘合适的人才等。关于技术主要有下面这些风险因素:
(1) 缺乏培训
(2) 对方法、工具和技术理解的不够
(3) 应用领域的经验不足
(4) 对新的技术和开发方法应用不熟悉
5. 管理风险
尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。在大部分项目里,项目经理经常是写项目风险管理计划的人,他们有先天性的不足——不能检查到自己的错误。因而,使项目的成功变得更加困难。如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目本身。当我们定义了项目追踪过程并且明晰项目角色和责任,就能处理这些风险因素:
(1) 计划和任务定义不够充分
(2) 对实际项目状态不了解
(3) 项目所有者和决策者分不清
(4) 不切实际的承诺
(5) 不能与员工之间的进行充分地沟通
6. 安全风险
软件产品本身是属于创造性的产品,产品本身的核心技术保密非常重要。但一直以来,我们在软件这方 面的安全意识比较淡薄,对软件产品的开发主要注重技术本身,而忽略了专利的保护。软件行业的技术人员流动是很普遍的现象,随着技术人员的流失、变更,很能会导致产品和新技术的泄密,致使我们的软件产品被它公司窃取,导致项目失败。而且在软件方面关于知识产权的认定目前还没有明确的一个行业规范,这也是我们 软件项目潜在的风险。
7. 回避风险的方式
(1) 以开发方诱导能保证需求的完整,使需求与客户的真实期望高度一致。再以书面方便形成《用户需求》这一重要的文档,避免疏漏造成的损失在软件系统的后续阶段被逐步地放大。
(2) 设立监督制度,项目开发中任何较大的决定都必须有客户参与进行的,在该项目中项目监督由项目开发中的质量监督组来实施。
(3) 需求变更需要经过统一的负责人提出,并且要用户需求的审核领导认可,需求变更应该是定期而不是随时的提出,而且开发方应该做好详细的记录,让客户了解需求变更的实际情况。
(4) 控制系统的复杂程度,过于简单的系统结构,对用户来使用比例会有明显的折扣,甚至造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度增加,系统的复杂度会上升,这又会在实现和测试阶段带来风险。适当控制系统的复杂程度有利于降低开发的风险。
(5) 从软件工程的角度看,软件维护费用约占总费用的55%~70%,系统越大,该费用越高。对系统可维护性的轻视是大型软件系统的最大风险。在软件漫长的运营期内,业务规则肯定会不断发展,科学的解决此问题的做法是不断对软件系统进行版本升级,在确保可维护性的前提下逐步扩展系统。
(6) 设定应急计划,每个开发计划都至少应该设定一个应急预案去应对出现突发情况和不可遇知的风险。
二、 成本预算
1. 成本预算方式
(1) 自上而下的预算方法
自上而下的预方法主要是依据上层、中层项目管理人员的管理经验进行判断,对构成项目整体成本的子项目成本进行估计,并把这些判断估计的结果传递给低一层的管理人员,在此基础上由这一层的管理人员对组成项目的子任务和子项目的成本进行估计,然后继续向下一层传递他们的成本估计,直到传递到最低一层。
使用此预算方式,在上层的管理人员根据他们的经验进行的费用估计分解到下层时,可能会出现下层人员认为上层的估计不足以完成相应任务的情况。这时,下层人员不一定会表达出自己的真实观点,不一定会和上层管理人员进行理智地讨论,从而得出更为合理的预算分配方案。在实际中,他们往往只能沉默地等待上层管理者自行发现问题并予以纠正,这样往往会给项目带来诸多问题。
自上而下更适用于项目启动的前期,与真实费用相差在30% ~ 70%之间。
Scrum使用自上而下的成本预算方式,它不会立即精确地确定成本,而是以最大限度容纳客户对未来产品要求所产生的变更。
(2) 自下而上的预算方法
自下而上方法要求运用WBS(Work Breakdown Structure,工作分解结构)对项目的所有工作任务的时间和预算进行仔细考察。最初,预算是针对资源(团队成员的工作时间、硬件的配置)进行的,项目经理在此之上再加上适当的间接费用(如培训费用、管理费用、不可预见费等)以及项目要达到的利润目标就形成了项目的总预算。自下而上的预算方法要求全面考虑所有涉及到的工作任务,更适用于项目的初期与中期,它能准备地评估项目的成本,与真实费用相差在5% ~ 10%之间。
注解:WBS
WBS是面向提交成果对项目的分解,从提交成果的列表可以确定每个提交成果需要执行的活动。Scrum会对WBS进一步细化,把一个迭代分解为一个或多个的工作包,再把工作包分解为细小的开发任务(一般开发任务的开发周期在15个工作小时以内)。
2. 确定项目支出
总体成本预算就是结合下列多个成本预算方式综合计算的开发成本:
(1) 零基数预算
在成本预算的初期应该使用零基数的计算原则,而不可以使用类似于:以上一年总体费用加上20% 这样粗略的方式计算项目成本。
(2) 软硬件成本、物品成本
物品成本是指类似于:服务器(RAM 硬盘 CPU NIC卡 RAID簇)成本、维护成本、机房租金、光纤通讯成本、软件成本等的成本。
计算成本时需要考虑组装硬盘需时的长短,技术人员需要具备的质素,产品供应商能否提供保证质量,管理时是否需要额外的管理人员这些多方因素。
(3) 软件许可证成本
(4) 外包成本
当使用类似:视频、短信、移动电信类服务、门户网站等子项目时可以考虑以外包形式完成,以降低开发成本。
(5) 人力资源成本
计算人力资源成本时应该使用以最高和最低的工作效率估算平均效率的方式,计算出人力资源的平均成本。
(6) 维修保养成本
三、 客户沟通的过程
从客户沟通的方向出发来看,软件项目可分为:需求识别、方案定制、项目实施、项目结束等4个不同的阶段,各个阶段都具有不同的沟通重点。
1. 需求识别阶段
(1) 文本沟通
在需求识别的前期,应该通过问卷、原型展示、界面展示、逻辑处理展示、准化文档模板等方式进行全方位多角度的分析,随时将不明确之处反馈给客户,以期待客户解答。并以文本记录的方式建立需要分析书,并要求客户审核需求分析书,以达到需要分析与客户的真实期望高度一致的结果。
(2) 业务逻辑沟通
在进行业务沟通时,应该了解客户的行业语言,以促进业务分析的过程,越过应用需求和开发之间的鸿沟。沟通过程提倡以草图或者可视信息化的方式进行, 针对不同层面的企业用户提供最适合的操作界面。以多角度的方式思考问题,要抓住需求重点,尤其是客户方领导所关注的创新类和实用类需求。
(3) 需求变更的规范化管理
需求变更在软件开发类项目中是可以理解的,但必须对需求变更做好规范化的管理,以避免出现需求无止境变更的风险。需求变更必须由统一的负责人提出,并且由用户需求的审核领导者认可。需求变更的提出应该是定期而不是随时的,开发方应该做好详细的文本记录,让客户了解需求变更的实际情况和开发方为之所付出的成本代价。
2. 方案定制阶段
该阶段项目的主要任务是与客户共同制定一个以前期明确的需求、双方的资源、项目开始的阶段、实施的时间约定、项目费用限制等为基础的具有可操作性的项目计划,从本阶段开始争取客户全面参与项目的管理,并以双方的共同利益考虑项目实施的具体计划与风险规避。
3. 项目实施阶段
在该阶段,软件项目团队应该与客户共同领导项目的实施。同时,项目团队应实时评估客户满意度,并通过持续改进的方式提高客户满意度,还应要求客户参加必要的培训,以及在必要时检查项目产品。在出现客户的需求变更前,应主动与客户沟通交流,使客户充分了解项目的每个环节,以及变更带来的影响,减少需求变更。如果出现客户需求变更,应与客户一起共同解决由变更引起的成本、进度、质量变化。
4. 结束阶段
该阶段主要进行项目成果的移交,并把系统交付给维护人员,帮助客户实现商务目标,结清各种款项。完成这些工作后应该进行项目评估,审核此项目的成果并总结项目经验。
5. 售前人员注意事项
在产品型项目作为开发成果时,相关销售人员应该注意:对产品的推销不应该过分承诺。如果过分承诺,会给后续的项目实施带来困难;一旦承诺没有兑现,也会降低客户满意度,影响今后合作。如果有附加承诺,一定要以文本形式记录,让实施项目经理知晓并传达给项目组成员。
注解:在软件项目中,需要明确以下四种客户角色
A. 要明确最终使用部门和用户,要去了解他们现有的工作方式,要让他们知道项目的目标框架,知道项目要解决他们的哪些困难,但绝对不是全部困难,这样可以较好的控制项目范围。
B. 要明确需求的提出者,他或者他们要能够代表最终客户群体。提出产品需求的这类客户要具有一定的技术、业务能力和权威,能够真正代表最终客户团队的意愿和想法,最好有IT基础,能够用IT语言描述问题和需求,以利于双方的沟通、协作,避免产生歧义。
C. 要明确做需求确认的中层领导,他要把握方向。软件开发项目是解决实际生产或者管理问题,同时 也是领导系统建设的具体实现,做需求确认的客户领导,既要了解高层领导的系统建设要点和方向,又要谙熟具体业务和生产管理实际。如果是这样的客户领导来把 握和决策,对企业软件开发项目的顺利进展作用非凡。
D. 要明确谁来对成品提意见,谁来验收。项目验收环节,是项目的收尾环节,如果验收的人对项目初期的需求目标不了解,会从态度和产品实际使用效果上对验收产生负面的影响,对提供产品的企业关闭项目非常不利。根据实践总结,由需求提出人和确认人来做项 目的验收工作,能够促进项目的顺利完成,避免延期。
四、 需求分析
1. 需求分析的过程
需求过程包括需求开发和需求管理2个部分:
(1) 需求开发就是对开发前期的管理,与客房的沟通过程,可以分为4个阶段:需求获取、需求分析、编写需求和需求验证。
(2) 需求管理:就是软件项目开发过程中控制和维持需求约定的活动。包括:变更控制、版本控制、需求跟踪、需求状态跟踪。
2. 需求的层次
需求的层次包括:业务需求、用户需求、功能需求、非功能需求等4个方面。
3. 需求开发阶段的重点
(1) 提取业务对象
业务对象是指系统使用的真实对象,例如一个供应链管理 (Supply Chain Management ,简称SCM) 业务对象主要包括:生产批发商、零售商、送货商、顾客多个层次。
(2) 提取业务流程
在了解业务逻辑的过程中,应该列举出所开发软件模块的各自职能,并细化每个工作流程,深入分析业务逻辑。
(3) 性能需求
在分析的前期应该注意客户对所开发软件的技术性能指标,如存储容量限制、运行时间限制、安全保密性等。
(4) 环境需求
环境需求是指软件平台运行时所处环境的要求,如硬件方面:机型、外部设备、数据通信接口;软件方面:系统软件,包括操作系统、网络软件、数据库管理系统方面;使用方面:使用部门在制度上,操作人员上的技术水平上应具备怎样的条件。
(5) 可靠性需求
对所开发软件在投入运行后发生故障的概率,应该按实际的运行环境提出要求。对于重要的软件,或是运行失效会造成严重后果的软件,应提出较高的可靠性要求。
(6) 安全保密要求
在需求分析时应当在这方面恰当地做出规定,对所开发的软件给予特殊的设计,使其在运行中,其安全保密方面的性能得到必要的保证。
(7) 用户界面需求
为用户界面细致地规定到达的要求。
(8) 资源使用需求
开发的软件在运行时和开发时所需要的各种资源。
(9) 软件成本消耗与开发进度需求
在软件项目立项后,根据合同规定,对软件开发的'进度和各步骤的费用提出要求,作为开发管理的依据。
(10) 开发目标需求
预先估计以后系统可能达到的目标,这样可以比较容易对系统进行必要的补充和修改。
4. 需求分析的任务
需求分析的主要任务是借助于当前系统的逻辑模型导出目标系统的逻辑模型,其流程如下:
(1) 确定对系统的综合需求(功能、性能、运行、扩充需求)
(2) 制作产品需求文档 (PRD)
(3) 分析系统的数据需求(概念模型、数据字典、规范化)
(4) 导出目标系统的详细的逻辑模型(数据流图、数据字典、主要功能描述)
(5) 开发原形系统
(6) 从PRD提取编制软件需求规格说明书(SRS)
注解:SRS格式
1.引言 2系统概述(项目背景、系统目标、核心业务流程) 3.术语说明 4.系统结构(架构图、功能图)
5.主体功能与业务逻辑(重点) 6.接口需求(内部、外部接口、) 7.网络总体设计(拓扑网络、主机、组网)
8.运行环境(Linux、Windows、IIS、 WebLogic、Tomcat、OLAP、OLTP、JDK 8.0 、.NET Framework 4.0等)
五、 面向对象程序设计(略)
1. 设计原则
(1) SRP单一职责链
每个类都应该只负责做一件事。
(2) OCP开封闭合原则
软件的实体(类、模块、函数等)应该是可以扩展的,但是不可修改的。
(3) LSP替换原则
子类必须能替换他们的基类型。
(4) DIP依赖倒置原则
高层模块不应该依赖于低层模块,二者都应该依赖于接口与抽象类。抽象不应该依赖于细节,细节应依赖于对象。
(5) ISP接口隔离原则
不应该强迫客户依赖于并未使用的接口,而应该把胖接口分离。
2. 实现UML建模
(1) 业务对象的提取
(2) 根据SRS、CRC等实现用况建模
(3) 实现业务顺序图
(4) 建立类图,根据用况图建立对象之间的关联
(5) 绘制活动图、实现协作图、状态图
六、 开发管理
1. 建立项目计划
(1) 设计总体架构
针对系统的实施需要,采取适当的且成熟的框架结构。
(2) 控制可扩展度
扩展度过大,将提高系统的复杂程度,延长开发时间;扩展度过低,会直接影响系统的二次开发与维护。控制系统的可扩展性,能提高开发效率,降低系统维护的难度。
(3) 建立基础设施
合理分配部署软、硬件等基础设施所需要的时间与成本(例如:服务器的订购安装、光纤接入、软件平台订购)。
(4) 划分开发任务
利用WBS(Work Breakdown Structure,工作分解结构)对可交付结果进行分类与划分。每个项目都能划分为多个不同阶段,每个阶段又可以分为多个工作包(Work Package),工作包是WBS里最小的可交付结果,最后从工作包中分解出多个开发任务列表。
(5) 部署开发进度
一个项目应该按进度划分为多个开发阶段,每个阶段的开发周期一般在30~60个工作日以内。在此阶段内应该与客户举行协商会议,制定产品路线图,在开发过程中邀请客户积极参与并提出反馈意见。然后把该时段内的开发任务按照开发难度,依赖性,重要性等多方条件划分为多个迭代周期。
在Scrum 敏捷软件开发原则中,应该把每个迭代任务进一步细分为多个开发任务列表,再开发任务分配给组员各自负责,而开发时间应该控制在15个工作小时以内。如果开发时间超出15个工作小时,应该考虑把开发任务再度细化。开发任务建议应该由组员自主选择,而不要使用强制分配的方式。
(5) 测试项目成果
每个工作包都应该同步部署测试工作,提高项目的质量。对出错BUG的工作包应该由测试人员以文本方式记录,向开发人员展示错误所在,让开发人员及时进行修改。
2. 管理开发团队
(1) 组建团队
按照工作任务与项目时间的前提条件建立团队,按团队职责分配人员,一般团队人数应该控制在8~12人之间。当团队人数超过15人时,应该考虑把团队分解成2个独立团队,负责不同的开发任务。
(2) 分配开发任务
在每个迭代周期内(一般是15~30个工作日),应该把每个工作包进一步细分为多个开发任务,再开发任务分配给组员各自负责,开发时间应该控制在15个工作小时以内。如果开发任务的开发时间超出15个工作小时,应该考虑把任务再度细化。而开发任务应该以自由选择的方式分配给每个组员。
(3) 监督开发进度
在迭代的前期举行一次会议,让组员了解开发的进展及流程,并以自主选择的方式分配开发任务。期间可使用Microsoft Project等工具记录开发流程的进展,在每个工作包完成开发后应该进行性功能的测试,并以文本方式记录测试结果。
每天举行一次15分钟的站立会议,让组员交待昨天已完成的开发任务,当天将要做的任务,与开发过程中所遇到的问题。并在每周末举行一次例行会议,交待总体进程。
在迭代末期举行一次冲刺会议,总结项目的进展,交行已完成的任务,回顾该迭代周期内所遇到的问题,为下一个迭代做好准备。
(4) 系统测试
对每个已完成的工作包进行适时的测试,保证系统质量与性能。对测试结果进行文本的记录,并把测试结果与绩效工资收入挂钩,并以真实数据计算组员的绩效收入。
(5) 解决开发中所遇到的问题
对开发人员进行前期培训,可适当按工作能力分配任务,指导组员的开发。当遇到问题时应该在当天的站立会议时即时提出,并在15个工作小时内解决所遇到的问题以防止问题进一步扩大。
3. 监管产品质量
(1) 质量需要的是计划、设计而并非审查的。在产品建立的初级,必须与“质量保证”(QA)的部门进行协商,以正式文档的方式,决定恰当的质量策略和标准。
(2) 在开发过程中使用TDD(测试驱动开发)的模式,提高开发质量。测试人员应该以文本方式记录bug,并与开发人员共同工作的,把突出的缺陷演示给开发人员,以提高修改的效率。
(3) 在每个迭代的结束时进行一次产品效果的演示,从客户、使用者、高层领导中收集反馈信息。在团队内部举行评审会议,分析测试结果,了解产品性能,为下次迭代所需要做的改进做好计划。
4. 修改项目计划
(1) 在产品需要识别阶段,应该以文档形式记录产品功能与开发流程,在开发计划需要修改时,应该与客户共同探讨,让客户了解计划修改对项目进度所造成的影响。
(2) 项目计划的修改应该由统一的负责人提出,并且由用户需求的审核领导者认可。需求变更的提出应该是定期而不是随时的。
(3) 计划的变更应该做好详细的文本记录,让客户了解需求变更的实际情况和开发方为之所付出的成本代价。
七、 产品交付
1. 项目的后期审核
在项目开发最终完成后,对开发人员来说可算是放下工作的重担,但对项目经理来说这往往是项目的关键时刻。前期的风险评估、成本预算、需求分析、软件设计都是为了引导项目走向这一时刻,此时所有的目光都将投向项目管理人员。你可能发现大量而琐碎的工作将要在几个小时内完成,此刻项目经理更需要保持清醒与镇定,把最后的工作视为微型项目来对待。细致地对项目进行后期的审核,分析项目成果、项目团队的效率、可交付产品的价值,以此审核结果可作为项目管理经验总结的一部分。
2. 质量评审
在项目交付前,应该把项目交给相关的“质量保证”(QA)部门进行质量评审,并邀请典型用户感受产品的质量。
3. 项目的最终交付
正常情况下在项目的前期就会订立项目交付的协议,项目交付方式分为非正式验收与正式验收两种。一般在项目完成后都会先进行非正式验收,让客户体会项目的质量并提出反馈意见,最后在客户肯定产品质量后再以书面协议的形式进行正式的产品验收。
4. 项目的最终报告
在项目的最后,应该制定项目的最终报告,此报告可以视为是对该项目一个记录,但报告不必包含项目的所有方面。一般最终报告应该包含以下方面:
(1) 最初引进项目时的初期项目视图
(2) 对该项目的价值评估及支持性信息
(3) 项目的范围
(4) 项目的开发流程及WBS
(5) 项目的会议记录
(6) 项目变更的报告及变更的理由
(7) 与项目相关的沟通过程文件
(8) 项目的审核报告与客户验收报告
(9) 项目成员的表现报告
(10) 项目的最终成果
企业软件开发流程是什么
在企业中,整个的开发的过程,从头到尾,大致可以分成五个大的阶段,分别是需求,设计,编码,测试,交付这五个阶段,这当中,位于软件公司内部管理的过程,详细划分又可以分为7步,如下所列:
相关系统分析员向用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚利用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。
开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。
在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。
软件开发管理如何风险管理
风险管理的达成必须包括三个要素:
首先,在项目开发计划中必须制定风险管理计划;
第二,在项目预算中必须包含解决风险所需的经费;
第三,评估风险时,风险的影响也必须纳入项目计划中。
下面就软件开发过程中经常发生的风险,谈谈我们采取的预防措施。
1、需求不明确
需求不明确是软件开发过程中经常可能遇到的问题,这类问题往往表现在需求范围未界定、需求未细化、需求描述不清楚、需求遗漏、需求互相矛盾等多个方面。在软件开发过程的生命周期各阶段中,需求不明确所造成的浪费是最大的,必须尽早尽可能解决。确定用户需求是件非常困难的事情,我们常常从以下几个方面着手处理需求不明确问题:
(1) 让用户参与开发
提供一个协作开发环境,让用户参与开发过程。如果条件不允许,至少应该在每次迭代的需求分析和系统测试阶段,让客户能够参与开发。
在选择参与开发过程的用户时,一方面,要尽可能争取精通业务或计算机技术的用户参与。另一方面,如果开发的产品要在不同规模、不同类型的企业应用,应该选择具有代表性的用户参与。
仅仅让用户参与是不够的,应该采取一定的激励措施,提高用户参与的积极性。
(2) 开发用户界面原型
用户通常不善于精确描述自己的业务需求,系统分析员需要借助白板、白纸等沟通方式,帮助用户清楚表述需求。然后,开发一个用户界面原型,以便用户确认需求。用户界面原型的作用仅仅是收集用户需求,不应该再作它用,也不要给用户造成系统快要实现的错觉。
(3) 需求讨论会议
对于用户分布广、用户量大的项目,要全面收集用户需求,往往很困难,通常采取需求研计会议方式进行需求确认。通过在会议前几周调查各地、各部门用户需求意见,然后集中各地或各部门的用户代表,举办一次需求研讨会,通过会议方式收集需求。本方法适合于具有一定信息系统使用经验的用户。
(4) 强化需求分析与评审
首先,需求分析是项目成功的基础,需要引起足够的重视,并分配充足的时间和人力,要让有经验的系统分析员负责,切忌让项目新手或程序员负责。其次,要进行需求评审,尽可能让用户参与需求评审,不要让需求评审流于行式。第三,也是最重要的一点,通过评审的需求规格说明书,要让用户方签字,并作为项目合同的附件,对双方都具有约束力。在公司内部要将通过评审的需求规格说明书,纳入配置管理。
2、项目缺少可见性
当一个项目经理或一名开发者说已经完成了80%的任务,您必须保持审慎的态度。因为剩下的20%可能还需要80%的时间,甚至永远都不能完成[1]。软件开发项目,往往在项目进度和软件质量方面缺少可见性,项目越缺少可见性,项目就越难以控制,项目就越有可能失败。我们可以通过迭代开发、技术评审、持续集成来增强项目的可见性。
(1) 迭代开发
采用迭代的开发模型,将产品的交付过程分为多个阶段,按照功能递增式交付。以下是一些典型的迭代:
一次简短的先期迭代,以建立规模和前景并确定商业理由;
一次精化迭代,其间将为稳定的构架划定基线;
一次构建迭代,其间将实现用例并充实构架;
几次产品化迭代,将产品转移到用户群。
每次迭代,都要充分接收用户的评审意见,以便为自我纠正。渐近式的功能交付,有利于降低开发人员的压力,增加用户的满意度,有利于增强项目的可见性,是最好的进展报告。
(2) 技术评审
技术评审是确保软件质量的重要环节,技术评审包括代码走查、会议评审和同行专家评审。代码走审可以是开发人员之间的交叉审查,或者是高级开发人员对普通开发人员的审查;会议评审一般应至少每两周进行一次,每次评审时间不宜太长;同行专家评审包括技术和业务两个方面的专家,经常性地让精通业务的用户专家参与项目评审,是项目成功的重要保证。
另外,充分利用质量审查的工具软件,也有利于提高代码质量。例如:在Eclipse开发环境中,可以集成Findbug、Checkstyle、PMD插件检查代码编写质量。
(3) 持续集成
持续集成能够把最终的一次大规模的集成调试过程分散到项目开发时间表的每一周、每一天、甚至每个小时。让项目中的各个人员都能够随时掌握当前的整体进度,并迅速发现集成过程中出现的问题并进行解决[1]。
开发小组应制定持续集成的制度,一般情况下每日构建一次,可以利用Ant等构建工具进行Java应用程序的构建。小组成员应在每个功能开发完成后,及时向版本控制系统(如CVS)提交代码,而且不应该向版本控制系统提交有问题(编译通不过)的代码。
每日构建、持续集成,让项目进度跟踪工作更加容易。当项目小组每天重新编译系统时,已完成与未完成的功能清楚可见,小组成员能够简单地从软件的表现知道距离整体完成还有多远。
3、新技术引入
技术创新是一种具有探索性、创造性的技术经济活动。在开发过程中引入新技术,不可避免地要遇到各种风险。通过T形软件开发、充分论证、多阶段评审、同行经验等措施可降低新技术风险。
(1) T形软件开发
在项目开发早期,开发小组应该建立系统的架构,解决关键技术难题、开发系统的基础构件,并对系统所需要应用的技术做深度探索。例如:基于JavaEE5构建全国联网售票系统,涉及到分布式事务处理、海量数据存储、异构平台互连等关键问题,应该优先处理这些问题;对开发所涉及到的EJB3、JSF、 JBoss Seam、Eclipse RCP等技术,要做深度探索。
越是技术复杂度高的项目,就越应该早地处理技术难题。如果在项目开发的中期或后期才发现架构有问题或是关键技术难题不能解决,则为时已晚。
(2) 充分论证
新技术开发是探索性很强的工作,潜在着许多失败的风险。在可行性分析阶段,要广泛搜集相关信息,设计多种可行方案,进行充分论证。在制定决策时,情报的数量和质量致关重要。掌握的信息越多、越准确,才能作出正确的的决策,项目失败的风险也就相对减少;反之,承担的风险就会增大。
(3) 同行经验
针对新技术,由于没有经验可借鉴,因此在探索过程中要充分利用互联网,通过搜索同行经验,往往事半功倍。要充分利用世界日益平坦化的优势,对于不能尽快解决的问题,可以先放一放,可能过不了几天,网上就有相类似问题的解决方案了。
4、技术兼容性风险
硬件产品之间、系统软件(操作系统、中间件、数据库管理系统)与主机设备之间、系统软件之间、应用软件与系统软件之间以及应用软件之间,都可能存在兼容性问题。往往系统集成的项目越复杂,兼容性问题就越有可能存在。
(1) 设计先行
在做系统的总体设计方案时,务必把好相关产品的选型关,确保网络、主机、系统软件与应用软件之间不要存在较大的技术兼容性问题。在网络平台建设方案中,明确相关设备的技术参数和配置要求。
(2) 售前产品测试
在做项目招投标工作时,要求投标方在售前提供产品兼容性测试,以避免在项目实施过程中才暴露技术兼容性问题。涉及应用软件开发的集成项目,要在开发工作的早期,做技术兼容性测试,以避免在项目开发后期才暴露技术兼容性问题。
例如,我们在开发深圳市汽车客运站售票及站务联网调度系统时,为了确保技术兼容,在做硬件招标时要求小型机设备厂商提供售前技术兼容性测试工作,并将测试结果做为评标指标。在深圳市软件测试中心对IBM、SUN、HP三家公司提供的小型机进行测试时,暴露了许多应用软件、应用服务器、数据库和操作系统之间的技术兼容性问题,如果这些问题在系统实施时才暴露或处理,势必会拖延项目进度。
5、性能问题
由于先期设计不足,性能问题往往在系统切换或新系统使用一段时间后暴露。出现性能问题往往要进行大量的优化工作,甚至局部的或全面的重新设计。无论是用户还是开发者,谁都不希望出现性能问题。
(1) 性能规划
在系统设计时,应做好前期做性能规划,对可能出现性能问题的环节做到充足的估计。在做数据库设计时,应争取DBA参与。
另外,在技术方法方面,尽可能采取一些性能优化模式,如DTO、AJAX、延迟加载等,尽可能在开发过程中解决了性能问题。不至于到了项目后期才解决性能问题,既费钱又费时。
(2) 性能测试
在开发过程中,要重视性能测试和压力测试,尽可能模拟现实使用环境,搭建测试平台。另外,由于开发环境的计算机往往比生产环境的计算机配置高,在做测试时应尽量找一些配置低的机器、较小的网络带宽进行测试。
(3) 充足的调试时间
在项目开发计划中,为后期性能优化留有余地。在对系统进行性能优化后,要进行性能测试和压力测试,可能还要做几次回归测试。因此,应该留有充足的时间和人力。
6、仓促上线
在项目实施过程中,系统切换上线环节最容易出纰漏。项目好不容易开发完成了,却在最后最后时刻功溃一匮。如果项目小,影响面窄倒不怎么重要;如果是影响面大的项目,则千万不可出现问题。在系统切换前,应充分考虑各种可能出现的问题,做好风险对策。
(1) 应急预案
面对各种不可预知的风险,要做好应急预案。正常运行的车站售票系统在春运、旅游黄金周,都会做好应急预案。新系统切换时,更应该做好应急预案。应急预案中应做好最坏的打算,售票系统不能正常工作时,准备手工票就是最坏的打算。
(2) 分步切换
为了减少风险的影响,可以做系统分步切换的方案。例如:售票系统在切换时,往往用新系统售预售票,或者是用新系统售长途车站,用旧系统暂时售短程票。待新系统运行稳定后,再全面切换到新系统。针对多个用户单位的系统切换,也可分单位进行。
(3) 交叉培训
新旧系统切换过程中,用户都存在适应过程。除了在切换前做好操作培训外,还要在新旧系统切换过程中做好交叉培训。让用户提前一些时间上班,让早班的用户在交班时培训中班的用户,中班的用户培训晚班的用户。做好交叉培训能够让系统平衡过渡。
7、可用性问题
软件的可用性包括软件的使用是不是高效、是否容易学习、是否容易记忆、是否令人愉快、是否不易出错等诸多因素。往往由于软件的可用性差,导致用户不满意,甚至被市场淘汰。在项目开发中应注意可用性问题,避免软件出现可用性方面的风险。
(1) 了解用户
到用户工作现场,了解目标用户使用软件的真实目的,从用户的角度、从用户的立场出发,了解如何通过软件系统替代用户的业务处理流程中,最繁琐、最容易出问题、或者是大量重复劳动的环节,让软件提高用户的工作效能和效率。例如:售票系统中,使用频度最高的界面是售票界面,售票员最关心的是钱不要出错(多了没收、少了要赔),因此,应收款和找余字体的显示应该突出、醒目;同样,票价和到达站也应该较为突出显示。通过快捷键、一键复位、数字小键盘等设计,尽量减少售票员敲击键盘的次数。否则,在日发旅客流量达七、八万人次的大型客运站,如果用户界面设计得不好,售票员一天工作下来,手指都会敲麻木。
(2) 参与型设计
与用户协作,让用户参与用户界面的设计、评审与测试,确保用户能够全面地、及早地发现可用性等方面的问题,并及时纠正。
让客户参与设计,而不要让客户设计,项目经理或高级设计人员应该主导设计。
(3) 竞争性分析
通过对市场上同类竞争性产品进行分析,或者对这些产品进行实验性测试,了解这些产品的用户界面问题,从而对新系统的开发提供启发。竞争性分析并不意味着可以剽窃别人的设计,而是通过分析竞争产品的优势和弱点,能够比以前的设计做得更好[5]。
(4) 一致性
如果用户知道同样的命令或同样的操作总会产生同样的效果,那么他们在使用系统时就会更加自信,同时也鼓励他们进行探索性学习,因为他们已经具备了使用系统新部分的基础知识[Lewis er al。1989]。
开发团队应遵循公司或小组制定的用户界面标准,就可以在很多方面保持一致性,切忌不要一个系统存在多种不同的界面风格。
郑州观致电子商务,拥有有效资源, 多起成功案例, 专业制作水平, 提供微期货平台搭建、分销系统开发、捕鱼游戏开发、第三方支付软件开发、商城网站建设、电商网站建设、网站定制开发、手机app软件开发、微信小程序开发、电商系统开发、办公系统软件开发一系列服务。精英团队为您以后保驾护航!
8、结论
在信息系统集成项目中,风险是多种多样的,是无处不在的。在项目管理活动中,要积极面对风险,要培养。越早识别风险、越早管理风险,就越有可能规避风险,或者在风险发生时能够降低风险带来的影响。特别是在项目参与方多、涉及面广、影响面大、技术含量高的复杂项目,应加强风险管理。如果不主动驾驭风险,就会面临风险。
软件开发过程管理的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于软件开发过程管理工具、软件开发过程管理的信息别忘了在本站进行查找喔。