首页 > 工作范文 > 范文大全 >

2024年软件开发年终工作总结范文4篇

网友发表时间 2140078

【请您参阅】下面供您参考的“2024年软件开发年终工作总结范文4篇”是由阿拉网友精心整理分享的,供您阅读参考之用,希望此例范文对您有所帮助,喜欢就复制下载支持一下小编了!

软件开发年终工作总结篇1

想想刚毕业那年到现在已经快三年了,我也是做软件开发的。学软件这一行业,只要你智商不差,懂得总结,基本上都能在一到两年内对软件开发有一定的了解。本来我想写写自己的软件开发经验,但是网上找了找,有1篇6年多开发工作经历的朋友分享了1篇自己的软件开发总结,我推荐给大家学习参考。软件开发年终总结

本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧。

谨以此文献给那个自己为你奉献3年青春与激情的开发团队。还有团队成员:ppl、yt、yk、tyf、lgl、chl、cdy、cb、dpd。

1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”

其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!

2、一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。

3、软件开发团队中,技术不是万能的,但没有技术是万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在mm比较多的团队中。在软件项目团队中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度”大家可想而知了。

4、详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。

5、书籍是人类进步的阶梯,对软件开发人员尤其如此。

书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。对于花钱买书,我个人经验是:千万别买国内那帮人出的书!我买的那些家伙出的书,!00%全部后悔了,无一本例外。更气愤的是,这些书在二手市场的地摊上都很难卖掉。“拥有书籍并不表示拥有知识;拥有知识并不表示拥有技能;拥有技能并不表示拥有文化;拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。

6、不要仅局限于对某项技术的表面使用上,哪怕你只是偶尔用一、二次。“对任何事物不究就里”是任何行业的工程师所不应该具备的素质。开发windows应用程序,看看windows程序的设计、加载、执行原理,分析一下pe文件格式,试试用sdk开发从头开发一个windows应用程序;用vc++、delphi、java、.net开发应用程序,花时间去研究一下mfc、vcl、j2ee、.net它们框架设计或者源码;除了会用j2ee、jboss、spring、hibernate等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。试着这样做做,你以后的工作将会少遇到一些让你不明就里、一头雾水的问题,因为,很多东西你“知其然且知其所以然”!

7、在一种语言上编程,但别为其束缚了思想。“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由,所以也没有哪门语言是“包治百病”的“灵丹妙药”。编程语言对开发人员解决具体问题的思路和方式的影响与束缚的例子俯拾皆是。我的经验是:用面对对象工具开发某些关键模块时,为什么不可以借鉴c、c51、汇编的模块化封装方式?用传统的桌面开发工具(目前主要有vc++、delphi)进行系统体统结构设计时,为什么不可以参考来自java社区的ioc、aop设计思想,甚至借鉴像spring、hibernate、jboss等等优秀的开源框架?在进行类似于实时通信、数据采集等功能的设计、实现时,为什么不可以引用来自实时系统、嵌入式系统的优秀的体系框架与模式?为什么一切都必须以个人、团队在当然开发语言上的传统或者经验来解决问题???“他山之石、可以攻玉”。

8、养成总结与反思的习惯,并有意识地提炼日常工作成果,形成自己的个人源码库、解决某类问题的通用系统体系结构、甚至进化为框架。

众所周知,对软件开发人员而言,有、无经验的一个显著区别是:无经验者完成任何任务时都从头开始,而有经验者往往通过重组自己的可复用模块、类库来解决问题(其实这个结论不应该被局限在软件开发领域、可以延伸到很多方面)。这并不是说,所有可复用的东西都必须自己实现,别人成熟的通过测试的成果也可以收集、整理、集成到自己的知识库中。但是,最好还是自己实现,这样没有知识产权、版权等问题,关键是自己实现后能真正掌握这个知识点,拥有这个技能。

9、理论与实践并重,内外双修。

