博舍

软件开发心得体会(精选10篇) 智能语音系统软件开发与应用心得体会与感悟

软件开发心得体会(精选10篇)

软件开发合同推荐度:软件开发合同推荐度:软件开发技术合同推荐度:软件开发的技术合同推荐度:软件开发工作总结推荐度:相关推荐

软件开发心得体会(精选10篇)

当我们积累了新的体会时,写一篇心得体会,记录下来,这样就可以总结出具体的经验和想法。那么心得体会到底应该怎么写呢?以下是小编帮大家整理的软件开发心得体会,希望对大家有所帮助。

软件开发心得体会篇1

受某化公司委托,开发一款用于视频和图像处理的软件,开发难度高,高到从未搞过,开发周期长,长到是我以前项目监控最长开发周期的两倍,开发成本之底,让我觉得程序员成了高级打字员。首先是需求分析书、产品规格说明书、设计说明书、代码规说明书、测试计划,光稿就不知道熬了多久才做完。

紧接着,遇到一系列问题,首先是语言选择,vc++和c#都是可以保证开发完成的选择,但是vc++内存容易报错,界面很难修改,而客户要求的界面质量甚至比程序的功能更严格,没办法,客户就是上帝,上帝做事一定有他的道理。c#语言易于开发,而且图形界面绘制也易于修改,可以做出客户体验很的界面,但是在资源的消耗上,让我很吃惊。做到第二个月,大概的界面已经完成时,出现界面刷新的问题,刷新时开始卡,界面不流畅。没办法,改。

开会,总结,技术骨干找问题,拿出解决方案,力争第一次做软件把它做:

重新做软件开发进度计划和软件测试计划,并且让独立功能demo制作和测试先行;

用directdraw、direct3d或者opengl中的一个替代c#本身的gdi绘图,将在接下来的开发任务中加入进去。

事无巨细,当我满意的看着界面流畅,功能也已实现时,发现软件在低分辨率或者小本上根本乱到没法看,甚至是界面功能按钮错位,重叠等等。没办法,改。毕竟软件的多分辨率兼容和操作系统兼容是必须要做的。

接下来一大堆的麻烦找了上来,软件出现各种各样想都想不到的问题,总算是按时将第一个版本发布出去,并且开始接下来的升级开发任务。

最后,给刚刚接手软件开发项目的朋友一些忠告:

一、相关的档不是给别人看的,而是给自己看的,相关档一定要齐备,而且让所有涉及开发的人员都清楚的知道你档里所要表达的意思;

二、一定要注意多做demo,多做实验,一个demo程序员几个钟头就可以完成,甚至更少,但是不做demo,核心程序没有做实验,其他的东西都围绕核心程序做了上去,到时候耽误的可不是几个钟头

三、程序设计要注重用户体验,当初客户对我要开发软件提出近乎苛刻的要求时我不在意,但是当我自己反复使用软件时有了很多体会,流畅美观的界面带给人心理的快感的确能替代一些尚未开发完整的功能带给用户的遗憾。

四、测试计划多次进行,分批进行,不要全部开发完成再对软件做测试。

还要坚持三个月,软件马上发布,希望大家的支持,谢谢!!!

软件开发心得体会篇2

我是公司一名文员,部门涉及很多业务数据的东西,在此之前,公司的所有业务记录都是通过一张excel表格来完成,第一次看到那张表的时候是真心吓到了,字段有几十个,项下又有很多拆分合并,其中又大多为数据和日期,通过几天的整理发现了不少错误,更加感叹需要一个数据库来解放人力、提高效率。

从开始接受access培训到现在已经有半年时间,虽然上学期间学校的老师也有给我们讲过access的知识,但只是讲了些关系的建立及简单的查询,以为access就好比word、excel等相对比较简单的办公软件一样。但开始接受盟威Access的培训后,对Access的看法才改变,原来Access还可以这样玩;参加学习之初,由于自身一开始认识误区的心态导致自己走了很多弯路。一开始所有的Access老师就告诫我说一定不要心急,要按培训指南指导,要按照教程一步一步做下去,切忌眼高手低。但因为心想自己对电脑还算有点感觉,加上公司一直比较急,又很想短时间内做出点东西,就没有很耐心的把教程步骤做完,导致后期回炉再造无数次耽误很多时间,在这里希望大家引以为戒。

在学习的过程中,因为老师是一个阶段一个阶段发教程的,当我看到报销系统时,就已经觉得十分十分的强大了,然后自己就想边看教程边偷懒开始自己开发,虽然老师一再强调不能不会走就想跑,但自己还是开始蠢蠢欲动了,等到做了一部分之后看到了进存销系统后,又发现里面有很多自己可以学以致用的东西,然后又开始重新做,再等到新版的快速开发平台出来了,自己又一次被震撼了,感慨Access快速平台的强大,基本的模块都不需要自己手动创建了,简直太厉害,真是技术宅改变世界。

整个开发过程可以说是充满艰辛,但又有很强的成就感。虽然自己有时候会想不出来该怎么做,但是!还有一群很厉害的老师可以帮你,有时候老师们一句话、一段代码就能帮我搞定自己苦思冥想很久都做不出的步骤,可以说每一个成功的系统背后都有一群默默无闻的老师。

每次把自己一些乱七八糟的想法告诉一对一老师,其实自己都觉得可能做不了了,但每次杜老师都会给我惊喜,帮我完美解决掉,十分欣慰。

现在系统开发的已经在测试应用,虽然还有些部分在一步步完善修改,但我相信access的强大,能解决我的数据问题,也相信盟威老师们的技术给我的支持,在此感谢这半年来所有老师的大力支持与帮助,也希望盟威软件快速开发平台做得越来越好,让更多跟我一样的菜鸟开发出属于自己的数据库软件,解放自己的工作强度。

软件开发心得体会篇3

这次软件工程实训是从20xx。12。26号开始的,截至20xx12。31号。实训内容是用java相关知识(主要是jsp)做一个物流配送系统。下面谈谈对这次实训的看法。

因为自己平时对java知识储备不足,特别是jsp这一块基本不了解怎么回事,所以一拿到这个项目,我心里都是没有底的,再加上我被分到的那个组,我知道就意味着是我一个人在战斗了。呵呵,26号,实训开始了,我们的老师是来自中软国际公司的程序员,一个是周褀,一个是朱映,都是一身朴素的着装,让我感觉做软件的也没什么两样。老师介绍了自己之后,就直接切入正题了,分析了下我们各个组的系统,即将用到的知识,然后就总体把觉得需要补充的知识(jsp和数据库连接等这几块)给我们实际操作了下,因为当时看到用jsp,还讲的那么认真,当时我就后悔了,平时要是多听点,现在老师这么认真的给我们讲,这是一个多么难得的机会啊。后悔也没用啊,开始还勉强能理解一点,后来就直接晕了。然后再给大家介绍了一些即将用到的工具,比如rationalRose,SVN,MyEclipse等等。接下来的几天就不再细讲了。下面谈谈通过这次实训的心得体会吧。

通过这次实训,让我了解到工程开发的过程,可行性分析——>需求分析——>概要设计——>详细设计——>代码编写——>测试——>验收。从技术方面上,我开始jsp基础基本上就是零的,在老师和syz2(另外一个物流小组,我一个人基本上是跟她们做的,或者说是看着她们做的)的帮助下,对jsp有了一个大概的认识。其实实训开始前,我还以为做个系统没什么大不了,可是当真正拿到一个项目,我却真的无从下手了,而且就是在知道需求分析和详细设计,在代码编写时,一样寸步难行。通过这个实训,也让我了解到,团队协作是多么的重要。一个人的精力是多么的有限。进一步理解到,企业为什么如此重视团队协作。同时借用老师的话就是团队协作固然重要,但是是建立在个人素质的基础上,假设你个人素质不行,将会影响到整个团队,就别提对团队作更多贡献了。**老师说这几句话的时候,朝向了我,估计是有特殊意义的吧,所以,我将谨记老师的教导。

