《Linux程序设计环境》课程开源项目个人总结报告
李雁章 00748327
一、参与项目基本情况说明
在本课程的综合实习作业中,我参加了关于《未名手机报》平台开发的项目。我们这个项目又细分了几个组,我属于莫景辉同学负责的web组。我们组的主要任务是为《未名手机报》搭建一个网络平台。
二、我在项目中的参与情况
我在我们web组先后一共参与了如下工作:
在前期,我负责探索并找出php程序调用Java程序的办法。虽然我不熟悉网络编程,可是通过各种努力,我最终圆满完成了这项任务;
在后期,组长莫景辉又将大家细分成了5个小组,我属于Java小组,主要工作是学习使用Java语言进行网络开发,阅读并学习一些已有的使用Java爬取数据的代码,最终要实现我们自己的爬虫。在这一阶段,我最终独立完成了我的任务:写了一个Java类,实现了给出版面和关键字,在未名BBS上爬取满足条件的帖子的函数。
三、我实现的任务在整个项目中的位置
我前期实现的php程序调用Java程序,其位置就是为我们不同语言的模块间建立通信的桥梁。
而我后期实现的Java爬虫,是我们整个平台中的一部分具体功能模块,其与主模块之间的连接正好需要通过我的前期工作来实现。
四、我的贡献度
前期的php调用Java工作,是我独立完成的,并且这一部分在整个工程中处于非常关键的位置,所以我认为这一部分虽然在代码上不一定有明显的体现,但是对整个项目的贡献度是非常大的。
而后期Java爬虫的工作,虽然也是独立完成,并且有一定代码量,但是这个模块本身就处于整个工程中不太核心的位置,因此虽然我积极参与了开发工作,但我还是要说,这一部分工作对整个项目的贡献有限。
五、个人开发过程介绍
在之前几个部分中,我主要分析了我在项目中的参与和贡献情况。下面我具体讲一讲我整个学期参与项目的过程。
我加入这个项目的时间较晚。这是主要因为,我在开始选择项目时与莫景辉同学进行过联系,说明我参加的意愿。后来我没有再主动找他,认为有事他会通知我,而由于我们组的人较多,后来他可能将我漏掉。直到后来我看到项目网站上报上的名单中没有我,我才主动再与他联系。因此,我错过了我们初期的总体设计阶段讨论。
在我刚加入时,我们组的基本分工已经结束,这时本来难以找到我能够参与的任务。然而,这时整个项目组遇到了一些困难:由于我们找了一些参考的功能实现代码,其中有一部分是用Java写的。然而我们最后的平台要统一用php实现,所以莫景辉希望能够找到php程序调用Java程序的方法。于是他将这个任务交给了我。
我对网络编程并不熟悉,但我还是非常高兴能够参与到我们的项目中。我最初的想法是动用互联网,在google上进行搜索。然而,当我使用类似“php调用Java”之类的关键字搜索时,得出的前几十项结果貌似都是根据一个贴子转载的,这个帖子里面提供了两种方法,一是使用php发布版中的Java扩展模块,二是要在服务器端使用一种协议。其中第一种方法在原贴中就说明了它有很多局限性,而第二种方法对于我们的项目又是不太可行的。所以我陷入了困难。
我只好找一些网络开发方面有经验的同学请教。后来偶然打听到有一个开源的工具叫php-java-bridge,似乎可以用。于是我又在网上搜索,最后在一篇新浪博客上找到了能够打开的下载地址和详细的使用方法。于是我就照着做。这篇博客还是非常靠谱,开始的操作都比较顺利,直到后来出现了一些问题。根据报错的提示信息,我感觉可能是版本不一致造成的。后来仔细阅读博客,果然发现我下载的版本要高于博客中使用的版本。于是我就下载了低版本,最后果然解决了这个问题。最终我将我找到的方法,下载的软件包,中间执行需要自己写的bat批处理文件,以及使用该工具的整个流程说明文档打包发给莫景辉,顺利完成了这一部分任务。
这一部分任务大约耗时2星期。我觉得这一部分探索过程非常有趣,因此在这里详细说明。
从我开始参与项目时,直到我第一部分任务完成,通过这期间的几次组会讨论,我感觉周围部分同学的进度非常缓慢。莫景辉也看到了这个问题,他认为可能是大家对网络开发不熟悉,之前的任务分配可能有问题,于是在五一左右,他重新安排了任务,把我们分成了5个组:php组、css组、ajax组、Java组、ps组,希望每个同学集中学习一部分内容,并开发这一部分代码。我被分到了Java组。
我在Java组的工作相对轻松。由于我没有选修过《Java程序设计》课程,只在《编译实习》课程中接触过Java语言的一点皮毛,并没有深入了解,尤其是与网络开发相关的内容。所以在开始阶段,我先借了一本Java学习的书,从中学习Java语言,尤其是与网络开发有关的部分。然后,莫景辉给我提供了一些已有的Java代码,关于爬取数据的,让我先阅读学习,最后改成我们需要的内容,根据关键字,爬取未名BBS。
最终,借鉴前人的工作,我还算比较顺利地完成了这项任务。
六、总结体会
这个学期能够参与到这样一个大项目之中,也是在学习阶段的一次难得的体验。从中也有许多值得总结的内容。
首先,我认为我们组有一个经验值得提出来,值得今后参与课程项目开发的同学借鉴。我们项目人数众多,要让每一个参与者都配置相同的开发平台,是一件很麻烦的事。这里,莫景辉同学采用了一种非常有效的办法:他为我们提供了一个系统虚拟化平台,叫“云端”。虚拟化平台的好处在于,所有软件,只需要在一个平台上安装一次,之后只要其他计算机上有相同的平台,就可以直接使用,不用重新安装和配置。这就像我们在OS实习中用到的,
一个同学在虚拟机上安装一个Linux镜像,其他同学就都可以直接拿来用了。只不过我们使用的平台可以针对应用软件。我觉得这是一个非常好的主意,值得推荐。
其次,我们Web组人数众多,如何能够有效协调组员的工作,充分调动组员参与的热情和挖掘组员的能力特长,也是值得我们总结的。作为一名参与者而不是管理者,在我看来,我们组的管理有值得借鉴的,也有能够改进的。
对于一个人数众多的组,组员容易产生的心理之一就是从众:如果有人没有努力完成自己的任务,那么那些努力的人就有可能觉得不公平,从而降低斗志。我就存在这种情况。在我开始做php调用java部分时,由于我进入项目较晚,当我开始做时,其他组员的工作已经开始了一段时间;然而,当我通过自己两星期的努力,保质保量地完成了我的工作,可有的队友还是没有什么进展时,我不得不说,我心里的确是不公平的,之前旺盛的热情很快减退。很遗憾,管理者没有在管理过程中充分考虑这一点,想办法调动大家的积极性。
我们组存在的另一个问题,就是大家的基础较低,而组长的期望很高。这使得我们在开始阶段无法达到期望的要求。好在组长及时调整了策略:让每个组员专攻一部分内容(CSS、php、Java等),而不是全部通吃,这样既减轻了每一个组员的劳动,也避免了组员之间的重复劳动。调整的效果也非常明显:大家最终各尽其力,按时完成了自己的那一部分功能,使得整个平台能够如期搭起来。
总的来说,协调一个规模较大的小组的工作,和协调一个三四人的小组的工作,其难度不是一个数量级的。这也是我第一次参与这么大规模的开发,只有参与在其中,才能够感受到这中间的不易。我们的组长莫景辉同学,为了管理好这个小组,非常辛苦,非常负责。而我作为一个组员,能够为这样一个项目贡献自己一份微薄的力量,感觉还是非常值得的。同时,通过这种开发,我体验到了很多在以前的课程上学不到的关于软件开发的一些切身体会。
第二篇:软件项目总结报告
软件项目总结报告范文
1引言
1.1编写目的
XXX公司业务管理系统的开发已经基本完成。写此项目开发总结报告,以方便我们在以后的项目开发中来更好的实施项目的订制开发; 让我在今后的项目开发中有更多的有据的资料来规范我们的开发过程和提高我们的开发效率,从而创造更多公司效益。
1.2背景
项目名称:XXX业务管理系统
软件名称:XXX业务系统
客户:XXX
用户:XXX员工
1.3参考资料
项目开发文档:
1.软件开发数据模型:PDM_OperationSystem20xx0831.pdm
2.数据库开发文档: XXX业务管理系统数据库设计说明书2.0.doc
3.软件业务流程参考:XXX业务管理系统流程说明.doc
4.软件使用手册参考:XXX业务管理系统功能说明3.0.doc
5.软件业务流程参考:XXX业务管理系统流程说明.doc
6.软件中使用到的第三方控件:ComponentArt Web.UI 20xx.1252 for asp.net2.0.rar 7.软件中使用的安全Ikey驱动:Ikey Driver.rar
以上参考资料是截止20xx-08-31是最新的资料文档。如有修改,即使修改此处的参考文档名称。
2开发工作评价
2.1对生产效率的评价
1. 系统开发已历时快1年的时间了
2. 开发的反复性比较多。
3. 对客户的需求理解不是很透彻。
综合以上,此项目的开发效率不是很高,相反有相当一定时间的浪费。
2.2对产品功能的评价
经过我们公司各位同事的共同努力协作,XXX业务管理系统已经很好的完成了客户的业务流需求。经过对客户使用过程的观察,此项目开发的还是比较成功,但是还是存在着一些问题,造成这些问题的原因是多方面的。如:前期系统数据库的设计缺陷和部分代码的构建缺陷、客户需求的理解上也存在一定问题,这就需要我们用一定的时间来维护客户使用过程中提出的新问题和存在的debug。总的来说,此系统的功能开发还是一个比较成功的案例。
2.3对技术方法的总结
在此项目中使用到技术和工具:
1. 使用代码生成器:使用代码生成器 [动软.Net代码自动生成器],此工具在很大程度上提高了编码效率,从而加快了项目的开发进程。在以后的项目中,我们要尽量的来使用一些类似的工具来在最短的时间内完成工作。在今后的项目开发中,我们最好是能开发出适合自己的代码生成工具,更大限度的节省开发周期和开发费用。
2. 使用数据库建模工具;PowerDesigner 工具来建立系统数据库模型,以方便程序员很好的理解业务流和掌握系统架构者的架构思想,更好的满足客户的功能需求。在今后的项目开发中,我们要更好的来完成系统的前期数据库模型的建立,最大的来优化系统功能。
3. 使用第三方控件:此系统中使用了ComponentArt Web.UI 第三方控件。此控件在很大程度上满足了客户对软件界面的需求,从而也给软件的操作带来了方便。本项目中只使用了ComponentArt Web.UI一种第三方控件,在今后的项目开发过程中,要继续使用第三方的控件。这样以来,无论是针对软件界面的美观性、友好性来说、易操作性而言,还是针对系统开发效率而言,这都是很好途径。但需要意的是:在是使用第三方控件时,要谨慎的选择一些网络中的比较常见的第三方控件。
4. 使用自定义控件:此系统中使用了自定义控件(GhdGridView),此自定义控件可以很好的统一系统中的所有信息显示表格样式。如客户对数据显示样式有什么新的意见,我就不需要修改每一个页面的表格样式,我们只需要修改GhdGridView控件的样式,系统中的所有继承自GhdGridView的表格样式都可以改变。
5. 系统开发框架:此系统的框架使用的是简单三层结构,此框架在开发一些中小软件是比较实用的。但是我们要是可以开发出自己的框架,把一些通用的功能开发到框架中。这样以来,在以后的系统开发中,针对系统中一些通用的功能就不需要再开发,从而也可以很好的提高我们的开发效率;减少很多维护费用。使我们的技术不断的更加成熟。
6. 系统安全加密:此系统中针对客户提出的系统安全问题,我们采用了Ikey加密硬件钥匙来验证客户端登陆客户的合法性,此Ikey钥匙可以绑定到一个系统使用用户,也可以让多个用户来使用一个加密钥匙来验证登陆系统的合法性。这样以来,即使用户的密码不慎丢失,或者被不法人员取得(不法人员他也是无法登陆到我们的系统中来),这样就最大的提高了我们系统的安全性。Ikey加密钥匙是很好的加密B/S架构软件的硬件工具,在以后的软件安全方面可以借鉴。
3项目经验总结
3.1签定合同
一个项目的开发成败或者说项目开发带来效益的大小,在很大程度上是受项目合同签定的影响的。往往,很多一部分公司与客户签定的项目合同都是很模糊的,也很难签定的比较清楚,这样以来就会导致在项目的开发后期,工作两会越来越大,影响项目的竣工周期;而且,项目的开发费用一般是不会变的。这样以来,我们就大大的降低了我们的开发效益。虽然需求范围很难签定的明确,但是我们在签定合同时,要尽量的去把合同功能边界和添加新功能的条件签定。
3.2开发团队
在项目确立后,要尽快的建立起项目开发团队。
项目团队成员的团结合作、相互沟通是非常重要的,团队成员之间要相互学习彼此的优点和技术,使团队的能力不断的提高。这样,在项目的开发过程中,团队才不会被难题困住不动。另外,团队中要有一个项目负责人,这个人无论是在与客户的沟通上,还是在技术上都要是很出众的人,此项目负责人要能很好的沟通客户与开发成员之间,以此来更好的理解客户的功能需求。人的记忆力总是有限的,所以就要求开发团队成员要尽量的书写一些开发文档,这些文档往往是我们在项目开发后期要用到的可寻资料。项目团队士气是项目成功的一个因素,我们需要不断的来培养我们的团队气势,使我们的团队不断的壮大。
3.3需求的调研
在项目确立后,就到了需求调研分析阶段。
1. 项目组对客户的整体组织结构、公司有关人员的关系、职责等如果没有一个很好、足够的了解掌握,这样项目组就无法很好的完整的整理到客户的需求、或者说客户真实的功能需求,如此以来我们就为自己埋下了地雷,影响项目的开发周期,这就要求我们要与客户搞好无论是工作上的还是生活上的朋友关系,要深入的去了解客户需求。
2. 我们要尽量的让客户也参与到项目的开发团队中来,也就是说我们要使客
户把自己也纳入到项目的开发团队中来,如此一来,我们掌握客户需求的真实性、可靠性就会大大的提高,也就不会为项目的后期功能开发埋下陷阱
3. 在需求调研过程中,如果缺乏足够用户参与,这样的需求调研也是失败的。很多程序员不愿参与到客户的需求调研中去,为什么呢?很简单,与客户沟通不如与代码沟通容易有意思。尽管这样,我们还是必须用足够多的时间去和客户进行沟通,了解他们真实的需求。很多用户也是如此,他们自己也不愿意参与到项目的需求调研中来,为什么呢?需求调研有出去和朋友一块烂漫对吗。。。虽然现状如此,我们还是要努力的使客户参与到需求的调研中来。
4. 模糊需求,也就是模棱两可是需求规格说明中最为可怕的问题。一是指诸多客户对需求说明产生了不同的理解;一是指单个读者能用不止一个方式来解释某个需求说明。针对对这种情况,就要求我们的调研人员要能够从多个角度来分析客户的不同需求,整理出最终的需求与客户确认,定出最终真实可靠的需求,我们绝不能凭借我们自己的单面理解来定立客户的最终需求。
5. 在一个项目的开发中,文档的书写是极为中要的一项工作。因为,某些文档就是我们在开发后期与客户沟通的可寻依据、也是我们程序员在编码过程中要用到的重要文档。我们绝对不能认为,凭借我们的大脑来记录所有的开发需求。。。;即使,你说你是天才,你要用你那颗爱因斯坦的大脑来记录所有的开发需求,那也是不可能的,人的精力总是有限的。这就要求我们在需求调研中做好需求文档的记录和整理。
6. 需求调研工具选择,客户一般对图形还是比较感兴趣的,所以我们在调研过程中,我要尽量的采用图形化界面来和客户沟通需求。比如可以采用Rose工具,把客户的意思转换为用例图、时序图、协作图、状态图、类图等,使表达的意思更加直观。这样客户会更快的进行问题的实质。
3.5做好开发计划
在项目确立后,我们就需要做好项目开发计划,需求调研用时,开发用时,测试用时,实施用时,维护用时。在我们做好了计划后,我们要随时的跟踪计划任务的完成进度,从而使我们的项目进度掌控在我们的开发周期范围之内,今日计划、行动,明日成功。
3.5很好的沟通
在其他行业中,人与人的之间的沟通只很重要的。项目开发也不例外,很好的沟通能够加快项目的进度,这就要求我们每一个开发人员要学会和善于沟通于客户和同事之间。在一个项目的开发过程中,我们与客户的沟通是一个不断交流和沟通的过程。在开发到一定的阶段,我们就需要和客户沟通已有功能,尽量的去避免一些隐藏的问题,及时的发现问题,解决问题,从而按时或者提前完成项目的开发。
3.6做好工作总结
在项目进行的过程中,我们要不断去整理自己的工作情况和做好总结,这样以来,无论是在自己的技术还是其它方面,都会对我们有很大的提高,在长期的积累后,无论是我们个人能力,,还是我们的团队能力都会有很大的提高。