工欲善其事,必先利其器

1. 前言:

在医疗软件公司工作已两年有余。在过去的两年中自己也亲身经历了4~5个比较大的项目。这些项目中,既有以C++为主导的桌面型应用软件,也有以Java和JSP、JavaScript为主的B/S型项目。由于工作中需要跟医疗影像(CT/MR/CR/US等DICOM影像)打交道,而这些影像与一般常见的JPG/BMP/PNG等格式的影像有较大的差别,因此在预览这些DICOM格式影像时,往往需要专业的看图软件。
以前当自己还不是一个软件工程师的时候,打开一个软件就仅仅是打开一个软件;但是,当我每天的工作就是开发软件时,再打开每一个软件的时候,脑子里便会很快地想一些跟这个软件的设计相关的问题。每当一款制作精美,且功能优异的软件出现在我的电脑桌面上时,我内心里总是会暗暗地赞叹这款软件的设计者。
正所谓“工欲善其事,必先利其器。”正是在许多优秀软件的帮助下,才无形中提高了我们的工作效率,节省了时间。而在公司工kk作,时间意味着效率,时间意味着金钱。下面按照这两年来接触到的工具软件,按类别进行分类,大致介绍一下这些软件的基本功能以及在工作中带来的好处。

2. 工具箱介绍:

按照功能,我将我接触过的软件主要分为四大类。

一类是与医疗影像密切相关的工具软件,这些工具软件可以读入DICOM格式的医学影像,显示DICOM的TAG值,并且具有医疗软件基本的二维阅图(如缩放、平移、窗宽窗位调节、标记测量、伪彩等),有的还具有更复杂的三维后处理(如MPR,MIP,VR/SR等),有的还可以修改DICOM影像中TAG的值以进行某些特殊的测试。

一类是辅助项目开发的工具软件。这些软件有的是分析比对不同文件的变更,如BeyondCompare;有将数据库数据结构可视化的,如Navicat premium系列;有的是用来分析代码写作规范的,如Sonarqube。通过利用这些辅助类的软件,可以极大地提高软件开发的效率。

还有一类则是直接或辅助编程的IDE。这些IDE是我每天工作写代码都需要打开的软件,它们提供的很多便捷功能可以让编程成为一种乐趣。

最后一类是专门用于项目代码版本管理的工具软件。如SVN,GIT等。这些软件也是软件公司管理代码最常用的工具。通过掌握和使用他们,也是在软件公司顺利工作的必要条件。
以下我便将这四类软件列举出来,并作一些简要的说明。以后我还会随着项目内容的变化和接触的新工具软件,不断扩展和更新这个列表。

2.1 医学影像类工具软件

Id 软件名称 软件简介
1 Philips Dicom Viewer 这是一款由医疗行业巨头Philips公司推出的dicom viewer的软件。软件基本涵盖了医疗软件常用的功能,如Zoom, Pan, WW/WL, Layout, Tag显示,标记测量,甚至还包括了高级的自动播放和定位线绘制功能。这也是我极力推荐的一款工具软件。
2 Amira 这是一款功能强大,多方面的工具软件,主要用于对数据进行可视化和操纵控制。它可以对医学影像进行自动和交互式分割,支持灵活地三维表面和有限元模型的可视化和模拟。Amira在我的工作中主要用于对医学影像进行三维可视化。
3 Medisp Dicom 这是一款精干的DicomViewer软件,提供基本的二维阅片功能。
4 Sante Dicom Viewer 这是一款短小精悍的DicomViewer软件,和MedispDicom类似。
5 Dicom Editor 这款软件既可以观看Dicom格式的影像,也可以编辑Dicom影像中的Tag项,这在用于测试Dicom影像的导入等功能时非常有用。
6 DicomBrowser 这也是一款用于浏览和修改dicom影像的软件。
7 ezDicom 这是一款便捷的观看Dicom影像的Viewer软件。

2.2 工程辅助类工具软件

id 软件名称 软件简介
1 BeyondCompare 这是一款用于比较两个文件夹,或者两个文件之间的差异的软件,用它可以很容易得比较两个版本之间代码的差异,是软件公司应用率极高的一款辅助类软件。
2 Notepad++/EditPlus/UltraEdit 这三款软件应该类似,我用Notepad++多一些。提供基本的编辑功能,可以根据不同的语言类型高亮代码,算是轻量级的IDE吧。
3 mysql-community-workbench 这款软件是MySQL官网自带的用于查看mysql数据库的GUI工具,工具很强大,界面也比较优秀,用起来很舒服。
4 Navicat for mysql 这是Navicat家族的产品,也是一款快速而简洁的数据库管理GUI工具。
5 Whole.Tomato.Visual.Assist.X 这是番茄产品,主要作为VisualStudio的插件安装,可以在书写代码时进行智能提示,提高代码写作的效率。不过现在VS自己也会带语法提示功能,究竟孰优孰劣,试一试就知道了。
6 GoogleTestRunner 这也是作为VisualStudio的插件安装的,主要是在C++大型软件项目中,利用GoogleTest的框架进行单元测试的自动运行。以前我开发C++项目时,要求在每改动一处代码时,要运行所有的单元测试,确保测试全部通过才可以提交代码。
7 Matlab 读过理工科本科和研究生的对这个软件不陌生,它主要用于科学计算,尤其擅长进行矩阵运算。在医学领域,主要用它实验一些空间三维变换的算法是否正确。在C++中也可以通过构造三维和四维方阵,来进行空间变换的实现。
8 Astash-community 这是一款用于辅助软件工程设计的工具软件,可以用于绘制时序图、类图、流程图等等。
9 Sublime_text 这是一款前端开发神器。我前端接触的少,只是了解和试用了一下。
10 Sonarqube 这是用于代码质量管理的开源平台,可以从七个维度检测代码的质量,可以支持包括java,C#,C/C++,JavaScript等二十几种语言的代码质量管理。
11 FileZilla Server/FileZilla 这是一个免费开源的FTP客户端软件,用于进行文件传输的服务器和客户端软件,具备所有的FTP软件功能。
12 Everything 这是一款大小甚至都不到1MB的软件,可以快速查找硬盘上的任意文件,查找速度之快,令人叹为观止。它背后的查找技术也验证了技术可以使生活更美好的观点。

