一、各类开发方式
(一)自行开发
优点:可以得到适合本单位的满意的系统,通过系统开发培养自己的力量。
缺点:往往开发周期较长。需要强有力的领导,有足够的技术力量,需要进行一定的咨询。
(二)委托开发
优点:比较省事(从用户角度)
缺点:必须配备精通业务的人员参加,经常检查、协调。开发费用较高,系统维护困难。
(三)购买现成软件包
优点:最省事(从用户角度)
缺点:要买到完全适合本单位的、满意的系统不太容易。需要有较强的鉴别能力,谈不上系统维护。
(四)联合开发
优点:对于培养自己的技术力量最为有利,系统维护比较方便。
缺点:双方要精诚合作,自己有一定系统分析和设计力量
一、结构化系统开发方法
(一)基本思想
自行开发用系统工程的思想和工程化的方法,按用户至上的原则,结构化、模块化、自顶向下地对系统进行分析与设计。即先将整个开发过程分为若干个相对独立的阶段(分析、设计、实施),在前二个阶段坚持自顶向下地对系统进行结构化划分、设计,在系统实施阶段则应坚持自底向上地逐步实施。
(二)特点:
1.自顶向下整体性的分析与设计和自底向上地逐步实施的系统开发过程
2.用户至上
3.深入调查研究
4.严格区分工作阶段
5.充分预料可能发生的变化
6.开发过程工程化
(四)优缺点:
1.优点:
(1)强调系统开发过程的整体性和全局性,强调在整体化的前提下来考虑具体的分析设计问题,即自顶向下的观点。
(2)强调严格地区分开发阶段,强调一步一步地严格地进行系统分析和设计,每一步工作都及时地总结,发现问题及时地反馈和纠正,从而避免了开发过程的混乱状态。
2.缺点:
(1)起点太低,所用的工具落后,致使系统开发周期过长,会带来许多问题。
(2)要求开发者在调查中就充分掌握用户需求、管理状况以及可能发生的变化,这不太符合人们循序渐进地认识事物的规律性,在实际工作中实施有一定的困难。
二、原型化法
(一)基本思想 首先用户提出开发要求,开发人员识别和归纳用户要求,根据识别、归纳的结果,构造一个原型,然后同用户一道评价这个原型,若根本不行,则重新构造原型;若不满意,则修改原型,直到用户满意为止的最终原型即实现的系统。
(二)特点:
1.遵循了人们认识事物的规律,易为人们接受。
2.在分析初期引入模拟手段,沟通了人们的思想,缩短了用户和分析人员间的距离,解决了结构化方法中最难于解决的一环。
3.充分利用最新的软件工具,摆脱老方法,使系统开发时间、费用大大减少,效率、技术等方面大大地提高。
(三)优缺点:
1.优点:
(1)开发周期短,费用相对少。
(2)提供初始原型给用户,使用户参与更实际,更富建设性。
(3)易于用户使用,减少对用户的培训时间。
2.缺点:
(1)对大系统或复杂性高的系统,该方法不适用。
(2)开发过程管理困难。
(3)用户过早地看到了原型,错误地认为新系统就是如此,使用户缺乏信心和耐心。
(4)开发人员也很容易潜意识地用原型取代系统分析。
三、面向对象的开发方法
(一)基本思想
客观世界是由各种各样的对象组成的,每种对象都有各自的内部状态和运动规律,不同对象之间的相互作用和联系就构成了各种不同的系统。当设计和实现一个客观系统时,在满足需求的条件下,把系统设计成由一些不可变的(相对固定)部份—-对象组成的最小集合,这即OO方法的基本思想。
(二)特点:
(1)封装性对象是数据和操作的封装体,其状态由对象中数据的“属性”来描述,而对象状态的改变只能由对象中的“操作”来实现。
(2)抽象性对象是类的实例,类抽象并封装了对象的共有属性和操作,通过一个类创建的对象自动具有类中规定的属性和操作。
(3)继承性:类可以派生出子类,子类自动继承父类的属性和操作,在子类的开发中,只需说明它不同于父类的特性,这提高了软件的重用性。
(4)多态性:对象间通过消息传递建立动态连接,实现对象间的联系,同一消息发送到不同的对象可引发不同的操作。
(三)优缺点:
1.优点:
(1)开发的软件易于理解、维护。
(2)系统可维护性、可扩展性好。
(3)软件的可重用性好。
2.缺点:
(1)需要一定的软件基础支持才可以应用。
(2)在大型系统或复杂处理过程系统开发 中若不经自顶向下的整体划分,而一开始就 自底向上的采用OO方法开发,会造成系统结构不合理,各部分关系失调等等问题。
四、面向对象的开发方法
CASE法是运用计算机软件工具辅助系统开发的一种方法。严格地讲它只是一种开发环境而不是开发方法。具体开发时仍需采用其他开发方法。其思想是在以上介绍的任一方法中,自系统调查后,将开发过程中的每一步在一定程度上形成对应关系,然后借助于专门研制的软件工具来实现系统开发过程。
五、各种开发方法的比较
(一)原型法适合于小型局部系统或处理过程比较简单系统的设计到实现环节。
(二)OO方法可以普遍适用于各类信息系统开发,但它不能涉足系统分析以前的开发环节。
(三)CASE法具有高度自动化的特点,但它必须依赖于具体的开发方法。
(四)结构化系统开发方法是真正能够较全面支持整个系统开发过程的方法。