打印

how to 开发[万分感谢之四]

[复制链接]
3188|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
icecut|  楼主 | 2011-4-15 00:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式




时间已经过了很久,我也过了一万好多分了.虽然算万分感谢的续集有些牵强,但是为了把我的**顺起来,还是打上这个tag.题目借用一个文档的命名 how to,也有想写多点欲望.难以给更多人更合适的指示,也只能管中窥豹了.


又是一个深夜,时间在今天和明天交替.因为想了很久,不知如何开始这个题目.就在这个特殊的时间片里,完成一个小的**.来抛砖引玉.[本来这段时间应该好好休息,为了明天的工作,为公司的责任,但是,写出来会责任更大,我选择熬夜]


我敢肯定,看我这篇**的人90%的都在做着不规范的开发.例如:在不同的项目中做重复开发,代码复用性差.在一个工程中代码易读性差,几周不看就不知道写的什么.或者遇到问题,无法debug,或者遇到性能瓶颈难以处理........


最近的心理膨胀是因为看了Linux的38版本的patch,一个个文件去看,看那些小的改动的重构模式,非常熟悉.然后把高版本的一个功能降级到底版本中去.再次感谢方正集团的王老师,带我走向软件架构.看完一本枯燥的<重构---改变既有代码的设计>完成了我的纯软件之旅.


看着周围的人,为了一个结果,一个进度.一个给老板看到的过程,为了一个周报,写满难以理解的代码.并且,为了调试或者说协同调试,浪费了很多时间.但是这些,或许能转化成周报里完美的表达.


很多人,为什么不规范化开发?因为他们觉得项目足够小,数周或者数月.随便调试一下过了就行了.以后做版本升级还不知猴年马月,或者说还是别人做.到时候重新开发....小老板们也急功近利,或者不懂技术,或者总监懒得管,赚钱够了就行...


由于项目的保密性.就谈一个没有完成的项目.是一个老师的水平仪.
基于2轴加速度传感器用一个12bitad单片机采集.找了很多人,都没做完.
单片机只支持汇编语言.我最后留下一个带有全部中文注释的文件,也没有做完.就毕业了.


这个在代码级别上没有规范化开发的过程.但是在实现方式有借鉴的可能.
1.ad精度足够.
2.正弦波的离散数组查找表的实现.
3.汇编语言的实现.


失败的根源在于:
1.设备用透明胶沾到精密倾角测量设备上误差难控制.重现性太差.
2.汇编语言开发调试难度大,仿真器性能差.开发效率不好.建议使用高等芯片完成,然后做简化.
3.带精度的东西.必须有精密的测试流程.否则一切调试都是徒劳.


优势在于开发过程,采用了从上到下的开发方式.
使用matlab进行误差1%和2%的正弦数据线性化.这样保证软件上精度可控.而以前采用的等间隔采样离散成数组的方式,误差不稳定.要么数据太大,计算太慢,要么某些数据精度不达标.
在假定两轴传感器输入正确的情况下,做好软仿真.


首先在学术上保证精确度.然后再在实验平台做重复性实验,完成相应的矫正流程.


睡了.祝大家好运


================
发帖的瞬间,想起某公司的开发方式,给大家提出一个思考题:为什么用多线程?单核cpu中,哪个性能好?多核cpu中,性能又如何?各种锁机制,是为什么存在?真的是和教科书里说的是为了防止竞态吗?有没有更深入的意义?

相关帖子

沙发
bbyeah| | 2011-4-15 00:53 | 只看该作者
先坐沙发

使用特权

评论回复
板凳
shizaigaole| | 2011-4-15 08:35 | 只看该作者
本帖最后由 shizaigaole 于 2011-4-15 09:05 编辑

顶一下!
可重用太重要了。

电工的产品,自己不可重用,搞完要去忙新的,是X*(y%),拿点项目奖金而已。
对老板来说,价值就在于产品是可重用的,是
for(i = 0; i < MAX; i++) {X*Y++;}销售数量乘以产品价值

使用特权

评论回复
地板
shizaigaole| | 2011-4-15 08:41 | 只看该作者
最近,对可重用,也稍有感悟。

尽管树上理论一大堆,
但是对电工来说,
还是要首先养成分层的习惯,

别的不说,
不管项目多小,
至少都要把逻辑层和驱动层彻底分开,
应用层类对象之间以及和驱动层之间要有清晰的接口。

不要为了所谓的对项目没有影响的速度,为了节省内存把程序搞的像一锅粥一样。

使用特权

评论回复
5
shizaigaole| | 2011-4-15 08:45 | 只看该作者
如果采用分层逻辑抽象的概念,
开始是事倍功半,
时间长以后一定是事半功倍,

因为分层以后,如果逻辑层变化,一般只要修改逻辑层和接口,就算是两个方向的接口,也远比一锅粥的程序来的简单明了。

如果硬件变化,只要修改硬件驱动层即可

使用特权

评论回复
6
icecut|  楼主 | 2011-4-15 09:10 | 只看该作者
分层是其中一种.估计是和电工最接近的....

写容易调试的代码也会比较接近.

使用特权

评论回复
7
zhenglixin| | 2011-4-15 20:46 | 只看该作者
层次设计确实非常重要,linux的各个部分充满了这样的体现

使用特权

评论回复
8
icecut|  楼主 | 2011-4-16 14:11 | 只看该作者
还是要我自己顶起来.真正想在技术研发方面多做几年的人,必须对这个深入理解.否则你就会加班,还没效率.累,无法生活

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
shizaigaole + 1
9
shizaigaole| | 2011-4-16 14:21 | 只看该作者
LS,说得好

使用特权

评论回复
10
icecut|  楼主 | 2011-4-17 01:05 | 只看该作者
这个东西,很多人写很多书....但是没有电子工程师版本.给大家提醒一下方向

使用特权

评论回复
11
spirit_ya| | 2011-4-19 10:45 | 只看该作者
很好,值得我们去深究

使用特权

评论回复
12
sysdriver| | 2011-4-19 21:51 | 只看该作者
最近,对可重用,也稍有感悟。

尽管树上理论一大堆,
但是对电工来说,
还是要首先养成分层的习惯,

别的不说,
不管项目多小,
至少都要把逻辑层和驱动层彻底分开,
应用层类对象之间以及和驱动层之间要有清晰的 ...
shizaigaole 发表于 2011-4-15 08:41

请问,怎么去定义每个层次呢?
我是理解一点,可是不太清晰。底层驱动的操作跟硬件有接触的,逻辑层怎么定义的,应用层还是能理解一些的,不过要非常的细分就不知道了。

使用特权

评论回复
13
icecut|  楼主 | 2011-4-19 22:49 | 只看该作者
ls那就用2层....硬件配置层 软件功能层

使用特权

评论回复
14
一朝成名| | 2011-4-25 23:50 | 只看该作者
哈哈。。。活干的快。来的快~~~丫一帮SB才不会理会你到底干啥了。。而是进度~~~~

低调 低调。。。

使用特权

评论回复
15
icecut|  楼主 | 2011-4-26 09:05 | 只看该作者
哈哈。。。活干的快。来的快~~~丫一帮SB才不会理会你到底干啥了。。而是进度~~~~

低调 低调。。。
一朝成名 发表于 2011-4-25 23:50


kao,用好的方法,减慢速度不久行了.....这么简单的事情.

使用特权

评论回复
16
lwb01| | 2011-8-25 01:19 | 只看该作者
学习学习,纠结于技术与管理与挣钱之间……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:个人发展,技术咨询,点此  嵌入式arm爱好者←← +→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

1120

主题

15358

帖子

585

粉丝