新生入学一期收获

  ITOO新生入学一期结束了,我们花费了很多的心血在上面,尽管还有各种问题,所以我们加入了测试,现在他们天天提Bug,督促我们,让我们的项目越来越优异.

    在一期的68天里,我们新生入学系统做需求分析,实体设计,项目开发.在这看似很长的一段时间里,1118日开始,我们花了17天的时间来完成需求和原型和实体,后来的18天里,除了将自己做分到的公共任务,还有建立起来了apibase,以及将打算完成的颗粒都敲了一条添加的线.然后就从1223号开始就是正式进入了敲代码完成功能的阶段,一直到117.

    我们本来预计可以完成很多功能,但是由于我们对于开发的不熟悉,导致进度缓慢,原本以为1天就可以完成一个界面,后来发现每个页面总有想不到的问题,不花个4,5天都完不成,有的就算花了4,5,也只是完成大部分功能,还有一些功能没做,更别说一些页面的输入控制,基本都是没加的.

   而现在有了测试,他们把这些我们没做的功能,我们没加的控制,都作为Bug提给我们,我们想不改都不行,相对于我们之前做的项目,这是有了质的飞跃.可以想见,我们以后为了少改Bug,一定会好好注意自己写的代码.觉得我们越来越正规化了.不过先不畅想"美好"的未来,说说我们这一期里的情况,给力的底层,以及我们具体遇到的问题,我们的解决方式。

定需求

        在之前的需求阶段,并没有太大的问题,除了有些需求在讨论的时候就不知道该怎么做,提了几种方案,但是都不是很合理,但是我们必须从这几种方案中选出一种。所以需求阶段最大的问题就是,需求怎么定,像这种有多种选择的需求,比如导入学生到底是用excel将数据全部准备好,包括班级id,一次性导入,还是可以分多个sheet,每个专业的导,还是可以不用准备班级id,选择班级,然后将学生导入该班级中.开始的时候,选择的是第三种方案,选择班级之后导,后来觉得还是太麻烦,所以决定还是用excel准备好所有数据的导.

        当时我以为是一个sheet准备好所有的数据,但是考虑到班级id怎么弄出来这个问题,好像弄成多个sheet,每个里面都有班级id,好像比较容易.当然这样还是会有其他要考虑的,比如导入一个excel多个sheet的方法的提供,空的sheet的检查,空行的处理,以及空格的处理,特殊字符的处理,还有一些必填项的处理,以及考生号和身份证号必须唯一,还有不能重复导入的处理,还有就是不知道有没有英文标题要转中文标题的问题要解决了.不举例不知道,原来还有这么多需要考虑.

    在这个阶段,我们学到了,不论有多少种方案,必须要权衡确定一种,经验告诉我们,不尽早这么做,只会浪费太多时间在这种不确定的问题上.

定实体

    定完需求了,我们就开始设计实体,当时弄的是带关系的,11的关系,多对一的关系,多对多的关系.然后写成代码的问题,当时写代码比较晚,基础说这样带级联关系的,JSON不能处理,后来能处理了,我们就用的还是带级联的实体关系.但是这样用级联效果是很好,但是每次查询都发NSQL语句就不好了.所以,到底用不用级联的关系呢,加上lazy加载会好点吗?

