📘 信息系统集成专业技术知识 (一)

249 阅读22分钟

3 信息系统集成专业技术知识

3.1 信息系统建设

3.1.1 信息系统的生命周期

信息系统建设的内容主要包括设备采购、系统集成、软件开发和运维服务等。信息系统集成是指将计算机软件、硬件、网络通信、信息安全等技术和产品集成为能够满足用户特定需求的信息系统
信息系统的生命周期可以分为立项、开发、运维及消亡四个阶段。
(1)立项阶段:即概念阶段或需求阶段,这一阶段根据用户业务发展和经营管理的需要,提出建设信息系统的初步构想;然后对企业信息系统的需求进行深入调研和分析,形成《需求规格说明书》并确定立项
(2)开发阶段:以立项阶段所做的需求分析为基础,进行总体规划。之后,通过系统分析、系统设计、系统实施、系统验收等工作实现并交付系统
(3)运维阶段:信息系统通过验收,正式移交给用户以后,进入运维阶段。要保障系统正常运行,系统维护是一项必要的工作。系统的运行维护可分为更正性维护、适应性维护、完善性维护、预防性维护等类型。
(4)消亡阶段:信息系统不可避免地会遇到系统更新改造、功能扩展,甚至废弃重建等情况。对此,在信息系统建设的初期就应该注意系统消亡条件和时机,以及由此而花费的成本

3.1.2 信息系统开发方法

常见的开发方法包括结构化方法、原型法、面向对象方法等。
(1)结构化方法:是应用最为广泛的一种开发方法。应用结构化系统开发方法,把整个系统的开发过程分为若干阶段,然后依次进行,前一阶段是后一阶段的工作依据,按顺序完成。每个阶段和主要步骤都有明确详尽的文档编制要求,并对其进行有效控制。 结构化方法的特点是注重开发过程的整体性和全局性。但其缺点是开发周期长;文档、设计说明繁琐,工作效率低;要求在开发之初全面认识系统的需求,充分预料各种可能发生的变化,但这并不十分现实
(2)原型法:其认为在无法全面准确地提出用户需求的情况下,并不要求对系统做全面、详细的分析,而是基于对用户需求的初步理解,先快速开发一个原型系统,然后通过反复修改来实现用户的最终系统需求
原型法的特点在于其对用户的需求是动态响应、逐步纳入的;系统分析、设计与实现都是随着对原型的不断修改而同时完成的,相互之间并无明显界限,也没有明确分工。原型又可以分为抛弃型原型(Throw-It-Away Prototype)和进化型原型(EvolutionaryPrototype)两种。
(3)面向对象方法:用对象表示客观事物,对象是一个严格模块化的实体,在系统开发中可被共享和重复引用,以达到复用的目的。其关键是能否建立一个全面、合理、统一的模型,既能反映需求对应的问题域,也能被计算机系统对应的求解域所接受。
面向对象方法主要涉及分析、设计和实现三个阶段。其特点是在整个开发过程中使用的是同一套工具。整个开发过程实际上都是对面向对象三种模型的建立、补充和验证。因此,其分析、设计和实现三个阶段的界限并非十分明确
在系统开发的实际工作中,往往根据需要将多种开发方法进行组合应用,最终完成:系统开发的全部任务。

3.2 信息系统设计

信息系统设计是开发阶段的重要内容,其主要任务是从信息系统的总体目标出发,根据系统逻辑功能的要求,并结合经济技术条件、运行环境和进度等要求,确定系统的总体架构和系统各组成部分的技术方案,合理选择计算机、通信及存储的软、硬件设备,制订系统的实施计划。

3.2.1方案设计

系统方案设计包括总体设计和各部分的详细设计(物理设计)两个方面。

(1)系统总体设计:包括系统的总体架构方案设计、软件系统的总体架构设计、数据存储的总体设计、计算机和网络系统的方案设计等。
(2)系统详细设计:包括代码设计、数据库设计、人/机界面设计、处理过程设计等。

3.2.2系统架构

系统架构是将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。之后,进一步确定各层的接口,层与层相互之间的关系。对整个系统的分解,既需要进行“纵向”分解,也需要对同一逻辑层分块,进行“横向”分解。系统的分解可参考“架构模式”进行。

通过对系统的一系列分解,最终形成系统的整体架构。系统的选型主要取决于系统架构

3.2.3设备、DBMS 及技术选型

在系统设计中进行设备、DBMS及技术选型时,不只要考虑系统的功能要求,还要考虑到系统实现的内外环境和主客观条件
在选型时,需要权衡各种可供选用的计算机硬件技术、软件技术、数据管理技术、数据通信技术和计算机网络技术及相关产品。同时,必须考虑用户的使用要求、系统运行环境、现行的信息管理和信息技术的标准、规范及有关法律制度等。