工程师的内涵是:以工程师的眼光观察、分析事物和世界。一个合格的软件工程师,是真正理解了软件产品的本质及软件产品研发的思想精髓的人(个人观点、欢迎探讨)。掌握软件开发语言、应用语言工具解决工作中的具体问题、完成目标任务是软件工程师的主要工作,但从软件工程师这个角度来看,这只是外在的东西,并非重要的、本质的工作。学习、掌握软件产品开发理论知识、软件开发方法论,并在实践中理解、应用软件产品的分析、设计、实现思想来解决具体的软件产品研发问题,才是真正的软件工程师的工作。站在成熟理论与可靠方法论的高度思考、分析、解决问题,并在具体实践中验证和修正这些思想与方式,最终形成自己的理论体系和实用方法论。

10、心态有多开放,视野就有多开阔。不要抱着自己的技术和成果,等到它们都已经过时变成垃圾了,才拿出来丢人现眼。

请及时发布自己的研究成果:开发的产品、有创意的设计或代码,公布出来让大家交流或者使用,你的成果才有进化和升华的机会。想想自己2000年间开发的那些windows系统工具,5、6年之后的今天,还是那个样子,今天流行的好多windows系统工具都比自己的晚,但进化得很好,且有那么多用户在使用。并且,不要保守自己的技术和思想,尽可能地与人交流与分享,或者传授给开发团队的成员。“与人交换苹果之后,每个人还是只有一个苹果;但交换思想之后,每个人都拥有两种思想”,道理大家都懂,但有多少人真正能做到呢?

11、尽量参加开源项目的开发、或者与朋友共同研制一些自己的产品,千万不要因为没有钱赚而不做。

网络早已不再只是“虚拟世界”,网上有很多的开源项目、合作开发项目、外包项目,这都是涉猎工作以外的知识的绝好机会,并且能够结识更广的人缘。不要因为工作是做erp,就不去学习和了解嵌入式、实时、通信、网络等方面的技术,反过来也是一样。如果当他别人拿着合同找你合作,你却这也不会,那也不熟时,你将后悔莫及。

12、书到用时方恨少,不要将自己的知识面仅仅局限于技术方面。

诺贝尔经济学奖得主西蒙教授的研究结果表明: “对于一个有一定基础的人来说,他只要真正肯下功夫,在6个月内就可以掌握任何一门学问。”教育心理学界为感谢西蒙教授的研究成果,故命名为西蒙学习法。可见,掌握一门陌生的学问远远没有想想的那么高难、深奥。多方吸取、广泛涉猎。极力夯实自己的影响圈、尽量扩大自己的关注圈。财务、经济、税务、管理等等知识,有空花时间看看,韬光养晦、未雨绸缪。

13、本文的总结与反思:

a:不要去做技术上的高手,除非你的目标如此。虽然本文是关于提高软件开发知识的建议,做技术的高手是我一向都不赞同的。你可以提高自己的专业知识,但能胜任工作即止。b:提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。软件专业知识的很多方法和原理,可以很容易地延伸、应用到生活的其它方面。c:在能胜任工作的基础上,立即去涉猎其它领域的专业知识,丰富自己的知识体系、提高自己的综合素质,尤其是那些目标不在技术方面的朋友。————-结束。

看完这位软件开发工程师写的年终工作总结(也是软件开发经营总结),我自己也想说两句,软件开发最重要的是软件设计思想,我认为用什么语言做开发并不重要,因为现在学习一门语言基本上不用了一个礼拜(网上教程太多了),但最重要的是你对你要做的软件有的需求、功能、实现思路等是否特别清楚,如果你能像做十位数的加减法那么简单的说出你的想法,那没问题了,这个软件肯定能做好。

本文地址:http:///zuowen/

软件开发年终工作总结篇2

内部

648软件开发介绍

一 dm648介绍

dm648属于ti达芬奇系列,采用单核c64x+定点cpu,支持最高频率,有两个乘法器支持四个16bits*16bits(结果32bits)单个clock cycle或者八个8bits*8bits(结果16bits)单个clock cycle。还有6个alu。

648的片上存储器有l1p(32kb),l1d(32kb),l2(512kb)648集成了五个视频口vport,省去fpga做fifo,可以节省产品成本。

648集成了丰富的外设,包括edma(64个通道),spi,i2c,uart,emif,ddr2,ethernet,gpio(32个),mcasp,pci。

二 搭建软件开发环境 操作系统环境

