自从来了Sibet就一直在做项目,刚开始的时候是个半成品的体外诊断设备应用软件,关于血栓的弹力图谱绘制和信息管理。原来的软件是外包的,但由于我方没有给后续的经费(如何跟外包公司谈合同尚未经历过)导致乙方做了一半就不愿意再等了,毕竟搭软件的速度还是比硬件的迭代周期要快不少。原版本基于.net 3.5的WinForm开发,类似于很多年前做过的网站项目,代码看起来不吃力,但由于项目的进展软件也要随之做优化和扩展,而原有的MVC软件框架扩展起来实在很麻烦,这时候才发现把逻辑和界面写在一起弊端多多啊。好在血栓的这个项目并不指望我一个人搞出个产品化版本,只是辅助试剂人员的实验即可了。
从四月份开始接触了另外一个大项目,也算是Sibet重视软件研发领域的一步棋,有从荷兰飞利浦回来的大牛坐镇。苦于检验室仪器组和影像室里实在没有找不出应用软件开发的熟手,硬把我这个虽是软件工程本硕出身,但博士论文阶段却搞了五年嵌入式的人找来做平台研发。经过了这个项目的早期调研后,技术路线一直由大牛来引领着,先后读了一些关于WPF、MVVM和Prism的资料,当然也补了一些常用的设计模式知识。
目前应项目需要带着一个full-time前端工程师,一个part-time助理工程师做软件平台的实际编码工作,从零开始,边学边做,也会慢慢整理一些心得放到博客中。
PS:
文中的软件平台是一个包含了基础功能和扩展接口的解决方案,可以称之为软件库、接口库、控件库的集合。举个例子,目前我们的软件功能中需要OpenCV和VTK的接口来实现图像处理和渲染的功能,但对于没有技术积累的团队来说,在系统实现过程中很多细节是不确定的,所以我们可能会需要用到OpenGL或其他的第三方库,这时软件平台的设计就与普通应用系统的设计就有区别了,前者可以把接口留出来,等着在搭建应用系统时确实有需要时再添加实际的功能。
此外,建立平台也是创建一个研发团队的基础,当然平台不是短期内能建立的,在人力很紧张的条件下我们还是以实现具体功能为主,但这并不等于实现了功能就万事大吉了,在短时间内必须组织有效的代码审查活动并将程序的逻辑、设计模式、代码规范等不断优化调整,设计易使用和扩展的接口后才可以上传到项目SVN上。
万事开头难,希望项目能慢慢步入正轨。