首页 理论教育 信息系统与工程

信息系统与工程

时间:2022-05-14 理论教育 版权反馈
【摘要】:UML是一套系统分析与设计的建模工具,它是为用户、设计人员、开发人员、系统集成人员、测试人员交流而设计的通用语言。UML主要由5个视图和8个图以及若干模型元素和通用机制等部分构成。8个UML图可分为3个静态图和5个动态图。UML的5个视图,8个图以及使用者的关系如下表3-2。在UML中,这类人员称为角色。角色必须是给系统发送信息或得到信息的事物。

3.5 信息系统与工程

一个信息系统从规划设计到开发应用直至更新换代称作系统的生存周期(lifecycle),通常如图3-6所示。

(1)规划和可行性研究:系统规划和可行性研究是解决必要性和可行性问题。现在的医疗企业事业单位越来越认识到信息系统的重要性,并将信息系统工程纳入了发展规划。

(2)项目设计:这包括需求分析,模块设计,数据库设计,硬件分布设计。

(3)软件开发:进行具体的代码编写,数据库的实现。

(4)软件测试:对所开发的软件进行功能测试和负载测试,纠错。

(5)实施:将开发的软件安装到需要的用户计算机上使用。

(6)开发总结:对项目开发过程总结,以便今后改进。因为目前的软件开发都是模块化的,这个总结过程包括将一些具普遍意义的模块更完善,以便日后开发新项目时使用。

(7)维护:在使用过程中的维护。维护不只是保障软件的正常运行,也在使用过程中积累问题和经验,以便软件升级时参考。

上述第(2)—(6)项是主要的开发过程,其中包括多次的反复。

3.5.1 系统总体需求分析

需求分析是所有软件系统开发的第一步要完成的工作。而需求分析又可以分为若干层次。总体需求分析是在最高层次或者说最概括的一种需求,是在管理层级(如医院的领导等)提出的需求。软件系统的分析师应该根据这总体需求,提出所需要的资源,比如人力配置,设备配置,数据库和软件配置,开发所需时间等等。

本节后续部分将以一个社区范围内的健康档案系统为例给出这个系统的分析和开发过程。

img20

图3-7 UML的4+1视图

这里我们先概要地对现代软件开发中已经广泛被使用的工具UML(unified modeling language)作一介绍(图3-7)。UML是一套系统分析与设计的建模工具,它是为用户、设计人员、开发人员、系统集成人员、测试人员交流而设计的通用语言。

UML主要由5个视图(views)和8个图(diagrams)以及若干模型元素和通用机制等部分构成。这5个视图分别为:用例视图(use case view),逻辑视图(logical view),组件视图(component view),并发视图(concurrency view),部署视图(deployment view),其中用例视图起核心作用,因而很多人也把这5个视图称为4+1视图。

用例视图用于描述系统应有的功能集合,主要为用户、设计人员、开发人员和测试人员而设置。它是从系统外部用户的观点看系统功能的抽象表现。

逻辑视图也称设计视图,用来显示系统内部支持实现用例视图功能的逻辑结构。主要为设计人员和开发人员使用。

组件视图也称开发视图,用来显示系统内部组件的模块结构。为开发人员使用。

并发视图也称过程视图,用来显示系统内部在实现功能时各个对象的协作关系。为系统集成人员和开发人员使用。

部署视图,用来显示系统的组件在物理上的配置,例如数据库服务器、用户端软件、网络配置等。为系统集成人员、开发人员和测试人员使用。

8个UML图可分为3个静态图和5个动态图。静态图:类图(class diagram);组件图(component diagram);部署图(deployment diagram)。动态图:用例图(use case diagram);状态图(state diagram);顺序图(sequence diagram);活动图(activity diagram);协作图(collaboration diagram)。

UML的5个视图,8个图以及使用者的关系如下表3-2。面向对象的软件设计方法有多种,但是都以用例图为基础。

表3-2 UML中视图,图和使用者的关系

img21

3.5.2 功能需求分析和用例分析

