前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇软件工程与项目管理范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:基本概念;计算机软件;工程项目管理;问题;对策
中图分类号:TP3 文献标识码:A 文章编号:1007-9599 (2012) 15-0000-02
1 计算机软件和工程项目管理的基本概念
1.1 计算机软件的基本概念
计算机软件的英文名是computer software,计算机软件是指计算机系统中的程序及其文档,程序是计算机任务的处理对象和处理规则的描述,文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。计算机软件的分类有:(1)总述;(2)系统软件。系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作;(3)应用软件。应用软件是为了某种特定的用途而被开发的软件。
1.2 工程项目管理的基本概念
工程项目管理是指从事工程项目刮泥的企业受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。工程项目管理企业不直接与该工程项目的总承包企业或者是勘察、设计、供货、施工等企业签订合同,但可以按合同约定,协助业主与工程项目的总承包或勘察、设计、供货、施工等企业签订合同,并受业主委托监督合同的履行。
(1)组织管理人员进行项目计划。在计算机软件工程项目中,人员的管理是贯穿于整个工程项目开发过程始终的一项工作,从某种意义上说,人员的组织与管理是影响软件工程项目能否成功的关键因素。一方面,要根据工程项目的工作量以及涉及的专业知识对人员进行科学的配置,组成一个高效的开发小组;另一方面,小组内的人员要进行分工合作和密切配合,对工程项目的实验范围进行确定,对项目实施过程中的风险进行正确的评估,同时制定科学的人力资源计划以及成本控制方案,同时对整个项目的进度进行有效的组织,确保工程项目的顺利进行。(2)软件质量和配置管理。软件质量管理是在总体管理功能中决定着质量方针与责任的所有活动,通过保证手段在质量体系范围中得以实施,主要有质量计划编制、项目质量保证和项目质量控制等过程。项目质量保证就是定期对项目总体绩效进行评估,考察工程项目是否达到质量标准。项目质量控制是从总体上监测项目的结果,还要对不合格的找出解决的方法。软件配置管理是记录软件产品的演变过程,进而保证开发者在软件生命周期的各个阶段能够获得精确的产品配置。(3)风险分析及管理。风险管理包括风险的识别与评估,并且根据评估结果采取适当的解决措施,对计算机软件工程项目的风险进行有效的预测与管理,能够避免或者是降低风险产生的几率,最大限度的减少由于风险对项目所造成的损失,也能够有效的保证项目相关利益主体的权益不受影响。
2 计算机软件工程项目管理中存在的问题
2.1 计算机软件工程项目管理中存在管理团队的协作的问题
目前,我国是处于一个信息化的时代,因此,很多工作都需要团队一起合作完成的,就如计算机软件工程项目管理的工作,更是需要团队的力量,大家一起合作完成的。但是目前,我国计算机软件工程项目管理的团队合作和沟通都存在着一些问题,如下:
(1)计算机软件工程项目管理的团队中存在分工不清的问题。计算机软件工程项目管理中如果团队之间的分工不清楚,那么就会导致了时间已经到了,工作却还没有完成,团队之间就会相互推卸责任的现象出现。(2)计算机软件工程项目管理中团队的不合作问题。如果做到了第1点团队之间的分工比较清楚了,但是如果团队之间每个人都是各做各的工作,不理会其他人,发现问题了也不和其他人合作,那么就会导致了计算机软件工程项目管理的工作效率不断的下降。
2.2 计算机软件工程项目管理中存在需求分析和实际中的业务存在差距的问题
由于,计算机软件工程项目管理在需求的工作中,没有对实际生活中需求的实体和实际活动要求,以及实际的数据进行有效的调查,这项工作很多计算机软件工程项目管理的工作人员都觉得没有必要对实际的需求实体和实际活动要求,以及实际的数据进行调查,因此,导致了计算机软件工程项目管理最后的工作中出现设计完整的产品和实际的业务有很大的差误。
2.3 计算机软件工程项目管理中存在风险管理的问题
众所周知,如今的社会不论做什么样的项目都会存在着一定的风险,如果风险管理没有做好,那么发生风险的话,就会给企业带来严重的损失,由此可知,风险管理这一工作对企业来说是非常重要的。但是在计算机软件工程项目管理中,很多工作人员都不知道风险管理的重要性,对风险管理的工作都只是敷衍了事,对风险管理的内容没有充分的掌握,最后变导致了一旦发生风险的话,企业就会遭受巨大的损失。
3 计算机软件工程项目管理的对策
3.1 计算机软件工程项目管理的对策有对风险管理和工作进度进行有效的管理
(1)建立一个完善的风险管理制度。计算机软件工程项目管理的工作人员,应对风险管理的知识、风险识别的知识、量化的方法,以及风险控制的方法进行有效的掌握和认知,为计算机软件工程项目管理做好有效的风险管理报告,并且做好有效的风险预防工作。(2)定期的对计算机软件工程项目管理进行风险控制和识别。在一个完整的项目中,不是只做一次风险管理工作就可以的,因为,在整个计算机软件工程项目管理的过程中,随时都可能出现风险,因此,需要定期的对计算机软件工程项目管理进行风险管理工作。对于风险处理的方法有以下几点:减缓、规避、转移等处理方法。(3)不断的加强计算机软件工程项目管理工作的进度。首先,制定好一个完整的计算机软件工程项目管理的工作表,有效的监督计算机软件工程项目管理工作的进度,以及严格的、有效的、合理的控制好计算机软件工程项目管理所有工作的任务状态。
3.2 计算机软件工程项目管理的对策有建立完善的管理体系
(1)建立一个完善的计算机软件工程项目管理的人才管理体系。计算机软件工程项目管理的体系要先对人才进行有效的管理,建立一个完善的、合理的人力资源管理体系。(2)不断的加强计算机软件工程项目管理的知识学习。要不断给计算机软件工程项目管理的工作人员就进行有效的培训计算机软件工程项目管理的知识学习,有效的将经验和实践,以及知识结合在一起,不断的提高计算软件工程项目管理工作人员的管理水平和素质。(3)严格执行计算机软件工程项目管理的奖惩制度。严格的执行计算机软件工程项目管理的奖惩制度,才能激发工作人员的积极性和主动性,为企业带来更好的效益。
3.3 计算机软件工程项目管理的对策有建立合作的团队
(1)建立完善的、有效的沟通制度。采取不同的、多种的、有效的沟通方法,不断的增强计算机软件工程项目管理工作团队的沟通意识,让团队达到合作的目的。(2)分工清楚。对计算机软件工程项目管理的工作进行合理的、有效的、清楚的分工给每一个工作人员,让他们认识到自己的职责,做好每一项工作。(3)不断增强团队的积极性。不断的增强计算机软件工程项目管理团队每个工作人员的积极性,才能有效的激发工作人员的动力,激发团队的合作能力,最终才能把计算机软件工程项目管理工作做的更好,并且有效的给企业带来效益的提高。
4 总结
计算机软件工程项目管理是一项系统的、复杂的工作,其根本的目标在于保证软件工程项目能够在计划的进度、成本以及质量的要求下,顺利的完成并且交付使用。在当前的计算机软件企业中,软件工程项目的管理效率对于企业的发展有着重要的影响,只有保证软件项目管理的科学、有效,才能够保证软件工程项目的成功,进而实现企业的持续发展。
参考文献:
[1]邵国红.探析计算机软件工程项目管理[J].硅谷,2011,2
[2]林茂光,王建宇,吴忠平.工程项目管理中的网络计划技术应用[J].国外建材科技,2007,6
[3]郝美英.计算机软件工程项目管理之方略[J].城市建设理论研究(电子版),2011,20
关键词: BIM模型;工程项目信息管理模式;数据共享;造价模式
一、BIM和BIM相关软件简介
目前,工程建设行业正在运用的BIM和BIM相关软件约14种,这些软件基本上可以划分为两个大类:
第一大类:创建BIM模型的软件,包括BIM核心建模软件、BIM方案设计软件以及和BIM接口的几何造型软件;
第二大类:利用BIM模型的软件,除第一大类以外的其他软件。
不同类型的BIM软件可以根据专业和项目阶段做如下区分:
1.建筑:包括BIM建筑模型创建、几何造型、可视化、BIM方案设计等
2.结构:包括BIM结构建模、结构分析、深化设计等
3.机电:包括BIM机电建模、机电分析等
4.施工:包括碰撞检查、4D模拟、施工进度和质量控制等
5.其他:包括绿色设计、模型检查、造价管理等
6.运营管理FM(Facility Management)
7.数据管理PDM
对于一个项目或企业BIM核心建模软件技术路线的确定,可以考虑如下基本原则:
①民用建筑用Autodesk Revit
②工厂设计和基础设施用Bentley
③单专业建筑事务所选择ArchiCAD、Revit、Bentley都有可能成功
④项目完全异形、预算比较充裕的可以选择Digital Project或CATIA
当然,除了上面介绍的情况以外,业主和其他项目成员的要求也是在确定BIM技术路线时需要考虑的重要因素。
二、基于BIM及其相关软件技术的工程项目信息管理模式
基于BIM技术的信息管理模式极大地打破现有工程项目管理中的屏障,集成工程项目各阶段、各关键指标、各组织、各专业、各项目的信息融合,形成更加广泛的集成,协调工程项目系统目标、外部资源、内部资源的信息流网络。
基于BIM及其相关技术的工程项目信息管理模式在信息集成模型中的作用体现在如下几个方面:
(一)BIM中央数据库是信息流的枢纽,是沟通平台和存储中心。BIM中央数据库连接不同工程对象数据、过程和资源,是一个包含丰富数据、面向对象的、具有智能化和参数化特点的建筑设施的数字化表示,支持项目生命期中动态的信息创建、共享、更新和管理,保持信息的清晰度、一致性。
(二)通过网络交互平台,各阶段、各关键指标、各组织、各专业、各项目当前的供应信息范围内都可以和其他节点进行信息访问与共享需求。信息的使用性可表现为一对一电子提交、小规模封闭群体之间数据交换和多对多集成和高水平协同作业,保持信息的及时性、交互性。
(三)随着工程项目的深入和进展,BIM信息模型逐步深化、逐步细化,不断更新、修正和补充,使得项目全生命期的信息得到有效的组织和追踪。信息不仅要管理好当时的用途服务,还要管理好其在整个项目生命周期内重复利用的用途,保持信息的完整性。
(四)信息集成管理降低了信息不对称成本,提高项目收益。提高信息对称都能够增加项目收益,但同时需要支付更多的成本。信息串联共享后,降低信息不对称的成本减少,此时信息不对称的适度空间扩大许多,由此,取得同样的信息对称度,支付成本减少,体现信息对工程项目服务的增值性。
(五)通过信息集成管理对项目目标主动控制,动态优化。基于BIM技术的信息集成管理可以进行设计中各专业协调、管线碰撞检查、节能计算、能耗模拟、可持续分析、施工方案模拟、脚手架支撑体系验算模拟、进度控制、成本控制、安全管理等,对工程项目全过程实施动态优化,主动控制,进而提高工程设计、施工和维护管理的质量、工作效率和科学管理水平,体现信息对工程项目服务的动态优化性。
三、BIM在造价管理中的应用价值
就在提升工程造价水平,提高工程造价效率,实现工程造价乃至整个工程生命周期信息化的过程而言,BIM都具有无可比拟的优势。
(一)BIM数据库的时效性
BIM的技术核心是一个由计算机三维模型所形成的数据库,这些数据库信息在建筑全寿命过程中是动态变化的,随着工程施工及市场变化,相关责任人员会调整BIM数据,所有参与者均可共享更新后的数据。数据信息包括任意构件的工程量,任意构成要素的市场价格信息,某部分工作的设计变更,变更引起的数据变化等。在项目全寿命过程中,可将项目从投资策划、项目设计、工程开工到竣工的全部相关造价数据资料存储在基于BIM系统的后台服务器中。无论是在施工过程中还是工程竣工后,所有的相关数据都可以根据需要进行参数设定,从而得到某一方所需要的相应的工程基础数据。BIM这种富有实效性德共享的数据平台,改善了沟通方式,使拟建项目工程管理人员及后期项目造价人员及时、准确的筛选和调用工程基础数据成为可能。也正是这种时效性,大大提高了造价人员所依赖的造价基础数据的准确性,从而提高了工程造价的管理水平,避免了传统造价模式与市场脱节、二次调价等问题。
(二)BIM形象的资源计划功能
利用BIM模型提供的数据库,有利于项目管理者合理安排资金计划、进度计划等资源计划。具体地说,使用BIM软件快速建立项目的三维模型,利用BIM数据库,赋予模型内各构件时间信息,通过自动化算量功能,计算出实体工程量后,我们就可以对数据模型按照任意时间段,任一分部分项工程系分其工作量,也可以细分某一分部工程所需的时间;进而也可结合BIM数据库中的人工、材料、机械等价格信息,分析任意部位、任何时间段的造价,由此快速地制定项目的进度计划、资金计划等资源计划,合理调配资源,并及时准确掌控工程成本,高效地进行成本分析及进度分析。因此,从项目整体上看,提高了项目的管理水平。
(三)造价数据的积累与共享
在现阶段,造价机构与施工单位完成项目的估价及竣工结算后,相关数据基本以纸质载体或EXCEL、WORD、PDF等载体保存,要么存放在档案柜中,要么放在硬盘里,它们孤立存在,使用不便。有了BIM技术,便可以让工程数据形成带有BIM参数的电子资料,便捷的进行存储,同时可以准确地调用、分析、利于数据共享和借鉴经验。
BIM数据库的建立是基于对历史项目数据及市场信息的积累,有助于施工企业高效利用工作人员根据相关标准、经验及规划资料建立的拟建项目信息模型,快速生成业主方需要的各种进度报表、结算单、资金计划,避免施工单位每月都花大量时间核实这些数据。建立企业自己的BIM数据库、造价指标库,还可以为同类工程提供对比指标,在编制新项目的投标文件时便捷、准确的进行报价,避免企业造价专业人员流动带来的重复劳动和人工费用增加;在项目建设过程中,施工单位也可以利用BIM技术按某时间、某工序、特定区域输出相关工程造价,做到精细化管理。正是BIM这种同一的项目信息存储平台,实现了经验、信息的积累、共享及管理的高效率。
四、结语
只有解决了BIM数据传输及信息分类互用标准问题,才能够真正将整个BIM体系的相关软件、技术统一整合到一起,产生合力,发挥放大效应。
参考文献:
(1)工程项目人员。工程的项目人员一般包括项目负责人、系统分析员、高级与初级程序员、以及资料员等。依据实际软件项目的大小,可能会有一人身兼数职的情况,但职责必须要明确。而不同职责的人员,对其能力与素质的要求也是不同的。例如,项目负责人要有较强的组织能力、准确的判断力以及处理重大事情的决策能力;系统分析员需要具备概括能力,以及分析能力和社交活动能力;程序员则要有相当熟练的编写程序的能力等。
(2)软件质量与配置的管理。软件质量管理在总体管理功能中对质量方针与责任起着决定性的作用,主要包括软件质量计划的编制、软件项目质量保证以及软件项目质量控制等过程。项目的质量保证是指对项目总体绩效进行定期的评估,以此来考察工程项目的质量是否达标。项目的质量控制是从整体上对项目的结果进行监测,同时还要对不合格的地方及时采取改正措施。软件的配置管理是指记录某软件产品的研发过程,以便保证研发者在软件生命周期内的各个阶段都能获取精准的产品配置。软件的配置管理就是一种对软件进行标识组织与控制软件修改的管理技术,在软件的整个研发过程中有着非常重要的作用。
(3)软件项目工程的风险分析与管理。风险分析包括对软件风险的识别、估计、解决以及监督等一系列步骤,使人们能够预测风险并及时的采取遏制风险产生和发展的措施。对软件风险进行分析与管理,实际就是为了降低软件工程项目的损失,从而增加软件工程项目的收益。
2软件工程项目管理中存在的问题
2.1管理团队的协作问题
当今我国正处于信息化时代,任何项目的开发都离不开团队人员的相互协作,只有这样才能够确保工作顺利的进行,尤其是在计算机软件工程项目的研发管理上,更是需要团队成员的协作才能顺利完成。但目前我国软件工程项目管理的团队协作与沟通都存在着一定的问题,例如:计算机软件工程项目管理的团队中人员分工不明确,导致推卸责任和推诿工作的情况常有发生;团队成员之间缺乏合作意识,致使工作效率不高。
2.2需求分析问题
由于软件项目管理在需求分析这项工作中,对于业务需求的实体、数据以及实际的活动要求没有进行调查,这些往往被认为是表面工作,所以导致计算机软件工程项目管理在最后的工作中,出现设计产品与实际业务有很大偏差的现象。
2.3风险管理问题
任何项目的研发都是存在一定风险的,风险一旦发生就会带来一定的损失,因此,项目风险管理就显得至关重要。但有的项目经理并没有正确意识到风险管理在软件工程项目管理中的重要性,对项目风险管理所必需的知识和内容不够了解,致使当风险真的发生时不能及时有效的应对。
2.4进度控制问题
进度控制是指在软件项目的研发过程中,采取各种措施将项目进度控制在进度的总规划内,以此来确保项目总目标的实现。但由于实际过程中种种因素的影响,进度经常无法按期完成,这给项目工程带来了巨大的损失。
3软件工程项目管理的对策
3.1加强团队的沟通协作
首先,要建立完善有效的沟通制度。可以采取不同的、多种有效的沟通方式,逐步加强软件工程项目管理工作的团队沟通意识,提高沟通的有效性。例如通过制度规定,对较特别的信息应该利用多种方式来进行有效的沟通,以便确保信息及时准确的传达到位。其次,团队人员的分工要合理、明确。对于软件项目的研发,人是创造力主体,所以必须在人的基础上确立合理的分工制度,不光要按照团队人员的职位划分工作职责和内容,还要依据每个人员的特点和专长进行分工。再次,要注重培养团队的积极性。一个团队能否成功,其团队精神的培养起着至关重要的作用。团队的积极性是保证项目研发工作能够顺利进行的前提,因此在实际的工作中要针对具体的研发人员进行激励与奖励,这样能够有效的激发他们的潜在动力,促使团队成员更好的投入到软件项目研发的工作中。
3.2建立完善的管理体系
软件项目的研发是靠人才实现的,因此要想管理好研发项目必须坚持以人为本的核心理念。而拥有一支具有高素质的项目管理团队,需要懂得对人力资源进行优化。第一,应加强软件工程项目管理方面知识的培训。软件工程项目的经理要接受系统的项目管理知识的培训,重视人力资源管理及沟通管理方面的知识,把实践同知识、经验有机的结合起来,提高自身项目管理水平。第二,制定严格的惩奖制度,建立软件研发人员的升职途径。逐步对人事制度进行改革,设置与职位对等的技术职位,为软件研发人员升职创造条件,以此来激发他们的积极性、主动性以及创造性,更好的为项目的研发工作服务。
3.3对风险管理、工作进度进行有效管理
首先,应该加强工作进度的管理,严格控制任务与跟踪管理。制定项目管理的运行表,并且定期安排项目状态报告会议,以此来监督项目的进程,严格控制项目进度。其次,建立合理有效的风险管理制度。项目经理应该利用风险管理的知识,掌握风险识别、量化与控制的方法,在软降工程项目启动后,能够对风险进行识别。再次,风险在整个软件项目的生命周期中都有可能发生,所以应该定期对其进行识别与处理。在处理风险时,一般依据风险的等级采取不同的措施进行控制,例如采取规避、转移和减缓等处理措施及时进行调整。
4总结
关键词:软件工程;课程群;课程设计
中图分类号:G642 文献标识码:B
文章编号:1672-5913 (2007) 20-0005-03
软件工程是计算机学科的重要学科分支,在本科计算机类各专业中都开设一些软件工程的课程,在研究生教学中,无论是硕士还是博士,都设置软件工程的研究方向,开设高一级的软件工程课程。本文中,软件工程课程群是指包括各层次的软件工程类课程。另外,软件工程又是一门发展非常迅速的学科,早年在研究生中讲述的内容现在放在本科中讲。因此,这些课程存在定位不明确,课程间内容交叉重复等问题。本文根据本科生和研究生两个层次对软件工程类课程的教学要求,阐述软件工程课程群的定位、课程设置、主要课程的知识单元和知识点。
1定位
首先分析社会对各层次计算机专业学生在软件工程方面的知识和能力要求。我们认为计算机类本科学生毕业后,主要从事计算机软件的开发工作,他们应掌握软件工程的基本概念、基本原理和基本方法,并能运用这些概念、方法、原理,参与和/或从事软件开发的某些活动(如分析、设计、编码、测试等)。软件工程方向的研究生主要着重研究能力的培养,毕业后主要承担系统分析员和/或系统设计员角色,甚至承担项目经理的角色,他们应掌握软件工程的研究动态,了解软件工程最新的研究成果,具备有关软件的系统分析、构架设计和软件项目管理的知识和能力。
根据以上分析,我们认为,本科生软件工程课程群应以软件工程的基本概念、基本原理和基本方法为主线,使学生具备扎实的软件工程基本理论知识、熟练的编程能力、较好的团队合作能力和实验能力,同时具备一定的分析与解决问题能力和创新能力。研究生软件工程课程群应以研究课题为主线,使学生掌握软件工程最新的研究动态,对其中若干个研究方向有深入的了解,具备较强的分析与解决问题能力和创新能力,以及基本的软件项目组
织和管理能力。
2课程设置
软件工程课程群按学生的层次可分为本科生软件工程课程群和研究生软件工程课程群,按课程类别可分为必修课和选修课。
根据上述定位,本科生软件工程课程群的必修课包括软件工程和软件实践,有些学校在软件工程课中包括足够的实践时间,可将它们合并成一门软件工程课。选修课可根据各校的特点开设不同的课程,如面向对象的分析与设计、软件体系结构、基于构件的软件开发、软件测试等,也可将研究生的某些课程作为本科高年级学生的选修课。
研究生软件工程课程群的必修课可包括高级软件工程、软件项目管理和专题讨论,其中专题讨论没有固定的教材,它以若干专题(如软件复用技术、模型驱动体系结构、软件产品线等)的最新论文为主,以报告和讨论的形式进行。选修课可根据导师的研究方向选择合适的课程,如需求工程、软件过程、形式方法等。
3教学内容
本节参照国外相关的资料,结合我们多年的教学实践,给出软件工程课程群中各必修课的知识单元。
3.1软件工程(本科生)
本科软件工程课程的内容应覆盖教育部计算机科学与技术教学指导委员会制订的计算机科学与技术本科专业规范(计算机科学方向)中有关软件工程的主要知识单元,该课程以软件工程的基本概念、基本原理和基本方法为主,着重国内比较流行的结构化分析与设计方法、面向对象分析与设计方法和常规的软件测试方法。同时对一些较新的软件开发模型、方法和技术(如基于构件的软件开发模型和方法、敏捷开发方法、CMM&CMMI、Web工程等)做简单的介绍,以便学生今后自学。
3.2软件实践(本科生)
该课程是本科软件工程课程的一门后继实验课,以某种软件开发方法(如面向对象方法)和软件过程(如统一软件过程RUP)为基础,引导学生完成一个完整的软件项目开发全过程,包括需求获取、需求分析、系统设计、实现以及测试等基本步骤。该课程主要培养学生的分析与解决问题能力、团队合作能力、实验能力和创新能力
3.3高级软件工程(研究生)
该课程选择当今软件工程研究的热点课题作为主要内容,其知识单元可包括:基于构件的软件工程、软件产品线、软件体系结构、模型驱动体系结构(MDA)、面向方面程序设计(AOP)、需求工程、面向对象测试技术、逆向工程和再工程、Agent技术、形式方法、高可信软件,开源软件等。值得注意的是,在一门高级软件工程课程中很难详细介绍上述所有的内容,各校可根据自己的特点和研究方向,选择几个(以3~5个为宜)知识单元作重点介绍,对其他知识单元可只做简单的介绍。
下面给出几个知识单元所包含的知识点。
基于构件的软件工程(CBSE)主要包括:CBSE基本概念,软件构件规格说明,构件模型,基于构件的开发过程,基于构件开发的语义完整性,构件组装和集成,预测系统的可信度,软件产品线体系结构中的构件,商用第三方构件(COTS)及构件获取技术,基于构件的软件体系结构,基于构件软件的测试与质量保证,构件的可变性机制,软件构件库,构件交易,构件描述与检索等。
软件产品线(SPL)主要包括:软件产品线的基本概念,软件产品线的基本活动(核心资产开发,产品开发,管理),领域工程与应用系统工程,SPL经济学,软件产品线实践域,软件产品线实践模式,产品线组装,基于产品线的应用系统开发技术等。
软件体系结构主要包括:软件体系结构的原则和实践,体系结构框架/方法,体系结构模型与MDA,集成框架,软件体系结构设计与分析,体系结构风格,软件体系结构文档,软件体系结构评估与确认,面向服务体系结构(SOA),体系结构模式,企业体系结构等。
模型驱动体系结构(MDA)主要包括:MDA基本概念,MDA规格说明,MDA模型(CIM,PIM,PSM),模型转换,模型语言(如可执行的UML,对象约束语言OCL等),元建模,MDA过程,领域建模,系统模型,平台无关建模,平台特定的实现等。
3.4软件项目管理(研究生)
该课程的知识单元包括:综合管理,范围管理,时间管理,成本管理,质量管理,人力资源管理,沟通管理,风险管理,采购管理,敏捷项目管理,外包管理,软技能等。下面给出其中若干个知识单元所包含的知识点。
综合管理:项目,项目范围陈述,项目管理计划(编制过程,内容),项目执行的管理,项目评价,项目的监督和控制,集成的变更控制,实施报告,配置管理,关闭项目。
范围管理:启动过程,项目选择方法,项目合同,范围管理计划(编制过程,范围陈述,范围定义),创建WBS,范围验证过程,范围蔓延,范围变更控制过程,目标管理(MBO),影响曲线。
时间管理:活动定义过程,活动排序过程,图示方法(优先图示方法(PDM),箭头图示方法(ADM),条件图示方法,图形评价和评审技术(GERT), 项目网络图,关键路径方法(CPM),计划评价和评审技术(PERT)等),PERT对CPM的估算,活动资源估算,活动持续时间估算,估算工具,进度表开发过程,进度控制过程,净价值术语和公式。
成本管理:资源计划编制过程,成本估算(术语,过程,COCOMO模型,工具),成本管理计划,成本预算过程,成本基线,项目投资需求,成本控制过程,实施度量,预测完成,净价值术语和公式。
质量管理:质量计划编制过程,质量保证计划,过程改进计划,质量保证过程,质量控制过程,统计质量控制(SQC),质量改进过程。
人力资源管理:人力资源计划编制,组织计划编制,项目管理中人的因素,责任委派矩阵,获取项目组,员工获取过程,项目管理者的角色和责任,项目组(建造过程),小组动力,管理项目组,角色与责任,领导风格,能力类型,冲突管理,6动机理论,小组性能估算,管理知识员工。
沟通管理:沟通计划编制,沟通管理计划,信息分发,沟通模型,沟通风格,沟通方法,沟通链接规则,沟通障碍,沟通技巧,绩效报告,管理涉众,管理收尾。
风险管理:风险管理计划编制,实用方法,风险标识,风险分析(定性分析,可能性与风险影响,定量分析,灵敏性分析,决策树分析,预期货币价值,概率方法),风险响应(计划编制,工具与技术),可保险风险,风险监督与控制过程,影响曲线。
采购管理:采购计划编制,购买和获取计划,合同计划,成本补偿合同,固定价格合同,工作陈述,申请计划编制过程,请求供方响应,申请过程,供方选择,源选择过程,谈判,合同,合同管理,合同变更控制,合同收尾。
敏捷项目管理:Agile宣言和原则,迭代与演化开发,产品业主,敏捷管理需求,敏捷估算与计划编制,敏捷设计,敏捷文档,敏捷软件构造,敏捷编程,人员管理问题,敏捷质量保证,敏捷项目管理,项目评审,敏捷度量。
外包管理:识别全球业务机遇,组织模型与商业策略,全球项目的特征和挑战,全球项目经理的技能,国际及多种文化的交融,IP保护与其他法律方面,采购道德规范,道德规范法规,试验计划,风险管理,软件过程与实践的改进,建立团队,需求管理及客户/供应商关系,开发方法学,全球软件开发(GSD)与全球软件工程(GSE),沟通、协调和协作,离岸项目的管理,克服距离和时间,文化交叉的处理,全球项目的安全问题,全球项目收尾,从业人员教育培训及知识管理。
软技能:领导能力,批判性思考,职业道德规范,自我激励,诚实,小组工作,风险捕获,适应性,人际关系,工作压力承受、压力管理,创造性,影响力,研究能力,问题解决能力,组织能力,多文化处理能力,学习能力,时间管理,口头沟通,文字沟通,细心周到。
4小结
本文介绍了软件工程课程群的设计,在具体实施时,可根据各校的特点,对上述课程设置、知识单元、知识点进行裁剪。下一步将继续完善各课程的知识单元和知识点,为软件工程课程群建设打好基础。
参考文献
[1] 教育部高等学校计算机科学与技术教学指导委员会. 计算机科学与技术本科专业规范[M]. 北京:高等教育出版社,2006 .
作者简介
钱乐秋(1942-),男,复旦大学计算机科学与工程系教授,博士生导师,主要研究方向为软件工程。
关键词:实践教学;项目驱动;软件项目管理:软件工程
随着信息技术的飞速发展,软件产品的规模也越来越大,复杂程度越来越高,项目失败的概率也随之增长。研究表明,软件项目失败的原因主要有两个:一是错误的软件项目管理;二是应用项目的复杂性。实践证明错误的软件项目管理是导致软件项目失控的直接原因。各软件企业为了能高效高质地开发软件产品,都在积极将软件项目管理引入开发活动中。然而在“软件工程”的教学中,软件项目管理的教学效果却不尽人意。一方面,教材中的案例缺乏完整性、系统性和实用性;另一方面,软件项目管理的讲授方式不是十分合理,学生重视力度不够。作者将结合多年的软件工程教学经验,对软件项目管理的教学方法进行分析和探讨。
1软件项目管理的教学内容及特点分析
软件项目管理[1]是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员、产品、过程和项目等进行分析和管理的活动。软件项目管理是软件工程教学中的重要内容,它涉及了软件项目管理的五个标准化过程组和范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、项目综合管理九大知识领域,几乎覆盖了软件产品从立项到结束的整个过程。图1形象地展示了软件项目管理与软件开发过程在时间上的先后顺序。
大多企业的优秀管理者都是具有丰富经验的人员,同样,软件项目管理水平的高低偏重于软件项目管理经验的积累。软件项目管理的学习不仅仅是要掌
图1软件项目管理与软件开发过程的时序图
握基本的原理、方法和完成相关的设计文档,更重要的是将理论应用于实践,让学生真正理解理论的作用,体验在实际项目实施中理论知识的具体应用场景,培养学生的软件项目管理思想。立足于软件项目管理的教学目标和要求,结合软件项目管理自身的特点,分析研究认为,项目驱动的软件项目管理教学
方法能够充分调动学生学习的积极性,培养学生动手实践和主动探索的精神,提高教学的质量和水平。
2项目驱动的实践教学法
项目驱动教学法[2]是一种以建构主义为理论基础的教学方法,它以项目开发为主线展开教学,整个教学过程是一种在教师的指导下,以学生为主体的协作过程。这种教学法的主要特点是始终以项目中的任务展开教学,既注重最终的实践结果,又注重完成项目的过程。其中教师的职责在于使学习者置身于探索知识之中,通过具体项目的开发提供真实的“情境”,即实际项目中需要解决的问题。然后,通过教师的指导,学生之间的讨论来解决问题。这种模式旨在把学生融入任务完成的过程中,让学生积极地学习,自主进行知识的建构,以培养学生综合能力为最终目标。
2.1项目驱动教学对学生能力的培养
(1) 培养学生自主学习的能力。项目驱动教学法中任务的设定真正实现了以学生为主体的教学方针,学生为了完成任务就会主动去图书馆或相关的网站查阅信息,从而可以丰富知识,提高自学能力。
(2) 培养学生团队合作的能力。把全班学生分成几个小组,每组项目的完成情况,影响小组每个成员的评价,因此为了团队的整体利益,小组成员之间就会不可避免地展开讨论和争辩,最终达成共识,相互协作完成任务。
(3) 培养学生分析问题、解决问题的能力。任务设计后,让学生自己讨论,分析任务,提出问题,充分发挥了学生在学习过程中的主动性、积极性和创造性。这种分析问题和解决问题的能力同样可以应用到其它的领域。
(4) 培养学生实践创新能力。实践是创新的源泉。对于同一个任务,每个小组采用的解决方案不尽相同。他们可以根据自己的知识背景和对任务的认识,对任务的实现方法进行大胆的设计,从而培养学生的创新思维,提高学生的创新能力。
总之,项目驱动的任务式教学方法能够充分发挥学生的主观能动性,全面提高他们的综合素质。
2.2项目驱动教学法的操作过程
“项目驱动”教学模式是教学过程中诸要素相互作用而形成相对稳定的组织结构和操作程序。 采用“项目驱动”教学法,在软件工程项目实施的每个阶段,我们均采用“项目任务――分析任务――理论学习――完成任务――评价总结任务”的教学模式。学生在完成“项目任务”的操作过程中,发现问题、解决问题,通过对任务的剖析,丰富了学习的经验、提高了学生完成任务的能力。
3教学实施
从软件工程的角度讲,软件项目管理过程主要分为七个阶段[3]:可行性研究阶段、需求分析阶段、设计阶段、编码阶段、测试阶段、验收阶段和维护阶段。我们在“软件工程”的教学过程中,打破以往按教材编排顺序讲授知识的方式,以软件项目的管理过程为讲授顺序,并以一个完整的具体项目实施为依托进行“软件工程”教学。其中软件项目管理的教学内容将穿插到软件生存周期各个阶段进行讲授,各阶段将会不可避免地包含相同的管理内容,通过学生重复学习与实践,可以使其深刻体会软件项目管理的思想。本校计算机专业大三学生的“软件工程”课程共54课时,我们按照理论教学与实践教学1:1的比例,先进行相关理论知识的讲解,然后进行课程实验的具体实践,结合“PetStore电子商务网站”的建设,让学生及时运用所学内容来完成项目任务,通过将软件项目管理的教学内容贯穿到项目实施的整个过程来实施教学。
3.1教学准备
(1) 设置项目任务。在教学实施前,教师应根据教学进度、教学目标和要求制定教学计划,并将PetStore系统建设分成各个相对独立的子项目,将相关的理论知识分散在各个子项目中。学生应根据教师的安排认真阅读项目要求,查阅相关资料,对相关问题进行思考分析,并为课堂讨论做好准备。
(2) 建设团队。我们对学生按“项目小组”以自由组合的方式建立软件开发团队[4],每个团队不得超过6人,各组成员根据实际项目开发的过程进行分工。项目经理由小组成员讨论推荐产生,负责整个项目的规划、实施和控制。系统分析师、软件测试工程师和开发工程师通过自我推荐或项目经理指定产生。项目中的每项任务要落实到人且规定该任务的起止日期和时间。
(3) 建设规范的实验、实训室。根据项目驱动教学的特点,不仅需要学生提交书面的阶段性文档,还要通过具体的实践实现项目任务,提交项目作品。因此规范化的实验、实训室成为项目顺利完成的保障。
3.2教学内容
我们将从软件的生存周期着眼,利用阶段化的项目管理方法,结合项目实践,对工程化生产中的管理工作进行讲解。对于软件项目的每一个阶段均要做出工作计划,在阶段结束之后,要对该阶段的工作活动进行总结评价,并对后续阶段的时间、人员、资金方面的需求做出估计。下面按软件项目的开发阶段,以PetStore系统的建设为例,详细介绍软件工程中软件项目管理的教学内容及相关的项目实施任务。
3.2.1问题定义与可行性研究阶段
问题定义与可行性研究阶段主要涉及的项目管理教学内容包括:确定项目实施范围、项目目标、评估实施过程中主要的风险、制定项目实施的进度计划、成本和预算计划、人力资源计划等。
针对PetStore系统的开发建设,我们让老师模拟实际的用户,学生在对用户调查的基础上,结合软件项目管理理论知识,通过查阅资料、小组成员之间的讨论,编写详细的“系统目标与范围的说明书”。按照说明书的内容和要求,分析项目可能存在的风险,建立“风险项目检查表”。明确系统流程,建立系统逻辑模型,制定不同的解决方案。通过与用户的沟通,考虑经济上、技术上的可行性,比较选择一个较优的解决方案。在任务完成的过程中,学生可以真正感受到非文档所能体现的管理问题,如人力资源管理、沟通管理、风险管理等。
3.2.2需求分析阶段
本阶段将更加全面、准确地分析PetStore系统的需求,主要涉及的管理工作为需求管理、质量管理、沟通管理等。通过与用户的多次沟通,明确系统可以分为用户管理、商品管理和维护库存数据库三大功能模块,每个大的功能模块又可分为若干小模块,如用户的注册模块、登陆模块、修改模块等。为保证PetStore系统的开发质量,需要在此阶段制定软件质量标准,主要包括功能性、稳定性、经济性、适用性、可靠性、安全性、可维护性等指标。明确系统的各种需求后,编写“软件需求规格说明书”。
3.2.3软件设计阶段
软件设计是一个将需求转变为软件陈述(表达)的过程,程序的质量主要是由设计的质量来决定。本阶段主要包括范围管理、质量管理、时间管理、沟通管理等软件项目管理方面的内容。例如在PetStore系统设计的过程中,根据“需求规格说明书”中需求分析方法,确定所采用的软件设计方法及系统数据、软
件框架。软件设计阶段的任务主要包括PetStore系统界面设计、数据库设计、数据结构设计、编写设计文档等。在设计过程中始终要求按照质量标准予以实施,并及时进行质量评估。学生完成PetStore系统设计后,可以邀请用户或其他小组成员参与设计复审。复审时,设计人员要提出对设计方案的详细说明,答复与会者的问题,并记下重要的评审意见。
3.2.4编码阶段
编码阶段涉及的软件项目管理教学内容主要有风险管理、质量管理、进度控制、成本管理、时间管理、配置管理、项目度量管理等。针对PetStore系统,按照设计文档的要求,对系统的各个功能子模块采用自己熟悉的语言进行编码设计。在PetStore的功能模块开发过程中,并不能完全保证项目按照开发计划进行,为了能使项目进度和开发计划同步,软件管理者在项目开始后应时刻关注计划执行情况,随时进行风险分析,调整项目进度,使实际进度与计划进度保持一致。编码结束后,由项目小组的技术人员对代码是否按规范编写进行审核,以保证编码的质量。
3.2.5测试阶段
测试阶段主要涉及的软件项目管理教学内容有质量控制、配置管理等。针对PetStore系统,在编码阶段由项目开发者实现单元测试,测试阶段由独立于开发人员的测试人员进行“渐增式”的集成测试,最后,对照需求说明书,完成确认测试,并编写相应的测试报告文档。在测试过程中,学生利用配置管理的CASE工具,可以了解配置管理在软件开发中的具体应用及其所起到的重要作用。
3.2.6运行和维护阶段
运行和维护阶段的软件项目管理内容主要包括维护成本估算、配置管理、风险管理、维护管理文档的编写。在PetStore系统的维护中,加强文档的建设,做到任何事情均有记录,任何变更均可回朔,利用维护日志和软件修改报告记录维护过程中的具体实施情况,学生可以根据维护情况参照开发工作量来估计维护的费用。此阶段还可以让学生选择合适的自动配置管理工具来实施配置管理。
3.3教学总结
我们要求学生按PetStore项目生命周期的开发阶段进行阶段性项目总结。每个阶段的教学结束后,老师给学生一定的时间来实现PetStore 系统相关的内容,同时要求每个项目小组派一名代表在课堂上对阶段性的工作实施过程进行讲解,让全班学生共同讨论,相互交流不同的观点,以期从讨论中发现自己的不足和别人的优点,同时也能活跃课堂气氛,培养学生主动思考的意识。
在“软件工程”软件项目管理的教学过程中,我们注重的不是具体某一管理技术的学习,而是让学生深刻体会软件项目管理的过程,培养学生软件项目管
理的思想。
4结语
实践表明采用“项目驱动”的软件项目管理教学方式,可以将学习置于一个真实的软件项目开发环境中,让学生亲自动手操作来学习“死”的理论,加强理论与实际的联系,从而激发了学生的创新意识,调动了其学习积极性,培养了学习兴趣,提高了他们分析问题和解决问题的能力,达到了教学目标和要求,起到了良好的教学效果。
参考文献:
[1] 张建成. 周呜乐. 浅谈软件项目管理[J]. 信息技术与信息化,2008(5):84-86.
[2] 邓锐,佘维. 基于筛选机制的高职软件技术专业项目驱动教学探讨[J]. 计算机教育,2008(22):113-114.
[3]Php Metzger,John Boddie. 软件项目管理―过程控制与人员管理[M]. 北京:电子工业出版社,2002.
[4] 裴小兵. 基于软件开发团队的软件工程教学实践研究[J]. 计算机教育,2008(2):55-56.
Application of the Thinking of Software Project Management in "Software Engineering" Teaching
ZHANG Zhong-lin, WANG Jian-sheng, LAN Li
(School of Electronic and Information Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China)