win7 32位或win-xp环境 软件安装和配置

需准备的安装软件

648dvsdk perl bios是ti针对dsp开发的实时嵌入式操作系统。

dvsdk是基于bios系统的视频开发包。perl是脚本工具,烧写程序时将out文件转换为ais文件。

建议所有软件安装到默认目录下,安装完后

配置操作系统环境变量

修改bios_install_dir变量为 c:/ccstudio_/bios_5_31_08 配置ccs的组件管理器,如图2-1

点“开始->所有程序->ti->component manager,修改target content(dsp/bios)->tms320c64xx为当前版本的dsp/bios

图 2-1 dvsdk目录文件介绍

默认安装到c:dvsdk_1_11_00_00_dm648目录下,其中

edma3_lld_1_05_00是edma3驱动包

examples 包含很多基于bios的示例应用工程,我们参考video_preview示例程序作为框架,添加图像处理算法和通讯驱动。flashutil 包含flash烧写工程norwriter,bootloader程序ubl,ais文件生成脚本

ndk_1_92_00_22_eval 网络开发软件包 pspdrivers_1_10_00 包含了ti提供的很多基于bios系统的驱动,我们参考其中vport的驱动,将按帧采集修改为按场采集的功能 xdc_2_95_02 xdc工具安装路径,xdc是ccs的子工具,是一个javascript编译工具,用于编译cfg文件,cfg文件在后面讲。如图2-2安装xdc后,会在工程的编译选项界面增加xdc选项。

图2-2 仿真器

tds560usb plus

在ccs setup界面选择tds560usb plus platform和c64x+ family的dm648。如图2-3.图2-3 三 vport+edma工作原理 vport介绍

dm648集成了五个vport口,用于视频输入输出,每个vport可以配置为capture或display模式。capture模式又分为双通道8bit bt656,单通道16 bit y/c模式。display模式又分为单通道8bit bt656, 单通道16 bit y/c模式。

目前,capture和display模式都采用8bit bt656子模式,pal视频编码芯片和解码芯片也设置为bt656模式。 bt656标准简介

bt656标准将4:2:2格式ycbcr数据统一封装在一个数据流中,按照cbycry顺序排列,y的数据数量是cb,cr的2倍。

bt656数据流中,ffh和00h保留用于时序标示。在视频数据每行的开头和结尾有标示sav(start of video),eav(end of video)。sav和eav的格式是ffh,00h,00h,xyh,前三个字节固定,第四个字节包含场标示,场消隐状态和行消隐状态,如图3-1。

图3-1 vport fifo 每个vport有一个fifo存储进入的数据或者从fifo输出。

bt656 capture模式中,fifo分成a、b两个通道,如图3-2,a通道接收vdin[9-2]管脚的数据,b通道接收vdin[19-12]管脚的数据。每个通道又分y,cb,cr三个缓存,每个缓存区有独立的读寄存器。

图3-2 bt656 display模式中,如图3-3,只有一路输出,fifo分为y,cb,cr三个缓存区,每个缓存区有独立的写寄存器。

图3-3 vport和edma配合在fifo和外部或片上存储器之间移数。我们可以编程fifo的阈值寄存器,当fifo达到设置满度(fullness)(对于捕获模式)或者低于设置满度(对于显示模式)时,生成edma事件,触发相应edma通道移数。

每个vport对应6个edma事件,分别是

vpxyevta,vpxcbevta,vpxcrevta,vpxyevtb,vpxcbevtb,vpxcrevtb 例如,我们用vp0口的a通道做为bt656视频输入,vp1口做为bt656视频输出。

设置vp0口a通道y,cb,cr三个缓存区的阈值为720,360,360。当pal图像数据传输完一行后,三个缓存区都达到阈值,生成vp0yevta,vp0cbevta,vp0crevta三个事件,触发对应的三个edma通道将三个fifo缓存区的一行图像数据移入ddr2缓存区。

设置vp1口y,cb,cr三个缓存区的阈值为720,360,360。当三个缓存区数据数量低于阈值时,生成vp1yevta,vp1cbevta,vp1crevta三个事件,触发对应的三个edma通道将ddr2缓存区的一行图像数据移入三个fifo缓存区。

