绪论:写作既是个人情感的抒发,也是对学术真理的探索,欢迎阅读由发表云整理的11篇软件项目总结范文,希望它们能为您的写作提供参考和启发。
随着计算机和信息产业的发展,软件产品的规模也是越来越庞大,随着软件规模的扩大,软件人员的增加,软件项目管理的复杂性增大,各个软件企业都意识到将项目管理的理念引入到软件开发活动中,开始对开发过程进行有效的管理,又所谓“IT项目管理”或“软件项目管理”。软件项目管理就是为了使软件项目能够按照预定的成本、进度、质量的顺利完成而对成本、人员、进度、质量、风险等进行分析和管理的活动。随着软件开发规模及开发队伍的逐渐增大,软件开发活动不再是像过去的几个开发人员就可解决的事情,它需要使用开发规范或开发流程控制来约束每个开发人员、测试人员和维护人员的工作,以保证每个项目组成员按开发计划及进度准时、保质完成自己的任务。软件项目管理的各个过程主要包括:需求管理,范围管理,任务分解,规模估算,成本管理,进度计划,质量计划,配置管理计划,风险计划,文档管理,团队建设,跟踪控制,收尾管理,项目结束。项目收尾管理作为项目结束前的最后管理工作也显得及其重要,一般包括合同收尾和管理收尾两部分。合同收尾就是项目管理人员与客户对照合同一项项的核对,审核是否完成了合同所要求的内容,是否达到合同所提出的指标或条件,也就是我们通常所讲的客户验收;管理收尾就是对于项目组内部,把做好的项目文档、代码、与客户交流的文件等归档保存,对项目中遇到的问题及解决方法、有效的创新技术进行及时地总结,对外宣称项目结束,转入维护期,把相关的产品说明及技术文档转到维护组。
一、阶段收尾管理
软件项目结束的状态:
1.正常结束。2.提前结束。3.延期结束。4.暂停。5.取消(因变更或不可完成)。软件开发是一项复杂的系统工程,牵涉到各方面的因素,在实际工作中,经常会出现各种各样的问题,甚至面临失败。而如何总结、分析失败的原因,得出有益的教训,这对一个公司来说,则是今后项目中取得成功的关键。
以前会听说过这样的项目:客户验收后,项目活动就随之收场,项目资料没有认真归纳总结,不是束之高阁就是缺失不全。但是当新项目启动时,面对新的项目问题,项目组成员才发现:其实这类问题以前也遇到过,但是却无法找到相应的解决方案资料,只好再投入人力、时间甚至金钱来重新经历一遍!为什么相同的问题会重复出现?究其根源,是因为缺少项目总结,也就是说没有做好项目收尾工作。那么是不是我们只能等到项目结束或收尾时才能开始进行项目总结、文档保存的工作呢?当然不是。在软件项目管理的各个阶段,我们都可以做收尾管理工作,也就是阶段收尾管理工作。
二、阶段收尾管理的重要性
在实际软件项目管理中,阶段性的收尾管理过程和工作往往不被大家重视,其实阶段性的收尾管理工作也是非常重要的。阶段收尾管理工作的重要性主要体现在如下几个方面:
1.进度管理中的里程碑。每个项目都是由若干个相对独立的任务链组成的,软件项目也是如此。只有在任何一条任务链都已经优化的基础上,才可能进行系统的全面的优化,因此,保证每条任务链的效率是整个项目进度完成的前提和基础,只要能保证里程碑事件的按时完成,整个项目的进度也就有了保障。那么我们在里程碑点都来做些什么呢?
在计划好的阶段管理工作中,收集项目的最新信息和数据,并将这些数据与项目计划进行比较,来判定项目的阶段效率,进度是提前了还是落后了?成本是在控制中还是超支了?质量是否符合要求?客户对阶段工作结果满意么?及时总结经验与教训,同时及时发现项目存在的或潜在的问题,以便近早采取纠正措施,这就是阶段管理工作中的收尾管理,所以说阶段收尾管理是进度中的里程碑,是整个项目进度优化的前提和基础。
2.沟通管理中的契机。沟通是保持项目顺利进行的剂。与传统项目相比,软件项目具有较高的技术含量和较大的风险。参与软件项目建设的用户并不都是软件开发专家,他们具有丰富的业务经验,但是很少能了解软件开发的技术,随着项目工作进程的深入,就会有许多新的问题出现,与客户的及时有效沟通更显得尤为重要。软件项目是客户和用户共同面对的项目,只有双方的积极参与才能促进项目的成功,而只有进行有效的项目沟通管理才能确保用户的积极参与。一个阶段的项目工作完成后,与客户一起就前一段时间的工作进行总结和检查是十分必要的。一方面可以及时了解客户对项目工作的满意程度,及时统计、分析客户对项目的意见,为下一阶段工作的顺利进行提供了保障。另一方面有些因工作繁忙未能及时签署的文件,也尽快找客户给予签字确认。当双方出现纠纷时,只有双方签字的文字记录才是最有用、最有说服力的证据。
中图分类号:G424 文献标识码:A
1 项目实训中存在的问题
实训是职业技能实际训练的简称,对于中等职业技术学校的信息技术专业学生,为了让学生快速适应工作岗位,完成由学生到员工的角色转变,实训是中职学生成长为技能型人才的必由之路。目前计算机实训室存在的问题较多。(1)目前计算机机房的数量有限,且都设计成为通用机房。(2)从机房管理的角度出发,机房一般都安装硬件保护卡来保护计算机,实训学生将无权限对计算机进行此类操作。
针对以上项目实训教学中存在的问题,基于虚拟机技术的实训教学架构设想就应运而生,其基本思路是通过虚拟化软件的辅助,在一台真实计算机上将虚拟出一台虚拟计算机,并在此虚拟计算机上安装实训课程教学要求的操作系统。
2 虚拟机技术
虚拟机是指一台物理计算机上通过虚拟软件技术,模拟产生一台或多台计算机的软件,虚拟出来的逻辑上的计算机称为客户机,而客观存在的物理计算机为主机。虚拟机使用实体主机计算机的硬件资源,每一台客户机都认为有自己的BIOS、CPU等硬件设备,以文件的形式存在。在一台主机上可以虚拟出多个逻辑上的客户机,主机与客户机都可以安装和运行多个操作系统,可以将这些计算机相互连接形成网络。目前广泛使用的虚拟机软件有VirtualBox、virtual PC和VMWare Workstation,本人在教学中使用VMWare Workstation7展开系统安装的实训项目。
3 项目驱动下的虚拟机教学
3.1 项目重要性和对象分析
中职生对计算机技能有所掌握,但水平上参差不平,存在个体差异。针对这些情况,再加上计算机基础课程是中等职业技术学校的基础课程,且要求学生都应掌握如“操作系统安装”等一系列基础计算机技能,所以用虚拟机来实现此实训项目相当重要,务必要求每一位同学做到独立实训,自己实操,提高其计算机应用能力。
3.2 项目实训目标
操作系统的概念既抽象又具体,它是计算机系统中最靠近硬件的软件,功能是对计算机硬件和软件进行管理。正因为它在整个计算机系统中的作用,此项目的目标是一定要学生成功安装操作系统。对于此项目的难点部分如BIOS的设置、硬盘分区格式化等都可以利用虚拟机进行模拟,其配置方法基本同真实情况一样。
3.3 项目实训设计
3.3.1 实训准备
(1)设置疑问,激发学生兴趣。设置问题,让学生带着问题来听、做实训项目。比如说“同学们听说过虚拟机吗?知道虚拟机是什么吗?虚拟机一种软件技术那它与普通的应用软件有什么共同和区别点吗?”通过问题的设置,让同学们在心底对虚拟机有一定的定义,激发同学们对知识的学习兴趣。(2)老师演示项目成果,激发学生成功的欲望。老师在教师机上用多媒体教学软件演示预先操作的项目实训成果,让同学们在心理上有种成功的暗示,让同学觉得这实训项目可以操作成功,激发同学们对项目实训的学习兴趣和动手积极性。(3)自习学习及时反馈。同学通过提供的资料和网络查阅等手段自习完成问题的解答,并把一些不能完全理解或者仍然存在疑问的内容通过面讲或者文字的形式反馈给老师,老师将在下一环节中突出这部分内容。
3.3.2 实训进行
分步式讲解项目实训内容,突出重点难点:
(1)安装虚拟机。虚拟机的安装比较简单,虚拟机是一种应用软件,其安装过程同其它软件一样,基本上用下一步就可以完成。通过这一步,同学们不仅学会了安装虚拟机,同时应用软件的安装方法也得到预习。
(2)新建和配置虚拟客户机。根据项目实训要求,我们要虚拟出一台客户机并且在虚拟客户机上安装windows XP系统,所以要新建客户虚拟机们并做相应的配置。新建和配置的过程为向导式的,只要对新建的虚拟机进行操作系统类型、名称、保存路径及硬件配制进行设置即可。
(3)在虚拟客户机上安装操作系统。上一步已经成功的虚拟出一台计算机裸机,并指定了在此虚拟机上要安装的操作系统。接下来,我们启动虚拟机并进行操作系统的安装。①BIOS 设置。此项目中,我们将用系统安装光盘进行安装,需将第一启动顺序设置为CD-ROM Drive。 因为是虚拟机安装,则需要先让虚拟机启动窗口获得鼠标焦点,再点击F2进入BIOS设置界面,进行参数设置。虚拟机的BIOS虚拟了真实计算机的BIOS,同学们可以用虚拟机来完成BIOS设置实训项目。②硬盘分区。启动顺序设置好之后,要进行磁盘分区操作 ,用准备好的集成分区工具PQ分区魔术师的系统安装光盘启动,进行系统安装之前的磁盘分区。根据实训项目的设计,把硬盘分为三个分区分别为C:、D:、E:,其容量分别为10G、15G和15G,其文件类型为NTFS,格式化三个分区,并把C:盘设置为作业。③安装操作系统。磁盘分区完成之后,重启进行Windows XP操作系统的Ghost安装、文件复制和系统配置,中间无需干预。
(4)设置使用客户机系统。操作系统安装成功之后,学生们可以象使用真实计算机那样,给其安装升级硬件驱动、安装应用软件。学生实操实训,穿插问题解决:同学们在实训进行时,虽然上一步有详细的演示操作和重点难点的讲解,但学生在实操时仍然有种种问题,所以在学生实训过程中,边进行实操,边穿插问题的解决。
3.3.3 实训总结
(1)学生总结演示。实训操作结束之后,学生要对此实训项目进行个人总结,包括现场总结和提交实训报告,无论是哪一种总结都应包括实训项目基本信息;项目实训目的;项目实训内容;项目实训环境;项目实训步骤;实训结果;实训总结等信息。(2)老师总结。老师查询汇总同学们的实训总结之后,对此项目进行综合性总结,其总结内容包含如下:对整个实训项目进行总体介绍、回顾同学们的项目实施过程和完成情况、总结项目实施过程中遇到的问题和解决方案、演示同学们的项目报告、分享项目体会和收获和实施此实训项目的意义与作用。
一、 测试组组成测试组由测试组长和测试工程师组成。
二、 测试组工作职责负责理解软件产品的功能要求,搭建配套的测试环境,然后 对其进行系统测试,检查软件有没有错误 (Bug),决定软件是否 具有稳定性 (Robustness),并写出相应的测试用例、各阶段测试 报告。
(一) 测试组长工作职责:
1、 协调测试组与各个项目组之间的流程及工作关系;
2、 对各个项目的测试工作进行统筹安排,并对各个项目的 测试工作进行计划、分工和管理;
3、 定期或不定期与各个项目负责人沟通项目进度,随时了 解项目进展情况;
4、 对测试组成员的日常工作进行评审考核;
5、 定期或不定期向部门总监汇报工作情况;
6、 参与日常的软件测试工作。
(二) 测试工程师工作职责:
1、 仔细阅读项目规格说明、设计文档、使用说明书等,充 分掌握软件的性能、特点、使用方法、业务流程等,协 助测试组长制定项目的测试计划;
2、 依据项目要求,搭建相应的测试环境,维护测试设备;
3、按照测试计划编写测试用例,保证测试用例合理有效;
4、 根据测试计划及测试案例,执行测试,并根据产品特点 及测试要求,实施集成测试、系统测试等,及时发现软 件缺陷,评估软件的特性与缺陷;
5、 详细记录测试过程,编写测试报告和对测试结果进行分 析,通过测试,掌握软件具有的能力、缺陷、局限等, 对软件质量给出评价性的结论与意见,整理测试文档, 填写软件测试报告,编写测试总结,为软件开发成果提供 总结性意见;
6、 配合研发部门各项软件产品,并详细编写产品 通知单;
7、 完成上级及部门其他领导交办的临时任务。
三、 测试组工作流程测试组的工作与项目开发进度紧密相关,所以测试的工作流 程依据开发进度分阶段进行大致分为以下几个阶段:
(一) 计划和设计阶段
1、 项目组成立时,确定项目需求及项目设计方案,了解软 件产品的主体功能及实现目的;
2、 项目经理下发测试预通知,通知内容包括:正式交接测 试时间、测试规模预计估算等信息;
3、 召开测试启动会议,会议内容包括:开发团队与测试组 交接测试内容,对测试目标达成一致,商讨测试计划,
统一项目组的目标和测试的工作重点;
4、 编写测试计划及相关文档,依据测试启动会议中确定的 目标和重点,结合项目经理下发的《测试任务书》,编写
《测试计划书》(见附件一)。计划书的内容应该包括:
l测试需求:需要测试组测试的范围,估算出测试所花 费的人力资源和各个测试需求的测试优先级;
l测试方案:整体测试的测试方法和每个测试需求的测 试方法;
l测试资源:本次测试所需要的人力、软件、硬件及技 术资源;
l 测试组角色:明确测试组人员的工作内容及相关职责;
l里程碑:明确项目进行过程中的测试组应该关注的里 程碑;
l文档报告:确定在项目测试过程中需要提交的测试计 划,测试报告等;
l测试计划编写完毕后,需提交给全体项目组成员,由 项目成员综合评审后,确定最终《测试计划书》(见 附件二)。项目经理要以此为依据,跟踪监控项目测 试进度,评估测试计划的可行性,完整性,并且在项 目结束后评估测试质量。
5、 设计测试用例,依据《测试计划书》相关内容,根据每 一步测试计划编写全部的测试用例,测试用例必须能满
足全部的测试需求。
(二) 测试实施阶段
1、 实施测试用例,测试工程师依据《测试计划书》中分配 的测试任务和测试用例,实施相应的测试工作,并详细 记录测试过程及结果。
2、 提交测试报告,在实施测试用例的过程中,依据记录的 测试过程和结果,填写《测试报告书》,并由测试组长审 批后,上报项目经理。项目经理安排开发组修改相应的 软件产品。测试报告内容包括:测试产品版本、测试人 员、测试时间、测试过程、产品运行BUG、产品缺陷状态、 急待解决的问题。
3、 回归测试,接到开发组的回归测试通知后,测试组重新 拷贝修改后的最新版本,进行回归测试。回归测试的用 例属于测试用例的一部分或者全部测试用例,但不能超 出测试用例的范围。
(三) 测试总结阶段
1、 编写测试总结报告:回归测试全部通过完成后,由测试 组长整理填写《测试总结报告》,报告主要内容包括: 测试资源描述——参与测试人数,耗用测试时间; 测试结果摘要——描述各个测试需求的测试结果和功能 实现情况; 缺陷分析——按照缺陷的属性分类进行分析;
测试需求覆盖率——如果在测试过程中未覆盖到的测试 需求,在此应详细说明原因; 测试评估——对此次项目质量进行评估; 测试组建议——从测试组角度为项目组提出工作建议。
2、 测试验收:项目经理收到测试组长提交的测试总结报告 后,对此次测试工作进行验收。验收内容包括:测试效 果验收、测试文档验收、测试工作评估、测试工作建议, 签字验收后,宣布此次测试结束。
3、 测试文档归档:测试验收结束后,对测试过程中涉及到 的各种标准文档进行归类、存档。相关文档包括:测试 任务书、测试计划书、测试用例、测试报告书、测试总 结报告、测试验收报告等。
1.1项目计划问题。项目计划的作用是将项目内所有计划进行协调,用以进行指导项目的执行。项目计划是管理人员实施项目管理的前提保证。对项目计划制定的过程实际上是对项目熟悉的一个过程,通过对项目计划的制定’管理人员可以清楚项目内容,明白项目实施过程中需要注意的要素和重点。一般来讲项目计划的问题主要有两个:一个是项目计划制定的随意性太强,结构不严谨,操作实施性差,不能作为项目计划实施的指导文件;另外一个是项目计划的整体性较差,内部不连贯,不能有效的控制项目的进度,导致项目的失控。
1.2管理意识问题。在企业中,特别是软件开发的企业中,大多数都是只重视软件技术轻视软件管理,项目内部人员大多数都有深厚的技术知识,但是缺乏管理知识,缺乏管理技巧和管理经验。这样从项目整体上来看,管理就会出现不协调,大多数人只会埋头苦干,不懂得合理的分配任务,进行协调工作’导致项目进度落后,项目计划周期加长,最终影响项目的实施。
1.3项目干系人的问题。项目干系人通俗的来讲就是跟项目有关系的人,包括参与项目和受项目影响的人,具体来讲包括项目策划人、项目组成员、项目配合人员、顾客、消费者和供应商ra。项目干系人的期望和需求在项目的制定过程中和项目目标实现过程中都是非常重要的,因为不同干系人的期望和需求也是不一样的,他会要求项目的制定和实施过程中尽量靠近自己的期望和需求,这些人的期望和需求有时候会相差很大。
1.4项目团队内分工协调的问题。项目从开始制定到最后项目目标的实现,这一过程包括了很多的阶段,各个阶段的不同角色和同一阶段的不同角色的任务是不一样的,项目经理分配任务曰寸有时考虑的不全面就会出现一些问题,例如分工任务不明确,会导致人员相互推卸责任;即使有时分工很明确,但是员工之间没有协作只顾个人的工作,不考虑项目整体。
1.5项目收尾问题。项目收尾中一项很重要的工作就是项目经验总结,项目经验是项目完成后,项目管理人员和技术人员根据实际的经验教训所写的报告,这些报告包括项目实施中的好的建议、针对某个问题该怎样解决以及实施中容易出错的地方。
2加强软件项目的管理的建议与对策
2.1制定相符的项目计划。制定项目计划不是要求写出一份好看的资料或者是计划书,而是你要根据实际的项目情况制定一个符合项目的计划,这个计划要有针对性,尽可能的考虑全面。制定好的项目计划要有实用性,能够用来指导工作,制定项目计划时要考虑整体情况和内部的连贯性,项目计划要尽量的详细,控制力度尽量大,制定项目计划是一定要考虑到项目的整体成本,结合实际情况尽量降低项目成本,作出一份详尽合理与项目相符的计划。
2.2合理分配项目任务。项目经理将项目工作范围进行分解时应该使用WBS(工作分解结构),这样可以有效的防治工作范围的漏分解,为了防治项目分解后的任务无法有效的分配,可以采用资源负荷直方图,采用资源负荷直方图可以保证工作任务达到合理的负载均衡。
2.3项目成员相互协调,相互配合。项目经理将工作任务完全分解后,将工作责任合理的分配给工作人员和团体成员,同时应该强调员工之间进行相互的配合,完成不同分工和环节进工作的协调。项目生命周期阶段包含很多阶段,但是不同阶段之间是相互联系的,要注意上下阶段之间的衔接,做好上下阶段之间信息的沟通。通过相互之间的协调,确保项目工作的完成。
2.4重视项目管理经验总结。工作经验的总结对于项目的管理工作相当重要,项目工作经验的总结可以为下一个项目的实施提供良好的项目的指导,在项目的实施工程中少走弯路,项目经理应该切实可靠的进行项目总结,在制度上鼓励和加强项目经验总结工作,使得项目经验总结及时并且具有指导意义而不是敷衍了事,为以后的项目人员更好地工作提供一个极好的资源和依据。
1 概述
组织过程定义与改进过程描述建立和维护一个可用的组织过程资产集和工作环境,以及对当前组织的过程与过程资产的强项和弱项的透彻理解,策划、实施和部署组织的过程改进。组织过程定义与改进主要分为确定过程改进时机、策划过程改进、建立维护组织的过程资产、部署和实施组织过程改进、过程改进总结共5个过程元素。
2 组织过程定义与改进过程的主要活动
2.1 过程改进的时机
2.1.1 分析并确定组织过程需要和目标
工程过程组根据公司的年度经营方针、目标和年度质量工作计划,结合公司现有组织过程资产情况以及项目实施情况,于每年年初,在上一年度的公司质量体系管理评审会议或软件工程化过程改进总结的基础上,确定组织过程改进的需要和目标,形成组织过程待改进项;工程过程组根据过程改进目标、现有组织过程资产及项目实施情况,分析出待改进项中的弱项。
2.1.2 评审过程改进目标
工程过程组结合过程改进的估计成本和工作量,对待改进的过程进行优先级排序,识别出本年度组织过程改进项;经软件工程化管理领导组评审确认后,形成《组织过程待改进项列表》。组织过程待改进项的收集时机。
(1)GJB5000A体系正式评价、就绪调查、内部评估后,收集本单位内组织过程资产使用及项目实施运行相关信息及数据,建立和维护《组织过程待改进项列表》。
(2)工程过程组按照公司年度过程改进策划每年至少进行一次内部评估,对项目的过程实施情况进行评估。开发库管理规定开发库是项目组内部使用,有访问控制权限的项目组成员可自行进行出库、入库和变更的操作。
2.2 建立维护组织的过程资产
工程过程组建立和维护过程改进计划,过程改进计划原则上在一季度完成,步骤包括:
(1)明确参与人员及职责,包括软件工程化管理领导组、工程过程组、项目组、厂级QA、组织资产库的功能管理组员。
(2)确定过程改进各个活动的时间进度、参与人员及完成形式。
(3)列出过程改进活动拟交付的工作产品清单。
(4)上述内容形成组织过程改进计划,纳入《软件工程化年度过程改进计划》中,由软件工程化管理领导组主持《软件工程化年度过程改进计划》评审。过程改进计划内容一般包括:年度过程改进目标;年度体系建设情况;组织级角色的任命;试点计划和推广计划;组织过程资产库的相关采集和维护计划等。
2.3 建立维护组织的过程资产
2.3.1 建立维护组织标准过程
工程过程组根据组织的现有的过程文件以及项目执行实际情况,编制或维护组织标准过程及其规范、规程、指南、模板、检查单等工作产品,形成组织的标准过程集。
2.3.2 建立维护生存周期模型
工程过程组基于公司各研究所项目的领域特征和软件产品的开况,开发出适合公司各类软件产品的生存周期模型,并形成软件生存周期选择指南。
2.3.3 建立维护组织标准过程裁剪指南
工程过程组按照生存周期选择的类别,对已完成的组织标准过程集,制定或维护裁剪准则及裁剪指南,形成标准过程裁剪指南。
2.3.4 建立和维护组织过程资产库
工程过程组根据组织过程需要以及项目的需求建立和维护组织过程资产库,组织过程资产库包括:标准过程库、历史项目库、风险库、测量库、工作环境标准列表、经验教训案例库、重用库;组织过程资产库的建立、维护如下:
(1)标准过程库:标准过程库功能管理员对体系文件的版本进行管理和,收集体系文件在使用中发现的问题,经工程过程组讨论后修改,原则上过程文件、规程、规范和指南的维护每年至少一次,模板和检查单适时修改,标准过程库功能管理员提出入库申请,经工程过程组审查通过,组长审批后入标准过程库。
(2)历史项目库、风险库、测量库、经验教训案例库、重用库、工作环境标准列表:项目软件负责人在项目软件总结一周内提交入库申请和项目信息到厂级QA处。功能管理员初审后,召集工程过程组会议审查通过,组长审批后入相应的资产库。功能管理员可以按季度收集汇总后一并开会评审,对资产库的维护每年至少一次。
2.4 实施和部署组织过程改进
2.4.1 确定需试点的过程
工程过程组根据软件工程化年度过程改进计划中组织过程改进目标和组织过程改进项,结合公司年度软件工程化推广实施计划中的项目,对于《组织过程待改进项列表》中和用户明确要求的过程标识、确定需试点的过程,并开展试点实施工作,内容包括:选择试点范围;确定试点参与人员;明确试点实施周期;项目组提出试点改进意见或建议;工程过程组中组织测量库管理员收集、分析测量数据;工程过程组汇总分析组织过程资产的适用性,并完成试点总结,试点实施总结由软件工程化管理领导组批准。
2.4.2 策划组织资产部署和推广活动
工程过程组策划组织资产部署和推广活动,标识、推广、使用和维护组织过程资产,组织资产的维护原则上每年度一次。
2.4.3 确保推广组织标准过程
确保在项目实施中运用推广组织标准过程,工程过程组负责予以指导。
2.4.4 收集组织过程资产改进数据
工程过程组结合年度推广项目的实施,按照组织资产库的功能管理组员分工,监控项目实施中对组织过程资产的使用情况,收集组织过程资产改进数据,并将与组织过程有关的经验纳入组织的过程资产。
2.5 过程改进总结
工程过程组对过程改进计划的执行情况、组织过程资产的建立、部署和推广情况、所吸取的经验和教训进行分析、总结,对下一阶段和后续过程改进工作提出建议,形成《软件工程化年度过程改进总结报告》,工程过程组组织,软件工程化管理领导组主持《软件工程化年度过程改进总结》评审。
3 结语
2项目的立项
项目在立项的主要阶段中具体包含的任务是,对立项理由的确定,并将立项建议有效的提出,同时需要将适当的资源与资金有所提供,力求让立项中的相应建议能够成为正确的项目类型。
3合同的执行
在执行合同的过程中,承担着大型软件项目管理流程的重要部分,能够包含系统的维护、项目的验收、内部的验收、测试的执行以及软件的开发等五方面的工作流程。
4软件的开发
开发软件的阶段包含:单元测试、编码、系统设计、系统分析以及需求调研等流程,具体会在几个层面中开展必要的管理:a.项目计划的拟定在大型的软件项目当中,软件项目的规划方面是对其他相关的规划充分协调的必要条件,是能够控制和执行指导项目的可操作型文件。主要突出了对客户需要的掌握,是进行项目活动的主要条件,同时还是大型软件项目监控和跟踪的凭证。b.过程控制需加强过程控制方面具体包含:配置管理、变更控制以及过程管理。c.开发过程的确定按照项目组别以及大型软件项目的真实状况,创建出可控制、稳定性极高的软件开发模型,同时需要根据此流程开展软件的相应开发。
4.1内部的验收
大型软件项目在对系统测试以及集成测试完成之后,需要开展项目的内部验收流程,具体包含着几大步骤:a.准备文档在准备文档的过程中,大型软件的项目经济需要提交一部分报告,分别为:产品的清单、总结项目开发的报告以及内部的验收计划报告等。财务的主管需要将项目的财务预算报告正确提交。b.内部的评审内部评审主要针对的是所提交的测试结果,以此来将项目的开发总结报告完善达成。c.测试内部验收测试内部验收的方法与内容,和测试系统是完全一致的,可是需要以用户验收的角度开展测试,由于是试运行的必要条件,利用用户验收的角度能够奠定验收的坚实基础。
4.2执行和测试
测试项目的主要目的就是对系统进行充分的检查,检查的关键在于系统能否和任务书规定和项目合同规定的需求相符。项目测试方面包含:系统测试和集成测试,具体会开展安装与反安装测试、可靠性测试、压力测试、安全性测试、用户界面测试以及功能测试等。其中是在模拟的运行状态下进行的测试过程。
4.3项目的验收和试运行
用户的验收和试运行阶段当中具体应该完成的任务是,将全部的工作都被用户有所认可,具体涉及到的工作是:a.事前准备所谓事前的准备就是验收前的准备,大型软件项目经理对产品完整性方面负责检查,包含:中间产品、介质以及文档等方面,从而保证现场实行的效率最大化。同时对现场的软件安装调试也需要有所负责,将调试安装的总结报告相应强化。此外,还要对用户的验收计划负责拟订,同时要获得客户的认可。b.用户的确认用户需要开展系统的试运行以及验收测试流程,开展系统和文档的移交。大型软件的项目经理需要和客户有效的协调,以此来帮助用户能够开展项目的验收,从而让用户的验收报告能够成立。
4.4项目的维护
在维护软件系统方面包括两个方面,其一是纠错性质的维护,因为初期的测试过程不能够将软件系统当中潜在的一些错误暴漏出来,然而对哲学隐含错误的改正和诊断过程,就是纠错性的维护。其二是完善性的维护,在正常使用大型软件的阶段,用户会逐渐的将新型需求提出,想要对用户所提出的需求予以满足,就需要将软件功能的活动增加,这一流程称之为完善性的维护。
1 引言
软件测试是软件开发过程的重要组成部分,是用来确认一个产品的品质或性能是否符合开发之前所提出的要求。对软件需求分析、设计规格说明和编码的最终复审,某种程度上测试工作的好坏直接影响了软件产品的交付和用户的满意度。因此,如何做好测试工作,使测试在软件工程中顺利进行,辅助软件开发工作是我们每个软件人员应该考虑的问题。
2 软件测试的目的
(1)确认软件的质量,确认软件做了你所期望的事情,确认软件以正确的方式来做了这个事件。
(2)提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。
(3)软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。软件测试的第三个目的是保证整个软件开发过程是高质量的。
3 软件测试的对象
软件测试并不等于程序测试。软件测试应该贯穿整个软件定义与开发整个期间。因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试的对象。
4 软件测试流程
软件测试工作并不是在软件代码开发完毕后才开始的,这一点是很多软件人员的误区,需要明确一下,它其实是在项目进入软件实现阶段就开始了,项目进入软件实现阶段的时候,就应该启动软件测试工作了。
下面根据笔者的测试经验,详细阐述一下软件测试的流程、每个阶段需要做的工作及整个测试过程产生的文档。
4.1 计划与设计阶段
4.1.1 召开测试启动会议
当项目进入软件实现阶段(编码),测试经理召集项目经理、开发经理开会确定测试交接时间,开发团队与测试团队交接测试内容,对测试目标达成一致,商讨测试计划的可行性,统一项目组的目标和测试的工作重点。进行规模预估并成立测试团队,完成《测试计划》和《测试方案》。
4.1.2 设计测试用例
明确了测试需求和测试计划,在需求分析文档确立基线以后,测试组需要针对测试需求编写全部测试用例,在实际的测试中,测试用例将是唯一实施标准。
4.2 实施测试阶段
4.2.1 实施测试用例
实施测试用例将花费测试组绝大部分时间,这些工作都是建立在前期很多计划工作的基础上。当测试用例全部编写完成后,测试工程师根据测试计划中分配给自己的测试任务,实施相应的测试用例,并记录测试结果。
4.2.2 填写测试记录
测试人员在进行具体的测试工作时,需要将测试内容填写在测试记录表中,直到所有的测试执行工作结束。
4.2.3 提交BUG清单
在具体的测试过程中,测试人员发现BUG后,需要将BUG记录在清单里,并及时提交给测试经理。
4.2.4 提交测试报告
在约定的测试周期完成之后,测试工程师需要总结此测试的结果,编写测试报告。测试工程师根据此轮测试的结果,编写测试报告,主要应包含以下内容:
(1)测试报告的版本。
(2)测试的人员和时间。
(3)测试所覆盖的缺陷――测试组在这轮测试中所有处理的缺陷, 不仅要写出覆盖缺陷的总数,还要写明这些缺陷的去向。
(4)上一版本活动缺陷的数量。
(5)经过此轮测试,所有活动缺陷的数量及其状态分类。
(6)测试评估――写明在这一版本中,哪些功能被实现了,哪些还没有实现,这里只需写明和上一版本不同之处即可。
(7)急待解决的问题――写明当前项目组中面临的最优先的问题,可以重复提出。
在每轮测试结束之后应尽快将符合标准的测试报告发给测试经理。
4.3 总结阶段
测试工作结束或即将结束时,测试组就要开始着手准备进行总结的工作。
4.3.1 编写测试总结报告
在测试结束之后,测试经理编写测试报告,对测试进行总结,并且提交给项目经理,为产品的后续工作提供重要的信息支持。
测试经理根据测试的结果及测试工程师提交的测试报告编写测试总结报告,测试总结报告必须包含以下重要内容:
(1)测试资源概述―多少人、多长时间。
(2)测试结果摘要―分别描述各个测试需求的测试结果,产品实 现了哪些功能点,哪些还没有实现。
(3)缺陷分析―按照缺陷的属性分类进行分析。
(4)测试需求覆盖率―原先列举的测试需求的测试覆盖率,可能 一部分测试需求因为资源和优先级的因素没有进行测试,那么 在这里要进行说明。
(5)测试评估―从总体对项目质量进行评估。
(6)测试组建议―从测试组的角度为项目组提出工作建议。
4.3.2 测试验收
测试验收工作是在以上工作全部结束后,测试经理对测试的过程、效果进行验收,签发测试验收报告,宣布测试结束。由测试经理进行测试验收,验收内容包括:
(1)测试效果验收―测试是否达到预期目的。
(2)测试文档验收―测试过程文档是否齐全,符合标准。
(3)测试评估―从总体对测试的质量进行评估。
(4)测试建议―对本次测试工作指出不足,需要在以后工作中改 进的地方。
(5)宣布测试结束―测试组成员签字宣布本次测试结束。
4.3.3 测试归档
测试归档是在测试验收结束宣布测试有效,结束测试后,对测试过程中涉及到各种标准文档进行归档,主要包括测试计划、测试用例、测试报告、验收报告等。这些文档的编写保障了测试的顺利进行,同时作为整个测试项目的痕迹,被保留下来,供查阅。
参考文献
[1]佟伟光.软件测试[M].北京:人民邮电出版,2008.
[2]Rex Black.测试流程管理[M].北京:北京大学出版社,2001.
[3]Robert V.Binder著,华庆一等译.面向对象系统的测试[M].北京:人民邮电出版社,2001.
[4]Mark Fewster, Dorothy Graham著,舒智勇等译.软件测试自动化技术与实例详解[M].北京:电子工业出版社,2000.
中图分类号:TP311.5 文献标识码:A 文章编号:1007-9599 (2012) 08-0000-02
一、引言
近年来,随着科技的发展,计算机软件项目管理的重要性日益凸显出来,但是国内计算机软件行业发展比较缓慢,特别是在软件项目管理方面落后更多,一方面是由于技术落后,但更多是由于缺乏科学有效的管理。怎样运用计算机软件有效的进行项目管理,这是国内软件行业亟需解决的问题。目前,国内正在积极的进行计算机软件项目管理的研究和软件管理人才的培养,这是今后该行业发展的必然趋势。
二、计算机软件项目管理的本质
计算机技术的更新换代比较快,这样就加大了计算机软件管理的难度,使项目管理工程变得复杂,在协调管理上不是那样简单了。为此,如果要运用计算机软件进行项目管理,就要将原有的管理模式进行改革,应该集中企业的资源,进行合理的资源配置,提高软件管理质量,达到成本控制的目的。计算机软件项目管理从本质上来讲是一种管理方法或管理手段,运用这种方法可以对企业进行成本,人员和风险的分析和管理。结合以上的分析,我们可以知道,计算机软件项目管理对于软件企业来讲相当重要,已经成为该行业的竞争点[1]。
(一)项目计划问题
项目计划的作用是将项目内所有计划进行协调,用以进行指导项目的执行。项目计划是管理人员实施项目管理的前提保证。对项目计划制定的过程实际上是对项目熟悉的一个过程,通过对项目计划的制定,管理人员可以清楚项目内容,明白项目实施过程中需要注意的要素和重点。一般来讲项目计划的问题主要有两个:一个是项目计划制定的随意性太强,结构不严谨,操作实施性差,不能作为项目计划实施的指导文件;另外一个是项目计划的整体性较差,内部不连贯,不能有效的控制项目的进度,导致项目的失控。
(二)管理意识问题
在企业中,特别是软件开发的企业中,大多数都是只重视软件技术轻视软件管理,项目内部人员大多数都有深厚的技术知识,但是缺乏管理知识,缺乏管理技巧和管理经验。这样从项目整体上来看,管理就会出现不协调,大多数人只会埋头苦干,不懂得合理的分配任务,进行协调工作,导致项目进度落后,项目计划周期加长,最终影响项目的实施。
(三)项目干系人的问题
项目干系人通俗的来讲就是跟项目有关系的人,包括参与项目和受项目影响的人,具体来讲包括项目策划人、项目组成员、项目配合人员、顾客、消费者和供应商[2]。项目干系人的期望和需求在项目的制定过程中和项目目标实现过程中都是非常重要的,因为不同干系人的期望和需求也是不一样的,他会要求项目的制定和实施过程中尽量靠近自己的期望和需求,这些人的期望和需求有时候会相差很大,这样在制定和实施项目时要平衡这些人的期望和需求是相当困难的。如果项目所有干系人没有良好的沟通,则可能造成工期的延长,成本的增加,甚至导致项目失败。
(四)项目团队内分工协调的问题
项目从开始制定到最后项目目标的实现,这一过程包括了很多的阶段,各个阶段的不同角色和同一阶段的不同角色的任务是不一样的,项目经理分配任务时有时考虑的不全面就会出现一些问题,例如分工任务不明确,会导致人员相互推卸责任;即使有时分工很明确,但是员工之间没有协作只顾个人的工作,不考虑项目整体。
(五)沟通意识的问题
项目的沟通管理主要是为了项目目标的实现所进行的信息交流,这里主要包括上级与下级之间的信息交流和员工内部的工作信息的交流,这些信息的交流是必须的,也是确保项目良好实施的关键,但是在实际的生活中,由于人的性格千差万别,会导致人与人之间的沟通不是那么的容易。如果不能进行良好的信息沟通,就会造成信息的不畅,从而加大项目失败的风险[3]。
(六)项目风险管理意识问题
项目风险管理是为了实现项目既定的目标,所进行的对项目生命周期内的风险因素的估计以及所造成危害的估计。进行项目风险管理是为了更好更有效的实现项目的目标。就目前来看,风险管理意识问题主要有两种情况:一个是风险分析不全面,项目管理人员在进行项目分析时,分析的不全面,导致风险的漏析,给项目造成损失;另外一个就是项目管理人员不重视项目风险管理,没有认识到项目风险管理的重要性,对风险估计随便应付,随便写上一些风险防治对策[4]。
(七)项目收尾问题
项目收尾中一项很重要的工作就是项目经验总结,项目经验是项目完成后,项目管理人员和技术人员根据实际的经验教训所写的报告,这些报告包括项目实施中的好的建议、针对某个问题该怎样解决以及实施中容易出错的地方。现实中项目收尾的问题主要是不重视项目收尾工作,或者是不愿意花费人力物力来进行项目收尾工作,只是应付了事。
三、加强软件项目的管理的建议与对策
(一)制定相符的项目计划
制定项目计划不是要求写出一份好看的资料或者是计划书,而是你要根据实际的项目情况制定一个符合项目的计划,这个计划要有针对性,尽可能的考虑全面。制定好的项目计划要有实用性,能够用来指导工作,制定项目计划时要考虑整体情况和内部的连贯性,项目计划要尽量的详细,控制力度尽量大,制定项目计划是一定要考虑到项目的整体成本,结合实际情况尽量降低项目成本,作出一份详尽合理与项目相符的计划。
(二)合理分配项目任务
项目经理将项目工作范围进行分解时应该使用WBS(工作分解结构),这样可以有效的防治工作范围的漏分解,为了防治项目分解后的任务无法有效的分配,可以采用资源负荷直方图,采用资源负荷直方图可以保证工作任务达到合理的负载均衡。技术人员在担任管理人员之前,应该好好学习项目管理的基本知识,特别是人员管理和沟通管理,并在管理工作中不断提高自己的管理水平,积累项目管理经验,增强项目管理意识
(三)项目成员相互协调,相互配合
项目经理将工作任务完全分解后,将工作责任合理的分配给工作人员和团体成员,同时应该强调员工之间进行相互的配合,完成不同分工和环节进工作的协调。项目生命周期阶段包含很多阶段,但是不同阶段之间是相互联系的,要注意上下阶段之间的衔接,做好上下阶段之间信息的沟通。通过相互之间的协调,确保项目工作的完成。
(四)加强沟通意识
加强沟通意识就是加强感觉和态度的沟通。在沟通时应该注意下面几种情况:一是要清楚沟通的内容和对象;二是不能沉湎与沟通本身,要清楚沟通的目的;三是要遵守一定的规则,沟通要注意时间和回合的限制,可能第一次沟通不顺利,但要给对方时间耐心听完对方的话,针对核心的问题,做出解决。项目中的关系人一定要加强沟通,保证内部人员之间的沟通,确保信息畅通,确保项目的完成。
(五)加强风险管理意识
项目经理要系统的学习项目管理知识,积累项目管理经验,掌握项目风险管理的必备知识,完全分解项目计划,找出里面的风险点,针对风险点做出风险管理计划,然后对风险计划进行审核,对风险对策进行评估。风险管理意识一定要加强,这样可以降低项目中的突发事件,以及风险的危害程度。
(六)重视项目管理经验总结
工作经验的总结对于项目的管理工作相当重要,项目工作经验的总结可以为下一个项目的实施提供良好的项目的指导,在项目的实施工程中少走弯路,项目经理应该切实可靠的进行项目总结,在制度上鼓励和加强项目经验总结工作,使得项目经验总结及时并且具有指导意义而不是敷衍了事,为以后的项目人员更好地工作提供一个极好的资源和依据。
四、结论
在软件项目管理的过程中,只有实施规范化管理,才能更有效地进行项目管理,提高项目成功的概率。目前,由于软件项目管理实施的时间不长、经验不足,我们只有不断从实践中积累经验,进一步完善软件项目管理的理论体系,将软件项目管理更有效地应用到软件开发的实践中。
参考文献:
[1]王远,王健.计算机项目管理[M].武汉:武汉大学出版社,2009,8
(1)软件开发技术飞速发展,新方法、新技术、新工具、新平台不断出现,给软件工程教学带来了诸多问题:课时不变,教学内容偏多,教材的更新跟不上技术的发展。
(2)教学过程仍然以教师“教”为中心,在教师的指导下完成课程的相关实验及课程设计的学习。软件工程课程可操作性差、理论多、内容抽象、难理解,很难充分调动学生学习的积极性和自主性,导致理论与实践脱节。
(3)学习软件工程的学生几乎都没有软件开发的经验,对于管理学的知识更是不知所然,加上有的教师也没有完整项目软件开发的经验,要让学生做到“学中做,做中学”,真的是难上加难。
二、三元整合的教学思维
软件工程课程主要介绍了软件问题定义、项目计划、需求分析、设计、维护等软件开发过程中的各种问题。通过市场调查、观摩学习、讲座、校企合作,发现软件行业在软件设计、软件维护、软件测试三方面就业岗位多,人才缺口大。结合学生学习的特点,参照国家相关职业标准,确定软件工程[5],培养人才方向岗位定位在软件设计、软件测试、软件维护三个岗位,因此教学中将重点放在软件设计、软件维护、软件测试上。文中以“学生信息管理系统”项目为载体,将项目开发过程中用到的各项工作技能按照工作过程分解任务,项目分解成一个个的子案例,以任务分解的方式完成技能的案例教学,体现工作过程的完整性。三个岗位的工作任务、职业能力、知识结构之间的关系。由上表知,整个教学过程是一个循序渐进的过程,每个岗位有明确的工作任务,每个工作任务对应不同的职业能力,知识的表现形式也就不同。为了与岗位工作任务相适应,在项目教学中培养学生的职业能力,使学生做到“学中做,做中学”;在设计教学项目案例上做到项目难度适中、易理解、易操作、易掌握、有针对性和代表性,并且包含上述三个工作岗位的工作任务与职业能力相关知识,最终达到项目驱动,任务分解的教学目的,同时学生也能进一步理解工作过程中需要掌握的技能。
三、三元整合在教学中的应用
案例教学、项目驱动、任务分解的教学方法有各自特点,如何将这些教学方法整合在一个具体的项目中,并发挥其优点是教学中要重点解决的问题。将“学生信息管理系统”项目进行分解,每一个子项目对应一个具体的工作任务。对每个子项目按以下的教学步骤进行教学:
1.项目分解,确定每一个子项目的工作任务
根据项目完成的时间限制、要求,将项目分解成子项目,不同的子项目对应不同的工作任务。如“学生信息管理系统”可分解为“学生管理、课程管理、成绩管理、信息查询”四个子项目,且每个子项目对应不同的工作任务。把工作任务独立、花费时间少的称为小任务;反之,工作任务需要多个教学单元经过综合实践才能完成的,称为大任务。在教学中又可将大任务分解为小任务,通过分析总结,最终使学生能掌握自上而下逐步求精分析问题解决问题的能力。
2.理论讲解,案例演示
教师结合案例演示,讲解子项目中对应的工作任务,让学生真实理解工作过程中这个子项目到底要做些什么,怎么做,哪些知识是已知的,哪些知识是未知的,提出问题,充分调动学生的好奇心与求知欲。
3.学生分组讨论,协同合作
根据学生兴趣、成绩、实践动手能力将学生分成4到5个人为一个小组。小组成员共同讨论完成项目的开发。工作任务完成过程中,让学生轮换担当不同的角色,使其能体验不同角色在不同阶段的职责与任务,既培养学生团队协作能力,又发挥了各自特长,调动了学生的积极性,从而提高了学习兴趣。
4.学生各自完成工作任务
通过项目分工,团队中的每个成员都有明确的任务,结合教师的案例演示进行工作任务的模拟练习,让学生对工作任务的完成有了真正的认识,从而培养学生的职业能力。
5.总结工作任务成果,评审验收
首先,学生对自己完成的子项目进行展示、总结,哪些完成,哪些没有完成,原因在什么地方;其次,教师对每个团队项目完成的情况进行比较,并将各团队工作成果与案例演示中的工作成果进行比较,总结规律和技巧,使团队中的每个学生知道自己在做什么,做得如何,哪些地方需要改进,哪些知识需要完善,自己发挥了什么作用,将实践上升到理论高度,进而培养学生的职业能力。
6.拓展第二课堂,培养学生的研究、创新性学习能力
它需要管理人员熟练运用知识、技能、工具和专业技术对项目进行科学有效的管理,以便满足(甚至超过)项目利益关系者对项目的需求和期望。良好的项目管理可以缩短项目周期,降低项目成本,优化资源配置,使研发的系统发挥最大作用。
1.2预警信息系统软件具备项目管理的特点
预警信息系统是战场情报、预警探测装备、通信系统的有机集成,软件、硬件设备规模较大,其软件体系结构非常复杂,由多个子系统或配置项组成,可运行在有线、无线、短波、超短波等多种复杂的网络通信环境。软件系统对预警信息系统的可用性影响较大,因此,为了确保预警信息系统的软件质量,必须通过不断改进并提高软件过程和项目管理水平,提高软件生产力能力和水平[2]。预警信息系统软件开发属于项目的范畴,具有明显的项目特征,包括一些独特的、复杂的并且互相关联的活动,而这些活动有着一个明确目标或者目的[3],同时由于软件研发所涉及的技术复杂度高、知识面广,计算机技术的日新月异使得方案的设计必须要有前瞻性,留有升级换代的余地,要求在整个项目生命周期中,利用项目管理的理论和技术,在有限时间内,调配有限的资源,组织各方面人员,分阶段地完成这些任务,最终完成整个系统开发。
1.3实施项目管理是增强企业核心竞争力的需要
国内有众多从事预警信息系统研发的科研院所,行业竞争比较激烈。只有在软件研发中实施有效的项目管理,才能在同等资源条件下,在系统论证、研制、验收、运行等过程中正确有效地开展工作,提高军用软件质量,缩短开发周期及部署时间,提高综合保障能力,才能最大限度地提高客户满意度,从而树立行业形象,提升企业的核心竞争力。
2软件项目管理过程
结合多年来从事预警信息系统软件项目管理的经验,将软件项目管理分为4个阶段:启动、策划、执行、结项。各阶段项目管理过程活动如图1所示。图1软件项目管理过程软件项目管理从项目启动开始,首先要求对软件项目作开发策划。按照标准过程剪裁得到项目的已定义过程,制定出软件开发计划。在项目执行过程中,对项目计划进行分解细化,制定详细的可跟踪和可测量的实施计划,完成项目实施策划。以项目计划为依据,实施项目监控。对项目实际进展情况提供适当的可视性以监控项目按计划实施,当项目进展与计划有重大偏离时及时采取有效应对措施,直到项目结束。
2.1项目启动
软件项目组在接收到软件研制任务后,项目经理主持召开项目启动会议,明确任务特征、周期、目标等项目基本信息,明确项目组人员职责,包括技术负责人,软件开发人员、测试人员、软件质量保证员、软件配置管理员、计划员等;建立软件工作环境,并根据上述信息建立项目管理软件平台环境;软件配置管理员建立并初始化项目配置库,正式启动项目。
2.2项目策划
项目正式启动后,项目经理根据任务要求,分析项目基本特征信息,包括软件规模、项目规模、项目周期、资源充分性、需求稳定性、新研程度、安全等级以及用户的特殊需求,确定软件开发阶段,形成适合项目实际情况的软件开发过程,确定适合本项目的生命周期。确定了项目过程,项目经理将运用范围管理、进度管理、成本管理等知识,完成顶层工作分解结构(WorkBreakdownStructure,WBS),以确定项目范围,并在此基础上估计项目的软件规模、工作量、进度和成本。软件系统工作量的估算,是依据软件的开发内容、开发人员、开发工具等因素,预测需求分析、软件设计、编码、测试等整个研发过程所花费的时间、费用及工作量[4]。某预警信息处理系统的顶层WBS分解图如图2所示。图2某预警信息系统顶层WBS分解图在顶层WBS分解的基础上,项目经理和技术负责人结合项目资源,制定并形成《项目软件开发计划》《项目评审计划》《风险管理计划》,作为项目软件开发和跟踪的依据。软件开发计划中要明确项目的里程碑、基线。基于部队项目的特点,项目经理应负责建立企业和军方用户沟通的桥梁,协商项目计划并取得一致。在此阶段,项目组根据企业的相关标准制定《软件质量管理计划》《软件配置管理计划》,还应根据项目的特点和技术要求,制定《项目培训计划》等。项目经理根据这一阶段生成的数据及时维护项目管理工具平台,以便在后续阶段实时跟踪和调整项目的执行。
2.3项目执行
项目经理组织相关领域技术专家、军方代表对《软件开发计划》等在项目策划阶段形成的文档评审并通过后,项目将进入执行阶段。这一阶段,项目经理配合技术负责人进行阶段活动WBS分解,估计模块规模、任务工作量,建立项目阶段实施计划和计划网络图,任务分配表、计划网络图直接在项目管理工具平台上用甘特图实现,并使项目的所有成员对该甘特图达成共识,进行任务协商与分配,形成有效的项目沟通。项目正式实施后,确保所有的任务按计划执行,以及收集项目执行的相关信息是项目经理的职责[5]。项目开发人员应及时将工作日志、任务报告、工作进展、问题报告等信息录入项目管理工具平台。项目经理借助该平台信息,分析项目的实际进展状态,定期组织项目例会,对实时状态进行讨论,分析执行过程中存在的问题和风险,提出解决问题的方法,必要时可同军方代表协商,进行计划变更,对处理措施要跟踪直至问题解决。质量管理员定期对项目进行质量审计,配置管理员应及时维护软件配置库,他们必须定期(月度/阶段)向项目经理和技术负责人提交质量总结报告和配置管理报告。项目经理应根据项目开发计划的要求,在项目进展的关键阶段和里程碑阶段进行项目管理评审。这是项目监控的主要机制之一。评审内容主要包括计划执行情况、存在问题、风险、产品工作状态等,项目评审可以分为多种层次,有项目组级、部门级、里程碑级等,其中里程碑级属于项目关键点,属于正式评审,其评审目的是明确项目的一个重要阶段是否已完成,是否具备转阶段的条件,必须有军方代表参加。在此阶段,项目组应完成项目的管理文档和软件设计、软件测试等软件工程化文档,提交项目的阶段评审报告。项目执行过程中涉及的关键活动如图3所示。
2.4项目结项
在项目结束时,配合系统集成组完成《软件研制总结报告》《质量总结报告》和《配置管理总结报告》等,描述软件的研制过程、关键技术和解决的办法,并总结功能性能指标情况,同时还应对软件的质量保证及配置管理情况作总结说明。这些文档作为整个系统组成部分参加产品评审,必要时可以单独对软件项目进行项目评审。评审通过后,完成项目管理平台环境的更改,固化配置管理库,软件系统即可交付给部队试用。
3软件项目管理中的风险管理
项目风险是指项目中可能发生的潜在问题以及它们如何妨碍项目的成功。风险可能存在于软件项目的各个阶段。随着项目的不断推进,风险的识别、分析应对、监控不断形成闭环且贯穿项目整个周期[5]。首先,在项目启动阶段,项目经理应根据具体情况,对执行过程中可能存在的风险,包括成本风险、技术风险、管理风险、人员风险等,进行风险识别、分析和评估。风险管理的有效方法是建立项目风险识别与跟踪表,运用已定义的风险参数,分析并计算各项风险的风险系数,对风险进行排序,评估风险出现的概率和风险可能影响,针对每个高优先级风险制定风险处理措施,并记录到表中的对应部分,如表1所示。在项目执行过程中,项目经理应跟踪有关软件项目成本、资源、进度和技术方面的风险,根据事先的风险缓解措施,采取适当的处理方式来规避、转移或减缓风险;还应及时识别可能的新风险,并制定缓解措施,及时维护项目风险识别与跟踪表。在预警信息系统软件项目管理和开发中,由于其对质量、性能、功能等的特殊要求,如果能提前重视风险,并且有所防范,进行风险管理,就可以最大限度地减少风险的发生,确保项目按时、按质顺利完成。
4软件项目管理是实现CMM的基础
能力成熟度集成模型(CapabilityMaturityModelIntegration,CMMI)采用了质量管理体系的过程管理思想,将软件开发视为过程,对软件开发和维护过程进行监控和研究,使其更加科学化、标准化,使企业能够更好地实现商业目标。从集成产品与过程发展的角度出发,建立起包含健全系统开发原则的软件过程改进模型[6]是衡量软件企业软件开发管理水平的重要参考因素和软件过程改进事实上的工业标准,也是企业通过CMMI认证,走向国际市场的必有之路。CMMI由5个成熟度等级组成,即初始级、可重复级、已定义级、定量管理级和优化级,软件项目管理过程4个阶段覆盖了CMMI模型2级和3级中的关键实践,如在项目策划阶段,覆盖了2级模型中需求管理和项目计划;项目执行阶段覆盖了2级模型中全部5个关键实践,如针对具体软件项目,裁剪标准过程并进行管理,即达到已定义级标准。在此基础上,使软件过程和产品质量得到定量的了解和控制,以实现对软件过程管理进行持续的过程改进,则可达到CMMI4级或4级成熟度。
5软件项目管理平台
软件开发模式趋向于规范化生产,需要协作紧密的团队,强调质量、工期、成本的受控。在客观上要求能够将计划与控制、软件过程管理、实时项目状态度量和统计、配置管理、需求管理和缺陷跟踪等功能集成为一个项目管理平台。本研究选择了中科方德有限公司的QONE软件过程管理平台。该平台围绕项目生命周期的活动对软件开发和生产的过程进行管理,包括软件需求管理、项目管理、过程管理、过程与产品度量分析和质量管理5个部分。对于项目管理者,能够在平台上掌握团队进度、开发者的现状以及资源配置状况等数据,尽早发现和解决项目中存在的问题,规避项目风险,从而帮助其灵活配置人力物力,确保开发按时、按目标完成。而对团队成员来说,能在平台上了解开发的最新进度、最新的开发和测试结果,按平台规定的工作流程协同工作。
6结束语
通过在预警信息系统软件研发中运用项目管理技术,对软件开发整个生命周期进行全方位的管理,使软件项目达到设计规范、过程受控、风险受控、质量可靠,提高了军用软件的质量,提高了企业的核心竞争力。
作者:初剑 单位:南京电子技术研究所
参考文献
[1][美]ProjectManagementInstitute.项目管理知识体系指南[M].许江林等,译.北京:电子工业出版社,2013:7-10.
[2]张月红.探索软件开发过程的CMM最佳实现方法[J].软件工程师,2011(05):36-39.
[3]李连,崔菲菲,陶开军.基于项目管理理论的军械信息系统开发研究[J].项目管理技术,2011(03):84-87.
2CDIO教学法在“面向对象软件工程”理论及其课程项目教学设计中的应用
2.1总体设计
目前,“面向对象软件工程”课程教学安排共计54学时,我们将理论教学内容与课程项目实践教学内容结合起来进行设计。在整个教学周期内,按照软件生命周期并结合CDIO、案例与项目驱动的教学法,设计理论课程案例教学过程中的相关活动,配合对应的课程项目实施活动加以有效组织与实践,在整个教学环节结合项目开发活动的进展与深入,要求学生记录自己团队活动中的相关内容,按照我们事先制定的规范撰写并维护项目文档。具体解决方案是:第一,正式课程教学的1~6周,设计项目描述和需求获取与分析、系统设计中的具体活动,这些活动包括分别标识实体对象、边界对象和控制对象;将用例映射成对象;建立对象之间的交互;标识关联、聚集和属性;对单一对象状态依赖行为的建模;对对象之间的继承关系建模;对本阶段的分析对象模型进行评审;基于分析对象模型标识出设计目标,进行子系统分解和标识;将子系统映射到系统构件元素上;标识并存储持久性数据;设计访问控制策略;设计全局控制流;标识服务;标识边界条件;对系统设计进行评审。第二,7~14周,设计对象设计与实现中的活动,这些活动包括学习软件复用和设计模式,并在详细设计中加以应用;对对象之间的接口进行说明,涉及标识遗漏的属性和操作、说明接口类型、签名与可见性,说明接口中相关方法的前置条件、后置条件和不变式等。第三,15~16周,设计测试阶段中的活动。第四,17周,进行相关的总结活动,包括项目文档的静态检查和验收,以及课程项目的动态演示与现场回答问题。
2.2设计课程项目
在设计课程项目中,将考虑提供给学生一个贯穿整个学期的课程教学项目描述,为此我们将选择开发一个基于Web的应用系统。这类系统的实例很多,可以由教师设定或者由学生自选,如教师可根据教学中的需要设定一类基于Web的师生交流系统,以方便实现教师和学生之间关于做项目时的沟通。学生也可以根据个人兴趣选择网游软件开发,或者选择基于Web的电子商务网站系统等。总之,相关项目的设计需要教师事先准备好项目描述或问题定义。为了开发这类基于Web的应用系统,教师需要指定项目使用的环境和工具,主要包括两类:一类是开发环境与工具、数据库管理系统、界面开发工具等,另一类是项目管理工具。这一阶段设计的活动属于CDIO中的构思阶段。
2.3设计理论课程教学过程
首先,在理论课程教学内容设计中,我们主要依据的是第3版的SWEBOK标准(2013),在CDIO工程教育模式的指导下,完成相关知识体系教学设计。在SWEBOK2013版中的17个知识点中(其中2个为候补知识点),我们选择了其中10个知识点,并将这些知识点融合到“面向对象软件工程”的理论课程教学中。这些知识点可有效地体现着CDIO的工程教育理念,如软件需求体现了CDIO的构思,软件设计体现了CDIO的设计,软件构造和软件测试体现了CDIO的实现,软件维护体现了CDIO的运作等。其次,在此基础上设计理论教学过程。一方面,以案例/项目驱动教学方法为基础,“面向对象软件工程”课程中相关知识体系及理论学习,要求学生在学习和思考中掌握“面向对象软件工程”的相关知识、术语、理论和技术基础,并通过团队方式共同学习、讨论和完成作业,并以团队形式参加全体同学的各种讨论活动;另一方面,要求学生围绕着项目描述或者待解决的问题描述,完成团队组建、工具选择、项目计划制定,并开始执行需求工程中的需求获取和需求分析活动,以及在此基础上的系统设计活动,这些阶段的工作结论需要学生加以记录,特别是需求获取与分析的结论和总体设计结论更要以文档形式加以记录。第三,结合案例/项目驱动教学,进一步完成“面向对象软件工程”理论课程。具体做法是一方面引入小型案例,另一方面引入面向应用领域的实际项目,并在项目描述、需求获取和分析活动、系统设计和对象设计中,将该项目的具体情景或者可行的系统设计解决方案引入课堂,在课堂上组织学生参与讨论、分析这些基于场景的案例,将需求阶段和系统设计阶段中涉及的重点知识、术语、过程与步骤等重点和难点融入到案例中来讲解和学习,以便于学生真正理解相关的理论教学内容。这一阶段的活动设计对应着CDIO中的构思阶段。
2.4基于项目驱动的课程实验教学设计
解决软件项目中的问题或实现软件项目中的任务,要求学生以团队方式进行活动,并在整个活动中的各个阶段贯彻CDIO工程教育的理念,即让学生能够对软件项目中的任务完成进行构思,获取与软件项目相对应的软件系统的功能性需求、非功能性需求和系统约束,并以文档方式进行描述;接着,通过设计手段来完成项目任务,用系统来对应将来要完成的任务,并在该系统设计中落实项目的各项要求,这需要通过对系统的总体设计、详细设计等环节来达到,并将设计结论记录在软件设计文档中;在前面构思和设计的基础上,选择合适的程序设计语言、数据库管理系统等基础设施,用编程的方式实现该系统,并完成相应的测试任务,注意在实现过程中,同样要将相关结论以文档的形式加以记录,以备维护之需;在系统实现后,通过部署和运行等方式,让该软件系统(可以看成是本项目的解决方案)呈现出价值。在这一完整过程中,让学生通过项目驱动下的团队活动过程,体验到软件产品从构思、设计、实现到运行(包括维护)所经历的全生命周期过程。这一阶段的活动设计对应着CDIO中的设计、实现阶段。
2.5项目总结与项目验收过程教学设计
项目总结过程的教学设计是以团队为单位进行自我总结并撰写项目总结报告,以个人为单位撰写学习心得,教师主要验收和检查相应的项目总结报告和学生学习心得。项目验收过程的核心是开展两阶段验收活动,即在学期的15~18周中,选择第15周进行一次中期检查,第18周再进行一次期终项目验收。全体主讲教师和辅导教师组成一个答辩小组(一般为4人),他们事先要做好各项准备工作,包括现场点名以确认学生的有效身份并结合点名宣布学生团队的答辩顺序,保证答辩的有效性和合理性;由答辩小组组长宣布评分标准细节和学生是否能够通过本次验收活动的标准。
3实践活动
在“面向对象软件工程”课程教学活动中,共有45位学生(组成了15个团队)全程参与了我们的教学改革过程,现在仅就验收答辩环节进行说明。整个答辩所耗时间共计7个多小时;答辩老师根据实际情况(最低底线是学生必须完成项目要求的最基本功能),充分肯定了学生到目前为止所完成的开发成果,同时建议相关学生利用即将到来的假期进一步完成或完善该应用软件系统的开发,及时修改设计上的缺陷。在本次教改实验过程中,我们充分认识到这一教学过程对教师也提出了更高的要求。教师不仅仅是需要在理论基础教学上过硬,还需要具备软件项目开发的经验,这样才能够做到既能站在理论的高度指导学生分析和解决问题,同时也能给出实实在在的课程项目开发活动中的技术指导。