2.3 电子商务网站的开发方法
如果企业确定电子商务网站的建设方式为自主研发或合作开发,而不是购买现成软件等方式,则企业的电子商务网站建设就进入了开发阶段。通常,电子商务网站的开发有三种最为常见的方法,即结构化系统开发方法、原型法开发方法和面向对象开发方法。
2.3.1 结构化系统开发方法
1.结构化系统开发方法的基本概念
结构化系统开发方法是迄今为止最传统、应用最广泛的一种系统开发方法。结构化系统开发方法的基本思想是利用系统工程的思想和工程化的方法,以用户至上为原则,按结构化、模块化、自顶向下的方法对系统进行分析与设计。
这种方法将整个信息系统开发过程划分出若干个相对比较独立的阶段,包括系统规划、系统分析、系统设计和系统实施等。在前三个阶段,自顶向下地对系统进行结构化划分,即在系统调查中,从顶层的管理业务入手,从组织和管理的金字塔结构的塔尖入手,逐层深入直至底层;在系统分析与系统设计时,也从宏观整体入手,先考虑系统整体的优化,然后再考虑局部的优化问题。而在系统实施阶段,则采用自底向上的方式逐步实施,按照前几个阶段设计的模块组织人力从底层的模块做起(编程),然后按照系统设计的结构,将模块一个个组合到一起进行调试,自底向上逐渐地构成整体系统。
2.结构化系统开发方法的开发过程
采用结构化系统方法开发系统,可以将整个开发过程划分为5个首尾相连的阶段,这5个阶段构成了系统开发的生命周期,如图2-1所示。
图2-1 结构化系统开发方法的开发过程
(1)系统规划阶段。系统规划阶段的工作就是要确定信息系统的发展战略,明确企业总的信息需求,制定信息系统建设总计划。
(2)系统分析阶段。系统分析阶段的任务是分析企业业务流程、数据与数据流程、功能与数据之间的关系,并提出新系统逻辑方案。
(3)系统设计阶段。系统设计阶段的任务包括总体结构设计、代码设计、数据库/文件设计、输入输出设计和模块结构与功能设计。与此同时,还要根据总体设计的要求购置与安装设备。
(4)系统实施阶段。系统实施阶段的任务是要按照系统设计成果,组织人员编程,并进行人员培训、数据准备和试运行等工作。
(5)系统运行阶段。系统运行阶段的任务包括系统的日常运行管理、评价、监理审计三部分工作。在运行过程中,系统难免会出现修改、调整和维护,如果出现了不可调和的大问题(这种情况一般是系统运行若干年之后,系统运行的环境已经发生了根本的变化时才可能出现),则用户将会进一步提出开发新系统的要求,这标志着老系统生命的结束、新系统的诞生。
3.结构化开发方法的弊病
结构化系统开发方法的关键思想就是通过功能分解来减少程序设计的复杂性,增加软件的可重用性以减少开发和维护计算机程序的费用。这种开发方法在20世纪70年代或80年代早期还可以适应,但在越来越复杂的非数值计算类型的软件开发中,在广泛应用图形界面的交互式应用中,在控制要求非常突出的系统中,使用结构化系统开发方法暴露出了许多弊病。
1)功能与数据分离的软件设计结构与人类的现实世界环境很不一样,和人的自然思维也就不一致了。因此,对现实世界的认识与系统编程之间存在着理解上的障碍。
2)系统设计是围绕如何实现一定的系统行为来进行的,当系统行为易变时,系统设计修改变为困难。因为这类系统的结构是基于上层模块必须掌握和控制下层模块工作为前提的,因此在底层模块发生变动时,常常会迫不得已地去改变一系列的上层模块,而这种一系列的上层模块的修改本不是当时变动底层模块的目的;同样,在发生需要变动上层模块时,新的上层模块也必须了解它的所有下层模块,编写这样的上层模块当然是极为困难的。所以,这种结构是无法适应迅速变化的技术发展和当代社会进展的要求的。
3)在系统的模块中,模块间的控制作用只能通过上下之间的调用关系来进行。这样,当系统中模块之间的控制作用有重要影响时,即实际控制发送到根源来自分散的各模块时,将造成信息传递路径过长、效率低、易受干扰甚至出错。如果允许模块间为进行控制而直接通信,结果则是系统总体结构混乱、难于维护和控制、出错概率高。所以,这种结构是无法适应以控制关系为重要特性的系统要求的。
4)用这种方法开发出来的系统往往难以维护,主要因为必须知道所有函数的数据结构。可是许多不同的数据结构只有细微的差别,这种情况下函数中常常充满了条件语句,它们与函数的功能毫无关系,只是因为数据结构的不同而不得不使用它们,结果使程序变得可读性极差。
5)自顶向下功能分解的分析设计方法极大地限制了软件的可重用性,导致对同样对象的大量重复性工作,大大降低了开发人员的生产率,减少了他们用于创造性劳动的时间。
随着信息科技的不断进展,软件的复杂性及变动性不断地增加,结构化开发方法由于思维方式的限制,导致其遭遇困境,无法满足用户真正需求,致使软件产品质量不佳。因此,要真正彻底解决软件危机,就要在系统开发方法上做重大思维转移。
2.3.2 原型法开发方法
1.原型法开发方法的基本概念
原型法开发方法是近年来提出的一种以计算机为基础的系统开发方法。它首先构造一个功能简单的原型系统,然后通过对原型系统逐步求精、不断扩充完善得到最终的软件系统。原型就是指模型,原型系统就是指应用系统的模型,是待构筑的实际系统的缩小比模型,保留了实际系统的大部分功能。这个模型可在运行中被检查、测试、修改,直到达到用户需求为止,因而,这个工作模型能很快转换成目标系统。
2.原型法开发方法的开发过程
原型法开发方法的一般工作流程如图2-2所示:用户提出开发要求,开发人员识别和归纳用户要求;根据识别归纳的结果进行快速设计;构造出一个原型(程序模块);同用户一起评价这个原型;如果根本不行,返回去重新构造原型,如果不满意,则修改原型,直到用户满意为止,形成软件产品。
图2-2 原型法开发方法的开发过程
3.原型法开发方法的特点
原型法开发方法的主要优点在于它是一种支持用户的方法,使得用户在系统生存周期的设计阶段起到积极作用;减少系统开发的风险,特别是在大型项目的开发中,由于对项目需求的分析难以一次完成,应用原型法效果更为明显。原型法既适用于系统的重新开放,也适用于对系统的修改;不局限于仅对开发项目中的计算机软硬件进行设计,还可以用于制作系统的工作模型。原型法可以与结构化系统开发方法相结合使用,这样会扩大用户参与需求分析、初步设计及详细设计等阶段的活动,加深对系统的理解。近年来,原型法的思想也被应用于产品的开发活动中。但是原型法的使用有一定的适用范围和局限性,这主要表现在以下几个方面。
1)对于一个大型的系统,如果不经过系统分析来进行整体性划分,那么只直接用屏幕一个一个地模拟是很困难的。
2)对于大量运算性逻辑性较强的程序模块,原型法很难构造出模型来供人评价。因为这类问题没有那么多的交互式界面,也难以用三言两语把问题解释清楚。
3)对于基础管理不善、信息管理过程混乱的问题,原型法的使用存在一定的困难。一是由于对象工作过程不清,构造原型有一定困难;二是由于基础管理不好,系统很容易变成机械地模拟原有手工系统。
4)对于一个批处理系统,其大部分是内部处理过程,这时用原型法有一定的困难。因此,在实际系统开发过程中,人们常常将原型法与系统分析方法相结合,即先用系统分析的方法来划分系统,然后再用原型法来开发具体模块。
2.3.3 面向对象开发方法
1.面向对象开发方法的概念
面向对象(Object Oriented)开发方法的形成最初是从面向对象程序设计语言开始的,随之才逐渐形成面向对象分析和设计方法。面向对象编程语言的出现以20世纪60年代末挪威奥斯陆大学和挪威计算机中心共同研制的SIMULA语言为标志。后来,一些著名的面向对象编程语言(如Smalltalk、C++、Eiffel)的设计者都从SIMULA得到启发。80年代,Xerox研究中心推出了Smalltalk语言环境,使面向对象程序设计方法得到比较完善的实现,掀起了面向对象研究的高潮。到80年代中期,面向对象程序语言达到数十种之多。
随着面向对象程序设计的成熟和发展,面向的新技术很快被运用到系统分析和系统设计方法中。20世纪80年代中期,面向对象分析(OOA)的研究开始发展,进而延伸到面向对象设计(OOD)。面向对象分析与设计的实质是一种系统建模的技术,但对象模型不仅受到面向对象程序设计语言的影响,而且受许多其他因素的影响。其实,面向对象思想的实质并不是从功能上或是从出了问题的算法上来考虑,而是从系统的组成来进行分解。例如,飞机可以理解为由舵、翼、调节风门等构成,这样对问题进行自然分割,利用类及对象作为基本构造单元,以更接近人类思维的方式建立问题域模型,可使设计出的软件尽可能直接描述现实世界,构造出组件化的、可重用的、可维护性好的软件,并能控制软件的复杂性和降低开发维护费用。
以对象为主体的面向对象的开发方法可以简单地解释如下:
第一,客观事物都是由对象(Object)组成的,对象是在原事物基础上抽象的结果。任何复杂的事物都可以通过对象的某种组合结构组成。
第二,对象由属性和方法组成。属性(Attribute)反映了对象的信息特征,如特点、价值、状态等,而方法(Method)则是用来定义改变属性状态的各种操作。对象是一个被严格模块化了的实体,称为封装(Encapsulation)。这种封装了的对象满足软件工程的一切要求,而且可以直接被面向对象的程序语言所接受。
第三,对象之间的联系主要是通过传递消息(Message)来实现的。
第四,对象可按其属性进行归类。类(Class)有一定的结构,类上可以有超类(Superclass),类下可以有子类(Subclass)。这种对象或类之间的层次结构是靠继承关系(Inheritance)维系的。
2.面向对象开发方法的开发过程
面向对象开发方法一般是先获得一组需求,用各种文字说明、图形和表格,以形式化或非形式化构造对象模型;识别与问题有关的类与类之间的联系,增加与技术实施方案相关的类(如界面等);经对设计的类与关系进行调整后,对类进行编码及测试,得到结果。目前,已提出许多面向对象开发方法,比较著名的有Coad/Yourdon的方法、Wirtf Brock等的RDD方法和Rumbaugh等的OTM方法;另外,还有Shlear和Mellor的OSSA方法、Waserman的OOSD方法、Gibon的OBA方法、Page Jones、Weiss和Buhr的Synthesis方法等。至此,面向对象开发方法从理论走向了具体实现。一般来讲,使用面向对象开发方法开发一个系统分为3个阶段,如图2-3虚线框中的内容。
图2-3 面向对象开发方法的过程
(1)分析问题的性质和求解的问题。对系统将要面临的具体管理问题及用户对系统开发的需求进行调查研究,即先弄清要干什么的问题,在繁杂的问题中抽象地识别出对象及其行为、结构和方法等。这一阶段一般称为面向对象分析(Object-Oriented Analysis,OOA)。
(2)设计问题的技术解决方案。对分析结果做出进一步的抽象、归类和整理,并最终以技术解决的形势将它们确定下来。这一阶段一般被称为面向对象设计(Object-Oriented Design,OOD)。
(3)程序实现。程序实现即用面向对象的程序设计语言将上一步的设计结果直接映射(直接用程序语言来取代)为应用程序软件。这一阶段一般被称为面向对象的编程(Object-Oriented Programming,OOP)。
面向对象开发方法代表了从现实世界的问题到计算机上的可执行系统之间的道路,各种编程语言架起了通往计算机的桥梁。在面向对象编程语言解决了现实世界与计算机之间的巨大差距的条件下,面向对象开发方法存在着与现实世界之间的巨大差距。因此,在人们需要更贴近现实的计算机应用时,面向对象技术有其优越性。但是,由于要开发的系统并不完全是客观世界的翻版,人们对客观世界的认识也有一定的局限性,在开发一个复杂系统时,面向对象开发方法并不是如同理论描述得那么简单,需要花费更多的努力,并不断地积累经验。
3.面向对象开发方法的优势
尽管面向对象的软件开发方法不是一剂灵丹妙药,但对比其他的软件开发方法,面向对象开发方法还是具有很多优势的。
1)较好地处理软件的规模和复杂性不断增加所带来的问题。主要的办法包括:使用各种类型的抽象;围绕较大的类型进行封装(如围绕对象和类抽象,而不是围绕函数抽象);把软件划分成一些已处理的小集合。
2)更适合系统中控制关系复杂、重要而分散的情况。
3)系统的高层模块没有控制作用,而是通过对象间的协作完成任务,所以更易管理。
4)通过使用各种直接模仿应用领域的实体得到抽象和对象,使规则说明和设计更加完整和易于理解。
5)通过给软件工程师提供更好的统一化规范和标准,使得系统开发活动之间的过渡变得容易。
6)通过围绕对象和类进行封装,提高了规范说明、设计和代码的可扩展性、可维护性、可复用性和结果管理。
7)通过形成界面更少、更抽象、聚集度更高的模块,提高了软件工程中的模块化和信息隐藏度。
8)使开发者的工作更加简单,提高了软件和文档的质量。
上述三种开发方法是当前比较流行的信息系统开发方法。当这些方法被正当地管理和应用时,将能够有效降低软件开发成本,减少软件开发时间,同时提高系统可扩展性、可维护性、可复用性、可理解性和完整性。
不同的系统开发方法在其具体的操作过程上是有所区别的。如果用结构化开发方法来开发系统,其思路应该是先对问题进行调查,然后从功能和流程的角度来分析、了解和优化问题,最后规划和实现系统。如果用原型法来开发系统,其思路应该是先请用户介绍问题,然后利用软件工具迅速地模拟出一个问题原型,然后与用户一道运行和评价这个原型,如果不满意则立刻修改,不断重复该过程,直到用户满意为止,最后优化和整理系统。如果用面向对象开发方法来开发系统,其思路应该是先对问题进行调查,然后从抽象对象和信息模拟的角度来分析问题,将问题按其性质和属性划分成各种不同的对象和类,弄清它们之间的信息联系,最后用面向对象的软件工具实现系统。