Create our family  |  express our passion  |  look for happiness  |  make dreams come ture

Tuesday, August 17, 2004

[对软件认识的十二点感悟]

  • 原始出处:IT168

  •   1、工具观



      人类之所以能够成为世界的主宰,主要在于其发明与使用工具的能力。从这种意义上看,软件也是一种工具,是代替、强化和延伸人类思维能力的工具,而其他工具则使人的体能、感官等得以增强。软件的使用方法与其他工具相仿,由使用者操作以完成从输入到输出的转化;而软件的应用过程却不像其他工具那样有磨损、折旧及报废的过程,它的生命结束在于技术、业务上的滞后。


      2、逻辑观


      软件是代替与增强人脑思维功能的逻辑产品。正如一位名教授所言,欲使计算机为人思考问题,则人必须首先用计算机的方式思考问题,而计算机的思考方式是形式逻辑,或称数据逻辑。从逻辑学的角度看,人的思维与认知过程就是某种形式的演绎与推理过程,为此逻辑学进行了大量的研究,并且直接推进了计算机的诞生与发展。形式逻辑通过建立一种可机械实现的符号演算机制,模拟了人类思维中的一类精确推理过程,特别是从形式逻辑分离出来的形式化语言和有限状态自动机理论,为计算机语言的产生及发展奠定了牢固的理论基础。


      3、计算观


      计算的实质是寻找一种可机械执行的算法,软件当然可以归为此类。对计算的长期理论研究导致了第一个计算模型----图灵机(Turning machine)的诞生,它被公认为现代计算机的祖先。对可计算性的深入研究推导出了图灵机的等价模型,如流程图即是一种可计算性的等价模型。可计算性理论也对不可计算的问题进行了研究,如开发万能计算机杀毒软件就是不可计算问题。对算法的深入研究也产生了另一门学科,即计算复杂性理论,着重于NT难解型问题的研究,如推销员问题就是NT难解型问题之一。


      算法模型也向着限定化的方向发展,如X/OPEN组织所推出的XA和XA+两阶段提交交易处理模型、Microsoft公司提出的COM+网络计算模型、IBM公司提出的基于SET协议的Internet网络计算模型、SUN公司提出的RMI网络模型及OMG组织提出的CORBA网络计算模型等,对不同环境,特别是网络环境下的计算过程给出了具体的解决方案。


      数学是理学的基础学科,大量的自然和社会问题可以通过数学的方法进行描述,但数据问题却不一定是可计算问题。为此,计算数学学科应运而生,通过逼近、迭代等方法将数学问题变成可计算问题。


      从计算的观点看,计算机只是执行算法的机器。算法通过指令的方式进行描述,指令则从算法语言如C、COBOL等编译而来,而算法语言所描述的是用户的业务逻辑,因此软件系统可视为特定算法的实现。


      4、组成观


      关于软件可用两个简单的算式来概括:


      软件=程序+文档


      程序=算法+数据结构


      以上简单的公式已被大多软件工程技术人员所接受。程序是软件的产品,但在其使用和维护过程中需要使用手册和技术文档,其开发过程需要有分析和设计文档、工程实施文档及项目管理文档等。算法是程序的灵魂,体现着软件的处理能力,而数据结构则是软件的实体,代表着业务数据的存储结构和部分业务逻辑关系。数据结构无论对于软件的应用和开发都是至关重要的,有经验的系统开发人员认为,良好的数据结构的确立,相当于软件开发成功了一多半。


      5、模型观


      模型论属于逻辑学的范畴,因此反映的是思维及意识形态上的东西。建筑模型从形态、比例、色调上反映着与实物的对比关系,数学模型从量的角度反映了客观世界事物属性间的约束和控制关系。从模型论的角度看,整个软件系统是客户业务实现的一个模型,特别是软件的研制过程就是一个建模及模型间的演绎过程。需求是一个模型,代表了从用户视角反映软件系统的结构和功能;体系架构是一个模型,从较高层次上反映了系统的软硬功能群的组成结构及分布关系;概要设计是更进一步的建模过程,反映了软件系统在体系架构之下最小功能的组成、调用关系、命名方式及参数化构成;详细设计是在概要设计框架内的细化过程,定义了各功能的具体实现机制;编码是基于详细设计的建模过程,将设计文档变换成计算机语言和数据结构;测试过程通过一系列业务模型,对系统功能的准确性和全面性进行验证。


      现代面向对象分析与设计理论,提供了更高级和先进的系统建模方法与理论,如UML语言、MVC模型等。


      6、集成观


      应用软件的功能最终要转换为硬件服务来实现,在此期间调用、控制、协同和驱动了系统软件和不同硬件的一系列功能,不难看出,应用软件系统是一个粘合剂,它将其他厂商提供的软件和硬件集成在一起,为用户提供一个完整的解决方案。从这一角度看,应用软件的开发者对软硬件组合具有充分的选择余地,同时也要求软件开发商具备丰富的软硬件知识,这是建设高质量、高性能价格比应用系统的基础之一。

    0 Comments:

    Post a Comment

    << Home