还有一个收获是从一个同学(小胖)那里得到的,他的那组成员跟我的这组大体一样,我倒是觉得没什么了,不过他倒是很重视这个问题吧。然后他说出来,我也觉得这个问题确实其实是个大的问题。就是不管你会不会这门技术,会不会做这个东西,态度要正确才好,就算你不会做,你也应该认真的对待,将来出身到社会,就不是说像你现在,不会做就不做,跑去玩游戏了。小胖说出了这段话,也在我身上有了一个印证,虽然我jsp技术知识为0,但我也还是在认真的跟着他们一起做,不会做,就多问,毕竟现在我们是学生,可以毫不顾忌的询问各种问题,老师也会尽力为你回答。将来出身社会就不一样了。虽然,我就算个打酱油的水平,但是这个酱油也要打得有涵量啊。不管怎么样,我能对自己有个交待,虽然我不会,但是这次实训我确实是认真对待了,六天的实训,除了晚上加班外,还花了2个通宵来完成不同阶段的任务,完成与否也不重要了,我至少我做了,这点,是这次我应该对自己的一个肯定。

这次实训的心得基本上就是这些了,最后特别感谢中软国际带我们的那两个老师(周褀,朱映),这两个老师对待我们很平易近人,对我们提出的问题,总是不光解决了,还进行了扩展,晚上也跟我们一起加班加到很晚,印象尤其深刻就是朱映老师为了给小胖解决一个问题,脸都变红了,还在继续努力,这点我并不会觉得老师知识储备不够,我想应该是这个问题的突发吧,一时没想到怎么处理。相反让我感觉更多的就是老师很认真,很负责。还要感谢就是syz2小组的倾力支持,辅导。

软件开发心得体会篇4

首先我是一个女孩,学软件开发的女孩相对于男孩来说并不是太多,但是因为我自己对编程比较感兴趣,所以就从事了这个行业。

我们学校的学生从20xx年的下半年就已经开始出来实习了,据我所知我们计算机系的学生大都从事别的行业去了,从事计算机行业的人数非常少,我想大部分是没有过硬的技术知识的原故,不敢去应聘本行业的工作吧。

我一直是一个有上进心的女孩,对软件编程有很大的兴趣,总想着自己也要像男孩一样,做一番属于自己的事业,不能白白的虚度自己的青春,但我又不想从事与计算机沾边的初级职位,比如文员之类的。因为如果自己的第一份工作从做文员开始,以后自己的职业生涯就不好规划,肯定会离软件编程越来越远的。

说实话我的家庭条件并不富裕,但是我有一个非常支持我上学的父母,他们狠狠心在我上了几年大学之后又给我交了几千元的培训费。从那时候起我就想着我一定要好好学习,对得起父母。

就这样开始了我的培训旅程,其实说实话在培训的过程中我是时而感到特别迷茫,时而又有了奋斗的激情,这不免有个人的因素,也有培训环境的影响。

在这里我想提醒一下那些想参加软件培训的学生,在你们选培训班的时候一定要看清这个学校以前培训学员的就业情况,特别重要的是培训老师有没有教学经验,一些培训机构总是以赚钱为目的,鼓吹着自己的培训老师拥有几年几年的项目经验,其实我感觉没有教学经验的老师还不如项目经验少一些的老师。

我们培训部就是一个例子,我有时候就感觉听我们老师讲课简直是一件非常痛苦的事情,他讲课从来就不备课,只是根据自己的工作经验,想到哪个知识点就讲哪个,我们听课的学生一点思想准备都没有,而他常常在课堂上为了调试一个程序的一个小小的错误耽误一两个小时的时间,而这期间往往也是我们最煎熬的时候,因为我们要坐在那个地方陪着他找错误,这种情况下的我们非常受折磨,并且感觉时间都白白浪费掉了,以至于根本没有什么收获。

再来谈谈我自己的情况吧,我在大学期间编程语言学的还算不错,当时我们只开了c++、java两门编程语言课,还有软件开发相关的SQLServer20xx数据库,我的这三门主修课程每次考试都很优秀,参加培训时也有老师劝我学软件前台,网页设计什么的,说是女孩比较适合学这个,好就业,而软件开发大都是男孩子,女孩几乎是学不通的。我当时就是为了证明自己的能力,根据大学期间自己的学习情况,我相信自己能学好。

但是也因为我们老师讲课的无计划性,课程拖到现在还没有结束掉,时间已经过去6个月了,我开始思索我自己的人生了。

经过四个月的培训,我不能说我没有学到什么东西,但我还要说一点,我虽然每一样技术都知道了,但是我学的仅仅还只是一个皮毛而已。软件开发最重要的就是编程思想,可我现在的水平只是编写代码达到非常熟练的程度罢了,对于编程思想感觉还是没有踏入软件开发的门槛。而编程思想主要来自于你所做过的实际项目获得的经验。而我们培训部的项目不仅少而且不怎么实用。所以要想参加培训还要看清这个培训部的项目是不是够份量,没有实际的项目经验去应聘软件开发的工作还是不行的。

经过仔细的思索,我已经决定去找工作了,现在正是找工作的好时候,虽然我没有多少项目经验,但我相对于应届毕业生自信多了,也许这就是培训的力量。不过哪怕找到一份小小程序员的工作干着也行,因为现在对自己的职业定位还有点迷茫,我自己的性格属于那种做事情非常认真、踏实、细心,感觉更适合做软件测试方面的工作,对于软件开发我还是抱着先试试工作的态度,主要源自于我自己头脑反应太慢,估计一直做软件开发对职业发展前景是有碍的。

最后告诫那些还在上大学的朋友们,如果你们想在软件行业发展,那你们一定要在上学期间多上网看一些编程方面的视频,自已尝试着把企业要求的知识点自学一下,跟着视频做一些小型的项目。其实自学知识点是不难的,只有你有恒心。因为我培训的感觉就是公司要求的一些东西很多并不是我们不懂,而是我们在学校其实是连听说过都没有听说过,这样的话哪个公司会愿意。

软件开发心得体会篇5

作为一个软件开发人员,记得在我第一天进入公司实习的时候,首先要学习的就是编程规范.相信每个搞开发的同学都跟我一样吧.

编程规范在学校里是十分不重视的.老师也不会硬性地要求学生要遵照怎样的规范去编写代码,实验或者作业什么的,只要能实现功能就ok了.但是公司却不一样,公司的代码并不是一个人编写,别人很可能需要阅读甚至修改你的代码,阅读一个不符合规范的代码,所需要的时间可能比重新开发还要漫长.代码规范的重要性是不言而喻的.当然,作为一个开发人员的前提,我还是公司里的一个员工(虽然不是正式的...).我还必须遵守员工的规范.

其实员工规范也没有什么特别多的要求,个人认为就跟上学差不多,虽然规范是差不多,心态上却有着很大的差异.原因无他,你到学校是自己交钱上学,上班却是别人发工资给你.拿了人家钱,还要扰乱人家的规范,这种事我还真干不出来.看来钱不论到哪里都是一个问题,呵呵

感悟二:我其实是一种很唯心的动物

其实本来,我是写"人其实是一种很唯心的动物",但不知道别人是不是也这样,虽然我觉得是,却无从考究,还是严谨点.

