编程随想
轻轻的一个吻
软件开发步行者
展开
-
需求对软件的影响
在新做一个项目时,客户说要按[shift+t]键进入时钟模块,按常理[shift+t]是大写的'T',如果这样的话将造成'T'处理起来困难.而当时还有其它一些功能键还没定义shift功能.于是与客户协商,但客户说不想改了,要我们自己解决.晕啊,这种功能真是晕死.目前快捷键是系统内部实现的,也就是说系统要么出'T',要么出时间模块快捷键.而'T'一般是进入编辑模式时才有用,其它模式没用,而刚好在其它模式出时间模块快捷键.唉! 只好设一个全局变量 IsEditMode 来指出当前是否是编辑模式.于是在编辑函数里原创 2011-05-11 08:59:00 · 162 阅读 · 0 评论 -
GSL:code 之我见
<br />1:公司没有形成自己的代码规范,新人与旧人各用各的格式书写同一个项目的代码,给人的感觉是代码零零乱乱,犬牙交错,加上有些程序员的不良习惯和不规范书写,无聊的注释,无聊的空格,无聊的空行,充斥其中.一个好的软件公司,它的代码应看起来像是一个人书写的.<br />2:代码书写分工应明确,有人负责软件架构部分,有人负责小模块部分.谁负责谁维护,并为需要的人提供接口.如是因为别的模块导致问题,便报告BUG.让模块负责人解决.<br />3:代码严格模块化,贯彻高内聚低偶合的软件工程原则.严禁在服务中出现原创 2011-05-13 09:03:00 · 155 阅读 · 0 评论 -
中智三年的遗憾
<br />在中智三年了,这三年来我努力工作,努力思考,希望能为公司代码的改善多出点力.<br />这也是做为一个员工的本职工作.我尽我所能重构和改善了公司的相当一部分代码,<br />但遗憾的是,还是不够,还有一些想法还是不能实现,因为这改动太大了.我身微言轻,<br />决定不了.<br />1.把flash和card操作统一起来,用一套FAT来做(现在两套FAT,我不明白为什么要这样?<br />maybe is right???),flash为FAT16, card 为FAT16和FAT32,在逻辑原创 2011-05-14 09:37:00 · 279 阅读 · 0 评论 -
程序版本发布流程
<br />我目睹了一次程序发布流产的情况,顺便看了一下公司规定的程序发布流程文档。对目前程序发布流程的几点疑惑:<br />1、程序发布流程太简单,发布人没有测试过就给了测试组。<br />2、目前发布给测试组的是源码形式,我不明白为什么用这个。它比发布可执行程序有什么优点。要知道,如果发布100个版本的话,服务器上就有100个源代码包。这是很不合理的。<br />3、发布时要提供测试方案,这点不明白为什么,不是谁测试谁提供方案嘛。而且由研发人员提供本身就不合软件工程的测试要求。<br /> <br />原创 2011-05-16 12:18:00 · 648 阅读 · 0 评论 -
CVS与VSS比较
<br />一、CVS托管的文件夹和文件在资源管理器下有显目的标识一目了然。如<br />1、 、 CVS托管的文件夹和文件标识。<br />2、 本机上改动过的文件。<br />3、还有一些标识,目前没法截图。大家用了就会知。<br /> <br />二、操作简单,就两步:更新(下载别人上传到CVS上的代码)与提交(上传自己改动的代码)。而且不用担心代码会被覆盖,它会自动合并代码,如不能合并的话它会提示你手动合并。VSS操作较复杂,而且还有很多选项。一不小心就前功尽弃了。<br /> <br />三、它能原创 2011-05-16 12:19:00 · 289 阅读 · 0 评论 -
VC多项目编译库冲突
<br />在VC下编译多个项目时出现冲突,多半是各个项目设置的“c/c++ -> 运行时库”设置不一致导致的。<br />解决方法:<br />1、将各个项目都设为 多线程调试 DLL /MDd 即可。<br />2、要不将各个项目都选静态库 /MT or /ML。<br />3、使用 /NODEFAULTLIB:library 编译选项 将冲突的library 去除。<br />4、使用强制选项 /FORCE:MULTIPLE ,不过这样编译出来的映像可能不能执行。<br /> <br />冲突例子:L原创 2011-05-18 08:59:00 · 330 阅读 · 0 评论 -
嵌软调试
<br />做嵌软也有好几年了,但说起调试来,我还真没什么高明的办法。以前曾开发过台湾KB司的单片机,可以在线调试,这个还比较好玩。不过在线调试要控制器和调试器一起支持,一般是芯片公司要提供支持。目前常用的是采用打印信息的方法来进行调试。打印信息的方法不是很好用,所以为了尽量避免和少在目标机上调试,一般都会做好一个简易的目标机的返真,充分利用VC调试的便利性,把程序的逻辑问题在VC上调试解决,目标机上只调试和硬件相关的代码,这样会降低调试的工作量,加快开发进度。<br />有时候VC上运行的结果和目标机上运原创 2011-05-18 08:54:00 · 300 阅读 · 0 评论 -
评《****需求分析规格说明书》
<br />1、我还是坚持我以前和你说的观点,我认为这不是需求分析,是对规约规范的学习研究的一个输出文档。 <br />2、我以为需求分析,像我们目前一般是采用模型驱动的开发模式,那么就因有用例图和用例规约,诸如此类的说明性和分析性图表。<br />3、我个人认为除了用例图和用例规约,还应建立数据字典,像电表,各类型的参数,以数据字典的形式出现比较直观。<br />4、从目前这份文档来说,没有对需求进行分析提升,还停留在零散的子功能分析。需求分析规格说明书应重点描写系统需求,详细分析系统需求的事件流,如主站原创 2011-05-19 08:54:00 · 189 阅读 · 0 评论 -
分层与分模块开发
<br />分层与分模块开发,是开发时经常选用的两种方式,应该说分模块开发是较多被采用的方式,但一直以来都觉得其实分层方式自己是比较欣赏的方式,对于两种开发方式分别的看法是:<br />分层开发<br />优点:<br />1、保持系统分层结构<br /> 分层开发在这点上无疑是可以保证的,同时有利于保证系统层次的职责的清晰以及分离。<br />2、面向接口的编程<br /> 由于采用分层开发,各层次之间采用接口依赖的方式就更容易被执行了。<br />缺点:<br />1、容易造成瓶颈现原创 2011-05-18 08:56:00 · 624 阅读 · 0 评论 -
开发与管理
<br />根据开发规模来裁减开发模式,开发规模上不去,完全套用开发模式只会带来反作用。每一个开发模式都有一整套的开发规范、开发流程,完成这些工作也要成本(类似于桶和水的关系)。<br />管理的粒度越细,成本越高。如果支付不了这一成本,最终管理的规范将成为一纸空文。没有规范,世界又进入了个人英雄主义年代——开发完全凭个人能力和个人自觉。原创 2011-05-18 09:00:00 · 183 阅读 · 0 评论 -
需求分析中的接口分析
<br />需求分析中的接口分析,我个人认为是对本系统和用户,本系统和其它系统之间的接口进行分析,而不是对本子系统之间的接口进行分析。因为需求分析规格说明书是与用户沟通的基础,用户才不关心子系统如何协同工作的。硬件接口一般是指本系统和外系统硬件电气上的特性,软件接口一般是指本系统和外系统通讯协议,用户接口指显示规范的按键规范之类的。原创 2011-05-20 09:27:00 · 2562 阅读 · 0 评论 -
软件开发的几点思考:计量中间件,软件研发量化,持续集成,重代码的软件过程
2013年,新年伊始。进入软件行业多年,根据自己工作的实践,想对目前公司软件开发进行一些改革:一、开发计量中间件:在电力行业计量领域工作了多年,想通过DSSA工程,建立计量终端的产品线。完成产品线架构,除了要建立核心资源外,还要建立计量中间件。有了计量中间件,计量终端的软件开发就可以面向中间件开发,不需要涉及操作系统和硬件。同时可以在WINDOWS下做一个强大的模拟器,将计量终端的功能在模拟器原创 2013-02-13 09:18:54 · 586 阅读 · 1 评论 -
s3c2410之启动
<br />1.nand flash方式:由于nand flash的地址不是线性的,代码不能在nand flash上运行,因此须由启动代码把它加载到内存中来运行(这时代码分启动代码bootloader和主代码main code).(complete it at next)<br />2.nor flash:这是最简单的,s3c2410加电后,直接从0x00000000地址处开始读取指令.之后就一直在nor flash上跑了.原创 2011-05-13 08:59:00 · 135 阅读 · 0 评论 -
山东集抄项目嵌软Makefile文件分析
<br />一、用途:<br />最终目标是生成山东集抄嵌软集中器上所用的低压集抄应用程序(dyjc)。<br /> <br />二、用法<br />1、make<br />生成目标机上用的低压集抄应用程序:dyjc。<br />2、make clean<br />清除对象文件(*.o)和依赖文件(*.d)。<br />3、make veryclean<br />除了具有make clean的功能外还会清除生成的最终应用程序dyjc。<br />4、make deps<br />仅仅生成依赖文件(*.d)。原创 2011-05-14 09:43:00 · 923 阅读 · 0 评论 -
C++引用
<br />引用是为函数而生的:<br />1. 建立函数的参数引用传递方式以代替函数的指针传递方式.<br />2. 函数返回引用,以便放置赋值符号的左边接受值.原创 2011-05-11 12:31:00 · 114 阅读 · 0 评论 -
代码-还是自己写的好
<br />只有通过自己的书写,知识的记忆才能更深刻.<br />只有通过自己的书写,思维的逻辑才能更严密.原创 2011-05-11 12:38:00 · 124 阅读 · 0 评论 -
SDL读后感
<br />SDL是一个openGL, 里面有一些基本的多媒体处理,这几天研读了一下其video方面的代码.有感于下:<br />1.使用: SDL_init -> createsurface -> setvideomode -> loadimage -> biltsurface -> updatetoscreen.<br />2.它不直接操作显示层,而是创建一个绘图层(surface),先在绘图层上画好,然后一骨脑儿贴到屏幕上.<br />3.个人不喜欢它的stretch算法, 觉得还不如我的HGui的s原创 2011-05-12 09:02:00 · 177 阅读 · 0 评论 -
HaiFAT结构初步设想
<br />总体上沿用stdio.h的文件操作函数,增加FatFormat(),GetVolume(),SetVolume()...........<br />和stdio.h兼容便于用户使用......<br /> <br />1: API层: 这一层给用户调用, 所有出现的API函数用户可以自由使用......<br />2: FAT层: 这层函数处理FAT的运算;有兴趣的话可以在这层加入别的file system;<br />3: device driver层: 这层是由移植者提供的操作设备的底层函数原创 2011-05-12 09:03:00 · 125 阅读 · 0 评论 -
HGui manual
<br />HGui 初具一个GUI的模型了.它有scene,DC, ctrl, object, event等等概念,并自成一个系统, 形成一套类windows的思想,由于面向embed,故小巧.具有基本的图形图像处理能力,能进行图片拉伸,alpha, 亮度调节等等.显示采用两个surface,即绘图层和显示层分开.<br />一:概念介绍;<br />1.scene(场景);<br />一个场景必须有是全屏的.它有自己的场景过程-----即用户自定义的消息处理函数.形式类似于这样:<br />DEFINE原创 2011-05-12 09:06:00 · 200 阅读 · 0 评论 -
关于ro_base和rw_base
<br />1.烧到flash:ro_base 设为0x0, rw_base设为SDRAM空间.<br />2.由bootloader将程序复制到SDRAM运行.ro_base设为0x0或SDRAM空间.<br />3.调试:ro_base应设为SDRAM空间.<br />以上仅为参考....原创 2011-05-12 09:14:00 · 153 阅读 · 0 评论 -
所谓的项目管理
<br />一个新项目要开始了,项目管理者找去吩咐:新项目要开始了云云......<br />于是,product spec. 拿过来,看要从哪里开始,实现什么应用,开始做了:<br />先看人怎么安排了.如果不须要新做某个应用,只是从已有的项目中搬过来,一般字典可以一个人,如果字典多的话就两个人,Personal info management一个人,TOOL一个人, MP3,录音机等一个人.如要新做一本字典则要单独分一个编码经验丰富一点的人,做字典数据就共用人.分完后上报领导安排人,叫他们先看一下相关资原创 2011-05-13 09:01:00 · 144 阅读 · 0 评论 -
关于C++的inline
<br />inline函数在编译时不会生成符号,除非编译器认为这个函数不能inline。所以在编译时,调用inline函数的函数必需能看到inline函数的定义。否则的话就会在link时出现找不到符号的错误。因此我们一般把inline函数及其实现放在头文件中,类的inline成员函数也不例外。原创 2011-05-14 09:40:00 · 159 阅读 · 0 评论 -
程序更新中加入ChkSum校验
<br />在发布版本到测试组或客户后,有时会发现程序烧入目标机后无法启动,估计是程序包在传输过程序中发生了位翻转。<br />为了避免这种情况的发生,于是我们在程序包中加入了一个有程序和数据的ChkSum的文本文件,在目标机的更新程序中加入了对新版本的程序和数据在更新前进行ChkSum校验的检查,只有程序和数据的ChkSum和程序包中提供的一致时才进行更新。<br />这个功能使目标机最大限度地避免了把错误程序和数据更新到本机中的情况,也就避免了在更新后启动不了的问题。原创 2011-05-14 09:45:00 · 372 阅读 · 0 评论 -
程序语录
<br />如果 & 和 * 类型的参数只做输入用,不做输出用,则要加const;<br />测试只能证明缺陷存在,而不能证明缺陷不存在;<br />软件的高质量是设计出来的,而不是靠测试修补出来的;<br />白盒测试:即测试程序的逻辑结构和实现细节;<br />黑盒测试:即按照规格说明书来测试程序是否符合要求;<br /><br />在软件设计时就要有一个避免程序员乱改代码的机制,而不能依赖于程序员的自觉和认识。<br />相同功能的代码只须要实现一份。<br />代码的最高境界:手中无剑,心中也无剑。原创 2011-05-14 09:38:00 · 155 阅读 · 0 评论 -
代码走查工具Cppcheck使用情况汇报
一、工具介绍Cppcheck是一个C/C++代码分析工具,只检测那些编译器通常无法检测到的bug类型。这个工具容易上手,建议大家安装使用。PC-Lint这个工具上手慢,需要学习一下才能使用。目前研发中心在使用这个工具。 二、内存分配使用建议1、嵌入式系统内存分配要受控,如果实现一个功能需要分配或使用大于10K同时小于100K的内存,需要重新审视数据结构和算法,寻找优化的方法;如原创 2013-06-04 20:19:16 · 828 阅读 · 0 评论