在总体需求下,功能分析是分析更具体的最终使用者的需求。这里最终使用者是泛指使用该系统实现某类功能的人员。在UML中,这类人员称为角色。我们现在列出社区范围内的健康档案系统的需求如表3-3所示:

表3-3 社区健康档案系统的需求分析

img22

img23

图3-8 社区健康档案系统注册个人用例图

可以方便地将上述需求用UML的用例图表示出来。为简单清楚起见,图3-8只表示了系统注册个人的用例图。

图中角色用人体的抽象图表示。角色可以是人,也可能是组织、机构、甚至时间。角色必须是给系统发送信息或得到信息的事物。每个椭圆表示一个用例。用例和角色的联系用连接它们的一条直线表示。用例外围的矩形框表示该系统的边界。上图表示该系统需要提供注册个人的所有主要功能。当然,有些必须的功能比如登录、注册等常规功能,在这个用例图中没有被表示出来。

用例图可以按讨论问题的深入程度而有不同的层次。例如注册个人的编辑记录的用例,可以细分为添加健康记录(比如每天测量血压血糖的记录,因病用药的记录,服用保健食品、药物的记录,甚至进食、睡眠的记录等等),修改记录,删除记录等等。我们当然可以据此画出更深入层次的用例图。一般说来,用例图是从系统外观察该系统所能完成的功能图,通常不需要太过细化。

3.5.3 流程分析和界面设计

如何实现软件需求,也就是实现用例图中规定的功能,这就需要进行流程分析,并在此过程中设计用户界面。下面以注册用户添加一条血压测量记录为例进行流程分析,其所需步骤或者所谓流程为①注册用户登录;②选择编辑记录;③选择添加记录;④保存记录。这4个步骤,可以用UML的活动图3-9来表示。从开始到结束要经过登录—用

img24

图3-9 社区健康档案系统注册个人活动图

户功能选择—编辑记录—添加记录这4个步骤,我们可以很自然地设想每个步骤都需要系统提供用户界面(graphical user interface,GUI)。虽然用户界面的设计可以是多样的,好的美工设计可以使用户界面更悦目和友好,但是每个用户界面上所必须的内容却是相当确定的。

登录界面:要有输入用户名和密码的文本框,确认和撤销的按钮,如果更仔细一些,还可以有忘记密码的处理提示和新用户注册的链接。

选择功能界面:至少要有选择6个相应功能的按钮(或使用类似功能的其他选择方法控件),还要有不选择而退出操作的控件。

编辑功能界面:至少要有选择3个相应编辑功能(添加、删除、更新)的按钮(或使用类似功能的其他选择方法控件),还要有返回上一页面的控件以及不作任何选择而退出操作的控件。

添加记录界面:需要有所有记录内容的控件,比如其中要有选择何种记录(血压、血糖等),当选择血压时,页面上至少需要输入舒张压、收缩压和测量时间的文本框或提供类似功能的控件。

遍历所有用例图,我们可以确定我们需要的所有用户界面,并对每个界面进行较深入的功能设计。

活动图是UML中用来跟踪用例流程的诸多手段之一。其他如顺序图、协作图等也都常常被用作跟踪流程、设计用户界面的手段。

3.5.4 对象分析和定义

计算机发展起始阶段,计算机软件技术是面向过程的技术,而现代软件技术则是面向对象的技术,它更真实而客观地描述了世界。

我们所处的世界是由对象组成的,没有一个事物不属于对象,对象无处不在。计算机软件就是客观世界的某个片断在计算机里的模拟。对象是对客观事物的抽象描述。

对象具有静态特征和动态特征。静态特征用数据描述,称作对象的属性;动态特征是对象的行为和功能,称作对象的方法或操作。一个对象由一组属性和一组行为(功能、方法)组成。对象是由属性和行为构成的封闭体,有对外界的通信接口,外界通过接口与对象交互作用。一个非常形象的例子是电视机,电视机有很多部件组成,可以实现接收电视信号、发送电视画面等许多功能。它与外界的接口就是设置在它表面的一系列按钮或遥控器。