为什么说我唯心呢?当我心里把自己当作一个学生,跟把自己当作一个上班族时,在各种细节上都会不一样,例如那有点虚无缥缈的"气质",或者是说话的语气.

这个大概是"站在不同的高度,看到不同的风景"吧.正如老总看的是公司发展方向,主管却在看业绩,经理在看项目,小弟们在看代码...

感悟三:设计模式很重要

设计模式是我到公司才接触的事物,主要是讲述一种面向接口的编程思维,按照设计模式所编写的代码,会比学校那种直接实现功能的代码繁琐一点,增加很多看似多余的虚类或者接口.但是这种代码更加具有拓展性,更好地把数据封装起来.在增加状态,增加类的时候,并不需要修改过多代码,这种代码对于版本升级尤其重要.

在公司培训学习中,我总能很快地掌握各种设计模式的要领,获得上司的好评.但是我明白,设计模式真要应用到代码中去,是要培养一种习惯.

个人观点好像说得有点多了,下面说说我这3个月里的实习情况.总的而言,我到公司接触了2个平台,一个是现在很火的android,另一个则是nokia的qt.android用的基本是java语言,其中还会带点xml语言;而qt用的则是c++.

对于这2个平台,用着的感觉其实大同小异,用我上司的话说,基础打好了,语言就不应该是障碍.感觉挺有道理的.想当年我作为一个vb助教,却没半点vb基础,对vb那些基础问题还是可以比较轻松地解决,这跟我其他程序语言基础比较好有着密不可分的关系.

android平台的一个基本窗口是一个activity,除了基本的activity外,还提供listactivity和tabactivity这些拓展的子类,每一个activity都可以看作一个窗口,一个进程可以有多个activity,每个activity都拥有一个view,view可以通过xml设定,当使用activity的子类时,必须注意这些子类的xml必须含有特定id的控件,或者不用xml实现view,系统会有一个默认的xml去实现那些一个基础view并且实现必要的id.

在谈到view,那么就必须说到layout了,android的layout很强大,最基础的是横向或竖向的排列布局,另外还有网格,表格布局等等.掌握好布局的方法可以让我们对界面设计事半功倍.

android有趣东西有很多,在我完成那个移植应用的时候,android总能给我一些惊喜,例如popwindows这个设计,他作用是弹出一个窗口等,或者你可以把他看作一个acticity,效率却比activity快很多.利用popwindows,你可以做出风格各异的消息框,菜单栏,下拉菜单等等.

另外还有一个抽屉类也很特别,他就像触屏系统的解锁一样,拖动手柄,便可拉出一个界面,这种设计大大地节省应用的空间,减少切换界面的操作,从而降低应用的功耗.告诉大家一个很多人不注意的地方,android应用如果进行横竖屏幕切换的时候,进程会完全关闭后,再重新打开的,因为android做了保存状态的操作,所以很多人会以为屏幕切换后,进程还是本来的进程.

qt跟android有很多共通点,例如android的activity就如qt的qwidget,当然,他们的状态机有着很大的区别.

qt最大的特点是他的信号槽,通过信号和槽的连接,可以把很多类与类间相关的函数连接在一起,甚至可以传递参数

实习心得

从学生到走上工作岗位,一步步的熟悉和认识着周围的环境,熟悉这社会生存之道!在这里我学到了我离开校园的第一笔知识,这些都是从书本上学不到的知识,从体验公司的文化到亲身接触公司的每个部门的人员,从公司的季刊杂志上,从其他员工的言谈中,有好的信息,也有不好的耳闻,总之,我的感觉中,我们的公司还是在不断前进发展。

从学校迈入社会,华润以自己的姿态给我这样一个良好的锻炼平台。从学生到工作,华润以自己的品质和精神让我了解和洞察并融入社会这个大家庭,华润为我创造了这样一座桥梁。融入华润,融入社会,我以华润的精神强化自己,以华润的记纪律规范自己,每一天努力,每一步的行动,都让我逐步提高和完善自己,以至于在这个平凡的岗位上做到一个合格称职的职业人。

工作中有苦有乐,产线上同事之间的互帮互助,让我充分体会到与人协作,共谋发展,合作共利的快乐。产线5s让我深刻认识到良好整洁的工作环境是工作效率和品质保证。产线纪律是我规范和端正自己的工作态度,保证每一颗电路的品质。在这样的环境下,在这样的氛围中,我也渐渐养成了良好的工作习惯和责任意识,努力将这份工作做到更好。从华润到社会大家庭,从一颗细小的电路到做人做事,不容置疑每一步都至关重要。“千里之行,始于足下”,我想,一切都从身边做起,从细节做起,从小事做起,从当下这份工作做起。播种行为,收获习惯;播种习惯,收获性格;播种性格,收获命运。一点一滴的积累,一点一滴的进步都将决定和影响着我的将来!

软件开发心得体会篇6

这个暑假惠普派人到我们学校来开展软件测试培训。老师说机会难得所以我就参加了,说实话每天在教师从早晨坐到下午,中间只有一个半小时休息时间,这样还是相当累人的。我们第一天开始就觉得这个简直比平常上课还累啊。

不过看到老师讲得如此认真,看到惠普如此强大,我看在座的学员都听得非常认真。所以向我这种上课从来不听讲的这回都听得认真得不得了,呵呵。

前两天确实还是有点累,讲的也是理论课,而且以前我们从来没有接触过测试这个行业,所以听得也嘿吃力。但是老师给我们讲了不少他们的工作经验和惠普这种世界五百强美国十强的企业文化,鄙人是深受教育啊。

后两天我们每个人带一个笔记本进行上机操作了。我们的第一个任务就是安装软件,那个软件好大啊,整整2个G。我们考啊考啊考了好久才考完。软件叫QTP,就是惠普的快速测试专业版。确实是一个强大的软件,呵呵大家用了就晓得了!

有了电脑自然好耍了,我们休息的时候就上网啊,我看猫和老鼠都看得差不多了。不过那个软件毕竟是大软件,操作还是比较复杂,而且全英文版,对我这种英语水平的人确实有点难以接受a。不过呢,我还是在老师的敬业精神鼓励下学到了不少知识受益匪浅啊,单词也记到了不少!离六级又近了一步!!

四天的培训在今天就彻底的结束了,下午老师给我们开座谈会,问我们有什么问题,结果呢我们一点问题都没得。老师教得好啊呵呵!我们没得问题老师又只有给我们说他的光辉历史了撒。什么当年大学毕业了差点工作都没找到啊,什么当年英语学得最撇啊,还有找不到工作在网吧郁闷打游戏啊呵呵。

我记得老师说得最有感情的一句话就是“社会是黑暗的啊”。我们对这句话都是深信不疑!所以以后呢,要好好努力啊,不管社会有好黑暗你都能找到光明,生活就是如此,时间本就平凡。好好干好好干!

在沙盘对抗中直面市场竞争之激烈,通过不同角色的扮演,运用企业经营管理理论和信息化管理技能,进行市场选择,投资决策和生产运营,增长才干,搏击商场,百战不殆。

我们通过模拟企业实训,置身于仿真的生产经营过程,完成企业生产经营中各种信息的采集和处理。体验与其他部门的协作,作到边学边练,学用结合,迅速掌握ERP软件的使用要领,提高信息化管理技能,经历完整的企业经营进程,感受现代化信息技术的魅力。

在仿真的企业环境中,构建传统的手工管理模式和利用计算机技术信息化技术的现代化管理模式,模拟现实企业的生产经营管理过程。

(一)我在学习中学习的知识