3.3 软件工程

3.3.1 软件需求分析与定义

软件需求是针对待解决问题的特性的描述。所定义的需求必须可以被验证。在资源有限时,可以通过优先级对需求进行权衡
通过需求分析,可以检测和解决需求之间的冲突;发现系统的边界;并详细描述出系统需求

3.3.2软件设计、测试与维护

(1)软件设计:根据软件需求,产生一个软件内部结构的描述,并将其作为软件构造的基础。通过软件设计,描述出软件架构及相关组件之间的接口;然后,进一步详细地描述组件,以便能构造这些组件
通过软件设计得到要实现的各种不同模型,并确定最终方案。其可以划分为软件架构设计(也叫做高层设计)和软件详细设计两个阶段。
(2)软件测试:测试是为了评价和改进产品质量、识别产品的缺陷和问题而进行的活动。软件测试是针对一个程序的行为,在有限测试用例集合上,动态验证是否达到预期的行为
测试不再只是一种仅在编码阶段完成后才开始的活动。现在的软件测试被认为是一种应该包括在整个开发和维护过程中的活动,它本身是实际产品构造的一个重要部分
软件测试伴随开发和维护过程,通常可以在概念上划分为单元测试、集成测试和系统测试三个阶段。
(3)软件维护将软件维护定义为需要提供软件支持的全部活动。这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前要完成的活动包括交付后的运行计划和维护计划等。交付后的活动包括软件修改、培训、帮助资料等。

软件维护有如下类型:

更正性维护——更正交付后发现的错误;
适应性维护——使软件产品能够在变化后或变化中的环境中继续使用;
完善性维护——改进交付后产品的性能和可维护性;
预防性维护——在软件产品中的潜在错误成为实际错误前,检测并更正它们。

3.3.3软件质量保证及质量评价

软件质量指的是软件特性的总和,是软件满足用户需求的能力,即遵从用户需求,达到用户满意。软件质量包括“内部质量”“外部质量”和“使用质量”三部分。软件需求定义了软件质量特性,及确认这些特性的方法和原则
软件质量管理过程由许多活动组成,一些活动可以直接发现缺陷,另一些活动则检查活动的价值。其中包括质量保证过程、验证过程、确认过程、评审过程、审计过程等。
(1)软件质量保证:通过制订计划、实施和完成等活动保证项目生命周期中的软件产品和过程符合其规定的要求
(2)验证与确认:确定某一活动的产品是否符合活动的需求,最终的软件产品是否达到其意图并满足用户需求
验证过程试图确保活动的输出产品已经被正确构造,即活动的输出产品满足活动的规范说明;确认过程则试图确保构造了正确的产品,即产品满足其特定的目的
(3)评审与审计:包括管理评审、技术评审、检查、走查、审计等。
管理评审的目的是监控进展,决定计划和进度的状态,或评价用于达到目标所用管理方法的有效性。技术评审的目的是评价软件产品,以确定其对使用意图的适合性
软件审计的目的是提供软件产品和过程对于可应用的规则、标准、指南、计划和流程的遵从性的独立评价。审计是正式组织的活动,识别违例情况,并要生成审计报告,采取更正性行动

3.3.4软件配置管理

软件配置管理活动包括软件配置管理计划、软件配置标识、软件配置控制、软件配置状态记录、软件配置审计、软件发布管理与交付等活动。

软件配置管理计划的制定需要了解组织结构环境和组织单元之间的联系,明确软件配置控制任务
软件配置标识活动识别要控制的配置项,并为这些配置项及其版本建立基线
软件配置控制关注的是管理软件生命周期中的变更
软件配置状态记录标识、收集、维护并报告配置管理的配置状态信息
软件配置审计是独立评价软件产品和过程是否遵从已有的规则、标准、指南、计划和流程而进行的活动
软件发布管理和交付通常需要创建特定的交付版本,完成此任务的关键是软件库

3.3.5软件过程管理

软件过程管理涉及技术过程和管理过程,通常包括以下几个方面。
(1)项目启动与范围定义:启动项目并确定软件需求。
(2)项目规划:制订计划,其中一个关键点是确定适当的软件生命周期过程,并完成相关的工作。
(3)项目实施:根据计划,并完成相关的工作。
(4)项目监控与评审:确认项目工作是否满足要求,发现问题并解决问题。
(5)项目收尾与关闭:为了项目结束所做的活动。需要项目验收,并在验收后进行归档、事后分析和过程改进等活动。

3.3.6软件开发工具

软件需求工具包括需求建模工具和需求追踪工具
软件配置管理工具包括追踪工具、版本管理工具和发布工具
软件工程管理工具包括项目计划与追踪工具、风险管理工具和度量工具
软件工程过程工具包括建模工具、管理工具、软件开发环境

