标签:
我是研二的一名学生,一直学习嵌入式方面的知识,C语言用的最多。以前本人未接触过web开发,这是第一次进行web开发,也是第一次学习。学习时间也就一个星期,看了《java编程思想》、《Servlet与JSP核心编程》、《http协议详解》,还未学习设计模式、框架方面的知识,关于js、css,随用随查就可以了。
因为我实习的公司是做国产芯片的,这个项目只是个试点项目(当然也是某县的真实应用系统),为了测试公司刚设计的服务器的性能。而且,经过测试,在应用框架的应用系统中,框架所占时间比例也是比较大的。所以,这个项目,我们采用无框架、从零开始开发的方式进行。但是,项目完成后,得出的结论是,这种方式不符合主流开发模式,其实这里面也是另有原因吧,呵呵。不然我一个学底层的,做这个干嘛,这不是坑我么,还好以前没学过,做一个月也是能学到点东西,当然再做下去,坚决不能做了。
闲话不多说,总之,既然做了,也学了这么多,就要有所收获。我先在这里说一下自己的心得,纯属个人观点,如有冒犯,请多原谅。
对我而言,我觉得作为一名实习的学生,实习期间不必做web开发的事情,还是多做些底层的东西,掌握一些计算机学科的原理比较好,争取有扎实的技术上的长进。之所以这么说,我发现web开发这方面,真正有难度的还是系统架构的设计和大数据的分析研究,技术上不存在非你不可的问题,现在各种框架、库、控件及网上的资源实在是太丰富,读个研为了去做复制粘贴搜索的事情,真的是不值得。而对于经验尚浅的我们来说,完成系统架构的设计和大数据的分析研究这类工作是绝对不可能的,必须经过多个真实项目的磨练,才能担此重任。所以,最初,我们工作的时候只能做码农,经历漫长的码农生活后,才能够有足够的项目经验。反正都是码农,都能接触到真实的项目,那么是不是做一个有技术含量的码农比较好呢?所以至少我确定了研究生阶段,对我最有利的发展路径,去做一些底层的开发吧,毕业前不再做web开发。
下面,先总结下整个项目,以后再去写技术的实现及问题的解决。
第一次,与客户协商后,确立初步功能需求(为了以后描述方便,我们称其为一次需求,第二次需求的改变称为二次需求,依次类推...),如下:
设计原则:简单易用,尽量减少页面的跳转,尽量让用户在一个页面就能获取所需信息或者进行所需操作。这就是我们设计页面数较少的原因,应该说我们用了尽量少的页面来实现全部功能。
根据需求暂时设计有:3个jsp页面,1个数据库hotline(2个表),5个servlet。
详细的设计就不说了,用处不大。说一下设计时需要注意的问题:
开发环境搭建:
用到的技术:
开发的顺序:
遇到的问题:
第一阶段用了大约一周时间。我们要给用户一个阶段性的成果,一是为了让客户对我们充满信心,相信我们;二是,及时更正需求,尽量在工程早期修正错误。
一般情况下,客户向我们描述功能需求后,我们很难保证,我们接收到的信息与客户想要传达的信息100%相同,也很难保证,客户已将全部100%的信息传达给我们。
主要使增加了功能需求,主要是搜索功能、数据的备份与恢复和任务分类的选择,还做了一些页面上的改动。
增加一个jsp页面,两个servlet,一个数据库表。
遇到的问题:
在这个过程中,我们发现,程序的可维护性,可扩展性使非常重要的。主要是方便我们开发人员,因为应用开发最经常改变的就是需求,我们需要不断的根据客户需求去完善项目。
如何提升可维护性呢?
需求增加知识库功能、信息缩略、已有任务的删除及修改,已有任务的打印、任务催办等功能。
遇到的问题:
在客户对需求有改变时,我们要尽量满足客户的要求,即使我们感觉没有必要的地方,只要用户提出来,就要做。另外,还要懂得跟客户沟通,如果遇到特别麻烦或者不能实现的功能,为客户找到其他方式的解决方案,或者向其说明情况,当然这是迫不得已的做法,毕竟,不是所有事情都能实现。
需求增加高级搜索功能、统计功能。
遇到的问题:
这里详细说一下统计功能,非常麻烦。我们最终是得到一张在某时间段内、各单位任务状态的统计表。能新建,删除,修改,查看各统计表。
首先,我们先按照客户给出的评价标准得到一堆数学公式,然后几个人一起检查一遍数学公式的正确性,确认数学公式的正确性之后,才开始分工进行实现。我设计了它的实现架构,采用MVC,如下:
逻辑 |—————————————————————————————————Map B—————————————————————————| | | V | count.jsp ——————> 点击新建 ——————> count-form.jsp ——————> 点击保存 ——————> 将所有记录放入Map B ——————> saveServlet | ^ | ^ | | | |——————————————————————————————————| | | | | V | V | 点击已存在统计表 | 重新计算 | | | | | | | | | | | | | V | V | existedServlet | recomputeServlet | | | | | | | | | | | | | V | V | 将所有记录放入Map A | 将所有记录放入Map C | | | | | | | | | | | | | |—————————————————————————————————| |———————————————————————————————————————— 数据结构 Bean类:统计表中,每条记录对应一个Bean HashMap:一个统计表对应一个Map 接口设计 startTime,endTime,countFormName:点击已存在统计表时,作为参数,count.jsp ——————> existedServlet,existedServlet ——————> count-form.jsp,count-form.jsp ——————> recomputeServlet countMap:existedServlet ——————> count-form.jsp, recomputeServlet ——————> count-form.jsp,count-form.jsp ——————> saveServlet,saveServlet ——————> count-form.jsp Bean中:setXXX(),getXXX() countMap的key为’单位名‘
标签:
原文地址:http://www.cnblogs.com/ISeeIC/p/4254029.html