1.在一个仿真的企业环境中我作为CEO带领整个企业进行了8年的商业抗战,我的搭档分别扮演了生产总监,采购总监,营销总监,财务主管,财务助理,信息总监及商业间谍。在学习中我们互相帮助,互相进步,互相学习。在前一年的学习中我们还刚刚接触并不了解太多的东西,在之后的两年和三年的学习中我们光荣“破产”了,成为了给老师干活的最早的一个企业。我们模拟了企业的职能岗位熟悉了企业的业务流程。充分扮演了自己所担当的角色。

2.体验了整个企业的经营过程,并把所学的理论知识应用到实践中,由此加深对企业的物流,商流,资金流和信息流的体会,促使我们进行了积极的思考,了解了企业的运作,提高了学习和实践能力。

3.开阔了视野,提高了综合素质,加深了对企业管理信息化的认识和理解,提高企业信息化管理技能,掌握了企业信息管理流程。

(二)在学习中发现的问题

1.企业核心竞争力缺乏持续增强和系统改进,严重制约企业长远的发展,客观上需要一种先进的管理工具帮助企业系统解决自身发展中的种种问题。

2.充分的准备是经营成功企业的基础

由于第一天的学习前我们都没有进行预习导致我们企业的所有员工没有一个概念,在老师的培训下还是没有一个清晰的概念及相关的知识,以至于在沙盘对抗中失去大量资金与订单。

3.将失误降到最低

在信息总监的两次误操作下我们在第二年的经营中丧失了投递p1广告的机会,在之后的订单中我们也无权在进行抢单,因此我们企业的p1被积压了很多库存,尽管通过我们的营销总监的分析我们将会在未来将产品卖出并且是大卖,可是我们还是由于短期贷款的到期使企业破产。我相信在真实的企业中误操作也会发生但是我清楚这样的错误给企业所带来的将是无法弥补的损失。所以我相信失误的出现率也是一个企业成功的关键问题。

4.合理的运用媒介

广告的投入也是企业取得好的业绩的重要组成部分。

广告策略是指为了达到预期广告目标而进行的各项谋划运作,是广告的手段、对策和谋略等的组合。站在企业家的立场来看,广告策略首先是促销的一种手段,是企业的一种投资行为,而不是艺术家的个性作品,也不是学者的理论实践,用广告大师奥格威的经典名言来说:“我们的目的是销售,否则便不是做广告。"所以我们评价广告策略的标准是广告成本投入对经济效益产出的贡献程度,即最好的广告策略将是以最少的广告投入达到最大的效益产出。

在广告策略中投资广告和最后的广告收益都应该用科学的方法进行计算然后作出合理的判断及预测方能为企业最终取得利润做出应有的贡献。

5.采购的合理化

预测准确的市场需求对采购来说也至关重要,不浪费材料又能满足市场,保证供给也成为了一个企业的核心问题。

软件开发心得体会篇7

随着我矿“两化”融合工作的推进,软件开发方面人才显得更加缺乏,所以我选择对ASP.NET进一步深入学习;经过近两个月的自主学习,进一步掌握了ASP.NET动态网页制作的一些理论知识和基本常识,不仅要应用各种方面的知识还要对所学的知识学会变通使用,虽然会有一些成功的地方。曾经看到网上有这么一句话,一个优秀的网络程序员不但要了解自己领域的一些专业技术,而且很多时候还要充当半个网络工程师,半个美术设计师和半个数据库管理员。ASP.NET是Microsoft.Net战略的核心产品,asp.net凭借它丰富的控件,以及具有革命性的code-behind技术,以及良好的封装性,无疑成为业界开发activeserverpage的一门巨将,

ASP.NET是ASP(微软动态服务器网页技术)的最新版本。执行效率大幅提高:ASP.net构架是可以用Microsoft(R)公司最新的产品VisualStudio.net开发环境进行开发,WYSIWYG(WhatYOUSeeIsWhatYouGET所见即为所得)的编辑。简单性和易学性、高效可管理性ASP.net使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为"ZEROLocalAdministration"的哲学观念使Asp.net的基于应用的开发更加具体,和快捷。一个ASP.net的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。多处理器环境的可靠性ASP.net已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝链接技术,将很大的提高运行速度。即使你现在的ASP.net应用软件是为一个处理器开发的.,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的ASP确做不到这一点。自定义性和可扩展性ASP.net设计时考虑了让网站开发人员可以在自己的代码中自己定义"plug-in"的模块。

这与原来的包含关系不同,ASP.net可以加入自己定义的如何组件。网站程序的开发从来没有这么简单过。安全性基于Windows认证技术和每应用程序配置,你可以确性你的原程序时绝对安全的。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,把基于通用语言的程序在服务器上运行。将程序在服务器端首次运行时进行编译,比ASP即时解释程序速度上要快很多.而且是可以用任何与.NET兼容的语言序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。当创建ASP.NET应用程序时,开发人员可以使用Web窗体或WEB,或以他们认为合适的任何方式进行组合。每个功能都能得到同一结构的支持,使您能够使用身份验证方案,缓存经常使用的数据,或者对应用程序的配置进行自定义.如果你从来没有开发过网站程序,那么这不适合你,你应该至少掌握一些HTML和简单的Web开发术语(不过我相信如果有兴趣的话是可以很快的掌握的)。你不需要先前的ASP开发经验(当然有经验更好),但是你必须了解交互式Web程序开发的概念,包含窗体,脚本,和数据接口的概念,如果你具备了这些条件的话,那么你就可以在Asp.net的世界开始展翅高飞了。

在这短短的两个月中,我知道在程序设计的时候,不要太在意程序是否最简洁灵活,对于一般开发者而言,程序规范化和可读性可能比追求程序的灵活性更加重要。在互联网资源越来越丰富的情况下,我们可以参考一些规范的程序源代码来学习。同时我也知道,想要学好这门课程,所要具备很多条件,首先打代码要规范,要做注释,这样回头来看程序时可以很快的看懂,一方面可以练习自己的逻辑表达能力,对以后遇到难以实现的功能也可以很好的表达出来向别人请教,而且出去从事编程工作的话,代码的规范是相当重要的。还有一点要学会总结,把自己做的程序用到的知识点列出来就可以很好的总结自己的知识点。当形成知识体系,对知识的理解就会更上一层楼。

软件开发心得体会篇8

时间过的好快啊,为期三个礼拜的实习生活即将结束了,短短的三个礼拜让我们收获很大,专业知识、编程水平都有很大的提高。刚开始三天的高强度的课程安排让我们受益匪浅;接下来的上机实习又让我们可以巩固了课程。这让我觉得实习生活充实而有意义。辅导老师配好了环境之后,我们开始了项目的制作,这次项目实习算是自己小学期间主要完成的项目。最后,自己的努力还是有收获的,看着电脑上记录得满满的代码,看着自己的项目最终能够运行成功,就觉得很有成就感。

在本次的实习中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这次所学知识与实际的应用,理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次实习对于我以后学习、找工作也真是受益匪浅,在短短的一个星期中让我初步从理性回到感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发!相信这些宝贵的经验会成为我今后成功的重要的基石。

在此,我非常感谢学院领导和指导老师对这次实习的大力支持。

软件开发心得体会篇9

本周是实习的第一周,很幸运碰到了产品部很有耐心的leader詹老师。实习第二天他让我做一个H5的游戏类应用,主要用于微信中分享。之前对于自己的水平是否能完成完全没底,但感觉第一次实操确实也有点让人兴奋,之前关于产品开发的印象只停留在书本上。

詹老师让我模仿“过家家gogaga”所开发的“打电话认师姐”微信小游戏写一个类似的应用。我把原始应用找出来便开始抠代码,第一步是将套在微信接口中的原始应用抠出来(套在微信接口的原始应用只能在微信浏览器中运行,无法在电脑上测试),周二开始做.

