今天听了一个软件开发管理的讲座,有些收获。讲座的一些内容我之前就知道、体会到,比如,文档对于软件来说很重要。事实上我想说的是,就目前来看,好的软件在于有好的文档,代码本身的优势已经不是太大的优势了。一个软件,即使效率高一些,但是如果没有好的文档,照样会很难用。
不过今天讲座有一点是我之前体会不深的,就是对过程的管理。我之前知道,一个好的软件依靠的是技术和人。但是今天知道了,一个好的软件还依赖于过程。原因在于,人是会犯错误的,软件是必然会有缺陷的,必然有修改的过程。所以对过程的管理是尤为重要的。过程中必须有记录,这样出了问题才有据可查。要求就是全程双向可追溯。做到了对过程的良好管理,就保证了软件开发工作的可继承性。如果是一直开发同类产品,那么良好的过程管理保证的可继承性可以极大地提高效率,降低成本。一个好的过程管理体系是对以往成功经验是失败教训的总结,因而后续按照这样的体系进行的开发就可以避免已有的错误,减少返工,这样就提高了效率,降低了成本。
对于工程而言,可继承性的重要性是毋庸置疑的。那么,对于科研而言,可继承性又有什么意义呢?
对于科研,我们强调的是创新,似乎不需要什么可继承性。其实不然,科学研究中也有技术(工程)的成分,比如FITS文件的格式在一段时间内都保持不变,那么读写FITS文件的程序应该就是可继承的。如果对类似的程序的编写过程进行管理,那么就可以保证这些程序是可继承了,凡涉及FITS文件读写的操作都可以提高效率。另外一方面,科研成果是人类知识的重要组成部分,应该有可继承性,期刊论文在一定程度上起到了这样的作用。但是就我的感觉而言,期刊论文并没有完全实现科研的可继承性。期刊论文很多时候起到的是“新闻”的作用,不过是报告成果而已。真正靠读期刊论文就能重复其中工作而不走同样弯路的情况很少。原因在于,期刊论文似乎不怎么报告失败的过程。一个成果,失败了1000次也不要紧,只要第1001次有了突破就可以了,而在论文里通常看不到前1000次的信息。这样,如果有人单看这篇论文,那么在重复这些工作的时候可能还会失败很多次。
科研中真正可继承的内容可能只存在于研究组中某个人的电脑上。如果有新人进组,那么能让新人上手而不走太多弯路的人往往只有一个。如果这个人毕业了,那么可继承的内容就基本消失了。真正要让科研可继承,那么就必须建立一个过程体系,研究组的人都遵守这个体系,这样,可继承的内容就存在于很多地方,即使有人离开研究组、有新人来,都没有问题。不过,由于科研的创新性,除了对一些偏技术方面的内容,这是很难做到的。真正想使得科研有可继承性,那么需要发表的不只是文章,程序、工作记录都应该公开,只有这样才能实现对过程的管理,才能使后来人少犯错误,提高科研的效率。只是这样的公开是受到限制的,大多数人并不愿意这么做,因为这里面有利益的问题。这是当今科研的一个问题。
https://blog.sciencenet.cn/blog-117333-681191.html
上一篇:
学车杂记(二)交通标志的语言学下一篇:
IDL极简教程