您好, 访客   登录/注册

浅谈软件开发过程中的方法问题

来源:用户上传      作者: 夏雪

  摘要:先进的制造模式要求信息集成和功能集成贯穿于产品生命周期的每一阶段,功能的集成需要软件系统的支持,从而推动先进制造模式的实现。软件开发过程是建造软件解决方案的关键要素。本文详细讨论了两类主要的过程开发方法,即面向对象方法和结构化方法。
  关键词:软件开发过程;面向对象方法;结构化方法
  中图分类号:TP311.52 文献标识码:A文章编号:1007-9599(2012)03-0000-02
  Methodological Issues in the Process of Software Development
  Xia Xue
  (Beijing Elite Creation Technology Co.,Ltd.,Beijing100081,China)
  Abstract:Advanced manufacturing model requires information integration and functional integration throughout the product life cycle at every stage of the functional integration needs the support of the software system,thus promoting the realization of advanced manufacturing mode.The software development process is a key element of construction software solutions.This paper discusses the two main types of process development methods,object-oriented methods and structured methods.
  Keywords:Software development process;Object-oriented methods;
  Structured approach
  一、软件系统的开发过程
  软件可划分为智能软件、系统软件和应用软件三个领域。由于不同的软件采用的开发知识不同,从而构成各自相应的方法。尽管,智能软件和应用软件分属不同的领域,但智能软件和应用软件都是计算机软件。
  建造软件系统的解决方案由三个关键的相互关联的基本要素组成:
  1.软件工程过程(SEP)。
  2.软件工程过程支持环境(SEPSE,如开发工具和建模语言等)。
  3.培训、指导和咨询服务。
  Watts Humphrey曾经说过,“软件工程过程就是将客户需求转化为软件产品的所有必须活动的集合”。在整个解决方案中首当其冲而且也是最重要的要素是过程。
  二、当前主流的软件开发方法
  (一)结构化方法
  1.结构化程序设计方法
  20世纪60年代,围绕是否应取消goto语句,人们展开了一场激烈的争论。最终人们认识到,软件开发中的问题的解决不仅仅是简单的取消goto语句,而是应该改变传统软件开发思维观念,在此基础上创建新的程序设计方法。
  围绕goto语句争论的结果使人们形成了新的思维观念:编写程序时,在正确地实现了软件功能的前提下,必须考虑到程序的可维护性,重视程序的可读性、清晰性和可理解性,而不能随心所欲地去过分追求程序编写技巧。
  由于使用三种基本程序结构(顺序、选择、循环)组成的程序具有良好的可读性、清晰性和可理解性,容易维护,所以逐渐成为主流的程序结构标准。按照这样的新思维观念,形成了一个新的程序设计方法―――结构化程序设计方法,结构化程序设计是根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从而实现详细设计。
  2.结构化分析方法和结构化设计方法
  结构化程序设计方法的巨大成功推动了结构化分析方法和结构化设计方法的发展。1974年,Stevens、Myers和Constantine发表文章《Structured Analysis》,提出了结构化分析和结构化设计的概念。
  结构化分析方法根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模块,从而完成需求分析工作。
  结构化设计方法使用模块化和自顶向下逐步细化技术,将数据流图等结构化分析的结果转化为软件系统总体结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
  结构化软件开发方法成为20世纪70年代和80年代占主导地位的软件开发方法,它有效地遏制了软件危机的蔓延,直到现在仍在发挥作用。结构化方法简单实用,技术成熟,应用广泛,但难以承担大规模的项目或特别复杂的项目,难以解决软件重用(复用)问题,难于适应需求变化,且软件维护依然比较复杂。
  (二)面向对象方法
  面向对象软件开发方法包括面向对象分析方法(Object-Oriented Analysis,简称OOA)、面向对象 设 计 方 法 (Object -Oriented Design, 简 称OOD)和面向对象程序设计(Object-Oriented Pro-gramming,简称OOP),其核心是面向对象程序设计方法。
  一般认为软件由程序和文档组成,而程序又由数据结构和算法组成,在传统的程序设计方法中,数据(数据结构)和施加在数据上的操作(算法)被分离成两个独立的部分,而程序被看作是工作在数据上的一系列过程或函数的集合,然而客观世界的实体既有静态的属性(即数据),又有动态的行为(即对数据的操作),因此这两方面内容密切相关,由于传统的程序设计方法将这两方面内容分离,无形中加深了问题空间与解空间之间的裂痕,增加了软件开发的难度。
  相反,面向对象方法有下列要点:客观世界是由各种对象(Object)组成的,复杂对象可以由简单对象组成。有共同属性和方法的一组对象抽象为一个类(Class)。一个类(子类)可以继承另外一个类(父类)的方法和属性,这一特性称为继承。对象之间通过传递消息进行通信。
  以上特点可以归结为如下的公式:Object-Ori-ented =Object +Classification +Inheritance +Commu-nication with Messages。在面向对象程序设计方法中,数据和施加在数据上的操作被封装在一起,形成类和对象的概念,用对象分解取代了传统方法的功能分解。这一思维观念创新使得问题空间与解空间的结构基本一致,有利于软件复用,也与人们通常认识世界的思维方式相符,更利于加强代码的易懂性。
  20世纪60年代末,Kristen Nygaard和Ole-Johan Dahl在挪威计算中心开发出Simula67语言,提出许多面向对象的概念。1972年,AlanKay引用Simula语言中关于类和对象的概念,开发出第一种真正的面向对象语言Smaltalk。
  Smalhalk语言的发布引起了人们的广泛关注,随后产生了数十种面向对象语言,例如著名的C++和Java。
  在面向对象程序设计方法基础上,许多面向对象分析和设计(OOA/OOD)方法被提出,比较著名的如Wirfs -Brock方法、Booch 方法、Coad/Yourdon方法、对象建模技术 OMT(ObjectModeling Technique)、面向对象软件工程OOSE(Object-Oriented Software Engineering)等。这些面向对象分析和设计方法各有各的特点,为了吸收它们各自的优点,形成统一的面向对象分析和设计方法,Booch、Jacobson和Rambaugh三人合作,于20世纪90年代后期提出了统一建模语言UML(Unified Modeling Language)。在UML基础上形成的面向对象软件开发方法开始得到广泛的应用,成为20世纪90年代直到目前占主导地位的软件开发方法,面向对象程序设计方法这一思维观念创新可以被称为程序设计方法的第二次飞跃。

  然而,在面向对象方法中,软件开发阶段的划分是比较模糊的,通常要在分析、设计与实现等阶段间进行多次迭代。
  (三)形式化方法
  随着科技的发展,计算机软件越来越多地被用来执行那些可能会导致严重后果甚至危及生命的任务,例如宇宙飞船发射、铁路安全监控和核反应堆监控等任务,这些系统的软件复杂性远远超过一般软件,如何在软件复杂性增加的情况下仍能确保软件执行结果安全可靠至关重要,达到这一目标的一种途径就是使用形式化方法。
  软件工程中的形式化方法就是依靠数学模型和计算来描述和验证一个目标软件系统的行为和特性,包括需求规格、设计和实现等,形式化方法最根本的特征就是建立在严格的数学基础上,如果一个方法有良好的数学基础 (这个基础提供一系列精确定义的概念,如:一致性和完整性,以及定义规范的实现和正确性),那么它就是形式化的,典型的以形式化规约语言给出。
  形式化方法能很好地解决在软件开发中经常出现的二义性问题,因为形式化方法主要是符号系统,这种符号系统具有一定的数学性质。
  形式化方法也有其缺点,首先是规范所使用的数学工具与模型并不能保证规范的绝对正确和安全性;其次是对于任何一种数学规范,在其基本的数学意义下,针对不同的工程背景,并不是只有一种解释。当然,这些不是二义性问题,而是不同领域对规范的解释和相容性问题。
  三、结论
  计算机和网络技术的发展及其在制造业中的应用,产生许多新的制造模式,如并行工程,敏捷制造和全球制造。这些新的模式对产品进行生命周期的设计和管理提出了进一步的要求。结构化方法和面向对象方法是现今主要的软件开发过程方法。构化方法贯彻自顶向下逐步细化的“功能分解”思想,其基于功能分解的特点,使之不足明显。面向对象方法则是从问题域中客观存在的事物出发来构造系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位,面向对象方法和结构化方法的相比有了更大的进步。
  参考文献:
  [1]王健,程虎.系统软件开发过程中的软件工程技术[J].计算机研究与发展,1996,33(04):263-271
  [2]Ivar Jacobson. The Road to the Unified Software Development Process[M].北京:机械工业出版社,2003
  [3]程华农.面向智能体的化工过程运行系统分析、模型化和集成策略的研究[D].广州:华南理工大学,2002
  [4]Fichman R. G.. Object-Oriented and Convention Analysis and Design Methodologies[J].IEEE Computer,1992,(10):22-39


转载注明来源:https://www.xzbu.com/8/view-1683631.htm