一开始我的效率非常低,因为我很多测试方法并不熟悉,在参阅了微信JS-SDK后总算把原始代码抠出来,厘清该应用的基本逻辑后开始重写,在詹老师的耐心地指导和对基础知识的讲解下,我们将原始代码中120行的CSS代码优化到60行,将五百多行的JS代码优化到只有60行,这事实上是在原有的逻辑上完全重写了,这让我开始有点成就感了。

也第一次感受到产品开发中的大局观,这种大局观更多的是体现在细节上,比如代码变量名的设置需要与文件存放联合考虑,以便日后修改和维护。詹老师在讲代码逻辑的时候亲自写了一个例子让我体会,虽然消化这些用了快一天,但感觉真的收获很大,有拔云见日之感。

实习一周后所遇到的种种困难也让我意识到自己很多问题,归纳如下:

1.尽管之前对于书本的学习有一定积累,但还是暴露出代码的不熟练,细节方面处理能力差,在细节上耗费时间太多。

2.缺乏基本的软件开发测试思路,比如之前不知道chrome具有相当强大的错误测试功能,它对于没有触发的函数也有错误提示。

3.缺乏专注的习惯,比如詹老师让我先完成功能方面,但我却习惯于去找找界面的素材,这就导致两边都没有做好。虽然认识上知道不该这么做,但是习惯上却很难改。

4.自己很多时候虽然有问题但是不能完全阐述清楚,所以跟leader沟通的时候往往支支吾吾,以后有问题自己首先得想清楚,将问题讲明白也是很关键的能力。

另外也记录一些自己的浅薄感受:

1.工科出身的詹老师对于代码的运行效率有很多的考虑,但对于用户体验和交互效果似乎稍微少点,当然也可能是我新来并不了解的原因。

2.公司在做小应用的时候并不会在用户测试和产品结构功能上讨论太多,公司要的是迭代效率,就是要快速出应用,然后再快速上线下一个。

本周接到新的任务,为中国教育在线制作H5的招聘页面,之前的“给师姐打电话”的H5应用还没有优化好,能做的改进的地方还有很多,leader詹老师让我先把招聘网站做好,H5应用先放放,他给了我大街网做的“中国好Offer”作为参考,拿到之后确实感觉这些页面都做得很好,詹老师搜集的资源确实十分丰富,从实习到现在他发给我的参考很实用,在看完了五六十个H5的招聘页面之后开始构思,在将产品架构基本做好后,测试又发现很多问题,有技术层面的,但更多的设计本身的问题。

技术的细节的问题:基于jquerymobile的开发框架国内的资料十分有限,不得不查阅原始的英文API,很多问题也只能去JQM的论坛查找,这些都十分考验英文阅读能力。CSS的布局问题繁杂,在各个浏览器,各个应用的渲染都不一样,也是很折磨人的过程,我现在就碰到了css中font-weight属性在Safari没有渲染的问题,至今没有解决。

逐渐体会到前端工作的繁琐与细节,需要学的东西很多,有时候可以凭自己一些小聪明在当前解决,但并没有摸到问题的根源,扬汤止沸不是长久之计,但又好像没有足够的时间来系统的摸索,我只能先将这些问题一一记下来。这些技术的体会是一方面,另一方面便是产品的设计层面,现在就是因为产品快做好后发现有很多地方犯了低级错误,以往的纸上谈兵头头是道,等到自己亲身实践却感到把握不住很多设计原则,比如界面设计给用户造成的不必要的干扰,功能可见性的不足,逻辑上的不严谨,以下我归纳了下岗做好的H5界面存在的交互问题:

1.页面的设计初衷是左右滑动来切换页面,但给几个朋友测试后都不能进入页面后就自然而然的知道是左右滑动。

2.joinus的图标给用户是按钮的错觉,在测试中很多用户以为是按钮,都会下意识的点击。

3.交互效果的乏善可陈,与滑动的逻辑似乎也没有太大关联,只是单纯的加入了一些css3的动画。

4.用于提示左右滑动的动态箭头会让用户以为是点击作用

软件开发心得体会篇10

立项前

1、统一元素设计需考虑周全

也许是初创团队的缘故,我不得不感叹团队对产品经理要求之严格之缜密,项目全程只有一个人负责,所以大到产品线对接,小到一句提示的位置和展示形式都需要一一推敲。

哪些元素应该做到统一

a、提示方面:统一的操作成功/失败提示;统一的弹窗形式;提示语言采用较统一的句型;为空情况的友好提醒;溢出情况的友好提醒;表单实时验证的提醒形式等。

b、文字方面:是否有统一的段落前“·”号;统一的链接状态;统一的字体、间距、行高等。

c、图片方面:调取图片的统一尺寸;如果是上传图片类的操作,需要考虑周全全站的调取情况,以及考虑是否统一预览图的尺寸等。

d、细节交互:未激活功能的按钮做“灰色”处理(例如用户没有勾选信息时批量删除按钮不可使用);按钮点击的状态统一(例如增加“提交中”的按钮状态,以防止网速慢用户狂点某一按钮的情况);特殊控件的统一等。

也许会有朋友说,上面有些是交互设计师需要做的事,但我一直认为作为一个产品经理考虑周全一些,没坏处。这些“统一”同样可以用在验收阶段,要知道,即使一个像素也可以改变整个产品的感觉。

2、原有功能的去留

我一直觉得升级已有产品比开发新产品难一些。这就像栽培植物一样,新种下一棵果树无非需要选对了土地,然后刨个坑种下去,然而成长期的去病枝、打顶等各种修剪所消耗的精力往往更多。

改进已有产品常常需要面对一个最棘手的问题:原有功能是去是留?

原功能去掉的话是不是会影响部分用户使用?是否需要通过公告、站内信、界面引导等方式友好地告知用户?怎样把对用户的伤害降至最低?

原功能留下的话是不是可以优化完善?听到了什么用户群怎样的声音?是否要在这次升级中做调整?

这些问题当接到项目的时候,产品经理就应该考虑周全了。特别需要注意的是,如果这个产品之前不是自己设计的,那么最好找到prd说明文档细细研究一遍,对把握不准的功能点找到原负责人确认,毕竟树苗是ta摘的,别把将来最能结果的枝干给砍了。

3、产品线上下游的对接

昨天有跟朋友聊起淘宝强势之处,就是产品与产品紧密捏合,线上线下、跨平台跨行业形成了一个盘根错节、根深蒂固的根基,无可撼动。

所以把握产品线上下游和产品周边很重要,即使一个看似简单的新闻展示页面修改也会牵扯到编辑后台、广告位管理、帮助中心,甚至是访问统计、数据需求的变更。

这要求在产品设计开始前,需要把该产品“连根拔起”,仔细梳理相关脉络,如果产品线够长,一个清晰的产品线结构图很有必要。

项目中

1、项目期间来自相关产品线调整的影响

项目期间相关产品线的调整是我最不愿意遇到的情况,这就像你在通往目的地的道路上高速行驶,就快要到达终点了,突然一个人告诉你:你走错路了。

项目里有一个通用模块,产品设计到一半,这个通用模块改了;项目里有一个流程,产品做到一半,这个流程废弃了;最要命的是已经立项开发了,你不得不硬着头皮跟程序员说:“因为一些不可抗拒原因,这个需求咱不做了。”

对于一个耗时较长的项目来说,这种情况难以避免,事出原因私自总结有三:

a、严重体验性问题:例如某个流程遭到大量用户的不满,为防止用户流失,不得不做临时调整,而倒霉的是,你也在用这个流程。

