软件开发经验浅谈
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发经验浅谈
不知不觉做软件已经做了两年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差得太远。通过这几年的软件开发,积累了一些经验而已,先谈谈自己的经验,其实我的经验也不足,只能算是这几年来在编程方面的一些看法吧。
第一、什么叫编程。有人说:“编程讲究是一个整体的平衡性”。“平衡性”是软件的很重要的部分,从平衡性的角度去考虑编程,就会抑制你想要用最新技术,最新系统等等一些想法。因为从平衡性的角度考虑,只要你的软件有一个瓶颈出现,你的程序就是失败。你首先要考虑的是怎么消除程序中可能存在的一些瓶颈。在这个基础上你才有权利去考虑提高你程序的性能最新的技术,最好系统,如果你的代码不行。什么都等于没有做。因为你的程序有性能瓶颈存在。
第二、怎么编程。我想很多人看到这个问题,一定会在心里:“这个地球人都知道”。暂且听我说。我说的怎么编程不是要说怎么写详细的代码,而是你的程序最终是怎么完成的。但实际上编写代码可能在程序的生产过程中是占有时间比较少的一块。我个人觉得编程要包含以下的几个部分:
1、市场潜力分析
分析你要写的程序能不能卖出去,市场份额是不是很大。
2、同类产品竞争分析
看看你的同类产品的优缺点。
3、技术可行性分析
依据本公司的技术实力看在给定的时间内能否实现需求说明中的功能。
4、软件设计
写出详细的软件流程,数据流程。主要算法。软件架构等(参考软件工程)。
5、编写代码
模块的功能的代码实现。用一种语言实现上面的功能,在编写代码时,要注意书写文档说明。永远记住:代码是给人看的而不是给机器运行的,计算机在执行程序时是不怕累的,而人在看代码时是非常累的,良好的编码习惯,至少保证自己能够随时看懂几个月前自己所写的代码,尽量让你的代码能够很容易的被别人理解,写代码时想想你会不会在两个月后被别人骂。在调试的时,要耐心好,编写代码其实就调试和改错。一个好的程序运行没有瑕疵,没有臭虫。到底是什么内在的因素使然呢?其实这并不神秘,我们只需要偶尔用点心思提醒自
己,无论是使用C/C++、C#、Java、Basic、Perl、COBOL还是ASM进行编码,所有好的编码无不显示出同样的特点:简洁、易读、模块性、分层、设计、效率、优雅和明晰。
6、bug测试和改错
错误是一种严重的程序缺陷。测试的目的是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量。
7、交付用户使用
8、维护与再生工程
很多软件产品不是一次性的买卖。比如在电信、金融等领域,有些软件系统要用十几年,对软件进行维护是必不可少的。还要根据用户的要求增加新的功能。这些事,有的是市场的事,有的是软件构架师,系统分析员的事,还有的是编程的事。但是在很多小公司,本着小公司事必亲恭的办事原则。大家多了解一点是不会有错的。
举个具体的例子来说。假如我要编写一个共享软件。我要怎么做呢?
1、要好好想想我要写的软件有没有“钱”途。时间在15天-30天左右。
2、好,我已经决定要写xx软件了。
3、在网上找几个对xx最有威胁的同类软件,分析它们优缺点。要它们的优点,不要他们的缺点。
4、根据前面分析的结果,大概的列出xx软件应该具有的功能表。
5、写出1.0版的基本功能表,菜单功能表,写出1.x的功能表。
6、选择编程语言。
7、上网找类似的源代码,算法。RFC标准文档。好好研究一翻。
8、根据你选定语言,算法,标准文档,写出xx的详细设计文档。
9、按照设计文档编写代码。
10、测试和软件的加密,防止别人破解软件
11、交给用户使用。
第三、哪里有资料,标准文档。
代码的世界是千变万化的,在开始一个新的项目之前,完全可以找一个类似功能的代码来看看。这样可以更好的改进你的程序。有时还可以加快进度。还有当新的技术出来时,你要看看相关的文档。虽然不要完全了解它的功能,好处。但是你至少要知道新的技术能用在什么地方。怎么用。配合什么用能更好的发挥它
的作用。编写软件不是全部的东西都是自己写的,有很多的功能是一种标准。也许是标准算法。像图形的,图象识别的,多媒体的,加密解密的算法。
所以你要知道你可以从哪里找你要的资料。我把我知道的都写在这里
源代码和技术资料站点
(中国软件网)
(visual c++/mfc开发指南)
(vc知识库)
(阿蒙编程之家)
(测试时代)
(软件工程专家网)
(图标资源下载)
(it开发经验网)
图像处理的网站
(数字图像网)
(北邮模式识别与智能系统网站)
(中国人工智能网)
看雪学院
(大量软件破解注册码)
(UNIX)
(LINUX)
(国内最高水平GNU站点)
/(中国最大的Unix技术社区)
第四、要掌握的工具
下面的工具也许你用过,也许你没有用过。不过没有关系的。同行的高手会教我们怎么用的
1、数据库工具
数据库建模工具,代表powerdesigner
数据库分析工具,很多大型的数据库都会带的。
2、流程图设计,代表visio2000
3、case工具,代表rose
4、代码分析工具,内存检测工具
代表bounderchecker,smartcheck
5、编辑器
代表Ultra Edit,vi
6、源代码管理
代表vss,cvs
7、编程工具
代表VB,VC,JAVABUILDER,ECPLISE
8、测试工具
代表C++Test,LOADRUNNER,WINRUNNER
9、安装打包工具
代表installshield,Wise Install Master
第五、要掌握的知识
因为每一个人的发展方向不一样,所以大部分人的知识结构都不一样。象一些基本的计算机基础知识大家都知道,每个人都有自己的爱好,所以自己的发展方向不一样,有的人做系统开发,有的人做驱动开发,有的人做编译器开发,有的人做图象处理与识别开发等等。但是有几点应该是一样的。
1、英语能力
主要的新的技术,文档资料都是用英语来首发的。如果要学到更好更新的知识,技巧。不懂点英语也是不行的。也不要指望有人给你翻译出来。一般来说,这些资料,看的懂的人不需要翻译,看不懂的人没有办法翻译。所以大部分的资料还是英语原文的。当然也有很多的人在翻译这些文章,但是对于这么多的资料来说,翻译过来的只是很小很小的一部分。
2、设计能力
虽然一般来说,大公司有软件构架师做应用系统技术体系构架,系统分析员做设计。但是70%-80%的小公司,可就不一定了。知道一点软件工程的知识,知道一些文档设计工具怎么用。或者知道应该有哪些设计文档。也是很有好处的。
3、语文写作能力
编程时候,大部分时间都是在写代码。但是代码的注释,各种文档的编写,测试报告,说明文档,使用手册这些都需要文字功底的。还有用email,bbs,qq这些工具与人交流的时候,如果话都说不清楚,那交流就更谈不上了。水平提高进步也就有点问题了。
4、学习能力