前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的项目开发总结主题范文,仅供参考,欢迎阅读并收藏。
【关键词】气象;在线;考试系统;总结
1、前言
Internet技术的发展使得考试的技术手段和载体发生了革命性的变化,Internet的开放性、分布性的特点和基于Internet的巨大的计算能力使得考试突破了时间和空间的限制。随着Internet/Intranet的迅速发展和广泛普及,基于Internet的考试系统正成为人们的研究热点之一,建立在其上的气象网络化考试将成为现代气象技术教育未来发展方向之一,现代远程气象网络化考试技术作为一种新的教学手段已经开始进入我们的生活,正在给传统考试及模式带来新的变革。气象在线考试系统通过建立在线考试网站,实现网络共享考试,考试采用管理员(命题人)指定范围,在题库中随机抽取考题的办法进行人机交互式考试,使得参考人员人手一题,无相同试卷,服务器自动阅卷,考完后实时自动判卷,这样不仅省去了出题者的麻烦,也避免了阅卷者的主观性,对每个参考人员均实行了公平、公正的考试,特别适合大规模考试。由于节约了大量的人力、物力、财力,使得考试成本大大的降低。
2、气象在线考试系统的系统总体功能及模块概况
2.1本系统的用户可分为省级管理员、市级管理员、县级管理员,考生4类。
考虑到系统的安全性,本系统共分成两个部分:一个部分用于管理员登录,主要负责进行基本资料、题库、试卷、成绩的管理以及查询等;另外一个部分用于考生登录,参加考试和考试前的模拟训练。
2.2从总体上考虑,系统应该实现下列功能:
对管理员来说,包括试卷管理、题库管理、成绩管理、基本资料管理。
试卷管理:管理员可以将各种题型的数量等方面对某份试卷提出一定的要求生成试卷规则,在考生考试时,由系统根据试卷规则自动组卷生成满足管理员要求的试卷,而不用手工组卷。同时,管理员还可以对库中已有的试卷进行修改和删除,添加新试卷等。
题库管理:管理员可以根据教学需求对题库中的试题进行三种基本操作:添加新的考题、删除旧有考题、修改原有考题,其中试题类型包括判断题、单选题、多选题。
成绩管理:管理员可以查看考生的考试成绩,并针对不同的课程进行成绩统计,包括考试人数、最高分、最低分、平均分以及各分数段得分人数等。
基本资料管理:主要包括管理基本资料(包括管理员、考生资料的增、删、改以及个人资料修改)。
对考生来说,有两方面要求:
模拟考试训练:考生可以任选时间进行在线测试,考试结束后,系统会根据已有的标准答案进行在线判卷,考生可以立刻知道考试成绩。
正常考试:考生只能一人只考试一次,在特殊情况下,可以由监考管理员删除以往考试信息情况下,可以进行考试。
3、气象在线考试系统的系统分析
在线考试系统主要目的是为考生平时学习和自测、大规模考试测验服务。系统可以实现如下功能:建立完备的试题库,整合现有的考试资源,提高资源的利用率和当前的工作效率;利用计算机自动生成试卷,减少管理员负担,提高试卷的科学性,同时也防止考生抄袭作弊;登陆后可以根据用户类型的不同分别进入不同的界面,身份验证严格,防止网络替考及窃取权限修改成绩;考生答完卷后答案自动存储,若时间已到而试题未答完则自动保存成绩后强行退出;设定自动阅卷功能,标准化试题由于答案固定,可以让计算机自动将考生答案和标准化答案比对,自动生成成绩,确保成绩的公平和公正;最后还可以就考试情况进行分析,找出考生分数层次和薄弱知识点,从而利于技术改进。考试系统模块功能简介如下:
登陆模块:当考生登陆到考试系统窗体时,首先要求输入考生的学号和姓名,并按下确定,进行身份验证,如果没有通过身验证,根据验证结果进行不同的操作,说明没有通过的原因。返回原因可能为,学号与姓名不相配,或者是已经参加过考试,或者是某种原因,你已经处于考试状态。
身份验证模块:在考生进入考试系统时,要求确认其考试资格,并跟据不同的情况返回不同的值。
生成试卷模块:根据读取到的考试设置,生成考试试卷。
生成选择题模块:根据考试要求,从数据库中的选择题库中随机抽取规定数量的选择试题。
生成判断题模块:根据考试要求,从数据库中的判断题库中随机抽取规定数量的判断试题。
读取数据库信息模块:根据要求,从数据库中读取需要的信息。
做试卷模块:考生做试卷,让考生根据试题要求,输入结果或进行操作。
时间控制模块:在考试中,考试有时间限制,当考试时间结束前5分钟,将提醒考生交卷,考试时间到时,将自动交卷,并且禁止考生操作。
提交试卷模块:先将考生试卷保存到数据库中,然后评卷,并把考试分数保存到数据库中。
评卷模块:对考生试卷的答案与标准答案对比,对的加分,最后得出考试结果。
考生考试查询模块:系统中的管理员只有能登陆均可考生考试成绩和答题卷等信息。
4、气象在线考试系统的出错处理对策
由于数据在数据库中已经有备份,故在系统出错后可以依靠数据库的恢复功能,并且依靠日志文件使系统再启动,就算系统崩溃用户数据也不会丢失或遭到破坏。但有可能占用更多的数据存储空间,权衡措施由用户来决定。如在考试过程中发生了中断,可以通过试卷恢复系统来恢复试卷,继续考试。考试完了,将考试结果保存到数据库中。
【关键词】软件项目 项目管理 Microsoft Project
一、引言
软件项目生命周期从立项、设计、开发、建设过程中步骤繁多,为了在项目管理全过程进行有效的计划、组织、指挥、协调、控制和评价,以实现项目目标,我们需要引进项目管理。项目是为完成某个独特的产品或服务所做的一次性任务。项目管理是在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。Microsoft Project是基于网络的项目管理软件,在各类IT集成及开发项目管理中发挥着巨大的作用,它将先进的项目管理思想与信息技术完美结合,帮助我们规范项目管理的流程。本人结合Microsoft Project软件在项目管理中划分的十大步骤分别进行解释说明。
二、项目管理步骤
第一,项目立项。在这个环节中信息室对要进行的开发项目进行立项申请,提交项目资料。经过有关部门审批立项通过的项目,信息室需要细化开发进度计划,落实资源(物质资源和人力资源),成立项目组并明确项目负责人,项目组成员。项目组宣布成立后,项目日常事务由项目组接手,并根据立项的依据组织《项目开发计划书》的编制,项目立项阶段工作任务就基本完成。
第二,项目需求分析。在这个环节中,项目组利用单位的组织关系对潜在用户进行详细的需求调查后完成《项目需求文档》,中心技术室对《项目需求文档》初稿进行评审并提出意见,在《项目需求文档》整理闭环工作完成后,项目需求分析阶段工作结束。
第三,项目设计阶段。在前两个环节完成之后项目组对项目有了更加深入的了解,进入项目设计阶段,项目负责人需组织项目组成员完成并理解《项目开发计划书》及《项目需求文档》,同时与有关部门对《项目开发计划书》定稿后发往用户方。项目设计阶段还需要完成《项目总概说明书》、《详细设计说明书》、《项目开发评审报告》。以上任务都完成后,项目设计阶段结束,进入下一个环节。
第四,项目开发阶段。这是项目管理过程中最重要的环节,也是一个伸缩性比较强的环节,根据项目所需的开发技术难易度与项目的规模进行调整。主要步骤包含有审阅需求功能规范,确定模块化/分层设计,分派模块代码任务给开发组成员。开发组成员编写代码,调试并修改代码,确认模块代码是否语法错误,形成合格的模块代码,项目开发阶段工作完成。
第五,组织设备采购阶段。根据以往项目建设经验,这个环节可以与前几个阶段并行开展,只要资金到位、手续齐全等条件具备下都可以组织开展,尽早获得硬件设备可以为开发测试提供足够的硬件资源。因此这个阶段在PROJECT设计中是项目开发阶段“开始-开始”,并且设定为“越早越好”,这个环节对于项目组主要任务是上政府采购网进行设备询价,确定几家供应商,向上级主管部门提交设备购买申请,设备到货验收,设备固定资产登记等工作。
第六,项目测试连调阶段。根据《项目需求文档》制定测试计划与测试方案,完成《测试计划书》。测试方案落实后进行严格单元测试,然后进行集成测试,完成集成测试后可以进入系统试运行。
第七,文档整理。制定“帮助”文档,编写用户手册,完成《产品规格说明书》。
第八,用户培训。可以根据用户特点选择项目实施前或者实施后进行。
第九,安装实施阶段。实施安装前需要有实施计划,时间,人员,行程安排。现场安装中,需要形成施工文档,相关用户需要签字。项目安装顺利可以让用户出具《初验报告》。
第十,项目结束阶段。此阶段需要建立软件维护小组,组织有关部门进行项目验收,科技成果申报,项目鉴定等工作。
三、结束语
作为民航气象信息系统开发部门,利用Microsoft Project工具进行标准化项目管理,可以合理安排开发时间及项目资源,掌握工作进度,使项目管理工作有条不紊开展。
作为就业培训,项目的好坏对培训质量的影响十分大,常常是决定性的作用。这篇文章是关于在学习java软件开发时练习项目的总结,简单总结为以下几点: 项目一定要全新的项目,不能是以前做过的
2、项目一定要企业真实项目,不能是精简以后的,不能脱离实际应用系统
3、在开发时要和企业的开发保持一致
4、在做项目的时候不应该有参考代码
长话短说就是以上几点,如果你想要的了解,可以继续往后看。
一:项目的地位
因为参加就业培训的学员很多都是有一定的计算机基础,大部分都具备一定的编程基础,尤其是在校或者是刚毕业的学生,多少都有一些基础。
他们欠缺的主要是两点:
(1)不能全面系统的、深入的掌握某种技术,也就是会的挺多,但都是皮毛,不能满足就业的需要。
(2)没有任何实际的开发经验,完全是想象中学习,考试还行,一到实际开发和应用就歇菜了。
解决的方法就是通过项目练习,对所学知识进行深化,然后通过项目来获取实际开发的经验,从而弥补这些不足,尽快达到企业的实际要求。
二:如何选择项目
项目既然那么重要,肯定不能随随便便找项目,那么究竟如何来选择呢?根据java的研究和实践经验总结,选择项目的时候要注意以下方面:
1:项目不能太大,也不能太小
这个要根据项目练习的阶段,练习的时间,练习的目标来判断。不能太大,太大了做不完,也不能太小,太小了没有意义,达不到练习的目的。
2:项目不能脱离实际应用系统
项目应该是实际的系统,或者是实际系统的简化和抽象,不能够是没有实战意义的教学性或者是纯练习性的项目。因为培训的时间有限,必须让学员尽快地融入到实际项目的开发当中去。任何人接受和掌握一个东西都需要时间去适应,需要重复几次才能够真正掌握,所以每个项目都必须跟实际应用挂钩。
3:项目应能覆盖所学的主要知识点
学以致用,学完的知识点需要到应用中使用,才能够真正理解和掌握,再说了,软件开发是一个动手能力要求很高的行业,什么算会了,那就是能够做出来,写出代码来,把问题解决了,你就算会了。
4:最后综合项目一定要是实际应用系统
学员经过这个项目的练习,就要走上实际的工作岗位了,如果这个系统还达不到实际应用系统的标准,学员练习过后也还是达不到企业实际的需要,那么这个培训应该说质量就不高了。理想的状况是这个项目就是实际项目,到时候学员就业到另外一个公司,不过是换个地方干活而已,完全没有技能上的问题。
三:java怎么选择项目
这个不是靠想象,而是根据实际的情况一步一步分析出来的(呵呵要卖弄一下:这也算是逻辑思维),当然这里只是讨论方法,不涉及具体的项目案例。
我们可以采用倒推的方式来分析:
2017年java员工试用期工作总结【1】
伴随着充实紧凑的工作生活,两个月的时间已经过去了。这一段时间里有工作上的收获,知识的丰富,经验的增长,同时也暴露出很多问题和不足。总结经验,吸取教训,本文将主要从几个方面来对工作进行总结:工作的主要内容;其中的失败和教训以及成功和经验;展望下一阶段的工作,确定自己的目标。以此作为惩前毖后的记录。
来到一个新的工作环境,最能发现自身的不足,这几个月,抱着虚心学习的态度,学习公司的开发流程,熟悉公司的企业文化,了解公司产品框架,主要技术,主动和同事沟通、学习经验,希望能更快的融入公司、融入开发团队,能够全心的投入工作。
试用期期间完成的工作还十分有限,简单列了一些:掌握java开发语言和环境,由于在校学习时主要是以.net作为开发语言,所以在刚入职时通过一段时间学习并基本掌握了java开发技术。熟悉公司开发流程,熟悉cbp产品框架。了解了核三框架的总体结构和开发流程,并能在核三的基础上进行项目开发。
参与了社保电子支付项目的开发。主要负责web端的模块开发,通过开发的过程,学习和掌握了flex界面开发,hibernate和oracle数据库。因为自己在经验上的不足,所以,在项目的开发过程中碰到开发进度慢的问题。综合起来看原因在于:
1、没有项目经验,没有经历过系统和完整的系统开发。
2、对于技术的学习和掌握还不够深入。
3、发现问题的能力不够,在自己以往的学习方式中,欠缺一种主动发现问题的能力。今后,我会多注意在这些方面的学习和积累。
这两个月的工作生活是充实且富有乐趣的,结识了很多同事和朋友,公司的氛围是非常轻松愉快的。感谢两个月来经理的关心,感谢部门同事的悉心指导,感谢公司各位同事的热心帮助,希望能在接下来的工作中能惩前毖后,总结经验,吸取教训,做到个人与公司共荣辱同进退,共同实现中地的辉煌。
2017年java员工试用期工作总结【2】
我于20xx年7月6号进入公司,我一直对自己要求严谨,遵守公司的规章制度,参与了社保电子支付项目的开发;来到一个新的工作环境,最能发现自身的不足,这几个;公司的开发流程,熟悉公司的企业文化,了解公司产品;学习经验,希望能更快的融入公司、融入开发团队,能做到的工作还十分有限,简单列了一些:掌握java开发;职时通过一段时间学习并基本掌握了试用期个人工作总结 我于20xx年7月6号进入公司的软件开发四部,担任java程序员一职。
在这段工作时间里,我一直对自己要求严谨,遵守公司的规章制度,努力完成和完善分配给我的任务,参与了社保电子支付项目的开发。现在,试用期结束了,对自己这3个月的工作情况作个总结。
前期工作回顾来到一个新的工作环境,最能发现自身的不足,这几个月,抱着虚心学习的态度,学习公司的开发流程,熟悉公司的企业文化,了解公司产品框架,主要技术,主动和同事沟通、学习经验,希望能更快的融入公司、融入开发团队,能够全心的投入工作。
试用期期间完成的工作还十分有限,简单列了一些: 掌握java开发语言和环境,由于在校学习时主要是以.net作为开发语言,所以在刚入职时通过一段时间学习并基本掌握了java开发技术。 熟悉公司开发流程,熟悉cbp产品框架。了解了核三框架的总体结构和开发流程,并能在核三的基础上进行项目开发。参与了社保电子支付项目的开发。主要负责web端的模块开发,通过开发的过程,学习和掌握了flex界面开发,hibernate和oracle数据库。
因为自己在经验上的不足,所以,在项目的开发过程中碰到开发进度慢的问题。综合起来看原因在于:1、没有项目经验,没有经历过系统和完整的系统开发。2、对于技术的学习和掌握还不够深入。3、发现问题的能力不够,在自己以往的学习方式中,欠缺一种主动发现问题的能力。
今后,我会多注意在这些方面的学习和积累。 在工作的这段时间里,我得到很多同事的帮助。部门经理经常与我交流,指出技术上的问题,传授了很多开发经验。与同事间也经常互相请教,探讨碰到的问题,互相学习。使得我很快就适应了公司的生活。在这期间还参加了公司的中秋晚会,感受了公司文化。 总之,认真的回顾了这段时间的工作,发现了一些不足之处,这都是我在接下的工作中需要完善的。同时,也会尽最大努力的学习和积累经验,逐步发展成一个全面的技术开发人员,更好的完成工作。
2017年java员工试用期工作总结【3】
在学院领导老师的带领和安排下,我们在上个学期末,到北京进行了为期10天的专业实习。在实习过程中,我们在专编程技能以及软件开发的总体架构思想上都收获颇丰。
本次实训我们分为两个阶段,前五天为第一阶段,我们进行了理论知识的学习,巩固和深化了所学的编程知识。以下谈一谈个人的感受与体会
一、理论知识的学习
在实训进行的前五天,我们上的是java编程的理论课。负责上课的老师言语风趣幽默而不失严谨,在老师的引导和启发下,我们巩固了之前在学校所学的编程知识,并加以深化,澄清之前对编程技术认识的一些错误或模糊的概念。
我们还在课上以java里GUI编程常用的swing框架和JAVA的容器体系作为切入点,框架作为这期间除了学习一般的编程的知识技巧。在全面的系统的认识了框架同时补充学习了泛型技术,以及框架中架构思想的知识。在企业的实际编码过程中,一个个框架构成了软件的基石,只有掌握了几门框架知识,才能在实践中高效开发,让自己的产品在市场上立于不败之地。
在理论课的学习过程中,我们也暴露了一些问题,比如在学校上课学习时,对所学知识只是知其然而不知其所以然,不太愿意深钻,和超前学习一些知识。
二、项目开发实战练习
在结束了理论知识的学习之后,后五天我们在实训基地进行了项目开发的实战练习。
项目的名称是superVCD,是由海辉曾经所接的一个远程音乐唱片管理软件项目的精简版。虽然有所精简,但是其内容对我们学习仍具有相当的价值,对我们了解真实的软件的设计规范,编码规范,文档规范以及客户对软件的需求很有参考价值。该内容囊括了GUI设计和编码,容器与泛型的知识,规范文档编写,测试及日志系统,甚至要求我们实现一个专用的轻量级数据库系统,这无疑是对我们很好的一次历练机会,同时可以积累丰富的知识。
平时我们很少有机会能够完成一个如此规模的项目,所以在这次项目实战训练中,我的收获也有很多。
第一,我学会了如何规范的编写代码和文档。文档和代码是团队各成员在项目开发交流合作中的纽带,风格随意混乱的代码和缺失或语义不明的文档会让团队中的其他成员不能理解和使用自己写的程序,我在平时编写代码比较随意,并不注重这一点,经历这次实战演练之后,我一定会严格的遵守编码规范。
第二,我学会了如何理解和分析客户的需求。软件为客户而生,只有理解了客户的需求才有写出优秀的软件的可能,在这次实战演练中,老师教会了我们如何组织团队正确的理解和分析客户的需求,并写出完善的需求分析,并用于项目开发。
第三,我学会了对按照需求对软件架构进行设计,这点我想是我们许多同学之前都非常欠缺的,因为我们在学校的时编写代码篇幅短小,功能单一,所以设计思路通常只留于脑内,非常模糊。而在这次项目开发演练中,老师手把手的教会我如何从需求中抽象出问题,并将之模块化,然后逐步求精,就如同为高楼大厦搭建栋梁。
第四,我学会了如何团队合作,共同开发。作为项目开发小组的组长,我的体会更加深刻。独木难支,光靠一个人的力量是远远不够的。只有管理组织好一个团队,才能够最终完成项目的开发,或许在编程技术水平上团队成员有高有低,但是,每个人都有自己的闪光点,总可以在团队的找到适合自己的位置,每个人在自己的团队中做的贡献,创造出不可磨灭的重大价值。
第五,我学会了如何与客户沟通并展示自己的项目,软件项目的开发最终需要的是客户的认可,让客户了解并认可自己的产品最好的办法就是用言语将自己的项目的最好的一面展示出来,在最后一天里,实训的老师组织了项目的答辩,给我们提供了锻炼自己的表达能力,展示自己的项目的舞台。
2009年2月25日至4月17日,礼平老师提出将学院大三的“软件项目管理”和“软件项目开发实践”两项课程相结合,让学生完成一个网上书城系统。项目历时52天,在两位老师的悉心指导下,整个学院的同学组成20多个团队,开始了开发历程,在这个过程中,着重培养了学生获取知识、共享知识、应用知识、总结知识和传播知识的能力。
作为其中一个团队的小组长,我深为自己所在的团队“喜羊羊与灰太狼”感到自豪,它对于我以及我们组员的影响都是“前所未有”,并且是长远的。说其前所未有,缘于这次开发就如大学前几年的一次总结,帮助我们汇总学习方法,融会贯通所学知识;说其影响深远,缘于其对我们后期课程乃至下一届或下几届学弟学妹们的帮助。
“喜羊羊与灰太狼”是一个由5个女生、2个男生组成的团队。这是一个奇怪而又强大的组合,这7个人没有任何相关领域的开发经验,没有任何组队共同开发的合作经验。在团队中,有的活泼可爱,有的深沉内敛,有的认真细致,有的想法独特,当组合在一起之后,我们有过争执,有过失望,但是最终我们却提交了一份令人满意的成果,包括7个完整版本的源代码和32万字的文档,还有每一位成员在未来学习中取之不尽的开发经验。
2 实际开发结果
2.1 产品
产品功能如图1所示。
2.2工作量
编码工作完成情况:
・C#代码:9712行:
・数据库代码:299行;
・CSS代码: 633行;
・存储过程:1711行。
预计的生产效率:70行/人/日
程序的平均生产效率为:12355/7/14=126行/人/日
实际效率大于预计效率原因:
(1)开发团队中有技术很好的成员,当遇到问题后,可以通过请教相互沟通,能够很快地解决问题,不落下进度。
(2)开发人员自学能力好,通过第一、第二阶段的开发,积累了一定的经验,在后期三四阶段的开发中将效率提高。
(3)所有成员都十分努力,同时团队的管理机制很好,项目开发严格按照计划进行,按时完成任务甚至超前完成,工作效率很高。
2.3 对生产效率的评价
经过统计,整个网站系统的代码数量为:C#代码9712行,数据库代码299行,CSS代码633行,存储过程1711行,此部分都是开发人员手动开发的代码,总共为12355行。前期的开发时间为14天。那么程序的平均生产效率为12355/7/14=126行,人/日,这已经大大超出我们所预计的生产效率70行/A/日。虽然量增多了,但是质量依旧控制在计划之内。
经过统计,所产生文档字数大约为:75870字。所统计的文档包括需求、概要设计、详细设计、数据库设计、开发计划、测试计划等项目所需文档。那么文件的平均生产效率为:75870/1000/7/7/=1.5千字数/人/日,这明显不足于我们所预期的2.5千字数/人/日。这是因为我们还有其他很多文档并没有统计进去,例如小组的沟通,小组每周的会议记录,小组每周的总结,个人总结等。因此,如果包括所有的文档,估计能有3千字数/人/日左右。
因此我们的生产效率是能达到我们预期的要求的。
3 开发历程
从以上的开发成果看,这已经是一个完整的开发项目。这不同于课程的开发作业,也不同于科技创新项目,课程初期,礼平老师接受同学们的建议,结合同一学期着重技术讲解“软件开发实践”课程,提出共同完成同一个项目的观点,两门课程从不同的角度,即技术讲解和项目管理指导两个方面指导项目开发。这样大大减少了课程内容的重复和冲突,集中了同学的时间和精力,让我们更加具体细致地完成一个项目。
3.1 相关课程的结合,集中学生经历
随着学校对于学生动手能力的要求提高,每一门专业课程基本都要求学生开发一个小型项目以增加对于专业知识的了解。然而过多的课程导致了较大的项目压力,最后学院的同学们都不堪重负。实际上,学生一直在忙于完成各种不同的项目,并没有达到实际的学习效果。
因此,当我们对礼平老师的教育理念还没有理解时,我们只是觉得能够将有关的课程相结合,是多么令人开心的事情。
“软件项目开发实践”课程老师由浅入深地对我们所遇到的技术问题进行指导:“软件项目管理”课程随着软件生命周期的进行讲述不同阶段应该要采用的软件工程项目管理方法。
然而,这不只是两门课程的结合。在后期的软件测试课程中,我们再次将自己完成的系统作为测试对象,对其中重要的功能点采用一套完整的测试方案,对其进行测试评估。因为被测系统是由自己开发,在测试过程中,我们可以很顺利地对缺陷进行修复。
3.2 软件产品的开发生命周期同课程的结合
以软件开发周期作为课程的大环境,两位老师由浅入深,从需求分析开始,到设计、实现、测试和维护,一步一步带领我们进行开发。
这像是对所有课程的总结,其中包括编程的基础课程、Web开发的相关技术、软件工程的相关课程、项目管理。在这样一个短暂的不到两个月的时间内,我们实现了基础课程中的理论知识,我们重现各类开发和设计模型。在需求分析中,我们采用“面向对象”课程中的需求分析方法,力求通过标准的需求建模方法,明确系统功能和性能要求:在设计和开发过程中,我们采用迭代的开发方法,运用所学的Web开发课程和C#编程的内容;在测试阶段,我们采用软件测试课程中学到的测试策略,对每一个阶段的测试,运用有关的测试工具开展测试过程。
现在课程结束已经快一年了,但在后期的像“软件开发实习”这样的课程中,我们却总是不自觉地会将这次开发的经验作为我们开发的依据。通过这样一次完整的项目开发过程,我们了解了整个产品的开发周期,明确每个阶段应该完成的任务,熟悉各个阶段所可能遇到的问题以及应该采用的方法,甚至对于风险的估计都更加准确了。
3.3 老师的指导,我们前行的指明灯
摒弃了传统的教授方式,在礼平老师的教育理念指导下,我们开始走上讲台讲述自己所遇到的问题、采用的解决方法,老师让我们开展讨论,让我们团队内部或者不同团队之间共同交流来寻求解决方案。另一位“软件工程实践”课程教师,他采用问题驱动的教学方式,对我们不同开发阶段遇到的技术问题进行汇总统一,提供出可选的技术解决方案,不同的团队可以依据自己项目的特点采用合适的解决方案,并通过自学的方式了解该解决方案的技术细节,从而顺利解决问题。同时我们也了解到了相关其他解决方案适用的情景,让我们在今后的开发中“有法可依”。
在这场互动式的教学中,老师并没有因为学生的主动而减轻了工作压力,他们需要及时调整我们到合适的方向上,这得益于老师自身丰富的开发经验。礼平老师会在我们停滞不前的时候,建议我们应该先完 成一个静态Demo来帮助了解需求:在我们对项目计划感觉茫然的时候,他会拿出自己多年的开发经验告诉我们,应该如何在计划和开发上平衡时间;当我们对自身网站的特色定位不清楚的时候,他会让我们注重细节的完善而不是新颖的功能,让我们最终以一个稳定而完整的系统获胜。当初的我们甚至以为一个项目开发就是一次集体编写代码,然而老师却教会我们需要确定需求,将设计工作做得完整,实际的开发时间只需要两个星期,事实确实是如此,在严格的项目进度控制中,组员在两周之内竟然基本完成了系统功能。
就是这样,起初懵懂的我们对“项目”的过程完全不知所措,而现在,任何项目到我们手中,无论其采用的技术如何,无论其要求时间是多久,我们总能得心应手地为其制定开发计划并开展工作来实现它。这些知识在别人看来就像是与生俱来的,然而只有我们知道,正是通过了这样一次完整的开发过程,让软件工程领域的知识成为我们自己的“天赋”,随手拿来,即人们常说的“经验”。
在这个成长的过程中,老师并没有说,如果遇到了这样的问题,有多少伟大的人发明了多少模型我们可以采用,这种模型的构建过程是这样,那种模型的适用情况又是如何。若老师仅是这样用生硬的文字告诉我们,用我们做20年学生的经验来看,不出一个月这些知识就会模糊,不出半年这些知识又会变成新的知识。而在这一次的开发过程中,老师却像路标,告诉我们正确的方向,或者可能的路线,而其中探索的过程却是由我们来实现,前进的道路由我们自己来选择。我们变得习惯于独立思考,我们变得善于表达,我们开始熟悉这条成功之道。
3.4 综合性学习经验,我们最终的目标
获取知识(自学)、共享知识(团队工作)、应用知识(解决问题)、总结知识(创新)和传播知识(沟通)的能力,这是CDIO要求学生在基于项目的学习过程中需要得到的综合能力。
我们从不纠结于某一个技术问题,从不局限使用某一种开发模型,项目的内容也不限定,通过一次完整的项目开发过程,着眼于学生综合能力的提高,培养学生成为能够与国际接轨的高等工程师。
礼平老师强调我们要不断总结,并把这个过程运用到其他地方,不仅是软件产品的开发,从确定需求、制定计划、设计和实现的过程来看,我们可以将各种模型甚至运用到制定个人规划,还有那些需要考研的同学的考研计划中。在项目完成后,老师欣喜地翻阅每一位同学的心得体会。作为小组长我也看过组内每一位成员的总结,每个人的教训和经验都不尽相同,也许这就是我们学习的目的,每个人都能有所收获,从不同的角度,不同的领域培养不同的能力,收获不同的知识。
3.5课程考核,不仅仅是分数
与往常的课程考试不同,我们采用的考核方式是多样的,包括平时的讨论、组内的互评,答辩的结果和最终的产品质量。
平时讨论作为考核的内容之一,增加了平时课堂讨论的参与度,使得同学们更加积极地投入到课堂交流,为每一次的成果汇报作好充分的准备,积极主动地思考解决方案。
组内互评是我们的一大特色,我们采用礼平老师号称的“雷达图”来评定每一位成员在开发过程中的表现。这种评定方法通过不同方面评定每个人的能力,让每位成员能够更加清楚地认识自己,并依据其在组内的贡献作为评分依据,计算出组内互评的最终得分,“雷达图”示意图如图2所示。
答辩是最后的考验,我们为此做足了准备,甚至排练了多次。经过之前多次的中期检查,我们慢慢学着如何更好地展示和表达我们的成就,让老师和其他项目组在答辩的短暂十分钟之内看到我们的努力和优秀的产品。终期答辩推动着我们不断完善系统,因为考虑到老师要进行任何操作,提出各种疑问,所以我们从用户的角度考虑一切有可能出现的操作,尽可能地保证系统的实用性、便捷性和稳定性,这样大大提高了产品的质量。在后期的总结中,我们发现这样的方式运用到实际的产品开发中也是如此的有效,因为时刻从客户的角度考虑,是保证产品质量的重要因素。
正是这样的考核方式,不仅让我们学会如何有效表达、了解自己,更在一定程度上学会考虑如何成就一个成功的项目。
3.6 团队合作,我们最宝贵的经验
人际交往技能即团队协作和交流,是CDIO工程教育模式所提倡的应该培养学生的技能。对我们来说,团队培养的协作关系是我们宝贵的财富,团队合作也成为我们最宝贵的经验。
为了能够顺利完成每个阶段的计划,我们的小组成员常在一起整合到凌晨,为问题开会讨论好几个小时,我们会将设计制定的细致再细致,只为其他队员能够减少理解时间。当然,因为我们性格各异,所以也会对他人的行事风格不理解,也会出现推脱责任的时候,也有不能达成一致意见而发生争执的时候。可是因为大家有共同的目标,抱着对项目负责的态度,我们逐渐建立起默契,渐渐开始为对方考虑。每个小组成员都很细致地对待自己负责开发的模块,尽量减少出现缺陷,避免其他功能的开发遭到停滞或者增加整合人员的工作量。
很多人都知道,团队合作会保证项目的顺利进行,减少项目风险,构建一种良好的团队氛围,而对于我们来说,团队合作更让我们关注自己的工作,在很大程度上保证了产品开发的质量。通过团队开发的方式,让我们在开发过程发现协作的意义,更让我们收获了友谊。
4 CDIO之我见
礼平老师的课堂带给我们收获和成果,作为软件学院的学生,作为CDIO工程教育理念的受益者,我们有自己的理解和感受。
在有限的大学4年教育中,我们希望自己能够承受一定的压力并收获有用的知识,能让我们在未来的职业领域有所发展。同时我们了解,作为工科学生,工程实践经验尤为重要,而从小学到中学,理论为主的教学模式让我们深感自己经验不足,动手能力不强,对于实际的公司项目更是束手无策。成为社会肯定的具有良好综合素质的毕业生,这是我们对自身的要求,也是我们对于学校教育的期望。
关键词:工程教育;实训模式;工程应用型人才
作者简介:覃庆伟(1969-),男,广西藤县人,仲恺农业工程学院信息科学与技术学院,高级工程师;覃毅(1974-),男,四川遂宁人,仲恺农业工程学院信息科学与技术学院,工程师。(广东 广州 510225)
基金项目:本文系广东省高教厅计算机科学与技术特色专业建设(项目编号:k1111895)、广东省高教厅网络工程人才培养创新实验区项目的研究成果。
中图分类号:G642.44 文献标识码:A 文章编号:1007-0079(2013)16-0159-02
中国的经济快速增长,需要大量的工程技术人才。高校每年有600多万毕业生,有许多学生找不到工作,而企业却抱怨招不到适用的人才;学生对社会上资费不菲的考证技能培训趋之若鹜,却对高校开设的课程兴趣不高。这种反差说明,传统的高校课程设置和培养模式与市场对人才技能的要求脱节,造成学生工程实操能力不强。为解决这一矛盾,国际工程教育合作组织于2004年制定了CDIO工程教育标准,我国教育部也于2010年6月实施了“卓越工程师教育培养计划”,两者都强调通过高校与企业的合作培养出具有创新精神和实践能力的工程师,以满足社会与经济发展方式转变对各类高素质工程人才的需求。但是在操作层面,校企合作谈何容易。一是由于竞争剧烈,为降低培训成本,企业都希望招聘到具有一定工程能力又掌握行业主流技术、能胜任团队工作的员工。但是按照传统的高校体制及人才培养模式,难以让学生掌握自成体系又不过时落后的专业知识;况且学校也无法提供类似企业的软、硬件环境和真实的工程项目,工程能力的培养难以落到实处。二是考虑到工程项目的工期、质量、场地设备成本及售后服务等多方面的因素,尤其是出于对核心技术及客户资料保密考虑,企业无法接纳大量的学生系统地进行工程项目的实践。
一、工程实训模式改革探讨
在探讨工程实训之前,首先要明确工程项目与传统教学科研案例的根本区别在于:工程项目是按照工业标准、技术规范及市场需求设计、制造出产品,强调产品的服务理念及成本控制意识,要求产品性价比高、在市场上有竞争力;而传统教学科研案例仅是原理验证或过程演示,只是说明某种技术而已,根本没有产品的概念,自然就不用关心技术落后与否,容易让学生毕业时感觉在大学没有学到实用的知识。这就要求在推行工程教育时,需要创新校企合作思路,改革实训模式——通过校企合作,利用企业真实的工程项目,培训教师而不是学生;然后在校内搭建类似企业软硬件环境,建立相应的工程实训体系,通过教师对学生进行工程项目的训练,培养学生的工程能力,以满足企业需求。
为此,需要按照工程能力的要求对教学要素进行系统规划与设计,对包括培养方案、课程体系、教学计划、教学方法、教材选择、实践教学体系与内容、实训室建设等诸多方面进行配套改革;需要按照工程理念,构建提供教学实训内容和环境支持的“工程实训平台”,并引入工程建设中的监理机制,配套建设“实训管理平台”,为保证实训质量提供监控手段。
1.工程实训平台建设
实训平台的建设目的是建设、管理大量的实训体系资源,为实训教学提供环境、过程支持和实训内容。平台建设包括类似企业的真实软硬件环境搭建和实训资源建设两大内容。前者提供环境支持,后者为工程教育提供实训内容和过程支持,为实训平台建设的重点。
按照学科的教学规律,实训过程可分为三个循序渐进阶段:工程知识学习阶段;工程技术训练阶段;工程项目实训阶段。各阶段对平台建设的要求分别为:
(1)工程知识学习阶段:目的是在工程技术训练前学习相关工程知识,建立系统的知识体系,明确各部分知识在整个体系中的位置及作用,掌握各部分知识的难点、重点。为此需按学科专业方向建设包括课程体系、教学大纲、学习资料、难点重点训练案例、测试及考试题库,以及能将所学知识有机联系起来的综合实例资料及参考设计等。
(2)工程技术训练阶段:目的是在学习工程知识的基础上,通过独立完成小型项目开发,训练工程项目开发所用技术,掌握开发工具的使用方法及技巧;熟悉技术标准细节,熟悉工程项目的设计、开发方法,以此来培养工程技术能力。为此需要建设按照不同课程、不同方向、不同技术实现的小型项目,收集、整理项目开发技术规范,编写开发文档、参考资料、标准手册等,为进行真实工程项目开发打下基础。
(3)工程项目实训阶段:目的是通过真实工程项目的开发,让学生学会市场调研方法、学会编写市场需求分析报告;学会查阅相应的工业标准及产品性能、技术要求,熟悉项目开发所用的技术、手段与方法;熟悉项目开发流程,理解项目管理的基本理念,锻炼团队的协作能力,从而积累项目开发经验,培养工程素质和能力;掌握项目开发的主流技术,拉近与用人需求的距离。为此,需要导入不同业务背景的真实工程项目,按工程理念和产品要求进行项目的需求整理、开发流程整理、开发用例整理、开发文档整理,实现方法、技术的对比整理,以便在学生独立完成所负责的分项目后进行参考、对照,发现、改进不足,也便于教师在指导学生的过程中进行参考查阅。实训平台的使用可分为课程实训和工程项目实训两个层次。
课程实训层次主要是针对课程体系中的各门课程,实现对课程教学资源的系统化管理及案例教学过程的管理,学生通过查看课程的教学大纲、章节的主要内容、课程的重点难点、多媒体课件等进行课程的学习,通过完成教师分配的作业、练习案例、实验操作、课程设计等任务,掌握课程知识,训练工程技术。可见,课程实训层次涵盖了工程知识学习和工程技术训练两个阶段,对这两个阶段的平台建设有明确且具体的要求。
工程项目实训层次主要是针对学生的学科专业,实现工程知识及技术的系统集成。要求按照行业的相关技术标准,实现对项目开发过程的全程管理及监控;参照企业实际项目管理过程,按需求分析、规划设计、开发建设、项目调试、验收总结五个阶段进行管理。学生可以通过平台了解项目团队的成员情况、项目开发计划、各阶段需完成的任务、小组成员的任务完成情况,并提交工作日报、项目会议纪要、项目调试结果、项目总结及实训调查等文档;教师可以通过平台进行项目、人员分组,开发设计计划,并按阶段开放项目资源,审阅工作日报及各项目组会议纪要,审阅设计方案,上传个性化学习资料、调查问卷,查看各项目组完成情况及修改情况等。
实训平台的建设是动态的,必须定时更新知识体系及工程项目内容,以跟上工程技术的发展步伐,确保培养出的学生能掌握主流技术,满足岗位技能需求。
2.实训管理平台建设
为确保实训平台在工程教育中的使用效果,达到大规模培养工程人才的目的,有必要引进工程项目建设中的监理机制,建设相应的管理平台,为实训提供质量监控手段。为此,需要教师通过校企合作,参与工程项目开发,再通过研究及教学实践,总结、提炼出一套实训教学的教学方法及管理文档,具体包括《实训教学安排》、《教师实训手册》、《实训教学方法》、《学生实训跟踪表》、《实训要求及管理办法》、《实训反馈表》、《实训考评办法》等一系列教学支持文件,以统一实训教学方法,规范实训教学考评及学生能力鉴定标准,为实训质量提供监控和保证手段。
二、实训模式的应用
为了达到实训目的,需要把四年大学教育纳入整个实训体系来通盘考虑。建议采用“3+1”教学模式,在前3年进行基础理论、专业基础及专业课程的教学,进行课程实训层次的工程技术训练,并且在大二第二学期结束前引入导师制,让学生在导师指导下结合自己的兴趣有针对性地选修专业课程;在最后1年采用项目实训与毕业设计相结合的方式,学生用近一年的时间进行实际工程项目开发训练,使学生到毕业时能基本掌握行业主流技术,并积累相关工作经验,以满足用人单位的岗位技能要求。
1.教学组织
课程实训层次:在前3年的基础理论及专业课程的教学中按课程来组织实施。
工程项目实训层次:在大三的暑假里,学生进行市场调研编写需求分析,提出项目实训方向申请。实训分为基础知识测试、实训前专业培训、项目实训、实训总结四个阶段,项目实训流程及阶段内容见图1。每个阶段要求学生提交相关文档,以对学生进行阶段考核。
2.教学管理
在项目实训阶段,整体仿照公司模式进行管理,学生以项目组的形式进行学习和开发训练。指导教师作为项目经理,指导学生进行项目开发,要求学生把每日项目完成情况以及遇到的问题以项目日报的形式进行总结提交,由指导教师批阅并给出指导意见。项目按需要划分项目小组,每小组设有组长,负责本组项目实施,并协助教师帮助解决学生项目开发过程中遇到的一些简单问题。每位组员定期轮流担任组长,以锻炼其项目管理能力;每日、每周组长召集小组成员认真总结研究当日、当周出现的问题,集体讨论、确定解决方案,采取措施,保证项目的顺利实施,以锻炼团队协作能力。
3.师资培养
实训模式改革要求教师具有丰富的工程实践经验。为解决教师普遍缺乏工程经验这一迫切问题,可以考虑采取“走出去”和“引进来”两种方式,“走出去”就是学校直接派教师到相关企业锻炼一段时间,参与整个工程项目的开发;“引进来”就是直接从企业招聘具有高学历、高职称的工程技术人员充实到教师队伍中。教师工程能力的提高,可以促进教师对人才培养方案、课程体系设置、课程内容等改革的思考,为大规模工程教育的开展提供保障。
三、总结与展望
进行实训模式改革,通过校企合作,以现实的工程项目培训教师;在高校内搭建类似企业的软硬件环境,再由教师对学生进行工程项目开发能力的训练,是解决学生大规模工程实践的切实可行的办法和有效手段。
参考文献:
[1]顾佩华,沈民奋,李升平,等.从CDIO到EIP-CDIO——汕头大学工程教育与人才培养模式探索[J].高等工程教育研究,2008,(1):12-20.
假如用两个字概括当前社会的特征,那就是“变化”,而这种变化在信息产业中体现得尤为突出,技术创新速度越来越快,用户需求和市场不断变化,人员流动也大大加快。在这种环境下,企业需要应对的变化以及由此带来的挑战大大增加,也给管理带来了很多新问题和挑战。软件行业是一个极具挑战性和创造性的新行业,管理上没有成熟的经验可供借鉴。而项目管理应该说对于软件企业,尤其是那些以应用开发为主的软件企业,是行之有效的管理方法。因此,项目管理在软件开发中的应用日益受到重视。
项目管理的两个新问题
1、什么是项目管理?
项目管理是在一定的约束条件下,以高效率地实现项目业主的目标为目
的,以项目经理个人负责制为基础和以项目为独立实体进行经济核算,并按照项目内在的逻辑规律进行有效的计划、组织、协调、控制的系统管理活动。
2、为什么要有项目管理?
没有项目管理,项目也有可能成功。但没有管理的项目,很难保证项目
的利润空间,对公司来说,亏损的风险就大。所以我们要有项目管理,以保证公司在总体上是盈利的,注重不是每一个项目都要盈利。
另外,有了项目管理,就有了管理改进的基础,无论刚开始的项目管理多么糟糕,只要有管理,就有了改进的可能性,至于能不能得到改进,以及改进的快慢,则取决于两个因素摘要:一个是人,非凡是各级管理者;另一个是利益。关键是“利益”,准确的说是“利益的分配”,在权责利明确的前提下,人才能充分的发挥功能。还需要指出的是“利益”是多元的,这里的多元不仅指利益的具体形式,而且指利益的受众是多元的,包括客户方相关人员个人的利益。
3、项目管理的发展和目前状况。
今天,项目管理作为一种现代化管理方式在国际上已获得了广泛的应用,从最初的国防、航天、建设工程领域,迅速发展到电子、通信、计算机、软件开发、金融等行业以及政府机关的项目管理工作。随着计算机、网络系统的迅速发展,项目管理技术的不断进步,项目管理软件产品层出不穷,其功能、特征、应用对象也各不相同。当前,越来越多的企业和组织在内部推广项目管理的理论方法及管理模式,假如都采用项目管理软件进行管理,效果就更加明显,可以节省大量的资源和财富。国外90%26#37;以上的项目管理都采用软件进行,但我国在这方面的应用还不到10%26#37;。新世纪项目管理在中国的迅速兴起,给软件企业的发展带来了前所未有的发展机遇。
项目管理在软件开发中的应用的成因
随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。同时,随着软件开发规模及开发队伍的逐渐增大,软件开发不再是向过去那样一二个开发人员即可解决的事情。迫切需要一种开发规范来规范每个开发人员、测试人员和支持人员的工作,每个项目组成员按约定的规则准时完成自己的工作。同时采用规范化管理,专业分工也可以降低对开发人员的要求,从而降低产品研发成本。
软件开发是一项复杂的系统工程,牵涉到各方面的因素,实际工作中,经常会出现各种各样的新问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。
早在20世纪60年代中期,人们就发现软件的生产出现了“新问题”,主要表现在生产过程不规范,缺乏管理。后来,人们在软件工程方法学中引入了工程的概念、原理、技术和方法,这种思想在一定程度上解决了软件生产过程中碰到的新问题。但是直至80年代还是没有提出一套管理软件开发的通用原则,软件管理不善的新问题依旧在大范围内存在。
目前的软件开发正逐步趋向于复杂化、多元化,大多数开发团队中都会出现同时开发多个版本、开发/维护工作并存、多地点同时开发等情况,给软件开发管理带来了前所未有的困难。假如管理不善,必将造成版本混乱,各个开发人员的工作相互交叉、干扰,整个开发团队的工作在一种无秩序的不良状况下运行,严重影响软件产品开发的进度和质量。
因此,随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。而项目管理技术的发展和计算机技术的发展是密不可分的,随着计算机性能的迅速提高,大量的项目管理软件涌现出来。它们可以用于各种商业活动,提供便于操作的图形界面,帮助用户制定任务、管理资源、进行成本预算、跟踪项目进度等。
软件项目管理常见新问题及解决方案
对于软件开发项目中,经常出现两种极端情况,一种是创造了新的生产率和质量的纪录;一种则完全是一场灾难,不是被取消就是拖延很长时间。前者如在很短的时间内,为了赶进度,在几乎不可能的时间内开发出一套软件产品,创造了软件开发的记录,满足了上级所要求的上机日期,由于开发时间太短,过于仓促,上机时,新问题百出,试运行时间长达几个月或一年半载的,而且程序一改再改,维护工作量大。
后者,如某套系统未弄清楚需求,或因设计新问题,开发失败。通过提炼这些成功和失败的例子,软件项目成功或失败的根本原因可能会更清楚一些。
目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成适合自己公司特征的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制新问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。
分析目前项目管理需要改进的新问题可以从几种相关角色的角度去考虑摘要:项目经理、项目组成员、公司管理人员、市场人员、客户等。
新问题一摘要:缺乏项目管理系统培训(相关对象摘要:项目经理、管理人员)
项目经理在项目管理方面的培训较少或不够系统。项目经理或管理人员不了解项目管理的知识体系和一些常用工具和方法,所以在实际工作中没有项目管理知识的指导,完全依靠个人现有的知识技能,管理工作的随意性、盲目性比较大。在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理(甚至很少是管理专业的),被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面非凡是项目管理方面的知识比较缺乏。
解决方案摘要:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识和实践,再加上项目管理知识和实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。应实行项目经理知识技能资格考核制度,让项目经理自觉补充学习项目管理的知识和一些常用工具和方法。
新问题二摘要:项目计划意识新问题(相关对象摘要:项目经理)
项目经理对总体计划、阶段计划的功能熟悉不足。项目经理认为计划不如变化快,项目中也有很多不确定的因素,做计划是走过场,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划和控制管理脱节,无法进行有效的进度控制管理。没有计划或者是随意的不负责任的计划的项目是一种无法控制的项目。
解决方案摘要:在高技术行业,日新月异是主要特征,因此计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关各种知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。
新问题
三、管理意识新问题(相关对象摘要:项目经理)
部分项目经理没有意识到自己项目经理的角色,从总体上去把握管理整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。在软件企业中,项目经理大多是技术骨干,技术方面的知识比较深厚,但无论是项目管理知识,还是项目管理必备的技能、项目管理必备的素质都有待补充和提高,项目管理经验也有待丰富。有些项目经理对于一些不服管理的技术人员,没有较好的管理方法,工作不好布置的工作只好自己做。另外由于工作分解结构设计的合理性,项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。
解决方案摘要:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,非凡是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。
新问题四摘要:沟通意识新问题(相关人员摘要:项目经理、项目组成员)
在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术新问题或成果等方面和相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失;有些人没有天天定时收邮件的习惯,以至于无法及时接收最新的信息。
解决方案摘要:制定有效的沟通制度和沟通机制,对由于缺乏沟通而造成的事件进行通报作为教训提醒,以提高沟通意识;沟通方式应根据内容而多样化,讲究有效率的沟通;通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于非凡重要的内容要采用多种方式进行有效沟通以确保传达到位,例如除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。
新问题五摘要:风险管理意识新问题(相关人员摘要:项目经理)
项目经理没有充分分析可能的风险,对付风险的策略考虑比较简单。项目经理在做项目规划时经常没有做专门的风险管理计划文档,而是合并在项目计划书中。有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的策略,对于后面的风险防范起不到什么指导功能。
解决方案摘要:通过学习项目管理知识把握风险识别、量化、策略探究、反应控制的工具和方法把握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其策略作为风险管理计划中必要的风险内容,并切实评估相应策略的有效性和可行性。
新问题六摘要:不重视项目经验的总结(相关人员摘要:项目经理、管理人员)
项目经理在项目结束时有些是因为自身对写文档工作的喜好或意识,或
者是因为紧接着要参加下一个项目,总体对项目总结的重视程度不够。有些是项目总结报告一再拖延,有些是交上来的报告质量较低,敷衍了事。
解决方案摘要:在制度上鼓励和加强项目经验总结工作,使得项目总结及时并且具有指导意义而不是走过场。
新问题七摘要:项目干系人相关新问题(相关人员摘要:项目经理、项目成员、客户)
在范围识别阶段,项目组对客户的整体组织结构、有关人员及其关系、
工作职责等没有足够了解以致于无法得到完整需求或最终经权威用户代表确认的需求。由于项目经理的工作新问题,客户参和程度部不高,客户方相关责任人不明确或对范围和要求责任心不强,提出的要求具有随意性,项目前期对需求的确认不够积极;或者是多个用户代表各说各话、昨是今非但同时又要求项目尽早交付;项目后期需求变化随意,造成项目范围的蔓延,进度的拖延,成本的扩大。
解决方案摘要:项目的目的就是实现项目干系人的需求和愿望。项目干系人管理应当从项目的启动开始,项目经理及其项目成员就要分清项目干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。
新问题八摘要:项目团队内分工协作新问题(相关人员摘要:项目经理、项目成员)
项目团队内部有时由于各阶段不同角色或同阶段不同角色之间的责任
分工不够清楚而造成工作互相推诿、责任互相推卸的现象,有时各阶段不同角色或同阶段不同角色之间的责任分工比较清楚但是各项目成员只顾完成自己那部分任务、不愿意和他人协作。这些现象或多或少地造成了项目团队内部资源的损耗,从而影响了项目的进展。
解决方案摘要:项目经理应当对项目成员的责任进行合理的分配并清楚地说明,同时应强调不同分工、不同环节的成员应当相互协作,共同完善。
【关键词】手机软件设计 软件快速重建模式 软件项目过程 软件质量
1 软件需求继承性的管理
对于目前的手机设计公司来说承接的业务大多数是需求有继承性的项目,对于需求的差异性很大,开发需求很复杂且之前不是很有积累的需求,无论是手机设计方案商还是手机制造商来说都是很谨慎的。大家对于这里的风险意识都是一样的强烈。所以一般情况下手机设计公司承接的都是有软件需求可以继承之前有积累的项目。而对于这些需求的继承性的管理是快速实现这些需求的软件项目的关键。如何实现这些软件需求的高效继承使用呢?
1.1 使用合适的软件项目版本管理工具
软件项目的版本管理工具中CVS, Git, Repo等都可以用来管理手机软件项目的开发过程。其中Git和Repo是用于多方合作的分布式版本控制系统,它就适合于类似目前的智能手机开发管理的现状。这里涉及手机硬件平台的方案提供商,手机软件提供商,还有手机设计公司共同开发一个项目。关键是Git 和Repo能够方便的实现各种需求在软件版本上的继承和快速的合入。一般Git和Repo上会建有主线(master)工程,这里主要是平台的基础内容,各种软件平台上开发出的新内容都往上添加,是平台发展的基础。当然主线上的内容由于来自各种开发的新内容的导入,往往存在有各种问题,而且主线是实时被更新,也来不及测试它的稳定性。鉴于上述的状况一般真正要实现的项目都是在一定状态的主线上建立起来的分支进行单独管理的,对于分支(branch)上的管理是需要软件项目负责人(SPL)来管控的。SPL(Software Project Leader)对于开发(包括MMI和Driver )的工作成果,根据各个项目的需求点对点地合入各自项目的分支,如:用Git指令git cherry-pick。每种不同的软件需求,这里主要是指人机交互(MMI)上的功能需求,在某个平台上有了一个完整的需求功能分支,并且这个分支的软件产品已经量产且被市场认可验证过,那么后续相似的项目都可以用来继承该分支。那么越是后来的项目越是能继承之前项目的成果,它实现的过程就能更加的快捷和可靠,实现软件的复用。
1.2 对于需求和共性Bug建立良好的文档管理机制
对于需求的继承光有版本管理工具的分支管理是不够的,毕竟管理工具上记录的每条提交记录(Commit Infomation)都是离散的,同时由于提交时的不谨慎,可能导致相同功能模块的多次提交,这样就要求SPL(Software Project Leader)在合入时要清晰了解合入的顺序和具体的Commit ID信息。所以有一份详细的功能合入文档信息就很有必要了。文档里需要记录的内容有:
(1)需求或者Bug的详细描述,需求和Bug在他们各自管理系统里的信息记录。
(2)Bug处理责任人的信息。
(3)对应修改所涉及的makefile里的宏控制信息。
(4)提到到软件管理工具(Git)的Git log信息,按提交顺序记录。这里的信息要具体到文件和其目录。
(5)简单描述修改处理的方法。
这样的信息要根据不同的需求分别建立起来,开发人员要在对应的文档里更新迭代。上面提到的Bug主要是共性Bug。
1.3 需求共性Bug核对自动化点检机制
运用脚本工具在软件编译前对一些关键需求和重要共性Bug的合入情况做自动化的点检工作,在编译的初期就对相关内容在整个软件工程里的配置情况进行自动化点检。如果软件配置有问题就可以在编译开始时就被检查出来,让SPL尽早发现和修改。这里就需要前面的文档管理工作做的好一些,既可以作为记录让那个项目参与人员查阅,同时也要适合自动化点检工具用来查询比较使用。这里可以被自动化工具用来点检的项有:
(1)平台的共性bug;
(2)硬件资源的配置状态如:PCM(phase change memory),G-sensor;
(3)平台共性修改需求,如:YunOS系统验收规则。
1.4 对于不同项目间进行需求分析,准确判断之间的继承性关系
要让上面3点发挥作用,首先要对于需求之间是否有继承性要有精准的判断。对于同一个客户的需求往往判断其继承性很容易,因为同一个客户他们的某个需求在不同项目间会有继承。但是对于不同客户之间的需求往往也存在的很大的相似性,那么如果能准确找出从一个合适的成熟量产项目的分支上进行继承做,自然也会事半功倍。当然并非说成熟量产项目就一定没有问题,如果主线(master)上确认有很重要的内容需要合入分支,那也是要在各个项目分支上实时合入的。比如MTK或者Spreadtrum释放的重要平台patch等。这也可以用类似被上面第1.2点提到的文档进行管理的。需求的共性特性需要前方的客户经理来主导判断,因为他们更熟悉客户需求,后端的SPL当然是这个继承行为的实施者。
2 项目系统配置和驱动配置的敏捷切换
实践当中项目部门在立项过程中有意识的做一些固定的切换来适应市场的需要,比如软件需求基本不变的情况下引导客户做手机频道的切换,比如从TDD的三模(如表1)切换成五模(如表2)或者6模(全网通)。
对于这样项目的切换,如果总是从方案商提供的默认的频段配置方式出发来配置工程,那么对于一个三模切换到五模的项目总是要从五模配置的方案商提供的Release参考makefile和工程目录配置方式出发,那么原来三模配置项目中的makefile里的关于软件项目的配置选项,比如宏,比如工程目标目录里的配置项涉及到该客户的软件需求的都要移植过来,当然就还要在重新测试需求。因为这个过程中需求相当于重新移植配置。这个过程对于一个项目来说本身无可厚非,但是对于敏捷实现一个项目来说,它不但当SPL重新移植了客户需求,同时增加了客户需求测试点检的需要,从整体上讲这种重建工程的方式对于该项目的重建的成本投入就很高了。如果换种思路,如果开发中的驱动工程师能从根本上就总结好从三模的项目配置改成五模的项目配置过程中需要修改的配置项,只要总结好一次且验证OK的情况下,下一次配置的时候就能轻松重建,这样的总结对于不断有这种项目切换的项目团队来说是很有益处的。它使得项目重建过程更为简单且引入的问题控制在一个范围里。即便真有频段配置的问题项目团队也能清晰知道问题所在的范围。如果过分坚持驱动工作的流程就是要从方案Release状态的五模参考配置方式出发,虽然从驱动工作的角度出发,可能提高的配置的正确性,但是对于整体项目的推进却是添加了阻力的。相反针对项目需要敏捷切换的显示做一些系统配置工作的方式切换却可以使得原来三模项目的客户需求修改被更好的被继承,同时测试的反复缺失需求也可以不那么必要了,整体上来说就有进度推进的优势,而对于驱动本身来说,只要做一次这样的认真切换工作的研究,下一次也是可以很快的重建这个过程,所需要的只是一次认真的总结。这种各种需求的来回切换需要不同的支持不能综合考虑支持,尽量从整体项目进度推进的角度出发来综合考虑问题,而不是单个从某项工作的角度的出来来判断这样做是否合理。即便需要某项工作做一些较难的整理总结,但是对于后续项目切换过程中能给更多的项目带来便利的话,这样的总结也是应该去做的。
3 对于有需求继承性的项目快速重建过程中配套的软件测试策略的改进
对于这种继承性很强的项目来说,如果项目本身确实是有效继承于一个成熟的量产项目。针对这样项目的测试流程也应该和普通项目的流程不一样。首先针对这样的项目应该在前期先要安排这个项目的客户需求的逐项点检确认,看看需求是不是继继承好。一旦项目继承前面的需求分支后,出的初期软件就应该可以点检了,测试部门应该在之前做项目的时候可以对于项目的需求做好测试文档记录规律工作,对于已经做过的共性需求记录好点检的测试案例,后面找测试工程师点检需求的时候可以快速的根据之前的记录进行点检,设置可以开发自动化测试工具来点检。同时需求确认后就可以判断验证已知的平台共性Bug的合入修改情况。如果这两点能在测试首轮就确认好,软件质量的基调就能定下来了。当然如果项目的器件做了切换,也要尽早确认器件的功能性测试,也可以适当关注这些的性能表现。如果第一轮的这些测试都做好且效果OK,当然即便有一些问题,也能让软件团队尽早先修改继承需求过程中产生的问题。也可以把器件的问题也在较早的时间段就发现出来。这样的软件基本也可以和客户一起同步测试了。客户拿到的软件感觉继承性较好的话,对于软件开发的进程也会较有信心。第二轮的时候选着适当的测试强度的固有测试用例跟进这个项目的软件测试。如果机器数量可观且状态良好的情况下可以尽早安排模拟终端用户使用的alpha测试。这样的模拟能找到正常测试案例里找不到的问题,同时客户也是更多的偏向于这种方式发现问题的。
4 总结
为了做到手机软件项目的有效继承需求,快速实现衍生项目的工程重建。要在以下各个方面做了些努力:
(1)做好软件项目需求继承性的管理工作,对于有继承性的项目要做好软件版本分支管理,Bug管理,共性需求分析工作。开发使用一下自动化检查工具来实现共性需求和Bug的合入情况的检查。
(2)同时对于重建概率加高的一些开l需求做一些总结整理,确认整理的内容有效后可以使得后续项目对于这些需求在SPL的需求分支上复现的过程可以快捷高效。
(3)配合这种需求继承性强的项目以合适的测试流程。从需求继承和Bug修改继承出发,先验证已知的问题和需求的继承情况,再确认系统稳定性的测试策略。
通过上述环节综合作用使得项目的进度能快速推进并且项目质量也能得到一定的保证。
参考文献
[1]萨默维尔著;程成等译.软件工程(原书第9版)[M].北京:机械工业出版社,2011(04):144-146.
[2]Leszek A.Maciaszek著;马素霞,王素琴,谢萍等译.需求分析与系统设计[M].北京:机械工业出版社,2009(05):60-61.
[3]杨芙清,梅宏,李克勤.软件复用与软件构件技术[J].电子学报,1999,27(02):68-75.
作者简介
严王君 (1981)男,大学本科学历。学士学位。中级工程师,软件集成主管。主要研究方向为嵌入式系统软件MMI开发,软件系统集成。
2012年已过去,在过去的一年中,我担任公司开发部的一名软件工程师,主要从事着JAVA项目的开发工作,这一年来我低调努力工作着,不求闪亮显眼和光芒四射,只为平静和淡定;这一年中所做的成绩如下:
一、财政局项目,本人独立负责开发会计处的三个子系统:
1、厦门市会计人员信用查询系统。
2、厦门市记账机构信用查询系统。
3、厦门市会计人员网上报备系统。
以上三个子系统上线后,方便了社会各界查验会计人员的真实信息、方便了查询合法的记账机构信息,以及方便了各单位对会计人员的报备。
二、餐饮行业项目,在团队开发项目中直接参与了豪享来餐饮有限公司总部的信息综合管理平台项目,主要负责的系统有:
1、房屋租赁合同管理系统。
2、短信收发管理系统。
3、会员管理系统。
4、基础信息管理系统和人事管理系统的部分功能模块。
系统应用后,豪享来在管理全国各门店房屋租赁合同上,一定程度上提高了管理效率,并且及时有效提供了相应预警信息;短信收发系统方便了总部及时传递各项信息;会员系统更好的管理全国各门店的会员信息;人事系统在管理中减少工作量等。
三、金融行业项目,我参与了中国银行厦门分行,企业转账管理系统中的部分模块开发。本系统方便了企业快速实现大量和复杂的转账工作。
四、国土资源与房产管理局项目,正在负责和开发的是住房货币化补贴网上申报审核系统。本项目采用了新技术,使界面更加大方美观,很大程度上改善人机交互平台的效果。