信息系统分析是信息系统研制过程中的第一阶段,称为信息系统的逻辑设计阶段。这一阶段的中心工作是为信息系统建立起逻辑模型,解决“做什么”的问题。信息系统的设计也称为物理设计,它是信息系统研发过程中,紧接系统分析之后的第二阶段。第二阶段要根据第一阶段建起的逻辑模型来确定其实施方案,即解决“如何做”的问题。
信息系统的设计主要依据系统分析报告、系统开发人员的知识和经验。信息系统设计阶段的主要内容包括计算机系统运行环境设计、系统总体结构框架设计、数据库设计、代码设计、输入与输出设计、处理流程及模块功能设计。
本质上,信息系统是一个计算机应用系统,一个完整的计算机系统和网络系统就是信息系统的主要运行支撑环境。
在总体规划阶段,通过初步调查,提出计算机系统的初步配置方案,这是一个逻辑配置,强调系统对计算机功能的要求,不涉及具体计算机参数(如机型、机种、牌号等)。在本阶段,已经清楚系统对计算机的要求,这时的计算机配置已经是物理的方案,即设备的型号、数量、安装地点等都已经具体化了。
合理配置系统的目的是,要以较小的投资来获得较好的系统性能。计算机系统的选择,应满足当前和中、长期目标的需要,保证实用性又不失先进性。
总结起来,计算机系统方案的选择,包括硬件和软件两方面的配置,一般应从以下10个方面进行。
(1)选择的依据。计算机系统方案的提出,应主要考虑和依据系统的可行性报告、系统说明书和系统总体结构设计三个方面。
(2)功能要求。对计算机系统的功能要求,实际上是对信息系统的功能要求,这一方面主要考虑的是数据处理能力(即速度),还有系统的外设功能(如文字、图形、声频、视频等多媒体处理能力),再就是通信功能(即数据的通信方式),是点对点还是网络通信。
(3)容量要求。主要是数据的存储能力(即计算机存储空间的要求),根据所研制和要支持的信息系统的近期、中期、远期发展规划所要求处理的数据量,提出计算机内存、外存的容量要求。
(4)系统配置。应从计算机系统的软件和硬件两方面考虑。在优选硬件时,要注意软件与其兼容;反之,如果优选软件,则要考虑硬件必须与之配套。当然,还要注意两方面的可扩充性。
(5)性能要求。主要是强调计算机的运行速度、字长、与二者有关的指标要求,要根据时间性、精确度等需求来确定。
(6)通信要求。研制的信息系统在当今是离不开网络的,在方案中要考虑到计算机系统的通信能力、与网络的接口。
(7)市场考虑。计算机的选型,通常应考虑系统的升级情况和软件的支持情况,即系统应具有延续性,另外还要考虑当前优选机型的使用率和国情要求。
(8)人员培训。培训要求以用户为主,要尽量满足他们的要求,做认真、全面的培训。完善的培训计划是系统有效运行的基本保证。
(9)方案评价。计算机系统方案的评价,主要依据以下方面来考虑:首先,要考虑功能是否齐全,能否满足系统的所有要求;其次,要考虑今后的发展,包括硬件是否齐全,软件是否丰富;再次,要考虑系统的开放性、兼容性要强,技术要先进,后援必须可靠;最后,要考虑价格是否合理。系统的建设必然会受到政策、经济、投资、技术条件、通信等方面的限制,设备的选择当然也会受到这些方面的制约。
(10)方案选择。计算机系统的配置要准备几种方案,每种方案在性能、费用等方面进行比较说明,形成选择方案报告,供讨论和决策。
总体结构设计需要从软、硬件两方面描述系统的总体结构,该阶段需要解决以下问题:如何将系统总体规划中划分的子系统更合理地甄别和确认,如何将子系统划分为若干模块,明确模块间的传送数据和调用关系,如何评价模块结构的质量,采用怎样的网络拓扑结构,如何进行设备和网络的配置。下面介绍主要工作步骤。
1.进行子系统的合理划分和确认
总体设计的一个主要内容是,合理地对系统进行分解,将一个复杂的系统设计转为若干子系统。这里所说的“合理”是指:一个合理的子系统,应该是内部联系强,子系统间尽可能独立,接口明确、简单,尽量适应用户的组织体系,也就是说,子系统间应具有“弱耦合”关系。需要指出的是,在总体规划阶段已经对子系统进行了初步的划分,本步骤的主要工作是在系统分析的基础上,对总体规划阶段的划分结果进行细化和确认。
2.模块设计
在完成子系统划分后,就要进行系统的模块结构设计。模块结构设计的任务是对各个子系统进行细化,确定划分后的子系统的模块结构,并通过模块结构图把分解的子系统和每个模块按层次结构联系起来。这一过程中必须考虑这样几个问题:每个子系统如何划分成多个模块,如何确定子系统之间、模块之间传送的数据及其调用关系,如何评价并改进模块结构的质量。模块设计阶段的工作步骤如图2-15所示。
图2-15 模块设计阶段的工作步骤
3.网络设计
现代信息系统早已彻底摒弃了早期的单机模式,可以说,现在如果没有计算机网络的支持,信息系统就不能成为一个真正有用的“系统”。如何将各个子系统从内部用局域网连接起来,以及今后系统如何与外部系统相连接的问题,就是网络设计的问题。
需要说明的是,网络设计的任务并不是要系统设计人员亲自去设计或搭建一个网络环境,而是根据系统的要求去考虑如何配置和选用网络产品。网络设计的具体方法详见有关信息网络构建的内容。
1.系统分解
1)系统
系统的存在需要三个基本条件,即目标、功能和结构。系统要达到某一给定的目标,就要求具备一定的功能。总功能是由许多子功能组成的,为了实现这些功能,就必须建立相应的结构。
按照一般系统论的观点,系统应当有五个要素,即输入、处理、输出、反馈和控制,可以用图2-16表示。
(1)输入:给出处理所需的内容和条件。
(2)处理:根据条件对输入的内容进行加工和转换。
(3)输出:处理后所得到的结果。
(4)反馈:将输出的一部分信息返回到输入,用于对系统进行控制。
(5)控制;操纵或指挥上述四个要素的工作。
图2-16 系统的逻辑模型
2)系统分解的目的和原则
(1)系统分解的目的。系统通常是由若干个子系统组成的,而子系统又可以进一步由若干个孙系统组成,依此类推。系统的层次结构如图2-17所示。通常,面对一个庞大而又复杂的系统,无法把系统所有元素之间的关系表达清楚,这时要将系统按一定的原则分解成若干个子系统。分解后的每个子系统相对于总系统而言,其功能和结构的复杂程度都大大降低。
对于系统的分解可以从各种不同的角度来进行,例如从职能的角度可将企业分成生产、后勤、财会和市场等子系统;从管理层次的角度又可以分为作业控制、管理控制和战略规划等子系统。
无论何种系统,当把它分解成子系统时,都会减少我们分析问题的难度,但必须明确各个子系统的边界和接口,这样才能将子系统有机地结合起来。
图2-17 系统的层次结构
(2)系统分解的原则。系统的分解过程事实上就是确定子系统边界的过程。每个人根据对系统理解的方式与角度的不同,对于系统的划分将出现不同的结果。为了保证系统分解的准确性和合理性,一般需要考虑如下原则。
① 可控制性原则:系统内部的元素一般是可控制的,而系统外部的元素则是不可控制的,因而在把系统中的若干元素划分为同一子系统时,该子系统应能管理和控制所属的所有元素。
② 功能聚合性原则:在系统内部的元素通常按功能聚集原则来进行子系统的划分,软件系统通常是由若干模块构成的,而模块具有各自的功能。若干模块聚集构成子系统,子系统按功能构成,如CRM子系统、计费账务子系统、结算子系统、PRM子系统、网关子系统等。
③ 接口标准化原则:系统在分解的过程中,需要定义大量的接口。接口是子系统之间的连接点,即子系统输入、输出的界面。在信息系统中接口的功能是十分重要的。通过接口,系统可完成过滤(去掉不需要的输入或输出元素)、编码和解码(将一种数据格式转换成另一种数据格式)、纠错(输入或输出错误的检测和修正)、缓冲(让两个子系统通过缓冲区耦合,取得同步)几个方面的工作。标准化接口有助于提高系统之间信息交换的效率,增强系统的扩充能力。
2.系统划分
1)系统划分的原则
(1)子系统要具有相对独立性。子系统的划分必须使得子系统内部功能、信息等各方面的凝聚性较好,也就说,子系统内部各功能间具有“强耦合”关系。如果使每个子系统或模块间相对独立、尽量减少各种不必要的数据调用和控制联系,并将联系比较密切、功能相近的模块相对集中,则便于以后的检索、查询、调用。
要求子系统具有相对独立性,就是要求子系统间的依赖性,特别是数据依赖性要小。子系统之间的联系要尽量减少,接口要简单、明确。因为一个内部联系强的系统对外部的联系必然很少,所以划分时应将相对集中的模块划入各个子系统的内部,剩余的一些分散、跨度比较大的模块,就成为这些子系统之间的联系和接口。这样划分的子系统,在将来进行调试、维护和运行时都是非常方便的。
(2)使数据冗余较小。如果数据冗余较多,则可能会使相关的数据分布到各个不同的子系统中,这样会使程序结构紊乱,需要进行大量的原始数据调用,需要保存和传递大量的中间结果,并重复进行大量的计算工作,这不但给软件编制带来了困难,而且也会极大地降低系统的工作效率。
(3)便于系统分阶段实现。因为信息系统的开发是一项较大的系统工程,它的实现一般都要分步进行,所以子系统的划分应能适应这种分期分步的实施方式。
(4)适应组织管理机构的设置。从短期看,一个企业的组织机构的设置是稳定的,但从今后管理发展的趋势看,企业的机构设置又是变化的。因此,为了便于各企业组织机构、职能部门的使用,使信息系统能够符合现有的情况和人们的工作习惯,在进行子系统划分时必须兼顾组织机构的要求,同时也考虑组织的变化趋势。
(5)充分利用各种资源。划分子系统时,还应考虑企业各类资源的合理利用。一个适当的系统划分有利于各种设备资源在开发过程中的搭配使用,应考虑到各类信息资源的合理分布和充分利用,以减少系统对网络资源的过分依赖,减少输入/输出和通信等设备的压力。
2)系统划分的方法
一般还可采用以下几种方法。
(1)按职能划分。这是目前最常用的一种方法。系统设计人员可参考系统分析阶段得到的功能体系图进行划分(按管理的功能),如划分出财务、物资、市场分析、人事管理、后勤保障等子系统。
(2)按逻辑功能划分。把一些相类似的处理逻辑功能放在一个子系统里。例如,把“对所有数据输入、编辑”功能放在一个子系统里,做成一个“通用数据输入编辑子系统”;或者把“对所有数据的查询打印”功能放在“通用查询打印子系统”中,这样不管是物资管理、人事管理,还是工资管理,只要涉及到查询打印功能,都由这个子系统来完成。
(3)按通信划分。把相互之间有较多通信的功能结合成一个子系统或模块。这样可减少子系统与子系统或模块间的通信,使接口简单、子系统内聚度高、外部通信压力小。
(4)按业务处理顺序划分。这种方法的依据是系统分析阶段得到的业务流程图,它常用在一些时间和处理过程顺序特别强的系统中。
(5)按业务处理的时间关系划分。把要在同一时间段执行的各种处理结合成一个子系统。
分析是提取和管理用户需求并建立问题域精确模型的过程。设计原则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析到面向对象设计(OOD),是一个逐步扩充模型的过程。面向对象设计就是用面向对象观点建立求解域模型的过程。
尽管分析和设计的定义有明显的区别,但是在实际的软件开发过程中,两者的界限是模糊的。许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。因此,分析和设计是一个多次反复迭代的过程。
1.面向对象设计的框架
面向对象分析主要模拟问题域和系统任务,面向对象设计是面向对象分析的扩充,主要是增加各种组成部分。具体来说,面向对象分析识别、定义类和对象。这些类和对象反映问题域和系统任务。面向对象设计识别、定义其他附加类和对象,它们反映需求的一种实现。当然,也可以交替地进行这两个阶段的工作。特别是在开发人员较少、环境便于原型开发时,面向对象分析与面向对象设计的相互交织更具明显的优越性。
面向对象设计的模型由五层组成,在设计期间主要扩充四个组成部分:人机交互部分、问题域、任务管理部分和数据管理部分,如图2-18所示。
人机交互部分包括有效的人机交互所必需的实际显示和输入。面向对象分析的结果放在问题域部分。在该部分中,需要管理面向对象分析的某些类和对象、结构、属性、方法的组合与分解。任务管理部分包括任务定义、通信和协调,也包括硬件分配、外部系统以及装置协议。数据管理部分包括对永久性数据的访问和管理。它分离数据管理结构所关系的事项(文件、关系型数据库或面向对象数据库等)。
图2-18 多层次、多组成部分模型
2.面向对象设计的准则
优秀设计能够权衡各种因素,从而使得系统在其整个生命周期中的总开销最小。对大多数软件系统而言,60%以上的软件费用都用于软件维护,因此,优秀软件设计的一个主要特点就是容易维护。软件设计的基本原理在进行面向对象设计时仍然成立,但是增加了一些与面向对象方法密切相关的新特点,从而具体化为面向对象设计准则。
(1)模块化。
(2)抽象。
(3)信息隐蔽。
(4)弱耦合。
(5)强内聚。
(6)可扩充性。面向对象易扩充设计,继承机制以两种方式支持扩充设计。
① 继承关系有助于复用已有定义,使开发新定义更加容易。随着继承结构逐渐变深,新类定义继承的规格说明和实现的量也逐渐增大。这通常意味着,当继承结构增长时,开发一个新类的工作量反而逐渐减小。
② 在面向对象的语言中,类型系统的多态性也支持可扩充的设计。
(7)可集成性。面向对象的设计过程产生便于将单个构件集成为完整的设计。
(8)支持复用。软件复用是提高软件开发生产率和目标系统质量的重要途径。复用基本上从设计阶段开始。复用有两方面的含义:
① 尽量使用已有的类(包括开发环境提供的类库和以往开发类似系统时创建的类)。
② 如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。
(9)类的设计准则。在任何面向分对象的应用中,类实例是系统的主要组成部分,而如果已采用纯面向对象的方法,那么整个系统就是由类实例组成的。因此,每个独立的类的设计对整个应用系统都有影响。下面简单介绍进行类的设计时需要考虑的因素,归结为如下8条准则。
① 类的公共接口的单独成员应该是类的操作符。
② 类A的实例不应该直接发送消息给类B的成分。
③ 操作符是公共的,当且仅当类实例的用户可用。
④ 属于类的每个操作符要么访问,要么修改类的某个数据。
⑤ 类必须尽可能少地依赖其他类。
⑥ 两个类之间的互相作用应该是显示的。
⑦ 采用子类继承超类的公共接口,开发子类成为超类的特殊的类。
⑧ 继承结构的根类应该是目标概念的抽象模型。
在系统设计阶段考虑一套保证软件和数据安全可靠运行的措施是十分必要的。信息安全或计算机安全是指防止对系统信息的篡改、越权获取、蓄意破坏等犯罪行为,以及对自然灾害的防护。制定一套安全方案旨在减少不安全因素,一旦出现安全问题时,可尽量减少损失和缩短恢复时间。
安全设计大致涉及制定安全计划并定义安全保护级别,制定措施防止信息的越权使用;采取措施加强对设备实体和软资源的保护;制定处理各种灾害的应急计划;进行风险分析和效益分析,权衡对安全的要求和系统费用的增长等。具体的方法和措施如下。
(1)安全控制机构的设定:包括人员组织、职责、安全计划制定和协调。
(2)系统开发周期各阶段的安全控制:包括开发规范的制定和执行,为了保证系统的安全,需要对开发全过程进行安全控制,并有组织保证。
(3)输入控制:把源数据与机器可读形式数据的转换过程,通过校验、编辑、一致性和关系校验等控制来保证完整性和可靠性。
(4)联机处理安全控制:包括对终端用户的识别、防入侵、防通信线路窃听、数据传输完整、终端安全锁设置、关闭方式和输出位置定位等。
(5)软件安全控制:包括防止对文件和程序的非授权访问和篡改等。
(6)输出控制:保证输出可靠,防止越权修改。
(7)系统运行控制:加强系统日常管理,如操作的启动、调度、控制等安全规程的建立。
(8)物理安全措施:选择物理设备的适合安装位置,加强对物理设备访问的控制,防止对存储介质的破坏,预防自然灾害对设备的危害。
(9)应急计划:发生灾害时能尽可能地保护系统的安全,减少损失,缩小灾害对工作的影响。
(10)后备备份:设计程序和数据的备份和存储机制,以支持灾害后的系统恢复和重建工作。