四 应用程序及驱动解析

两个重要文件

基于bios/dsp系统开发软件,有两个重要工程文件tcf和cfg文件,如图4-1中红圈1和2。

图4-1

tcf文件包含了dsp/bios的配置信息。红圈3的global settings设置dsp工作频率,l1,l2 cache size,大小端,l2 cache 128kb。memory section设置程序和数据各部分在存储器中的段地址。

红圈4 hwi(hardware interrupt)处,添加硬件中断处理函数

红圈5 添加bios/dsp的线程

cfg文件包含了库链接路径信息,使用javascript语言,如图红圈6。使用xdc工具编译cfg文件,生成库链接信息,供c编译器链接库时使用。cfg文件常链接的库有vport驱动,edma驱动程序。

图像缓存分配和管理

edma在vport和sdram之间搬数,cpu要访问sdram最新的图像数据,程序采用多个图像缓存区循环的方式将这两个过程并行化。

应用层创建捕获或显示通道时,调用驱动层程序在ddr2分配存放图像数据的缓存区。分配之前,驱动根据通道的配置参数计算每个缓存区的大小。

例如,vp0按场采集,vp1按帧显示。vp0的每个缓存区的大小是720*288*2,vp1的每个缓存区的大小是720*576*2。

应用程序使用fvid_dequeue()出队函数和fvid_queue()入队函数或fvid_exchange()交换函数,在应用程序和驱动程序之间交换图像缓存区。

捕获和显示驱动的缓存管理方法不同,如下面两图4-2和4-3:

图中蓝块表示应用程序的图像缓存区,白块表示驱动程序的图像缓存区。

图像捕获缓存区,初始时所有的缓存区都在捕获队列里,捕获驱动程序以循环的方式填充每个缓存区。

当应用程序调用fvid_dequeue()函数时,将放有最新图像数据的缓存区出队并返回给应用程序,驱动在余下的队列里循环填充,如(a)到(b)和(b)到(e)。

当应用程序调用fvid_queue()函数时,将一个空的缓存区交给驱动程序并加入队列,如图(b)到(a)和(e)到(b)。

当应用程序调用fvid_exchange()函数时,应用程序交给驱动一个空的缓存区,驱动交给应用程序放有最新图像的缓存区,相当于同时调用fvid_dequeue()和fvid_queue()两个函数,如图(b)到(c)和(c)到(d)。

图4-2

图像显示缓存区,初始时只有一个缓冲区用于显示,其它缓存区等待出队,如图(a),黄块表示显示驱动队列里准备出队的缓存区。显示驱动程序重复显示一个缓存区的图像。

当应用程序调用fvid_dequeue()函数时,从驱动获得一个缓存区,应用程序向它填充显示数据,同时驱动仍然显示之前的缓存区,如图(b)和(d)。当应用程序调用fvid_queue()函数时,应用程序给驱动程序一个准备显示的缓存区,同时驱动将它设置为当前的缓存区,如图(b)到(c)到(d)。

当应用程序调用fvid_exchange()函数时,应用程序给驱动一个准备显示的缓存区,从驱动得到一个空的缓存区,相当于同时调用fvid_dequeue()和fvid_queue()函数,如图(d)到(e)。

图4-3

应用程序框架介绍

基于dvsdk_install_dir/example目录下的video_preview示例程序,做为项目软件框架

应用程序主要包含三部分:

main函数

video_preview线程

自添加的中断处理函数

许多实时dsp应用都需要同时执行很多不相关的功能,这些功能一般是对外部事件的响应,这些功能就加线程。

dsp/bios支持4种线程:

(1)硬件中断(hwi):频率可达200khz(5us)(2)软件中断(swi):swi允许hwi将一些非关键处理在低优先级上延迟执行,这样可以减少在中断服务程序中的驻留时间。

(3)任务(tsk):任务与中断不同点在于,任务在执行过程中可以被挂起。

(4)后台线程(idl):空闲循环,运行那些没有执行时间限制的函数。

上电加载完操作系统内核后,首先执行main函数。

main函数执行完后,启动video_preview线程,线程生命期直到执行结束后。此线程主要功能有图像采集,处理,字符叠加,显示。

