|
|
|
在信息系统开发实践中,经过成功和失败的教训,使人们认识到,为了使开发出来的目标系统能满足实际需要,在着手编程之前,首先必须要有一定的时间用来认真考虑以下问题:
|
|
|
|
|
|
在总体规划阶段,通过初步调查和可行性分析,建立了目标系统的目标,已经回答了上的第一个问题。而第二个问题的解决,正是系统分析的任务,第三个问题则由系统设计阶段解决。
|
|
|
要解决“系统应干些什么”的问题,系统分析人员必须与用户密切协商,这是系统分析工作的特点之一。根据现行信息系统与计算机信息系统各自的特点,认真调查和分析用户需求。所谓用户需求,是指目标系统必须满足的所有性能和限制,通常包括功能要求、性能要求、可靠性要求、安全保密要求以及开发费用、开发周期、可使用的资源等方面的限制。弄清哪些工作交由计算机完成,哪些工作仍由人工完成,以及计算机可以提供哪些新功能。这样就可以在逻辑上规定目标系统目标的功能,而不涉及具体的物理实现,也就解决了“系统应干些什么”的问题。
|
|
|
系统规格说明书是系统分析阶段的最后结果,它通过一组图表和文字说明描述了目标系统的逻辑模型。设计逻辑模型是系统分析工作的另一个特点。逻辑模型包括数据流程图、数据字典、基本加工说明等。它们不仅在逻辑上表示目标系统目标所具备的各种功能,而且还表达了输入、输出、数据存储、数据流程和系统环境等。逻辑模型只告诉人们目标系统要“干什么”,而暂不考虑系统怎样来实现的问题。
|
|
|
简单说来,系统分析阶段是将目标系统目标具体化为用户需求,再将用户需求转换为系统的逻辑模型,系统的逻辑模型是用户需求明确、详细的表示。
|
|
|
|
系统设计工作应该自顶向下地进行。首先设计总体结构,然后再逐层深入,直至进行每一个模块的设计。总体设计主要是指在系统分析的基础上,对整个系统的划分(子系统)、设备(包括软、硬设备)的配置、数据的存储规律以及整个系统实现规划等方面进行合理的安排。
|
|
|
|
系统设计又称为物理设计,是开发信息系统的第二阶段,系统设计通常可分为两个阶段进行,首先是总体设计,其任务是设计系统的框架和概貌,并向用户单位和领导部门作详细报告并得到认可,在此基础上进行第二阶段——详细设计,这两部分工作是互相联系的,需要交叉进行,下面将这两个部分内容结合起来进行介绍。
|
|
|
系统设计是开发人员进行的工作,他们将系统设计阶段得到的目标系统的逻辑模型转换为目标系统的物理模型,该阶段得到的工作成果——系统设计说明书是下一个阶段系统实施的工作依据。
|
|
|
|
系统设计的主要任务是进行总体设计和详细设计。下面分别说明它们的具体内容。
|
|
|
(1)总体设计。总体设计包括系统模块结构设计和计算机物理系统的配置方案设计。
|
|
|
①系统模块结构设计。系统模块结构设计的任务是划分子系统,然后确定子系统的模块结构,并画出模块结构图。在这个过程中必须考虑以下几个问题:如何将一个系统划分成多个子系统。每个子系统如何划分成多个模块。如何确定子系统之间、模块之间传送的数据及其调用关系。如何评价并改进模块结构的质量。
|
|
|
②计算机物理系统配置方案设计。在进行总体设计时,还要进行计算机物理系统具体配置方案的设计,要解决计算机软硬件系统的配置、通信网络系统的配置、机房设备的配置等问题。计算机物理系统具体配置方案要经过用户单位和领导部门的同意才可进行实施。
|
|
|
(2)详细设计。在总体设计基础上,第二步进行的是详细设计,主要有处理过程设计以确定每个模块内部的详细执行过程,包括局部数据组织、控制流、每一步的具体加工要求等,一般来说,处理过程模块详细设计的难度已不太大,关键是用一种合适的方式来描述每个模块的执行过程,常用的有流程图、问题分析图、IPO图和过程设计语言等;除了处理过程设计,还有代码设计、界面设计、数据库设计、输入输出设计等。
|
|
|
(3)编写系统设计说明书。系统设计阶段的结果是系统设计说明书,它主要由模块结构图、模块说明书和其他详细设计的内容组成。
|
|
|
|
当系统分析与系统设计的工作完成以后,开发人员的工作重点就从分析、设计和创造性思考的阶段转入实践阶段。在此其间,将投入大量的人力、物力及占用较长的时间进行物理系统的实施、程序设计、程序和系统调试、人员培训、系统转换、系统管理等一系列工作,这个过程称为系统实施。
|
|
|
|
在系统分析与系统设计的阶段中,开发人员为新系统设计了它的逻辑模型和物理模型。系统实施阶段的目标就是把系统设计的物理模型转换成可实际运行的新系统。系统实施阶段既是成功实现新系统,又是取得用户对新系统信任的关键阶段。
|
|
|
|
系统实施是一项复杂的工程,信息系统的规模越大,实施阶段的任务越复杂。一般来说,系统实施阶段主要有以下几个方面的工作:物理系统的实施;程序设计;系统调试;人员培训;系统切换。
|
|
|
系统实施首先进行物理系统的实施,要根据计算机物理系统配置方案购买和安装计算机硬、软件系统和通信网络系统(如果购买的时间太早会带来经济上的损失),还包括计算机机房的准备和设备安装调试等一系列活动,要熟悉计算机物理系统的性能和使用方法,同时进行的工作是程序设计;接着进行的工作是收集有关数据并进行录入工作;然后是系统调试;最后是人员培训和系统切换。
|
|
|
|
|
系统切换后可开始投入运行,系统运行包括系统的日常操作、维护等。任何一个系统都不是一开始就很好的,总是经过多重的开发、运行、再开发、再运行的循环不断上升的。开发的思想只有在运行中才能得到检验,而运行中不断积累问题是新的开发思想的源泉。
|
|
|
目前我国不够重视运行,运行组织不健全,运行组织级别不够高。随着信息作用的增加,现在国外企业中信息系统的地位越来越高,信息系统的组织也越来越健全和庞大。从信息系统在企业中的地位看,有以下几种形式:
|
|
|
①为企业的某个业务部门所有。这种运行组织方式是一种古老的组织方式,信息管理部门为企业的某个业务单位所有。它使得信息不能成为全企业的资源,只能为其他单位提供计算能力,地位太低。
|
|
|
②与企业的部门平行。信息资源可为全企业共享,各单位使用权限相同,信息处理支持决策的能力较弱。
|
|
|
③作为企业的参谋中心。这种组织方式有利于信息共享和支持决策,但容易造成脱离群众、服务不好的现象。现在的发展趋势是集散系统,既有全公司的信息中心又在使用计算机较多的部门配置微机。它实际是前两种方式的结合,但一定要加强信息资源管理,否则容易造成分散化。
|
|
|
|
系统运行管理制度是系统管理的一个重要内容。它是确保系统按预定目标运行并充分发挥其效益的一切必要条件、运行机制和保障措施。通常它应该包括:
|
|
|
①系统运行的组织机构。它包括各类人员的构成、各自职责、主要任务和管理内部组织结构。
|
|
|
②基础数据管理。它包括对数据收集和统计渠道的管理、计量手段和计量方法的管理、原始数据管理、系统内部各种运行文件、历史文件(包括数据库文件)的归档管理等。
|
|
|
③运行制度管理。它包括系统操作规程、系统安全保密制度、系统修改规程、系统定期维护制度以及系统运行状态记录和日志归档等。
|
|
|
④系统运行结果分析。分析系统运行结果得到某种能够反映企业组织经营生产方面发展趋势的信息,用以提高管理部门指导企业的经营生产的能力。
|
|
|
|
系统维护是指在信息系统交付使用后,为了改正错误或满足新的需要而修改系统的过程。
|
|
|
信息系统是一个复杂的人机系统,系统内外环境以及各种人为的、机器的因素都在不断地变化。为了使系统能够适应这种变化,充分发挥软件的作用,产生良好的社会效益和经济效益,就要进行系统维护的工作。
|
|
|
另外,大中型软件产品的开发周期一般为一至三年,运行周期则可达五至十年,在这么长的时间内,除了要改正软件中残留的错误外,还可能多次更新软件的版本,以适应改善运行环境和加强产品性能等需要,这些活动也属于维护工作的范畴。能不能做好这些工作,将直接影响软件的使用寿命。
|
|
|
维护是信息系统生命周期中花钱最多、延续时间最长的活动。有人把维护比成“墙”或“冰山”,以形容它给软件生产所造成的障碍。不少单位为了维护已有的软件,竟没有余力顾及新软件的开发。近年来,从软件的维护费用来看,已经远远超过了系统的软件开发费用,占系统硬、软件总投资的60%以上。典型的情况是,软件维护费用与开发费用的比例为2:1,一些大型软件的维护费用甚至达到了开发费用的40至50倍。
|
|
|
一个系统的质量高低和系统的分析、设计有很大关系,也和系统的维护有很大关系。在维护工作中常见的绝大多数问题,都可归因于软件开发的方法有缺点。在软件生存周期的头两个时期没有严格而又科学的管理和规划,必然会导致在最后阶段出现问题。下面列出维护工作中常见的问题:
|
|
|
①理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。如果仅有程序代码而没有说明文档,则会出现严重的问题。
|
|
|
②需要维护的软件往往没有合适的文档,或者文档资料显著不足。认识到软件必须有文档仅仅是第一步,容易理解的并且和程序代码完全一致的文档才真正有价值。
|
|
|
③当要求对软件进行维护时,不能指望由开发人员来仔细说明软件。由于维护阶段持续的时间很长,因此,当需要解释软件时,往往原来写程序的人已不在附近了。
|
|
|
④绝大多数软件在设计时没有考虑将来的修改。除非使用强调模块独立原理的设计方法,否则修改软件既困难又容易发生差错。
|
|
|
上述种种问题在现有的没采用结构化思想开发出来的软件中,都或多或少地存在着。使用结构化分析和设计的方法进行开发工作可以从根本上提高软件的可维护性。
|
|
|
|
信息系统的开发是一个庞大的系统工程,它涉及到组织的内部结构、管理模式、生产加工、经营管理过程、数据的收集与处理过程、计算机硬件系统的管理与应用、软件系统的开发等各个方面。这就增加了开发一个信息系统的工程规模和难度,需要研究出科学的开发方法和过程化的开发步骤,以确保整个开发过程能够顺利进行。这正是信息系统开发方法的任务。
|
|
|
信息系统开发方法学研究的主要对象是信息系统开发的规律、开发过程的认知体系、分析设计的一般理论以及具体的开发工具和技术等。
|
|
|
下面从方法论的角度,介绍创建信息系统所需的规划方法,包括结构化开发和设计方法(SSA&D),面向对象的开发方法(OO)及原型方法(Phototyping)。
|
|
|
结构化系统分析与设计方法(Structured System Analysis and Design, SSA&D)
|
|
|
SSA&D是在由Dijkstra等人提出的结构化程序设计思想基础上发展起来的。它是一种系统化、结构化和自顶向下的系统开发方法。
|
|
|
其基本思想是:用系统的思想,系统工程的方法,按用户至上的原则,结构化、模块化、自顶向下对信息系统进行分析与设计。具体来说,就是先将整个信息系统开发过程划分出若干个相对独立的阶段,如系统规划、系统分析、系统设计、系统实施等。在前三个阶段坚持自顶向下地对系统进行结构化划分。在系统调查或理顺管理业务时,应从最顶层的管理业务入手,逐步深入到最基层。在系统分析,提出新系统方案和系统设计时,先考虑系统整体的优化,然后再考虑局部的优化问题。在系统实施阶段,则应坚持自底向上的逐步实施。
|
|
|
|
(1)建立面向用户的观点。强调用户是整个信息系统开发的起源和最终归宿,即用户的参与程度和满意程度是系统成功的关键。
|
|
|
(2)严格区分工作阶段。强调将整个系统的开发过程分为若干个阶段,每个阶段都有其明确的任务和目标以及预期要达到的阶段成果。一般不可打乱或颠倒。
|
|
|
(3)结构化、模块化、自顶向下进行开发。在分析问题时,应首先站在整体的角度,将各项具体的业务和组织放到整体中加以考查。自顶向下分析设计:首先确保全局的正确,再一层层地深入考虑和处理局部的问题。
|
|
|
自底向上进行开发:在具体系统实现过程中,一个模块一个模块地进行开发,调试,然后再由几个模块联调(子系统联调),最后是整个系统联调。
|
|
|
(4)充分预料可能发生的变化。在系统的分析、设计和实现过程中,都要充分地考虑可能变化的因素。一般可能发生的变化来自于周围环境变化,来自外部的影响:如上级主管部门要的信息发生变化等。系统内部处理模式的变化,如系统内部的组织结构和鼓励体制发生的变化,工艺流程发生变化,系统内部管理形式发生变化等。用户要求发生变化:用户对系统的认识程度不断深化,又提出更高的要求。
|
|
|
(5)工作文件的标准化和文献化。在系统研制的每一阶段、每一步骤都要有详细的文字资料记载,需要记载的信息是:
|
|
|
|
|
.设计的每一步方案(甚至包括经分析后淘汰掉的信息和资料)资料要有专人保管,要建立一整套管理、查询制度。
|
|
|
|
原型方法是20世纪80年代随着计算机软件技术的发展,特别是在关系数据库系统(Relational Data Base System, RDBS)、第四代程序生成语言(4th Generation Language, 4GL)和各种系统开发生成环境产生的基础上,提出的一种从设计思想到工具、手段都是全新的系统开发方法。
|
|
|
传统的结构化开发方法强调系统开发每一阶段的严谨性,要求在系统设计和实施阶段之前预先严格定义出完整准确的功能需求和规格说明。然而,对于规模较大或结构较复杂的系统,在系统开发前期,用户往往对未来的新系统仅有一个比较模糊的想法。由于专业知识所限,系统开发人员对某些涉及具体领域的功能需求也不太清楚。虽然可以通过详细的系统分析和定义得到一份较好的规格说明书,却很难做到将整个管理信息系统描述完整,且与实际环境完全相符,很难通过逻辑推断看出新系统的运行效果。因此当新系统建成以后,用户对系统的功能或运行效果往往会觉得不满意。同时随着开发工作的进行,用户会产生新的要求或因环境变化希望系统也能随之作相应更改,系统开发人员也可能因碰到某些意料之外的问题希望在用户需求中有所权衡。总之,规格说明的难以完善和用户需求的模糊性已成为传统的结构化开发方法的重大障碍。
|
|
|
原型方法正是对上述问题进行变通的一种新的系统开发方法。在建筑学和机械设计学中,“原型”指的是其结构、大小和功能都与某个物体相类似的模拟该物体的原始模型。在信息系统开发中,用“原型”来形象地表示系统的一个早期可运行版本,它能反映新系统的部分重要功能和特征。“原型方法”则是利用原型辅助开发系统的一种新方法。原型方法要求在获得一组基本的用户需求后,快速地实现新系统的一个“原型”,用户、开发者及其他有关人员在试用原型的过程中,加强通信和反馈,通过反复评价和反复修改原型系统,逐步确定各种需求的细节,适应需求的变化,从而最终提高新系统的质量。因此可以认为原型方法确定用户需求的策略,它对用户需求的定义采用启发的方式,引导用户在对系统逐渐加深理解的过程中作出响应。
|
|
|
原型法基本思想是凭借着系统分析人员对用户要求的理解,在强有力的软件环境支持下,快速地给出一个实实在在的模型(或称原型、雏形),然后与用户反复协商修改,最终形成实际系统。这个模型大致体现了系统分析人员对用户当前要求的理解和用户想要实现的形式。
|
|
|
原型方法虽然是在研究用户需求的过程中产生的,但更主要的是针对传统结构化方法所面临的困难,因而也面向系统开发的其他阶段和整个过程。由于软件项目的特点,运用原型的目的和开发策略的不同,原型方法可表现为不同的运用方式,一般可分为以下三种类型。
|
|
|
(1)探索型(Exploratory Prototying)主要是针对开发目标模糊、用户和开发人员对项目都缺乏经验的情况,其目的是弄清对目标系统的要求,确定所期望的特性并探讨多种方案的可行性。
|
|
|
(2)实验型(Experimental Prototying)用于大规模开发和实现之前考核、验证方案是否合适,规格说明是否可靠。
|
|
|
(3)演化型(Evolutionary Prototying)其目的不在于改进规格说明和用户需求,而是将系统改造得易于变化,在改进原型的过程中将原型演化成最终系统。它将原型方法的思想贯穿到系统开发全过程,对满足需求的改动较为适合。
|
|
|
面向对象的开发方法(Object Oriented, OO)
|
|
|
从事软件开发的工程师们常常有这样的体会:在软件开发过程中,使用者会不断地提出各种更改要求,即使在软件投入使用后,也常常需要对其做出修改,在用结构化开发的程序中,这种修改往往是很困难的,而且还会因为计划或考虑不周,不但旧错误没有得到彻底改正,又引入了新的错误;另一方面,在过去的程序开发中,代码的重用率很低,使得程序员的效率并不高,为提高软件系统的稳定性、可修改性和可重用性,人们在实践中逐渐创造出软件工程的一种新途径——面向对象方法学。
|
|
|
面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程。由于客观世界的问题都是由客观世界中的实体及实体相互间的关系构成的,因此把客观世界中的实体抽象为对象(Object)。持面向对象观点的程序员认为计算机程序的结构应该与所要解决的问题一致,而不是与某种分析或开发方法保持一致,他们的经验表明,对任何软件系统而言,其中最稳定的成分往往是其相应问题论域(Problem Domain)中的成分。(例如在过去几百年中复式计账的原则未做任何实质性的改变,而其使用的工具早已从鹅毛笔变成了计算机)。
|
|
|
所以,“面向对象”是一种认识客观世界的世界观,是从结构组织角度模拟客观世界的一种方法。一般人们在认识和了解客观现实世界时,通常运用的一些构造法则:
|
|
|
.区分对象及其属性,例如区分台式计算机和笔记本计算机。
|
|
|
.区分整体对象及其组成部分,例如区分台式计算机的组成(主机、显示器等)。
|
|
|
.不同对象类的形成以及区分,例如所有类型的计算机(大、中、小型计算机、服务器、工作站和普通微型计算机等)。
|
|
|
通俗地讲,对象指的是一个独立的、异步的、并发的实体,它能“知道一些事情”(即存储数据),“做一些工作”(即封装服务),并“与其他对象协同工作”(通过交换消息),从而完成系统的所有功能。
|
|
|
因为所要解决的问题具有特殊性,所以对象是不固定的。一个雇员可以作为一个对象,一家公司也可以作为一个对象,到底应该把什么抽象为对象,由所要解决的问题决定。
|
|
|
从以上的简单介绍中可以看出,面向对象所带来的好处是程序的稳定性与可修改性(由于把客观世界分解成一个一个的对象,并且把数据和操作都封装在对象的内部)、可复用性(通过面向对象技术,不仅可以复用代码,而且可以复用需求分析、设计、用户界面等)。
|
|
|
|
.认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。按照这种观点,可以认为整个世界就是一个最复杂的对象。因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。
|
|
|
.把所有对象都划分成各种对象类(简称为类(Class)),每个对象类都定义了一组数据和一组方法,数据用于表示对象的静态属性,是对象的状态信息。因此,每当建立该对象类的一个新实例时,就按照类中对数据的定义为这个新对象生成一组专用的数据,以便描述该对象独特的属性值。例如,荧光屏上不同位置显示的半径不同的几个圆,虽然都是Circle类的对象,但是,各自都有自己专用的数据,以便记录各自的圆心位置、半径等。
|
|
|
类中定义的方法,是允许施加于该类对象上的操作,是该类所有对象共享的,并不需要为每个对象都复制操作的代码。
|
|
|
.按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。
|
|
|
|
|
从国外最新的统计资料来看,信息系统开发工作的重心向系统调查、分析阶段偏移。系统调查、分析阶段的工作量占总开发量的60%以上。而系统设计和实现环节仅占总开发工作量比率不到40%。
|
|
|
(1)结构化方法。能够辅助管理人员对原有的业务进行清理,理顺和优化原有业务,使其在技术手段上和管理水平上都有很大提高。发现和整理系统调查、分析中的问题及疏漏,便于开发人员准确地了解业务处理过程。有利于与用户一起分析新系统中适合企业业务特点的新方法和新模型。能够对组织的基础数据管理状态、原有信息系统、经营管理业务、整体管理水平进行全面系统的分析。
|
|
|
(2)原型方法。它是一种基于4GL的快速模拟方法。它通过模拟以及对模拟后原型的不断讨论和修改,最终建立系统。要想将这样一种方法应用于大型信息系统的开发过程中的所有环节是根本不可能的,故它多被用于小型局部系统或处理过程比较简单的系统设计到实现的环节。
|
|
|
(3)面向对象方法。它围绕对象来进行系统分析和系统设计,然后用面向对象的工具建立系统的方法。这种方法可以普遍适用于各类信息系统开发,但是它不能涉足系统分析以前的开发环节。
|
|
|