b、相关项目的影响:包括并行项目和新项目。例如你的同事在设计另一个产品,你们的产品相互牵扯较多,所以需求分析时做过很多沟通,但有一天,同事告诉你,ta的一个需求做临时调整了会影响到你,怎么办?

c、老板的突然决定:不举例。

最终的解决方法不外乎三种:立即调整、延期调整、不调整。个人的处理原则一般是对a种情况进行立即调整,对b、c情况讨论并选择性延期。

为什么这么做呢?a情况是必须要改的,时间早晚问题,长痛不如短痛,b、c两种情况必须坐下来细细讨论。需了解这个需求为什么要改?是长期对策还是临时决定?能否延期,记录需求等下一版本再开发?如果b、c情况提出来的需求没过两天又有改变,那与你配合的前端和程序员也太没有安全感了。

这个时代能耐心阅读完XX枚汉字的人越来越少,较大型项目的产品工作心得[下]未完待续,欢迎交流……

2、需求变更

承上,需求变更是每个程序员、产品经理、设计师等都会遇到的情况。产品经理不是神,项目组也不可能是开了无敌状态抵挡任何外界的影响。

当遇到不得不变更需求的时候,产品经理应该怎样处理呢?下面是个人的四条建议:

a、积极处理。往往,当一个设计愈是趋于完成,人们愈是倾向于局部调整,而不是做重新设计。当一个需求因为众所周知的原因不得不调整的时候,作为产品经理需要做的第一件事便是积极面对问题,积极处理。

项目开发往往是一个紧张的过程,每半天甚至每几个小时就有若干个功能点开发完成,当一个需求变更传达出现“延迟”,这个变更对项目的正常进程的“破坏力”就会更大一些。

b、保持沟通。“说话容易,沟通很难。很多事除非对方自己想明白,劝是没有用的。所以,很多时候,沟通是个自己挣扎的过程”这话没错。需求变更直接会影响到下一道工序,产品经理需要将需求变更的细节和原因传达给相关人员,包括视觉、前端、程序、测试等。

这是很多产品经理表示非常痛苦的过程,因为可能会遭到数落和冷眼,日本有一个礼仪原则是“不要给别人添麻烦”,但是在项目中,这不可避免。

个人认为所有沟通的障碍都源于思想的不统一,如果让大家觉得这个需求修改是在浪费时间,那么沟通上的不畅快在所难免。项目不是这样算的,需求既然更改一定有所目的,产品经理需要将这个原因讲明白,不做修改或节约沟通时间导致的返工,后果往往更严重。

【软件开发心得体会】相关文章:

软件开发心得体会03-03

软件开发实习心得体会11-15

软件开发心得体会(精选4篇)03-21

关于软件开发实习心得体会06-12

关于软件开发实习心得体会08-08

做软件开发项目实习的心得体会06-12

软件开发社会实践心得体会04-10

做软件开发项目实习的心得体会09-12

做软件开发项目实习的心得体会范文07-31

软件开发的心得体会(一)

软件开发过程中的任何一个活动都是为了能够产出优秀的代码。所以,代码才是核心。

1.代码是软件开发的基础编码是软件开发过程中最基本、最底层的技艺,然而也是最重要的技艺。任何一个领域的专家都需要花费大量的时间来进行基本技艺的锻炼,木匠需要花费大量的时间来锻炼他们对各种工具的掌握,厨师则需要练习刀工和火候。程序员也是一样的,对我们来说,语言的各种特性必须要了然于胸。而对软件的管理也需要从代码做起。从2000年到现在,国内兴起了一股软件工程热,需求管理、配置管理、甚至CMM。面对纷至沓来的各种方法学、UML、OOA,大家似乎已经热衷于这些概念本身了,却往往忽略了软件开发中最基本的元素:代码。在和很多软件组织的接触过程中,我们认为大多数组织急切需要的并不是这些工程理论,不是说这些理论不重要,而是这些组织的症结不在于此。很多的组织连代码的质量都管理不好,又何谈其它呢?代码管理是基础的基础,从管理的角度上来看,任何一个组织的管理都需要一个从上至下的管理过程,有基层的管理人员,也有高层的管理人员。对代码的管理就是软件开发中的基层管理,它起到的作用就是能够把需求、设计的思路贯彻到最终的代码中。“管理无大事”。对软件的管理也是一样,大部分的问题都是由于很小的原因引起的。例如,一个产品如果后期在debug上花费了大量的时间,那么,这种现象是由于什么原因引起的?一种可能的原因是前期的代码设计中对代码质量的把握不严。每一次代码功能的演化并不会产生太多的问题,但是当代码累积越来越多的时候,问题也就慢慢出现了。那么如何解决呢?可以加强QA的力量,也可以引入复审,还可以引入单元测试。总之,要有一种方法对代码进行控制。软件的开发过程就象是一部精密的机器,任何一个环节的变化,都会对其它的环节产生影响。把软件过程按照瀑布的形式进行划分是一种分解的处理思路,但同时我们还应该看到不同活动之间的相互影响。软件开发中的生命周期模型也是一个层次模型,从业务建模一直到软件实现,需要跨越数个层次,同样会出现执行不力的情况,例如,代码设计偏离需求、偏离设计的情况比比皆是。如何避免这种情况呢?这就需要我们从源代码的角度,反思其上游的实践活动,是否足以约束代码设计?就拿XP来说,他解决这个问题的方式是尽快的进入代码开发阶段,从代码开发中发现问题,并在下一轮的开发中解决。这种思路是正确的,但XP毕竟是方**,他不会告诉你过于细节的东西,尽管XP已经提供了大量面向代码的实践。因为方**的抽象级别比较高,使得他必须舍弃部分的细节。而这篇文章告诉你的,就是这些细节。就像我们在下一节中讨论的例子,需要在代码中加入对异常的处理,那么,异常的源头在哪里呢?是需求,在需求中,我们发现了一些业务的非正常的处理序列,发现了一些业务实体的限制性的要求,所以在代码实现中,就需要有相应的异常处理。在例如,一个优秀的异常处理,还需要让客户端程序员了解可能发生的异常,以保证不同代码间正确的集成。2.面向对象的代码面向对象的代码已经在现在的软件开发中占据了主流的位置,面向对象的思路也有其优势所在,就像后文所讨论的,面向对象代码有着非面向对象代码的很多优势,而软件业中很多新的思潮的产生,也都是基于面向对象语言的,所以我们关注的代码将是面向对象代码。面向对象的思想来自于抽象数据类型。对于面向对象来说,它最重要的改进就是把世间万物都描述为对象,而类则描述了同一种对象的特征,而不是像传统的开发方法那样,按照机器指令的执行顺序来进行设计。当然,面向对象代码最终仍然是要按照时序来执行的,但是从程序员的角度看来,面向对象代码更侧重于对象之间的交互,多个对象各司其职,相互协作以完成目标。而面向对象技术的发展,也是朝着更加贴近我们世界观的方向发展。从这点来看,有人说完全没有程序设计经验的人学习面向对象可能会更加的容易,因为他不需要从原先的时序程序的桎梏中摆脱出来,但这未必是事实。面向对象决不是一种简单的程序设计思路。这是我们的观点,也会在下文中反复的论证。和所有的职业一样,程序员,或者是面向对象程序员,始终坚持的一点就是严谨。你会看到各种各样优秀的代码,但那决不是一次能够写成的,要不断的尝试,不断的改进。为什么重构和测试优先是敏捷方法中很重要的一项实践?因为程序员不是神,他们需要慢慢改进他们的代码。虽然罗马不是一天能够建成的,但是在编写面向对象代码的过程中,有一些实践是需要坚持的,它体现了我们所说的严谨。3.编写并管理面向对象的代码编写优秀的面向对象代码并不是一件容易的事情,优秀的OO代码如行云流水,糟糕的OO代码让人觉得浑身起鸡皮疙瘩。编写优秀的OO代码要求程序员有一定的自我修养,能够以抽象的思路看待问题,找到问题的核心并对问题域进行分解。它强调的是一种解题的思路,但这个解不是唯一的。典型的例子是设计模式,设计模式确实给了我们以很大的启发,通过它,我们能够了解到优秀的代码是如何用于解决实际问题的。但是是不是你必须在软件中照搬设计模式呢?如果你这么做,那么你对设计模式的理解仍然不够。我曾和在建筑行业的朋友聊起ChristopherAlexander的建筑的永恒之道。他很兴奋的告诉我,那确实是一本很好的书,能够引发人很深的思考,但是现在也有另外的一种观点,认为美仍然是无形的,应该发自建筑师的内心。对这句话我思考了很久,其实建筑是给人使用的,因此最重要的是它能都给人带来的价值,隐含在其中的那种活生生的气质,这是建筑师文化底蕴的外在表露。所以,ChristopherAlexander在那本书中的目的,也是为了找到一种总结自己观点的方法,来总结自己对人文的认识。至于现在大家对他的思路提出了质疑,那也是一件好事,这说明大家对建筑之道的认识到了新的高度。建筑是这样,软件中的模式也是一样的,我也曾热衷于研究模式的使用,直到某一天我猛然惊醒,与其沉迷于模式的表面形式,为什么不去研究隐藏在它背后的文化底蕴呢?武侠小说中常说无招胜有招,模式的应用也应当到达这个境界,你如果可以在不经意间应用模式的思想,那又何必拘泥于模式的形式呢? 编写优秀OO代码虽难,但还有更难的事情,就是让整个开发团队都产出优秀的OO代码。我们刚才说了,OO对问题的解不是唯一的,但各个不同的优秀解汇集到一起,可能就是一个糟糕的解,这是风格和架构的问题。你如何在团队中制定制度,营造氛围,让优秀OO代码成为团队最终的成果?这些问题,在我看来,要比CMM难得多,这个问题并不是靠花钱就能够解决的。如果能够解决这个问题,这个团队的创造力一定是惊人的。4.面向对象软件开发过程普通的软件开发过程和面向对象开发过程有着很大的不同。回想我们在非面向对象中开发过程中,最经常采用的任务分配方法就是以软件模块为单位,这样的好处是分配简单,不同任务之间耦合程度低,容易操作。坏处是几乎无法做到重用,也缺乏整体性的设计。而面向对象软件开发则不同,它是以类、类集合作为基本单位的。类之间关系错综复杂(虽然我们提倡低耦合的设计,但类之间的关系仍然是相对复杂的)。这种情况下程序员之间相互协作的要求就非常之高,这种关系如果处理恰当,则能够完全体现出面向对象的威力,否则,那将会是一场大灾难,面向对象的软件开发过程要养成一些好的习惯:4.1尽量简化和稳定客户端。个人编程可以是一种享受,但团队开发始终是一项严谨的职业活动,因此多考虑别人,不要设计复杂的接口,虽然你省事了,但这会给理解和使用你的接口和人造成障碍。4.2准备一份简洁的文档,并保持更新。随便一种形式的稳定,可以是代码,可以是UML图,也可以是纯粹的文字(估计没几个程序员喜欢这种形式)。只要它能够传达你的代码的目的,那就足够。记住,更新代码后,同时更新你的文档。过期的文档不仅是废纸这么简单,它会给其它人造成麻烦。切记!4.3尽可能多的考虑异常和错误的情况。