项目部署演进

    不管如何,现在实体是带级联关系的,然后就是开始真正的敲项目了.

        做项目的时候,问题就多了.像是,我们用的是JBoss服务器+Maven项目+Eclipse环境.当时想自己配置eclipsejboss,没成功,就直接用了现成的配置好的.

        这个是我自己的问题,还有大家的问题,当时的Maven项目没有实现热部署,最开始是每次运行项目,api,base,core,web都用clean install,打成包,earcleanear:generate-application-xml ear:ear,打成包。然后将ear拷到jboss的部署文件夹下,start运行Jboss服务器才能看到效果.无疑是巨慢的.

    然后底层和负责人就开始想办法,经过一段时间的演变,出了一个parent的解决方案,将所有的项目在earpom文件中将type改为ejb,然后都通过parent管理.每次都只是需要在parentclean install,就可以将包打好,然后还是拷贝ear到部署文件中,启动.

    这个比之前的好多了,至少不用一层一层的打包,也不用输入很长的ear打包语句.但是还是很慢的.后来,他们又提出用脚本,用脚本直接打开部署文件,直接将打包好的ear拷贝到部署文件中,用脚本启动jboss服务器.这个我没有用过,因为脚本在我电脑上报错.

    然后,在坤哥和老师的帮助下,终于可以热部署了.将所有层的pom文件中的packaging都改为ejb,除了webear.然后,我们不需要打包了,只需要将各个颗粒添加到Jboss服务器上,就能直接部署,对于web,增量部署,就可以直接看效果,除非有时候不稳定.热部署,大大的加快了我们的开发效率.

    后来,又为了解决版本号的问题,以及调用远程EJB的问题,修改了JNDIlookup,去掉版本号,以及用上jboss-ejb-client的配置.

    就这样,我们遇到一个又一个的问题,我们解决一个又会出现另外的一个问题.我们没有退缩,迎难而上,将一个个问题就一一解决.项目的一步步演进,我们克服了maven项目热部署的问题,将不可能变成了可能.这期间查资料,不停尝试肯定少不了;写了一篇又一篇的文档,来记录这些演进的步骤,然后培训我们使用,推广这些功能,也是少不了;聆听我们的声音,在他们改进之后一次次觉得还是慢,将问题记在心里,努力解决,一步步找出解决方案。感觉负责人和底层的人,棒棒哒。

       这段时间发现,相信问题一定能解决是非常重要的,要不是老师说一定有解决方案,我们一定会觉得肯定没解决方法,而一直忍受着.而文档的重要性也是非常重要的,培训大家使用的时候,要是不写一份非常详细的文档,你就得去给每个人解释这里该怎么做,那里该怎么做.并且文档对于历史的演变,有着非常好的记录作用.

      负责人除了解决部署的问题,还解决SVN控制很多文件不能上传的功能,省的我们每次下载都要下载很多东西,还有easyui样式的文件打成包,省的我们每个web层都要拷贝相同的文件.我们界面样式风格统一的问题,

开发的问题

        部署的问题,伴随着我们的开发,让我们开发越来越方便.我开发的问题就主要集中在,总是否定需求设定的功能,然后开始设想功能如何更好的实现.

        像是画原型时,有些实现考虑不全,想当然的将很多内容显示在同一个页面上,但是很多内容基本上都是多条数据进行处理后的结果,可能是个总记录数,可能是班级里的总人数,可能是男生总人数.这样没开发前,想到这么复杂的界面就不想做了.但是还得做,所以就先得想想,这么设计是有问题的吧,这也太复杂了,然后想半天,一般也想不出结果,除非再找一个人进行下讨论.然后,可能就是半天到一天的空想或者和人讨论,最后不论如何拿出一套方案,然后开始做,可能做着做着又觉得不对,又想或者又讨论.这样好不容易做完了,心里也不踏实,总觉得这功能需要优化,太慢,太不合理.就是这样的不自信,以及考虑不周全,导致我开发不快.

        否定原有的需求设定,不是不可以,有的时候当时确实没考虑太清楚,但是其实大部分的时候,那个就是当时以及现在想出的最好的方案了.而对于决定需要修改的需求,开始设想该怎么改的功能,就老老实实的开始设想,不要一边觉得要改,一边又觉得可能想不出好方案来打击自己,这么矛盾,不仅心里难受,还浪费时间.还有多记录,设定时一定要多记录一些想法和观点,不要想完立马忘,以及多画点图,一张图胜过千言万语,说不定想不通的事,画图就能想通了.

组长的收获

         在这段时间,我理解了我在公司里时,我们组长的一些事.比如为什么她知道的比我们多,因为很多事,会告诉她,但不会告诉你,你知不知道,在于她告不告诉你;比如,为什么有的时候,我们想的不一样,有的时候组长给我安排任务,她对于任务要完成成什么样是有一个大概的想法的,但是我做的和她想的往往偏差,她就会不满意;而且组长因为了解的多,所以很多功能只是进行大方向的把控,比如给你安排任务,只会告诉这个任务是干什么的,必须完成的功能是什么,其他具体设计随你意,只要你能完成主要功能就行.

           以上,总而言之,就是在项目中收获多多.有了当组长的经验,了解了写文档的重要性,知道做决策拍板的重要性,以及相信自己能做好的重要性,这点还需要加强.现在一期结束,二期开始,征途继续.

你可能感兴趣的:(新生入学一期收获)