video_preview线程第一步调用fvid_create()函数为vp0口创建捕获通道对象capchan,初始化vp0寄存器,为vp1口创建显示通道对象dischan,初始化vp1寄存器。

第二步调用fvid_allocbuffer()为capchan和dischan分别分配三个图像缓存区,然后调用fvid_queue()将三个缓存区组成队列,同时为capchan和dischan分配edma通道,设置edma参数表。

第三步调用fvid_control()函数使能vp0,vp1口,vp0开始捕获,vp1开始输出显示。

第四步调用fvid_dequeue()从capchan和dischan的缓存队列中各出一个缓存。

第五步 进入while(1)循环,在循环中执行两次fvid_exchange()。fvid_exchange(capchan,pimg1)捕获新的一场图像数据,fvid_exchange(dischan,pimg)显示新的一帧图像。捕获两次,显示一次。

fvid_exchange(capchan,pimg1)后面添加图像处理算法和叠加字符。

添加图像处理算法

在fvid_exchange(capchan,img)函数捕获图像后添加图像处理算法。为了减少cpu访问图像数据时间,将图像数据和访问频率高的中间数组放在l2 ram里。dm648 l2的大小512kb,其中128kb用于cache,剩余384kb可用于应用程序存放图像数据。

vport驱动调试方法

vport驱动采用bios的两层驱动模型class/mini-driver,bios现在抽象定义了三种class驱动,pip/pio,sio/dio,gio,应用程序通过这三类bios api接口与mini driver通讯,在一个应用工程中可以同时使用这三种api 接口。

mini层通过csl层访问外围硬件的寄存器,存储器,中断资源,如图4-6。

图4-6 video_preview应用工程中使用了bios gio接口api,如图4-7是gio和mini spaner层包含的api,fvid函数是gio api的宏定义,如下:

#define fvid_create(name, mode, status, optargs, attrs)

gio_create(name, mode, status, optargs, attrs)#define fvid_exchange(giochan, bufp)

gio_submit(giochan, fvid_exchange, bufp, null, null)#define fvid_control(giochan, cmd, args)

gio_control(giochan, cmd, args)

图4-7 vport的mini 在dvsdk_install_dir/pspdriver目录下,的依赖工程(dependent projects),如图4-8,这样应用工程重新编译之后就可以同时调试应用工程

和mini driver层。

图4-8 五 flash芯片烧写程序

,生成对应的ais文件。

ubl(user boot loader)是dsp启动加载器,dsp上电后会自动将ubl代码从 flash加载到存储器中,开始执行ubl,ubl先初始化pll,ddr2,emif,再将video_preview_pal工程从flash加载到存储器中,然后开始执行应用程序。

准备好ais文件后,加载运行norwrite工程dvsdk_install_dirflashutildm647_8ccsdm648_norwriter,norwriter包含四个步骤:

(1)设备初始化,pll,ddr2,emif初始化。(2)擦写flash块0xa000 0000-0xa002 0000,将ubl二进制文件写入该flash块。

(3)擦写flash块0xa002 0000-0xa008 0000,将video_preview工程二进制文件写入该flash块。

(4)擦写flash块0xa060 0000-0xa060 2000,将轴位写入该flash块

软件开发年终工作总结篇3

有感于网盘开发过程

有感于网盘开发过程..............................................................................................................................1

一、软件开发个人体会:.................................................................................................................2

二、做软件开发我觉得要明白:.....................................................................................................2

三、在开发中遇到问题应该怎么去解决?......................................................................................2

四、怎么样才能提高自身的能力?..................................................................................................2

五、怎么样才能做好软件开发?.....................................................................................................2

六、文档的重要性.............................................................................................................................3

七、我的收获.....................................................................................................................................3

八、网盘项目开发的最大体会.........................................................................................................4

九、软件测试(单体测试和连接测试)..........................................................................................4

常熟理工学院sig小组

3/28/2013

一、软件开发个人体会:

1.软件领域中的知识在于积累。

2.做软件开发,就类似算数学题和世界杯足球赛一样:重在结果,而不在乎过程。3.软件服务于人类,软件是在解决一些生活中的问题和错误,问题决定解决方案。

