天天看点

设计->约束

         适当的约束带来更大的自由,通用的产品比专业的产品更难以设计。

         本科毕业设计的过程中,导师给了个他课题组的项目,但是没有给定毕设题目,意思是让我学习研究,看最后到了什么程度,然后定题目,结果做了5个月,直到毕业答辩的前一周才定题目,过程中很是痛苦,因为不知道我能做到什么程度,于是去翻看文献,测试代码,写代码,虽然收益很大,但是也是搞得很辛苦。

         当时做的事图像融合,本来什么方向都没有,后来缩放到多聚焦图像融合,研究的点就集中了,从图像融合的几个准则入手,很快就做了一些东西,算法设计完后,就是软件设计,又没有约束,考虑到时间不够,就采用混合编程去实现了,不过对于软件设计还是在表面上游走,到了现在,如果我是导师,我一定会给学生一个建议,可以听从,让他自己选择。

          在设计软件之前,必需要先做一个预算,约束文档。

          约束越多,实现设计也就越快,假设要设计一个上位机软件,提出要求:

软件平台:

1.vc6.0++  windows编程

2.单片机c52

3.ado数据库访问

具体细节:

balabala.......

          如果一开始就定下基调,相信入手就非常明了,即使对于一个不懂编程的人,我相信一个月能实现简单的要求。

          假如一开始就不做要求,要一个上位机软件,去设计,vc ?  vb ? labview ? c# ?  java ?  什么都可以去设计,但是不同的语言,都有自己的设计规格, 然后数据库,sql ,oracle ,access,txt ,xml,都可以选择,但是要选哪个,都是问题。

          接下来,认识约束:

时间+

空间+

人为+

时间-

不随时间变化而变化的约束

时间导致的约束可以以空间来放宽

时间导致的约束可以以人为来放宽

空间-

空间导致的约束可以以时间来放宽

不随空间变化而变化的约束

空间间导致的约束可以以人为来放宽

人为-

人为导致的约束可以以时间来放宽

人为导致的约束可以以空间来放宽

不随人为变化而变化的约束

     在设计软件时,语言,资源,都只是工具,重要是我们需要理解用户需要什么,客户的要求包含的约束,一个好的架构和用户模型好于用一门精致的语言。

继续阅读