2.3 编程类工具软件

id 软件名称 软件简介
1 Visual Studio 这是微软公司开发的一款可供多种语言编程的IDE。它可以通过安装相应的插件来增加这款IDE的性能,如前面提到的Visual Assist X可以增加编码时的提示;可以安装GoogleTestRunner,增加对单元测试的自动化执行;还可以通过安装QT和VS的插件,来应用QT进行界面设计等.
2 Eclipse-Juno, Kepler, Luna, Mars Eclipse是著名的跨平台的自由IDE,主要用来进行Java的开发,通过安装不同的插件也可以支持其他编程语言,如C++和Python等。
3 Webstorm Webstorm是一款用于Web端项目开发的IDE,主要用于JavaScript语言的编写,被称为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”,它与IntelliJ IDEA同源。

2.4 项目集成管理软件

id 软件名称 软件简介
1 Tomcat Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
2 Smart-SVN SmartSVN是一个功能多且易于使用的SVN客户端,可运行在多种操作系统上。
3 Smart-Git SmartGit是一款非常轻便而功能齐全的Git界面工具。
4 Tortoise-SVN TortoiseSVN是SVN的客户端软件,俗称乌龟。
5 Tortoise-Git TortoiseGit是Git的GUI工具软件。
6 SourceTree SourceTree是Windows和Mac下免费的Git客户端,可以直观地显示Git的各项命令操作与产生的变化。支持创建、克隆、提交、push、pull和合并操作。和SmartGit, TortoiseGit功能类似。看个人喜好,选择其中一款进行代码的管理即可。
7 Jenkins Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。它是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1.持续的软件版本发布/测试项目;2.监控外部调用执行的工作。
8 Node.js Node.js是一个基于Chrome JavaSript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。Node.js使用Module模块去划分不同的功能,以简化应用的开发,每一个Node.js类库都包含了十分丰富的各类函数。
9 Grunt Grunt是用来构建JavaScript的工具。对于需要反复执行的任务,如压缩、编译、单元测试等,自动化工具可以极大地提高工作效率。当在工程目录中的Gruntfile文件配置相应的任务,任务运行器会自动完成这些重复性的工作。
10 Istanbul Istanbul是JavaScript程序的代码覆盖率工具。它以土耳其最大城市伊斯坦布尔为该软件命名,而土耳其因地毯而世界闻名,而地毯的主要用于是覆盖地面,何其形象。

3. 总结:

这算是一篇综述性文章,我先将我在过去两年多的工作中接触过的工具软件大部分列举出来。这份清单会随着我日常工作接触到更多的工具软件而及时更新。
每一个软件的成功发布都是一个庞大的软件工程的实例。所谓麻雀虽小,五脏俱全。这里面很多的工具软件,我虽然每天都用,但是使用的都只是软件提供的一小部分功能,而大部分功能都还没有来得及探索,比例大概是20%和80%,所谓的二八法则。
以前工具清单中提到的每一个工具软件都值得认真研究,因为你每从这个工具中发现一项新的功能,它就可以从某一方面提高你的工作效率。
后面会分几篇文章,来详细介绍其中几个比较重要和使用频率很高的工具软件。

参考阅读及下载链接:

  1. Philips Dicom Viewer:
    http://clinical.netforum.healthcare.philips.com/global/Explore/Clinical-News/MRI/Philips-DICOM-Viewer-download-version-R30-SP3
  2. Amira
    http://www.softwaresea.com/Windows/download-Amira-10401501.htm
  3. Sante Dicom Viewer
    http://www.santesoft.com/index.html
  4. Sonarqube代码质量管理平台安装与使用.
    http://blog.csdn.net/hunterno4/article/details/11687269
  5. Grunt:任务自动管理工具:
    http://javascript.ruanyifeng.com/tool/grunt.html
  6. 代码覆盖率工具Istanbul入门教程:
    http://www.ruanyifeng.com/blog/2015/06/istanbul.html

你可能感兴趣的:(编码规范,代码质量,工具软件)