3.3.7软件复用

软件复用是指利用已有软件的各种有关知识构造新的软件,以缩减软件开发和维护的费用。复用是提高软件生产力和质量的一种重要技术
早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决策、架构、需求、设计、代码和文档等一切有关方面。

3.4面向对象系统分析与设计

3.4.1面向对象的基本概念

面向对象的基本概念包括对象、类、抽象、封装、继承、多态、接口、消息、组件、复用和模式等。
(1)对象:由数据及其操作所构成的封装体,是系统中用来描述客观事物的一个模块,是构成系统的基本单位。用计算机语言来描述,对象是由一组属性和对这组属性进行的操作构成的
对象包含三个基本要素,分别是对象标识、对象状态和对象行为。例如,对于姓名(标识)为Joe 的教师而言,其包含性别、年龄、职位等个人状态信息,同时还具有授课等行为特征,Joe就是封装后的一个典型对象。
(2)现实世界中实体的形式化描述,类将该实体的属性(数据)和操作(函数)封装在一起
例如,Joe是一名教师,也就拥有了教师的特征,这些特征就是教师这个类所具有的。

类和对象的关系可理解为,对象是类的实例,类是对象的模板。如果将对象比作房子,那么类就是房子的设计图纸

(3)抽象通过特定的实例抽取共同特征以后形成概念的过程。抽象是一种单一化的描述,强调给出与应用相关的特性,抛弃不相关的特性。对象是现实世界中某个实体的抽象,类是一组对象的抽象。
(4)封装:将相关的概念组成一个单元模块,并通过一个名称来引用它。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外提供的接口进行
(5)继承:表示类之间的层次关系(父类与子类),这种关系使得某类对象可以继承另外一类对象的特征,继承又可分为单继承和多继承
如图3-2所示,Dog和Cat类都是从 Mammal继承而来,具有父类的eyeColor属性特征,因此在子类中就可以不用重复指定eyeColor这个属性。

image.png

 

(6)多态使得在多个类中可以定义同一个操作或属性名,并在每个类中可以有不同的实现。多态使得某个属性或操作在不同的时期可以表示不同类的对象特性
如图3-3所示,Rectangle和 Circle都继承于Shape,对于 Shape而言,会有getArea()的操作。但 Rectangle和 Circle的 getArea()方法的实现是完全不一样的,这就体现了多态的特征。

image.png

(7)接口:描述对操作规范的说明,其只说明操作应该做什么,并没有定义操作如何做。可以将接口理解成为类的一个特例,它规定了实现此接口的类的操作方法,把真正的实现细节交由实现该接口的类去完成
(8)消息:体现对象间的交互,通过它向目标对象发送操作请求。
(9)组件:表示软件系统可替换的、物理的组成部分,封装了模块功能的实现。组件应当是内聚的,并具有相对稳定的公开接口
(10)复用:指将已有的软件及其有效成分用于构造新的软件或系统组件技术是软件复用实现的关键
(11)模式:描述了一个不断重复发生的问题,以及该问题的解决方案。其包括特定环境、问题和解决方案三个组成部分。应用设计模式可以更加简单和方便地去复用成功的软件设计和架构,从而帮助设计者更快更好地完成系统设计。

3.4.2统一建模语言与可视化建模

统一建模语言(Unified Modeling Language,UML)用于对软件进行可视化描述、构造和建立软件系统的文档。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。
需要注意的是,UML是一种可视化的建模语言,而不是编程语言。UML标准包括相关概念的语义,表示法和说明,提供了静态、动态、系统环境及组织结构的模型。它比较适合用于迭代式的开发过程,是为支持大部分现存的面向对象开发过程而设计的,强调在软件开发中对架构、框架、模式和组件的重用,并与最佳软件工程实践经验进行了集成。
RUP (Rational Unified Process)是使用面向对象技术进行软件开发的最佳实践之一,是软件工程的过程。它对所有关键开发活动提供了使用准则、模板、工具等。其涵盖的最佳实践经验包括:迭代式开发、需求管理、使用以组件为中心的软件架构、可视化建模、验证软件质量及控制变更等。

3.4.3面向对象系统分析

面向对象系统分析的模型由用例模型、类-对象模型、对象-关系模型和对象-行为模型组成。

3.4.4面向对象系统设计

面向对象系统设计主要包括用例设计、类设计和子系统设计等。

3.5软件架构

3.5.2软件架构模式