面向对象技术最有用的4个特性是:抽象(abstraction),封装(encapsulation),继承(inheritance)和多态(polymorphism)。

抽象:就是舍去事物的非本质的、非共同的特性,抽取共性和本质特征的过程,将相同特征的事物对象(objects)个体组成为类(class)。例如在医院信息系统中,患者是一个类,医生也可以成为一个类。这就是抽象。有些不同的事物具有某些相同的属性和行为,把这些相同的属性和行为提取出来,组成一个新的类,比如患者和医生在具有姓名、性别这意义上来说是相同的,我们可以将之抽象为个人这个类。

继承:上述患者和医生的例子中,个人这个类是从患者、医生的共同属性和行为抽象出来的。我们可以将患者类和医生类设计称为个人这个类的派生类,或者称为子类。而个人类则是患者类和医生类的父类。所谓继承就是子类自动共享父类的所有属性和行为的机制。继承意味着子类自动拥有和隐含得到父类的属性和行为,父类已经定义的属性和行为在子类中不再需要重新定义(图3-10)。

封装:封装就是把对象的属性和行为结合成一个独立的基本单位。这有两方面的含义,一是属性和行为的结合,强调属性和行为的一体化,二者不可分割;二是信息屏蔽,尽可能屏蔽对象无需为外界所知道的属性和行为的细节,形成一个对外屏障,而仅仅向外界提供有限的接口。

多态:多态的意义就是一个名字具有多个语义。比如生活中我们说打开门窗,打开礼物,打开书本,都用了同一个动词“打开”,但是它在不同的场合有不同的语义,我们不用担心这不同的语义会被误解。在面向对象的软件技术中,在具有继承关系的对象或类中,子类继承父类的某个行为,如果子类的行为表现还有它自身的特点,表现形式不尽相同,那么这个行为具有多态性。支持多态是面向对象程序设计语言的一个基本特征。

img25

图3-10 类的继承,其中Person类是Patient类和Doctor类的父类

img26

图3-11 血压类

对象和类的发现:一般说来,从需求分析中首先找到那些名词(包括人、地点、物品、抽象名词等)。比如我们说“医生需要为患者增添一条血压测量的记录”,这里医生、患者和血压记录都是名词。我们可以据此定义三个类,而医生和患者的类已在前面定义过,所以这里只给出血压类(包括患者标识、医生标识、血压的高低值和测量的时间,以及是否高血压的判断方法),见图3-11。

这个例子中关于血压类的引入,我们同时也引入了患者标识和医生标识的概念,用这个标识我们可以方便地找到是哪个医生为哪个患者作的该次血压测量。这在数据库中就是表和表之间的关系。通常,对象分析中的一个类,就是将来数据库设计中的一个表。类名就对应于表名,属性就对应于表中的列。一次测量的结果对应于表中一条记录。

通常对每个对象定义一个类,用符号来表示,但需要作适当调整。例如:

(1)分拆:某类的属性或行为不适用于该类的全部对象,例如汽车类,乘客数量属性适用于客车,不适用于货车,这就需要在汽车类下拆分出客车类和货车类。

(2)归并:两类的属性和行为完全相同时,如书籍和计算器是不同的类,但是在商店销售系统中,其属性和行为完全相同,可以合并为商品类。

(3)结构:两类的属性和行为相似,这些类之间或多或少存在某种联系。对于相同属性和方法较多的类,建立继承结构;对于类间具有相同事物对象的,建立整体—部分结构,如汽车和飞机两个类对象,都有发动机,可建立发动机类。

类对象的命名:类名称应能描述类中所有对象的基本特征。

3.5.5 数据库工具和数据库设计