Android智能硬件开发心得总结(一)

前言:转向Android智能硬件开发近一年了,一路过来也经历过几个大大小小的项目,从对Android智能硬件一无所知到现在算是略有小成,期间踩了很多坑,也接触到了许多非Android方面的知识,现用文章的方式将之记录下来,与大家分享。

1.Android智能硬件的定义与应用领域

关于智能硬件的定义,以我理解的角度来看,首先这是一个不同于移动手机的硬件,它本质还是一个可触碰的实质物体;其次关于智能,只要是基于Android系统开发的硬件就可称之为智能,因为智能硬件最关键的特性就是与外部连接通信,也称之为物联网,而Android系统自带优秀的外部连接通信体系。

我们最常听到与见到的智能硬件有手环、智能音箱、智能家居这些比较成熟的消费级商品,这些智能硬件大部分都是没有界面的,与我从事的领域有所不同。没有界面的智能硬件大部分都不是Andriod系统,而有触屏界面的智能硬件我敢说80%以上都是Android系统,因为Android的交互体系绝对是最好的。

市面上成熟的Android智能硬件有:手持POS机、自动售货机、政务自助机、人脸识别门禁、收银机、汽车多媒体、电子班牌、快递柜、影院取票机、广告视频机等等。

2.一款智能硬件产品开发的全流程导入需求,分析确定需求细节,讨论方案的技术可行性。确定项目负责人、产品经理、硬件工程师、软件工程师、结构工程师、UI设计师。由需求确定使用哪些外设,对外设进行选型,需充分考虑性能、质量、结构设计、价格、供应商支持度等各方面的因素。优先确认使用什么Android主板,确认主板与外设选型后告知结构工程师进行结构外形设计。硬件工程师负责外接设备的控制板开发并提供接入协议,硬件工程师还须将外设接入Android主板的线材适配好。UI设计师提供界面给软件工程师(Android),开始进入进行软件开发阶段。产品样品建模制作出外壳,打磨、喷漆后进行所有元件的组装。样品烧入程序,开始交予测试。程序bug修改,稳定性测试。所有测试通过后,撰写用户文档与操作手册。一款智能硬件样品全部制作完毕。3.智能硬件开发所涉及的技术体系概述AndroidUI列表(RecycleView)弹窗(Dialog)动画(Animation)文字与按钮(TextView)手势(Gesture)外部通信串口通信(UART)以太网Wifi、热点4G蓝牙USBNFCI2CGPIO存储TF卡U盘FTPLinux系统脚本点亮屏幕固件升级NDK音视频播放设备通讯协议加密接入已有的C库语音识别人脸识别外接设备二维码摄像头红外感应器喇叭、麦克风触摸屏LCD液晶屏打印机NFC模块IC类读卡器4.关于主板选型

Android主板的选型一定要放在首位,因为这是整个产品的控制中心,核心元件,如果不能自己定制主板,那就只能依赖于供应商提供方案。现行市面上非常多做安卓工业主板的,不愁找不到主板,但想要很特殊的定制可能会比较麻烦,除非你的量很大,否则只能用人家的标准板。依赖供应商还有一个特别麻烦的事情,就是系统功能定制的沟通,这是一个特别漫长而痛苦的过程。

4.1Anroid系统在智能硬件中所必要的功能

结合多个项目的经验,总结出智能硬件在安卓系统中所基本必要的功能。

序号功能说明1开机自启智能硬件一般只运行一个应用,且开机就要自动打开2保证应用永远在前台运行让用户永远不会看到除了应用之外的其它安卓界面3有接口设置系统时间有些局域网场景无法连接外网,需要同步局域网服务器时间4定时开关机(带RTC电池)为了让系统更好运行,可能需要每隔几天重启一次5静默安装应用,完成后直接拉起应用更新安装应用过程必须是无感的6系统固件更新接口将新的系统固件放入系统后能用有方法更新7支持U盘、TF卡且有路径检测对于非联网管理的产品必须要能检测到外部存储插入8设置静态以太网IP接口对于某些依赖于IP地址进行管理的产品必须要能设置IP9开启/关闭背光电源接口有些场景可能要求节能环保,关背光很必要10读写IO口接口IO口是控制外设开关的关键功能11设置屏幕显示方向横竖屏根据项目会有不同要求4.2主板CPU芯片的选择