二、做软件开发我觉得要明白:

1.职业的乐趣:

(a)用自己的智慧去创建新事物的快乐(b)开发对别人有用的东西(c)不断学习来充实自己 2.职业的苦恼:(a)总是追求完美

(b)所有要实现的功能由他人而定

(c)概念设计计是有趣的,但找bug总是很苦恼的

三、在开发中遇到问题应该怎么去解决?

不明白就多问,不要自已一直去琢磨。

一个问题如果30分钟还没有解决就应该考虑是不是问问别人。一个问题在没有用过3种以上的方法解决过就不要去问别人。解决问题思路是关键:

相信问题总归有解决的办法,就算连技术上都没法实现的问题,相信通过良好的沟通终究也会有解决的方法。

5.解决问题的前提是:理解别人的意思,理解别人的需求,多沟通,及时给客户反馈信息。

四、怎么样才能提高自身的能力?

1.程序员怎么样进步最快? - 理论结合实践

2.不要怕出错,不怕遇到错误,有错误就有挑战,这样才可以进步,但不要让同一个石头把你绊倒2次。

五、怎么样才能做好软件开发?

1.首先要明白解决的问题是什么,理解问题,其次再决定怎么解决这个问题 2.碰到很复杂的问题,我们就简单想,把问题简单化,细化到能够实现为止

常熟理工学院sig小组

3/28/2013

3.出了问题,我们要先分析问题,然后知道引起问题的原因,最后并想出问题的解决办法 4.我们应该从2个方面去把握一个项目:从业务角度和项目的关键问题上去把握一个项目

(a)从不同的系统场景

(b)从不同的用户角色(充当什么角色)(c)从不同的系统使用角度(拥有那些权限)

5.其实我觉得开发人员说实在应该要比使用系统的人更了解系统需求,只有真正彻底的了解了项目的业务需求,我们才能做真的做好这个项目

六、文档的重要性

记得我当初刚开发项目的时候都是写个大致的需求说明书,做一个e-r图,画几个大致的数据流程图,然后建立数据字典和表结构关系。再接着搭建一个开发环境,配置几台服务器,划分一下模块,分工,我们就可以coding了,一直到项目结束了,也没有完整的设计文档,更没有完整的测试文档,虽然这样的确是很快的完成了coding工作,感觉上好像节省了好多成本和开发时间,但后期的维护和bug 就是经常出现的事。

小项目没有文档关系不大,但如果遇到一个大项目的时候,那这样的开发方式就很有问题很危险的。

大项目没有文档: 首先维护就很麻烦,也很乱,写的代码,过几天都不知道它是完成什么功能的了,其次系统的稳定性和可靠性也让人怀疑,扩展性就不用说了。

七、我的收获

a.程序员大多都不喜欢写文档,我们以前也是特讨厌,记得以前都是系统开发完了,为了应付项目验收,就匆匆忙忙的一组人在那里补文档。在我们的思想里,所谓的文档就是一些废话,一句话硬是用十句话来代替的无聊透顶。b.代码风格要规范

以前做项目,我们都是不怎么去注意代码风格和写代码的规范,都是稍微想一下就直接开始写代码了。注释也很少用,总感觉我们自己写的代码,我们怎么会不知道它做了些什么事呢 ?总觉得我们自己写的代码我们怎么会不知道它是用来做什么的呢。一直都不相信这是个事实,但事实上,项目验收后,系统刚开始使用的人少,也就不会出现潜在的错误,随着时间的增加,久而久之,当大量用户并发访问的时候,系统的bug 就暴漏出来了,那时你再用熟悉的eclipse打开整个项目的源码时,再去看自己写的代码的时候,真的发现,我们定义的这个变量名是什么意思啊 ? 我们的这个flag 是用来判断什么的啊 ?我们的if()中条件不知道是判断什么? function()也忘记是什么功能了? 想想好可怕啊。难道真的都忘记了吗 ?回答是肯定的: 真的忘了。c.心得体会: 通过做该网盘项目,在这2年的锻炼中,我们才真的体会到,良好的文档是正规研发流程中非常重要的环节,一个好的程序是先写好设计文档再进行编程的,在设计文档的指导下,才能写出安全的代码。如果你不写文档,一开始就写程序,这样你就不会按已设计好的路线走,而是想到哪写到哪。小功能还好说,要是大功能,就容易混乱.常熟理工学院sig小组