现在占市场统治地位的数据库管理系统有Oracle,Sybase,MS SQL,MySQL,Access等等。这些数据库工具经过了无数人的多年开发和应用,已经相当的成熟和完善。应用软件的数据库设计就是使用这些数据库工具设计的。医学信息数据库所要存储、处理的信息量是非常巨大的,而查询又要求准确而迅速,因此选用数据库工具是十分重要的。目前多数的医学数据库采用Oracle、Sybase或MS SQL作为其管理系统。无论采用哪种数据库工具,尽管它们在使用方法、命令上有所差别,但是在建表、查询等主要功能的应用上大同小异。

数据库设计的前提是对于系统需求有非常透彻的理解。多数软件系统的开发经验告诉我们,一个好的数据库设计是软件系统成功的一半。当我们对于系统对象分析成熟后,数据库中需要的表也就相当明确了。尽管后续还会有一些调整,但是大的框架,基本结构已经齐备。如前节所述,一个类可以对应数据库中的一个表,类中的属性对应于表中的列,一条数据对应于表中一行。

类,也即数据库中的表的设置是数据库设计的最重要环节。设置过程可以是从大到小、从外向内和从小到大、由内而外的反复完善的过程。一个好数据库的构建不但需要对系统的透彻理解,而且需要丰富的经验,而经验只能通过不断的实践和总结才能获得。

为了实现快捷查找,数据库中往往对一个表内的某列定为此表的索引。如果需要,我们也可以定义若干个列为此表的索引。如果一列索引被单独引用,那么这个列的数据必须是没有相同的。举例说,个人身份信息表的姓名、年龄、性别等显然会有大量是相同,而只有身份证号码是满足惟一性的,因而身份证号码可以被定义为索引。人们往往在表中定义一个被称为序号ID的索引列,ID的数值是自动增加的,因而也就不会有相同的值出现。这个序号列的引入,也就保证了表中不会有完全相同的两条记录。所有数据库工具都有这个约束条件,即一个表中,不能有两条记录完全相同。

关于数据库设计的硬件环境、安全等方面的考虑已在本书其他部分论及,此处不再赘述。

3.5.6 开发环境和工具

医学信息系统的开发环境和工具取决于该系统所涵盖的内容以及所要达到的功能。一般说来,要求技术平台和开发工具具有稳定性、安全性、先进性、可扩展性和便于维护。

技术平台是指系统的软件支撑环境,包括网络操作系统、数据库管理系统、客户机操作系统。

目前国内使用的网络操作系统通常为Windows NT(包括Windows 200x)系列。

数据库管理系统通常为Oracle,Sybase,MS SQL server 200x系列。

至于客户机操作系统,常用的为Windows XP,Vista系列。

开发工具选择满足面向对象要求的工具。目前广泛使用的MS VC++、MS VB6.0、MS C#、MS.Net、Borland C++、Java等,都能满足面向对象开发的需求,同时都具有简便易用的图形工具。

数据库和软件的接口,通常采用ODBC(open database connectivity)、JDBC(java database connectivity)等技术。

3.5.7 软件配置

在信息系统软件开发过程中,技术开发人员往往要用到第三方开发的软件。这些软件有些是需要购买的,而有些则是可以免费得到的。比如从网络上可以合法地得到很多的免费软件。使用这些软件,有时候可以大大减轻我们的工作量,或者给我们某种启发。在信息系统软件开发过程中,使用第三方软件是平常事。当然在使用前必须对于该软件的性能、软硬件安装要求有详细的了解,并进行测试,以便我们能使用正确的软件来做正确的事情。开发过程中使用的第三方软件,在为用户安装时必须同样配置。

3.5.8 软件开发过程中的再设计

我们在介绍软件系统生命周期时指出,开发过程是一个多次反复的过程。这是因为人们很难在系统开发初期就非常透彻地了解系统的每个环节。即使非常透彻地了解了,用户也可能在开发过程中提出新的要求,或者是改变一些需求,还有客观条件在开发过程中的变化。所有这些变动都要求系统开发人员作出相应的设计改变,或者说再设计、再开发。

3.5.9 软件测试要求

一般说来,软件开发工程师在开发过程中会不断地测试他们所开发的软件部分,但还是远远不够的。开发完成的软件系统在交付用户使用前,必须经过严格的测试。测试中发现的问题必须按其影响程度及时修正和弥补。

