项目开发总结报告1.引言1.1编写目的项目开发总结报告的编制是为了简单回顾记录项目的开发过程,总结本项目开发工作的经验,说明实际取得的开发结果以及对整个开发工作各个方面的评价,总结开发过程中的逻辑方法。
本文档预期的读者为软件开发人员。
1.2背景项目名称:“High Go”智能购物车系统名称:智能购物车系统开发单位:西北大学信息科学与技术学院“High Go”团队开发历时:四周版权信息:梦想网络资源检索系统是由西北大学信息科学与技术学院“High Go”团队开发,未经作者许可,任何个人或组织不能将其用于商业用途,系统所搜索的资源版权归原作者所有。
1.3定义购物车车身:采用当前市场上最普遍的购物车规格,迎合人们一般的手推购物车购物的习惯方式。
显示屏:在购物车前端,车筐上方安置一块触摸显示屏,人们可以在显示屏上通过点击屏幕进行一些基本操作,如查询商品信息、查询总价和商品数量、确认购物单、删除商品等。
无线扫码枪:顾客在购物过程中,可以对自己确认投入购物车的商品进行扫码。
将无线扫码枪与显示屏一同安置在购物车筐上方,方便顾客在拿取商品扫码同时看到新扫码的商品信息。
警示灯:在自助购物过程中,超市本身无法对每一位客户进行实时监管,为了防止顾客忘记自主扫码或者故意不扫码给超市带来损失,在购物车的两旁将设置警示灯,如果没有通过扫码而把商品直接投入车筐内,则警示灯会启动发光报警,只有重新扫码并通过显示屏进行确认才能够消除报警。
1.4参考资料[1]刘兵,刘晓朋,曾翔亮.基于条码识别技术的智能购物车设计[J].森林工程,2012,11.[2]郑创立.RI-R6C-001A 集成电路的原理与应用[J].国外电子元器件,2004,06.[3]李文江,高锋,丁睿.RI-R6C-OO1A 射频芯片在个人医疗信息系统中的应用[J].电气自动化,2007, 29.[4]刘江沙,雷伟,尹酉.基于 CC2430 的串口无线模块的设计[J].国外电子元器件,2007,04.[5]张喆.基于 STC89C516 的超市智能购物车研发[J].自动化技术与应用,2009,28.[6]江田.基于 RFID 的商品购物智能终端的设计与实现[D].大连理工大学,2013,06.[7] 张俊谟.单片机中级教程[M] . 北京: 北京航空航天大学出版社.2006.[8] 张俊.匠人手机[M] .北京:北京航空航天大学出版社.2008.[9] 刘焕成.工程背景下的单片机原理及系统设计[M].北京:清华大学出版社.2008.[10] 颜继红.超市一线员工高流动率问题的研究[J].科技和产业,2011,11(4):54-55[11] 韩立毛,赵跃华,钱宇力.基于物品跟踪定位方案的连锁超市应用系统设计[J].铁路计算机应用,2009(8)[12] 中国工业和信息化部物联网总体框架与技术要求( Y DT/2437-2012 )[S] 北京:人民邮电出版社,2013[13] 叶少龙,刘建群等.PIC 单片机在模具条码识别系统中的应用[J].广东工业大学学报,2009,26(2):94-97[14] 程子华,阳胜峰.视频学工控—触摸屏应用技术[M].北京:人民邮电出版社,2006[15]刘伟勋. 家乐福价格欺诈的背后[J]. 中国品牌,2011,( 2): 44 -46.[16] 叶少龙,刘建群,吴积荣,等. PIC 单片机在模具条码识别系统中的应用[J]. 广东工业大学学报2009, 26( 2) : 94 - 97.[17]张佩剑. 无动力智能节能型自动灌溉系统研究[J]. 森林工程,2005,21( 3) : 19 - 20.[18]王忠勇,张建华,宋豫冀. 基于 89C2051 的解码器设计[J]. 微电子学与计算, 2002,( 5) : 57 - 58.2.实际开发结果2.1产品“High Go”智能购物车系统2.2主要功能和性能“High Go”系统主要包括以下功能:(1)购物车管理系统(系统初始化模块)(2)购物车管理系统(触摸屏模块)(3)购物车管理系统(无线通信模块)(4)数据库管理模块(5)结算与防盗模块2.3基本流程1)系统初始化模块完成系统变量的初始化,主要包括启动液晶显示屏、检查下位机与上位机的Zigbee 通信网络是否正常(下位机指每台购物车对应的单片机,上位机指超市端的 PC 机)以及一些其他一些开机自检工作。
2)触摸屏显示模块经过系统初始化,触摸屏处于待机界面。
接受指令后,触摸屏将显示用户请求的各类交互信息。
主要流程如下:3)无线通信模块主要实现下位机与上位机之间的多对一(多个下位机对一个上位机)数据传输、命令交互等。
4)数据库管理模块数据库管理模块包括对超市商品信息的建立、查询和更新。
主要流程如下:5)结算与防盗模块该模块我们不仅设计了经典的计价算法,还在称重的基础上核对预估重量与实际重量的偏差值,从而实现防盗和误放提醒功能。
主要流程如下:流程逻辑2.4进度小组成员四人,从2016年11月15日组队,11月24号正式启动项目,直至12月20号上交作品,在此期间除了法定期间大家暂停了共一周时间,其他时间一直致力于项目的开发工作:2016年11月下旬—11月末:项目设计阶段11月末,小组成员着手于市场调研,并花费一周时间设计出“High Go”购物车系统的蓝图。
初级阶段圆满完成了预定的目标。
2016年12月1日——12月17日:项目启动和实行核心阶段此阶段由各成员在自己电脑上各自分别编写所属程序,但由于并非按流程为主线的编写方式,软件各模块之间存在一部分接口不明确,软件运行情况的测试也只是整体的大方面的进行,并未涉及细微部分,因此软件运行不是非常稳定,仍有一些问题亟待解决。
2016年12月18日——2016年12月20日:项目收尾阶段回顾项目并编写总结文档、总结了各位成员的心路历程。
2.5费用较分散,无详细统计。
3.开发工作评价3.1对生产效率的评价一个月中,各成员在完成项目的同时并未占用太多自身学习时间,较为高效地完成了开发任务。
3.2对产品质量的评价虽然项目完成得有些仓促,但在实际测试中最基础的功能与超市适配良好,因此可以说在基础系统功能上拥有较高的质量。
3.3对技术方法的评价小组采用顺应趋势的、成熟的、主流的技术。
3.4出错原因的分析除去时间较紧的因素之外,小组最大问题在于各自实现各自功能,并未以流程为主线,导致程序在模块衔接时出现很大衔接问题。
4.经验与教训通过这一个多月的努力工作,我认识到要作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有以下的的素质:1:团队精神和协作能力把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。
把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。
独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
2:文档习惯说高水平程序员从来不写文档的肯定是外行人,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。
缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
3:规范化,标准化的代码编写习惯作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
代码具有良好的可读性,是程序员基本的素质需求。
比如整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
4:需求理解能力程序员需要理解一个模块的需求,很多同学写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经说写一个广告交换程序很简单,这种人不了解在百万甚至千万数量级的访问情况下的性能指标是如何实现的,性能需求指标中,稳定性、并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。
就这一点,一个程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
5:学习和总结的能力程序员是人才很容易被淘汰、很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。
善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。
善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。
具备以上全部素质的人,应当说是够格的程序员了,以上的素质都不是由IQ决定的,也不是大学某些课本里可以学习到的,需要的仅仅是程序员对自己工作的认识,是一种意识上的问题。
通过做这个项目,也了解到软件开发的基本流程:第一个步骤是市场调研,技术和市场要结合才能体现最大价值。
第二个步骤是需求分析,这个阶段需要出三样东西,用户视图,数据词典和用户操作手册。
用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了很多操作方面的流程和条件。
数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成了一半多。
用户操作手册是指明了操作流程的说明书。
请注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成这些,就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的,因果颠倒,顺序不分,开发工作和实际需求往往因此产生隔阂脱节的现象。
需求分析,除了以上工作,笔者以为作为项目设计者应当完整的做出项目的性能需求说明书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方客户或公司市场部门)能够有真正的沟通和了解。
第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源要求。
作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和经验教训的总结,还要重新进行详细设计的步骤。