软件架构设计的一个核心问题是能否使用架构模式,即能否达到架构级的软件重用
常见的典型架构模式如下。
(1)管道/过滤器模式:此模式中,每个组件(过滤器)都有一组输入/输出,组件读取输入的数据流,经过内部处理后,产生输出的数据流,该过程主要完成输入流的变换及增量计算。其典型应用包括批处理系统。 管道/过滤器模式体现了各功能模块高内聚、低耦合的“黑盒”特性,支持软件功能模块的重用,便于系统维护;同时,每个过滤器自己完成数据解析和合成工作(如加密和解密),易导致系统性能下降,并增加了过滤器具体实现的复杂性。如图3-4所示。
(2)面向对象模式:在面向对象的基础上,将模块数据的表示方法及其相应操作封装在更高抽象层次的数据类型或对象中。其典型应用是基于组件的软件开发(Component-Based Development,CBD)如图3-5所示。

image.png

(3)事件驱动模式:其基本原理是组件并不直接调用操作,而是触发一个或多个事件。系统中的其他组件可以注册相关的事件,触发一个事件时,系统会自动调用注册了该事件的组件,即触发事件会导致另一组件中操作的调用。其典型应用包括各种图形界面应用
(4)分层模式采用层次化的组织方式,每一层都为上一层提供服务,并使用下一层提供的功能。该模式允许将一个复杂问题逐步分层实现。其中的每一层最多只影响相邻两层,只要给相邻层提供相同的接口,就允许每层用不同的方法实现,可以充分支持软件复用。其典型应用是分层通信协议,如ISO/OSI的七层网络模型。此模式也是通用应用架构的基础模式。如图3-6所示

image.png

(5)客户/服务器模式(Client/Server,C/S):基于资源不对等,为实现共享而提出的模式。C/S模式将应用一分为二,服务器(后台)负责数据操作和事务处理,客户(前台)完成与用户的交互任务

image.png

C/S模式中客户与服务器分离,允许网络分布操作,适用于分布式系统。为了解决C/S模式中客户端的问题,发展形成了浏览器/服务器(Browser/Server,B/S)模式;为了解决CIS模式中服务器端的问题,发展形成了三层(多层)C/S模式,即多层应用架构。

3.5.3 软件架构分析与评估

针对目前广泛使用的分布式应用,其软件架构设计需要考虑如下问题。
(1)数据库的选择问题:目前主流的数据库系统是关系数据库。
(2)用户界面选择问题:HTML/HTTP(S)协议是实现Internet应用的重要技术。
(3)灵活性和性能问题:权衡独立于厂商的抽象定义(标准)所提供的灵活性和特定厂商产品带来的性能。
(4)技术选择的问题:选择成熟的技术可以规避项目风险。不仅需要了解技术的优势,还需要了解技术的适用范围和局限性。
(5)人员的问题:聘请经验丰富的架构设计师,可以有效地保证项目的成功。

3.5.4 软件中间件

image.png

中间件(Middleware)是位于硬件、操作系统等平台和应用之间的通用服务。借由中间件,解决了分布系统的异构问题。

如图3-8所示,中间件服务具有标准的程序接口和协议。不同的应用、硬件及操作系统平台,可以提供符合接口和协议规范的多种实现,其主要目的是实现应用与平台的无关性。借助中间件,屏蔽操作系统和网络协议的差异,为应用程序提供多种通讯机制,满足不同领域的应用需要
中间件包括的范围十分广泛,针对不同的应用需求有各种不同的中间件产品。从不同角度对中间件的分类也会有所不同。通常将中间件分为数据库访问中间件、远程过程调用中间件、面向消息中间件、事务中间件、分布式对象中间件等。
(1)数据库访问中间件通过一个抽象层访问数据库,从而允许使用相同或相似的代码访问不同的数据库资源。典型技术如 Windows平台的ODBC和 Java平台的JDBC等。
(2)远程过程调用中间件(Remote Procedure Call,RPC):是一种分布式应用程序的处理方法。一个应用程序可以使用RPC来“远程”执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同
(3)面向消息中间件(Message-Oriented Middleware,MOM):利用高效可靠的消息传递机制进行平台无关的数据传递,并可基于数据通信进行分布系统的集成。通过提供消息传递和消息队列模型,可在分布环境下扩展进程间的通信,并支持多种通讯协议、语言、应用程序、硬件和软件平台。典型产品如IBM 的 MQSeries
(4)分布式对象中间件是建立对象之间客户/服务器关系的中间件,结合了对象技术与分布式计算技术。该技术提供了一个通信框架,可以在异构分布计算环境中透明地传递对象请求。典型产品如OMG的CORBA、Java 的RMI/EJB、Microsoft的 DCOM等。
(5)事务中间件:也称事务处理监控器(Transaction Processing Monitor,TPM),提供支持大规模事务处理的可靠运行环境。TPM位于客户和服务器之间,完成事务管理与协调、负载平衡、失效恢复等任务,以提高系统的整体性能。典型产品如IBM/BEA的Tuxedo结合对象技术的对象事务监控器(Object Transaction Monitor,OTM)如支持EJB的JavaEE 应用服务器等。