项目经验总结---网页在线聊天

       已经好久好久没有发博客了,自从上次解决完实习招聘的事以后,就一直忙于学习上的事了,最近考完了最恶心的算法分析与设计,总算是有点时间来写写有关于技术,项目的事了。在这一个月左右的时间了,我作了两个很小的,至关于课程设计的大做业,两个都是B/S结构,一个是物品销售的系统,实现销售商和生产商在网页上操做数据,由于是软件质量保证和测试的大做业,因此咱们还用了qunit和loadui进行了代码测试,这会在我另一篇文章。另外一个就是我要说的网页在线聊天的大做业,这里主要用到了websocket实现双向通讯,百度地图API实现位置定位这两门技术,不难。css

       这里主要是和你们分享一下作这个大做业的感悟,固然不能和大公司,或者一个大项目相提并论,毕竟仍是一个学生,对于项目开发和管理的经验就那么点,因此若是要喷,请就事论事,勿涉及双方的父母。前端

       之前我一直以为,技术第一,我掌握了不少的技术,我就能开发好一个项目,请原谅我这种想法,我也上过不少有关于项目管理,项目开发,软件工程的课,老师也会一直指出要分需求分析,概要设计,详细设计,编码,发布这五部骤,可是从没有重视过,开发么,实现功能就能够了。可是真的不同,只有本身真的做为一个leader开始开发一个项目的时候才会有所感悟。先说说这个项目开发的基本状况,咱们是三我的,其中一我的是酱油,对于编码不太会,能够偶尔负责写一些文档(你们都懂的),另外一我的会一些后台开发,可是也不是很靠谱,还有一个我。程序员

       大做业的题目是我定的,由于我以为会比较有趣,并且难点都在前端,我是负责前端开发的,这样保证起码这个做业能够作完。在分工上,我定义了那位酱油同窗X负责写文档,实际上到后来,文档都是有我和另外一个同窗Z写完的,这是后话了。另外一个同窗负责创建数据库和编写后台基础代码(enity,DAO),而后我负责前台开发,当时我估摸着最后也会是我来负责先后台的交互,即编写action类。事实上也是如此。web

       定义完分工以后,我开始估算这个大做业的大小,这时候,实际上是初略的估计大做业的功能模块。当时初步构想是好友管理,聊天,地图,管理员管理四个主要的模块。算法

       而后分析技术难点,好友管理那块若是时间来不及,就直接拖一个表格控件,技术都已经成熟了,应该没有问题;数据库

       聊天那块,websocket交互没有作过,可是听室友说挺简单的,这里定义一个优先解决的困难点,由于这时基础模块;api

       地图那块,百度地图api用过一次,基本的流程都还有点印象,并且写过一些demo,正好能够用上,实现的时候,可能有些困难,可是应该均可以解决,划分为第二须要解决的困难点;tomcat

       管理员管理那块,懒一点就相似于好友管理,直接拖datatable控件解决;websocket

       通过上面的一阵分析,估计到我的的能力,以为这个大做业是可行的,就是可能到时候本身要累一些。接下来就开始正式的需求分析阶段架构

       需求分析,其实说白了,就是写文档,写需求分析文档,在和同窗Z讨论了一下,一块儿分析设计了大做业的功能模块,用户功能(用户基础功能,用户核心功能,用户附近功能),开发顺序也是依次。管理员功能(用户管理,公告管理)。

 

      

        在定义完需求以后,咱们又立刻开始定义概要设计和详细设计了,这其中包括数据库设计,项目总的文档结构,所用的技术,而后开始写文档,这里要说一下,不要太急着开始详细设计,极可能需求还会变,这会付出惨重的代价的,此次大做业我深入的体会了为何程序员讨厌写文档,实在是由于写文档可能会耽误不少的开发时间,咱们这个大做业最后的文档有70多页,20000左右的字数,幸亏有些地方是复制粘贴的,可是那也是很蛋疼的一件事,由于实在是分不开身再写文档了,说一句哦,本人其实不讨厌写文档,相反仍是以为写文档很好,有利于理清思路,可是在特殊状况下,实在是以为有些讨厌了。

        在偷懒以及直接忽略概要设计文档和详细设计文档以后,我直接开始了前端页面的开发,Z同窗也是不久以后就直接开始创建数据库,而后开始写enity,dao层。在网上找到了一个不错的开源的desktop模版,而后试着将所须要的页面集成进去,这样能够省去本身设计的一些时间,主要是设计这块不太会,css写的也很差,让我写出漂亮的页面不太现实,因此只有直接套用现有的,而后再此基础上改,相信不少同窗也是这样的,可是带来的一个问题是,有时候你可能根本找不到应该在哪里改样式,哪里改js代码。这可能跟经验相关了,看你的直觉了,通常css代码,能够选择用chorme打开,按f12,而后放大镜,选中页面的某一模块,而后你就能够在调试器中看到css代码了。

          回到正题,这样咱们的项目提早开始了,由于只有两我的,并且时间也比较紧了,开始开发,留给咱们的时间只有5天了,其中包括一个周末,这时候,我开始首先解决个人技术难点,实现websocket,在网上找了一份代码,调试更改以后,在tomcat7下运行成功了,而后分析源码,找到了到时候须要更改的部分,这样第一个核心技术解决了,而后开始第二个技术难点,地图,经过查看官网上的demo,而后本身的demo,功能都差很少实现了,到时候只须要从后台读取数据,而后显示出来就能够了,这时候就发现,当初的数据库设计有些问题,须要改,老实说,这时候代价已经挺大的,好吧,解决完上述两个最主要的问题,基本上内心已经有底了,这时候已是星期六的晚上了,还有三天,星期天,我就开始整合阶段了,将Z同窗已经写的东西和起来,而后本身开始actio层的编码,固然不用想,dao层确定须要更改的,这时候项目的开发人员就已经只剩一个了。我开始集中代码开发阶段了。最终项目怎么样其实就取决于我一我的了,我不是想说本身有多厉害,其实我一直以为每一个人都是能够在一个项目中找到本身的位置的,关键在于leader怎么管理,这里就是我管理的一个问题,为何不能定义好统一的数据交互接口,为何刚开始的分析设计的时候不详细一些,这时候也不须要将全部的重任都压于一我的身上。这就是个bug。

           虽然最后项目差很少完成了,效果也还不错,有关于项目的技术总结,看状况吧,其实也没什么好说的,都是一些简单的技术,稍微学一下,研究一下就会了。关键在于项目的管理。经过这个项目我有一些体会,与各位共勉:

           1. 需求分析阶段,尽可能慢一些,和概要设计,详细设计有必定的间隔,这样能够有时间反映,修改需求分析,不至于让概要设计和详细设计作出太大的变动

           2. 应该分配合适的工做给合适的人,每一个人在项目中都是能够有所做为的,关键在于你怎么去管理他。

           3. 定义统一的数据交互接口很重要,你们有一份接口文档,就差很少能够实现先后台分离开发,我相信一些真正的项目也确定是这么作的

           4. 通常晚上,夜深人静的时候,头脑比较清楚,适合进行需求分析,详细设计,还有一我的永远是想不全的,须要集思广益。

           5. 写代码最好的就是在先解决完全部的技术难点以后,进行集中开发,一天,两天就一直在开发代码,效率不错,bug也少。

           6. leader必须适当的关注一下小组内各个成员的进度,还有不要催的太严,注意交流和处理问题,矛盾,分歧,其实主要是作人了。

           7. 小的项目能够先从页面开发开始,先进行页面原型设计,由于一旦页面肯定,基本上的功能也就肯定了,因此谁说web前端不适合项目架构,其实前台分析的好,对于整个项目的架构是颇有好处的。我就想成为这样的人,由前台转向项目架构,固然我不只仅会web前端,后台也会一些。

           8. 项目管理真的是一门学问。

相关文章
相关标签/搜索