3/28/2013

刚开始我们还很不习惯这一系列的编程风格,很多的规范,尤其是命名,方法和注释,都有这着很多限制,让我们觉得真罗唆,写个程序完成功能不就可以了吗,明明1小时做完的事情非得让人用3、4个小时去做,我们现在真的明白这样做的好处了,我们已经习惯这样的编程风格了,这也养成了我们的一个编程习惯了,深有体会啊。

最忙的时候就是我们成长和收获最多的时候。

八、网盘项目开发的最大体会

我们觉得项目开发的开始时候,应该由项目负责人很好的对项目是什么项目,具体大概做什么事情,是谁提出来的,目的是解决什么问题,以及里面用到的很多专有名词做个细致的说明,而不是从一开始就分几本式样书,给个静态html 的demo看看,然后搭建好开发环境就按照式样设计书来开发。

九、软件测试(单体测试和连接测试)

我们首先认为,编写程序的时候不要想出了问题再解决,而是要想如何不会出现问题,要根据经验来预测可能出现的问题,然后避免出现。

测试,说的直接点就是给软件找错误。

很多人认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的测试,实际上我们不这么认为。

我们觉得对开发人员来说,我们要把测试出来的bug都应该做个分析,知道错的原因之后,我们就应该在下个项目中防止类似的错误发生,而真正来提高我们开发的效率。

常熟理工学院sig小组

3/28/2013

软件开发年终工作总结篇4

1软件开发的本质:高层概念到低层概念的映射。2.软件的本质特征:构造性,演化性

3面向对象的四个原则:抽象,继承,多态,封装。4抽象概念的理解:对抽象事物的理解;归纳概括;总结事物共同点;进行逻辑思维和推理 java最大特点:简单,面向对象,可移植,最大限度利用网络 java与c++区别:全局变量;goto语句;指针;内存管理;类型转换;头文件

7软件危机: 软件的开发和维护过程中所遇到的一系列严重问题。不仅只软件不能运行,几乎所有的软件都存在这些问题,所包含:如何开发软件;如何维护

软件过程 一系列任务步骤和框架

8软件工程: 是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

9中间件 定义:是位于平台(硬件和操作系统)和应用之间的通用服务,这些服务具有标准的程序接口和协议。目的:提出中间件的概念是为解决分布异构问题。分类:基础中间件;业务中间件;领域中间件。构件:是系统中实际存在的可更换部分,它实现特定的功能,符合一套接口标准并实现一组接口 组件:组件技术就是利用某种编程手段,将一些人们所关心的,但又不便于让最终用户去直接操作的细节进行了封装,同时对各种业务逻辑规则进行了实现,用于处理用户的内部操作细节,甚至于将安全机制和事物机制体现的淋漓尽致。而这个封装体就常常的被我们称作组件。12 软件生产线:是共享同样的体系结构和实现平台的软件系统的集合,它是具有公共的系统需求集的软件系统。这些需求是针对一组共享公共的设计和标准(或构件)的产品族,或者是一类特定的行为或任务。

13操作系统发展趋势:操作系统内核将呈现多平台统一的趋势

14软件开发趋势

开源:两个作用,社区和标准的建立。soa:面向服务的体系结构;it治理:公司治理的一部分。

15软件开发技术趋势(1)下一代web开发;(2)企

业应用(soa).(3)系统开发.(4)开发工具和语言.(5)项目管理及安全 不同的软件开发方法(1)结构化开发方法(2)面

向对象开发方法(3)统一软件开发过程(4)敏捷软件开发.软件的体系结构:一个程序或系统各构件的结

构,他们之间的相互关系及进行设计的原则和指导方针;本质:对复杂事物的抽象; 一定时间内保持稳定 三要素:构件的层次结构;构件之间交互方式;数据结构