CPU芯片是一块主板最核心的元件,对于智能硬件而言CPU价格是不能太高的,不然会导致产品成本过高竞争力下降,但CPU性能又不能太差以让产品毫无竞争力可言。从我观察的情况来看,现在市面上的智能硬件基本是三家芯片厂商占据了绝大部分市场,它们分别是:

瑞芯微Rockchip,简称RK全志AllWinner飞思卡尔FreeScale

瑞芯微是我接触比较多的,在百度搜安卓主板出来的广告厂商基本都是采用瑞芯微方案的,总体来说瑞芯微方案是最成熟的。

全志的安卓主板给我的感觉就是很便宜但系统都是4.2或4.4,说实话有点落后时代,不是5.0系统以上的主板我都不想碰,界面太丑系统还有点卡。

最后关于飞思卡尔,这是一个国外厂商,我手上还没接触过这个芯片的板子,很少见搭载这个芯片的安卓主板,也许在某些特定应用场景才会考虑这个芯片吧。

下面重点介绍下瑞芯微(下面简称RK芯片)系列4款常见的芯片。

芯片定位特性RK3188低端四核Cortex-A9(32位),频率最高1.6GHz,四核Mali-400MP4GPU,支持OpenGLES1.1/2.0,1080P视频编解码(H.264)RK3288中端四核Cortex-A17(32位),主频最高达1.8GHz,Mali-T764GPU,支持OpenGLES1.1/2.0/3.1,OpenCL,DirectX9.3,1080P视频编解码(H.264/265)RK3368中低端八核64位Cortex-A53,主频最高达1.5GHz,PowerVRG6110GPU,支持OpenGLES1.1/2.0/3.1,OpenCL,DirectX9.3,1080P视频编解码(H.264/265)RK3399高端双Cortex-A72+四Cortex-A53大小核CPU结构,主频最高达1.8GHz,Mali-T864GPU,支持OpenGLES1.1/2.0/3.0/3.1,OpenVG1.1,OpenCL,DX11,1080P视频编解码

目前RK3288工业主板的价格大概在350~500之间,RK3399价格在500~700之间,RK3188比3288便宜,RK3368介于3288与3399之间。

对于绝大多数应用场景而言,RK3288绝对能满足需求,价格也比较适中,系统一般是Android5.1不用进行运行时权限适配。RK3399主要用于对于运算能力要求比较高的场景,比如人脸识别,3399还有一大优势就是板子面积相对而言比较小。我目前基本都是采用3288进行开发的,对于智能硬件而言成本还是首要考虑因素,毕竟制造业利润低,苦笑~

下图是一块3288的主板示意图及规格说明

5.关于串口通信

串口通信是Android智能硬件开发所必须具备的能力,市面上类型众多的外设基本都是通过串口进行数据传输的,所以说不会串口通信根本就做不了智能硬件开发。首先来看一张RK3288的架构图,在ConnectActivity那一个模块可以发现UART*5的字样,这就表示3288有5个串口可用,其中串口2一般是调试口不开放使用。

5.1UART定义

通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种串行异步收发协议。

UART串口有三种工作方式:单工、半双工、全双工。硬件连接比较简单,仅需要3条线,注意连接时两个设备UART电平,如电平范围不一致请做电平转换后再连接,可参考此文章。

我们常见的串口通讯设置的界面如下所示,主要有下列几个参数;

Speed(baud)波特率Databits数据位Stopbits停止位Parity奇偶校验位FlowControl流控

我们的设置基本都是8位数据位,1位停止位,无校验无流控,就如上图所示。对于程序开发而言,主要关注的参数就是波特率。

上述的那篇参考文章博主关于波特率是有点误解的,他将比特率理解成波特率,其实两者是有区别的。

波特率表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标,它用单位时间内载波调制状态改变的次数来表示。在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。

1波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息),1比特每秒是指每秒传输1比特(bit)。单位“波特”本身就已经是代表每秒的调制数,以“波特每秒”(Baudpersecond)为单位是一种常见的错误。

按照上述的基本设置,其实一个码元总共传输了10个比特,1个起始位+1个停止位+8个数据位,如波特率为9600,那每秒一共传输了9600*10=96000个比特,换算成字节为12000byte,约合11.72kb。

需要注意的是这12000byte指的是串口实际一共传输的数据位,但对于我们程序而言,真正能处理的数据就是除去起始位与停止位的数据位,对于传输8位数据位的设置而言,波特率是多少则传输的字节就是多少。如9600的波特率表示每秒传输9600个字节,每毫秒9.6字节。

安卓主板中一个串口端子的定义如下图所示

几乎所有安卓主板上的串口都是这种4pin的形式,这里有一个特别重要的点,就是对外设接线时,RX要对上外设的TX口,TX则对应RX口,否则是接收不到数据传输的。

在我所接触的众多外设中,安卓的常用串口有三种标准接口。

RS232RS485TTL

UART所指的是硬件接口,是硬件层次的描述。而TTL与RS232、485则指的是数据传输的电平标准,计算机的存储单位是二进制位(bit),也就是0和1,而0和1怎么用电压来表示呢?不同的表示方法于是对应了不同的标准,这就是TTL、RS232这些电平标准之间的区别。

所有CPU芯片的UART数据传输的电平都是采用TTL标准的,我们所看到的安卓主板上RS232或485的接口都是要再需要经过一次电平转换才能与CPU进行通信的。可以这样说,安卓主板CPU直接引出来的串口管脚都是TTL标准的,如需要其它的接口则要中间再增加一个电平转换芯片以满足要求。

参考文章:https://www.jianshu.com/p/f1bfc7f6059bhttps://blog.csdn.net/zhuyongxin_6688/article/details/78001767

5.2三种UART接口介绍TTL

TTL(Transistor-TransistorLogic,晶体管-晶体管逻辑),TTL电路的工作电压是5V,它的输出可以是高电平(3.6V)或者低电平(0.3V)。为了用这种模拟量的电压来表示数字量的逻辑1和逻辑0,TTL电平规定:

对于输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;对于输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;

参考:https://blog.csdn.net/wofreeo/article/details/82389002

RS232

它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”,该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。

后来IBM的PC机将RS232简化成了DB-9连接器,从而成为事实标准。而工业控制的RS-232口一般只使用RXD、TXD、GND三条线。如下图所示。

采用负逻辑,规定逻辑“1”的电平为-5V~-15V,逻辑“0”的电平为+5V~+15V。选用该电气标准的目的在于提高抗干扰能力,增大通信距离。RS-232的噪声容限为2V,接收器将能识别低至+3V的信号作为逻辑“0”,将高到-3V的信号作为逻辑“1”。

全双工通信,传输距离较短,其通讯距离小于15m,传输速率小于20kb/s。

RS485

RS-485总线标准规定了总线接口的电气特性标准即对于2个逻辑状态的定义:正电平在+2V~+6V之间,表示一个逻辑状态;负电平在-2V~-6V之间,则表示另一个逻辑状态;

数字信号采用差分传输方式,即是A-B两者的电压差用以表示逻辑状态,能够有效减少噪声信号的干扰。

RS-485工业总线标准能够有效支持多个分节点和通信距离远,总共可接收32个设备,且对于信息的接收灵敏度较高,均采用屏蔽双绞线传输。采用半双工(两线制)最大传输距离约1219米,传输速度最高达10Mbps。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