测试前的准备:在测试前,必须按照安装文档的说明,在一个重新安装操作系统的计算机上进行,配置文档说明所要求的软件和硬件。切忌在原来的开发用计算机上测试。这是因为原开发用的计算机上有了所有的软件配置,测试不能完全发现可能存在的问题。

软件测试可以分为功能测试和系统测试两个阶段。

功能测试:安装设计中的用例图,逐个检查系统是否实现了所有的设计功能。这一过程也称为正向测试(positive testing)。功能测试还必须经过反向测试(negative testing)。反向测试的必要性是由于系统使用者不可能完全按照功能要求的步骤进行操作。一个好的软件系统要能够防止发生操作错误,而一旦发生操作错误,系统要能够作相应的处理,而不致引起系统的错误响应甚至中断运行。举例来说,界面上有一个需要输入数字的文本框,输入数字,系统有正确的响应,这就是正向测试。而如果输入了一个数字以外的字符,系统就退出了,这就是没有通过反向测试。解决的办法有两个:一是让该文本框只接受数字;二是如果输入了数字以外的字符,系统提示输入错误,让改正。

系统测试:通过了所有功能测试的软件系统,还需要进行系统测试。系统测试的概念是指将各模块集成后的测试,这更能反映实际使用时的情况。系统测试的情况下,所有的功能测试都必须仍然通过。同时,系统测试还要测试系统的响应速度和负荷情况。例如,当系统有10个、100个或1 000个用户同时在使用,系统的反应是否依然正常,结果是否依然正确。

3.5.10 硬件配置

医学信息系统的硬件配置取决于功能需求。一般说来,主要的硬件配置有服务器的配置、用户终端的配置和网络配置这三个主要方面。

服务器的配置:大体上可分为性能敏感型和空间敏感型两大类型。所谓性能敏感型是指对服务器的性能要求较高,反应速度要求快,如NOTES、www、DNS、PROXY等服务器。空间敏感型是指对服务器的存储空间要求大,如FTP服务器等。数据库服务器、EMAIL服务器等则对二者都有一定的要求,视用户数的多少,用户定额空间的大小,访问的频繁度而偏向于某一种类型。一个社区医院只需要使用较高配置的个人电脑当服务器也就能满足需要,而中大型规模的医院,则应该选择较高配置的服务器。特别是其存储空间应该尽可能大,以便在硬盘上存放更多的资料,达到快速响应用户指令的目的。当然,性能高的服务器价格也比较高。

用户终端的配置:一般情况下,普通个人电脑和显示器已能满足一般用户终端的需要。但是在显示医学图像方面,平台显示器的影像显示效果明显受到影响。为了研究医用显示器在数字影像系统中的作用,美国Beth Isreal医疗中心,在1998年北美放射学会上介绍了他们用分辨率2048×2560竖屏医用显示器与普通分辨率1024×768但可以放大一倍的横屏普通显示器对80例疑似肺病患者进行的对比研究。这些患者都是3个月内相继就诊的。首先在CR上拍了胸片,然后在螺旋CT上进行检查,两种显示器都可以调节窗宽窗位。共有3名医生分别轮流在2台显示器上读像诊断,记下肺部有无疾病。报告正确与否以CT报告为准。结果每名放射医生在普通显示器上都有至少一次漏诊肺结节,而在医用显示屏上,3名医生无一漏诊。因此,建议凡是以诊断为目的的放射科诊断工作站,其监视器应为竖屏,分辨率至少为2K×2K,亮度达到50朗伯(170cd/m2)。(参见第9章)

网络硬件配置:网络有内网、即局域网(LAN)和外网、即广域网(WAN)。局域网是单位内部的网络通信,各通信点之间距离较短。广域网能覆盖大面积地理区域。因特网是世界上最大的广域网。网络链路必须能快速传递数据。带宽是指通信信道的传输能力。医学信息系统可以根据所承担的功能,选择不同的网络带宽,电话线拨号(56K)、ADSL(640K—10M)、宽带线(2M—10M)、光纤(2G以上)可以提供的带宽范围有很大不同。当然,高的传输能力也意味着较大的投资。