组成元素从静态模式转向动态模式,组件模块有被动调用转向主动调用以适应系统环境 软件架构技术:根据项目情况分析系统行为,设计系统组件,给出构架表示方式,描述构架的各个方面,最后对系统构架进行精化。框架比架构更加具体 数据库设计 方法:(1)属性主导设计(2)实体主

导设计; 遵循原则:(1)信息隐藏(2)适当冗余(3)慎用外键 数据一致性:域完整性,实体完整性,引用完整性,数据有效性 插件 定义:系统运行时的功能单元,是一种遵

循一定规范的应用程序结构编写出来的程序。呈现方式:运行时根据外部配置文件来定 基本功能:插件注册,管理和调用 软件质量定义 明确声明的功能和性能需求,明

确文档化过得开发标准,以及专业人员开发的软件应具有的所有隐含特征 软件需求是进行质量度量的基础,软件质量特性反应了软件的本质。影响软件质量的4个方面:开发技术;人员素

质;成本时间,进度;过程质量 软件项目管理 为了使软件项目能够按照预定的成本,进度,质量顺利完成,对成本,人员,进度,质量,风险等进行分析和管理的活动。24 软件配置: 计算机程序(源代码和可执行程序);

描述计算机程序的文档(针对开发技术者和用户); 数据(包含程序内部和外部)软件维护和软件配置管理的区别: 维护是发生

在软件以交付给客户,并且投资运行后的一系列软件工程活动;软件配置管理则是当软件项目开始,并且仅仅当软件退出运行后在终止的一组跟踪和控制活动 软件过程成熟度:指一个特定的软件过程被显示定义、管理、度量、和能行的程度 javabean开发的三个阶段:构造阶段,内造阶段,执行阶段; 包含的基本元素:属性,方法,事件 一个java对象具有以下特征就可以是javabeans 定制、持久性、通信、反省 简单的时说(1)作为一个类必须被声明为public(2)必须要有get/set方法(3)有构造函数但不能有参数 29 引发事件 当javabean触发某个事件是,javabean讲点用该事件的监听对象的响应函数 30 监听事件 javabean被添加到某个类改事件的监听队列中,并且具有该事件的响应函数,被监听类的此事件被激发时被监听类就会调用javabean的响应函数

jdbc工作的四个主要组件 java应用程序,jdbc驱动器管理器、驱动器,数据源

数据源的种类 用户dns、系统dns 文件dns 33 java多线程的生命周期 新建状态;就绪状态或可运行状态;运行状态、阻塞状态、消亡状态 33 j2ee规定的web曾包括 jsp页面、基于web的java applet、以及用于动态生成的html页面的servlet构成。

作业 1简述servlet设计中涉及的类和接口

(1)servlet interface: 所有的servlet直接或间接实现这个interface, 它提供安排servlet与客户端联系的方法.最关键的方法是service,负责处理servletrequest对象和servletresponse对象。2)httpservlet class: 实现servlet interface,重写了service方法以区分请求(常见的http请求类型是get和post),并调用相应的方法来处理(doget、dopost)。

servlet接收来自客户端的调用请求, 它接收两个对象: 一个是servletrequest,另外一个是servletresponse。

3)httpservletrequest interface: 概括从客户端到服务器之间的联系,实现该接口的对象包含了客户端的请求信息。

4)httpservletresponse interface: 概括从servlet返回客户端的联系,实现该接口的对象提供了方法,使servlet向客户端发回响应。

1.现有数据库db位于名为lz的ms sql server

服务器上,用户名为sa,密码为空,请编写数据库连接dbconnect类,实现数据库的连接、返回连接对象及重载有关的close()方法。public class dbconnect {

public dbconnect(){

try{

e(“

verdriver”);

}

catch(classnotfoundexception ee){

}

}

public static connection getconn()throws sqlexception{

string url

=

“jdbc:microsoft:sqlserver://lz:1433;databasename=

db”;

string username= “sa”;

string password= "";

return

nection(url,username,password);

}

public static void close(resultset rs){

try{

();

}

catch(exception ex){

}

}

public static void close(statement stmt){

try{

();

}

catch(exception ex){

}

}

public static void close(connection conn){

try{

();

}

catch(exception ex){

}

}

private static dbconnect dbconn = new dbconnect();

}

相关推荐

热门文档

48 2140078