项⽬经验教训总结(教育软件)
今年主要做的项⽬已经验收通过,做了⼀些经验教训的总结,记录于此:
⼀、项⽬的描述
这个项⽬是⼀款院校的实验室软件,因牵涉到⼏个因素:政府拨款、新学院和新专业的设⽴、市场是的新产品,所以备受关注,各⽅领导都很重视。项⽬规模46⼈⽉,按照CMMI3的流程开发。
⼆、在项⽬中的⼯作
1.    需求的收集、需求分析;
2.    制定项⽬进度计划,控制项⽬进度;
3.    架构设计、系统设计、技术可⾏性研究、搭建开发框架、设计数据库;
4.    组建团队、管理项⽬团队,团队技能培训;
5.    核⼼功能编码开发;
6.    项⽬⼯作分配,开发⼯作指导,Code-review;
7.    跨部门⼯作沟通协调(数据采集、UED设计、系统测试);
8.    项⽬⽂档编制;
9.    项⽬信息发布,绩效报告;
10.    项⽬验收⼯作及发布⼯作跟进。
三、经验教训
1、    需求和范围
我总结的教育⾏业的软件有以下特点:
(1)客户⼀般不会提出详细的需求和范围;jquery在项目里是干啥的
(2)    需要⾛在⾏业的前沿,在能够提供教学辅助的同时也希望能够作为科研的⼯具;
(3)    市场上⼀般没有同样或者同类的产品可供参考;
正因为我们这个项⽬有以上这些特点,所以在前期收集需求和进⾏设计的时候⽐较艰难,客户和我们
对要做的东西都没有清晰的认识,都不知道需要哪些功能,界⾯应该是怎么样;后⾯我们通过对⽅案的理解,开发出系统的雏形(不仅仅是原型,因为这个雏形已经包括了基本的功能实现了),和⽼师进⾏讨论确认;然后回来后边开发边设计,系统需求渐进明细,最终这个系统才成型,当然中间也经历过数次的重复开发。
最值得⼀提的是,因为前期对数据采集的难度和规模估算的不充分,导致了系统功能做了⼤的调整。延误了⼀些⼯期。
2、系统架构设计⽅⾯
系统数据访问层采⽤了的公司其他部门开发的框架,这个框架较常⽤的框架区别较⼤,也不是很成熟和完善(没有数据缓存)。尤其是开发⼈员对框架的理解和使⽤有些难度。所以在开发过程中出现了⼀些问题,甚⾄没有利⽤好这个框架的⼀些优点。例如,代码中出现了不少重复类似的取数据的⽅法,⼤量的SQL语句(没有合理利⽤⽅法的参数和⽅法重载)。以及⼤部分采⽤的DataSet的返回类型,没有利⽤好系统模型(Model)
页⾯布局采⽤了EASY UI的jQuery框架,总体效果还是⽐较好,⼤⼤的缩短了页⾯布局的开发时间。另⼀⽅⾯,因为使⽤了这个框架对系统的加载时间和页⾯的灵活性产⽣了⼀些消极影响。
3、 编码⽅⾯
系统⼤量使⽤jQuery和Google Map API开发,通过这个项⽬,开发⼈员在ASP.NET、C#、jQuery、Google Map API、数据库等各⽅⾯都有较⼤的进步。以及在团队协作,代码版本控制等⽅⾯都有较⼤的提升。
但是,在C#⾼级语⾔的⾼级功能(⽐如泛型、LinQ)使⽤,jQuery和SQL语句编写,以及代码组织的细节处理,以及对执⾏性能的考虑上还有很⼤的提升空间,对语⾔的处理机制的理解上有待更⼀步加强。
4、团队协作,团队建设
(1)沟通:在沟通⽅⾯总体效果⽐较不错,尤其是开发团队的内部沟通交流,团队成员之间的沟通积极性很⾼,相处的也很融洽和睦。跨部门的沟通也还⾏。可能在跟⾼级管理层⽅⾯的汇报沟通⽅⾯做得不是很到位。需要进⼀步改进。
(2)培训:培训⼯作在整个项⽬阶段⼀直在开展,效果也⽐较好,在很⼤程度上调度了团队成员学习和分享的积极性。但是由于场地和时间的约束,在培训的系统化和深⼊程度⽅⾯不是很理想。
(3)冲突:整个项⽬没有发⽣⼤的冲突,合理的冲突也都通过⾯对⾯的⽅式解决了。
需要认识⼀点,冲突是⽆法避免的,是正常的,它迫使我们寻不同的解决⽅案;冲突的处理有很多
种⽅式,作为项⽬经理,我应该掌握合适的解决冲突的⽅法和风格。,
(4)    团队建设活动、激励:在这⽅⾯的⼯作做得还不到位,需要重视和加强。
5、    进度计划制定,进度控制
⼀⽅⾯前期的设计⼯作不完整,系统开发采⽤迭代式的开发模式,很多设计采⽤的渐进明细的⽅式,所以对项⽬⼯作分解结构(WBS)的分解不充分,很多项⽬⼯作没有考虑到。
另⼀⽅⾯项⽬时间进度的规划上,没有合理估算系统测试和项⽬验收的时间。
6、    项⽬⼲系⼈管理
所谓项⽬⼲系⼈就是受项⽬影响的⼈员和组织,对于我们的项⽬,⼲系⼈可能但不限于:客户,开发团队,测试团队,UED,QA,数据采集⼈员,产管会领导,事业部领导,事业部设计⼈员,事业部商务⼈员,营销体系相关⼈员,实施部门相关⼈员,运维部门相关⼈员,以及培训讲师等,可能还有采购相关的供应商等。
整个项⽬在⼲系⼈管理这块做得不到位,没有认真的识别项⽬⼲系⼈,分析⼲系⼈的不同期望和需求,尤其是关键的⼲系⼈。以⾄于在项⽬信息发布的时候,项⽬沟通的时候有些不周到。这部分⼯作
需要重视起来,项⽬经理75%-90%的时间花在跟各种⼲系⼈的沟通上,满⾜各个⼲系⼈的期望,顺利完成项⽬,这是项⽬经理的主要职责。需要认清这⼀点。
7、  项⽬风险管理
整个项⽬缺少对风险管理(risk management)的重视,没有认真的分析各个阶段存在的不同类型(外部:环境、客户、合作⽅;内部:需求、计划、⼈员、设计等)的风险。以⾄于每当出现了风险都只能采⽤应急应对。
在以后的项⽬管理上,要认真的识别项⽬的潜在风险,分析其发⽣的概率和影响,并在风险登记册(公司CMMI的《项⽬风险问题管理表》)上详细记录;
制定出当风险合理的预防措施(规避或减轻风险的发⽣)和应对措施(当风险发⽣时怎么处理);
定期更新和识别新的风险。
并将必要的风险告知⾼级管理层或其他⼲系⼈,让其知晓,并得到相关的⽀持。
8、  测试⽅⾯
项⽬采⽤的是迭代式的开发模式,但是测试却是采⽤的瀑布式,即在开发阶段结束之后才做集成测试,这存在很⼤的风险,尤其是前期没有对系统框架做性能测试。
幸运的是因为整个开发过程我们严格要求,开发⼈员积极主动测试,在后⾯的测试结果还⽐较令⼈满意:缺陷总数80,其中⽆效Bug或者协商拒绝的bug共13个,有效处理bug共67个。
缺陷严重程度统计:
缺陷类型统计:
从缺陷的类型上看,UI错误⽐重较⼤,很多是页⾯布局⽅式没有同意,⽐如按钮图标没有统⼀,按钮位置没有统⼀;表单输⼊的格式、范围、类型的验证问题;然后就是页⾯跳转,功能设计等⽤户体验⽅⾯的问题;其实这些问题是可以避免的,前提是我们所有开发⼈员有这⽅⾯的意识。所以在以后的项⽬开发中,⼀定要今早的规范这种质量要求,提⾼开发⼈员的质量意识;
同时,测试⼈员的测试⼯作应该尽早介⼊项⽬,从需求讨论开始就应该让相关的测试⼈员参与,以便对需求有⾜够的认知,还能对系统的设计提出合理的建议。同时尽早开展测试⼯作,能有效降低项⽬的风险。
四、个⼈能⼒提升
个⼈在这个项⽬中收获还是挺多的。主要包括以下⼏个⽅⾯:
1、定制项⽬的掌握
⾸先是对这种外部客户定制型的项⽬的整个流程⽅⾯有了全⾯的了解。之前⼤部分做的对内的项⽬,队内的项⽬不涉及到合同、客户验收等⽅⾯的要求,但是对外项⽬的这块却是很重要的。怎样去跟客户打交道,怎样在和客户沟通和讨论的过程中处于主导的地位,引导客户的需求等等都是需要经验的积累。
2、了解了教育软件的研发特点,以及物流业务知识的提升。
与企业应⽤软件,信息管理系统相⽐,教育软件有其⾃⾝的特点,尤其是实验室的教育软件。只有掌握了这些特点我们才能设计和研发出客户需要的产品来;在这个项⽬的研发过程中也学习到了⼀些物流专业的知识,但是这些还远远不够,还需要继续加强学习;
3、项⽬管理能⼒的提升和经验的积累
通过这个项⽬,⾃⼰对项⽬管理有了⼀些新的认识,发现了⾃⼰之前忽视或者不够重视的⼀些过程领域。对项⽬管理整个的⽣命周期的各个过程的技能和知识有了更深⼊的掌握和理解。
4、研发技能的提升;
同时也提⾼了⾃⼰的设计和编码的能⼒;
5、CMMI流程的熟悉;
更加熟悉了CMMI的流程,以及对流程的认识;
6、⽂档编写能⼒的提⾼。
通过⼤量的编写⽂档,提⾼了⾃⼰编写⽂档的能⼒;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。