3.5.11 软件安装,维护和备份

一个经过了严格测试的医学信息系统软件的安装应该严格按照安装说明配置硬件和软件。如果这样安装后的系统不能正常运行,那么不是安装说明的错误或疏漏,就是硬件或操作系统存在问题。这时应该报告软件提供厂商来确定问题并加以解决。为了防止可能发生的意外,软件系统应该制作备份。一旦发生意外,可以重新安装使用。

任何软件都不可能是永远完美的,医学信息系统也是一样。软件在使用过程中的维护是一件很重要的工作。这个工作主要是两方面的内容:

(1)维护系统的正常运行。一旦发生问题,给予解决。

(2)将所有发现的系统问题和不再适应需要的原设计记录下来,以便系统更新升级时参考。

当然,数据库的备份也是系统运行过程中维护的内容。

3.5.12 系统集成

所谓系统集成(system integration,SI)就是通过结构化的综合布线系统和计算机网络技术,将各个分离的设备(如医院各科室的电脑、各种仪器设备、服务器等)、功能和信息等集成到相互关联的、统一和协调的系统之中,使资源达到充分共享,实现集中、高效、便利的管理。系统集成应采用功能集成、网络集成、软件界面集成等多种集成技术。系统集成实现的关键在于解决系统之间的互联和互操作性问题,它是一个多厂商、多协议和面向各种应用的体系结构。这需要解决各类设备、子系统间的接口、协议、系统平台、应用软件等的集成问题,同时也要解决与子系统、建筑环境、施工配合、组织管理和人员配备等相关的面向集成的问题。

系统集成作为一种新兴的服务方式,是近年来国际信息服务业中发展势头最猛的一个行业。系统集成的本质就是最优化的综合统筹设计,一个大型的综合计算机网络系统。系统集成包括计算机软件、硬件、操作系统技术、数据库技术、网络通信技术等的集成,以及不同厂家产品选型、搭配的集成。系统集成所要达到的目标——整体性能最优,即所有部件和成分合在一起后不但能工作,而且全系统是低成本的、高效率的、性能匀称的、可扩充性和可维护的。

系统集成包括硬件系统集成和应用系统集成。

1)设备系统集成

硬件系统集成在大多数场合简称系统集成,或称为弱电系统集成,以区分于机电设备安装类的强电集成。它指以搭建组织机构内的信息化管理支持平台为目的,利用综合布线技术、楼宇自控技术、通信技术、网络互联技术、多媒体应用技术、安全防范技术、网络安全技术等将相关设备、软件进行集成设计、安装调试、界面定制开发和应用支持。设备系统集成也可分为智能建筑系统集成、计算机网络系统集成、安防系统集成。

2)应用系统集成

应用系统集成(application system integration)指依照客户需求提供应用的系统模式,以及实现该系统模式的具体技术解决方案和运作方案,即为用户提供一个全面的系统解决方案。应用系统集成已经深入到用户具体业务和应用层面,在大多数场合,应用系统集成又称为行业信息化解决方案集成。应用系统集成可以说是系统集成的高级阶段,独立的应用软件供应商将成为核心。

系统集成还包括构建各种WIN和LINUX的服务器,使各服务器间可以有效地通信,给客户提供高效的访问速度。

问题与讨论

(1)举例比较一个医生使用和不使用计算机给病人看病的区别。举例比较一个医院使用和不使用计算机的区别。举例比较一个地区使用和不使用计算机网络的区别。

(2)举例说明保存医疗数据的意义。使用和不使用计算机时是如何保存医疗数据的?

(3)举例说明医疗数据库的安全是十分重要的。医学数据库有哪些不安全因素需要防范?

(4)通过本章学习,说说你对医学信息工程的认识。医学信息工程有哪几个主要阶段?

(冯正永)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