基于模型的软件开发方法研究

来源 :科技与企业 | 被引量 : 0次 | 上传用户:kaezhu1111
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】随着计算机科学技术的迅速发展,软件系统越来越复杂,功能越来越强大,若还采用原来旧的方法开发软件,则无法满足软件系统的要求,这就需要有一种更新,更符合系统工程要求的方法来指导软件系统的开发。
  【关键词】软件系统;模型;软件开发方法
  软件开发一个复杂的活动,它包含了需求调研,系统设计,开发, 部署,维护等活动。而且现有规范和流程目的并不是讓你去完成文档, 而是通过这些文档,让软件的质量更能得到保证。开发方法是不是实用有效,一般取决于它是否具备三个要素:简单、可视化和精确。也就是说,该方法必须用起来简单,其表现形式要有效地发挥图形语言的可视化效果,同时所表达的内容必须精确以确保其意思能被准确理解。
  1、软件系统的开发过程
  1.1软件过程领域的基本概念
  软件可划分为智能软件、系统软件和应用软件三个领域。由于不同的软件采用的开发知识不同,从而构成各自相应的方法。尽管,智能软件和应用软件分属不同的领域,但智能软件和应用软件都是计算机软件。建造软件系统的解决方案由三个关键的相互关联的基本要素组成:
  (1)软件工程过程(SEP)。
  (2)软件工程过程支持环境(SEPSE,如开发工具和建模语言等)。
  (3)培训、指导和咨询服务。
  Watts Humphrey曾经说过,“软件工程过程就是将客户需求转化为软件产品的所有必须活动的集合”。在整个解决方案中首当其冲而且也是最重要的要素是过程。
  1.2软件过程的特点
  软件过程中的所谓“过程”是创建一个产品或完成某些任务的一种系统化的方法和工作过程,它异于通常计算机领域所特指的可运行的软件的过程,其执行者不再仅仅是计算机,而经常是由具体承担任务的软件开发人员使用给定的开发工具来执行,其意义更为广泛,描述了以某种有条理的方法进行工作或实现一个目标的任何一种机制,它甚至可以是一个无法在计算机上运行的过程[2],完全由人工或人工借助计算机领域以外的其它工具来完成。
  软件过程是关系错综复杂的各种活动的集合,各活动之间有时有严格的时序关系,有时是异步并行的,有时互为条件,有时互为反馈,因此实际的软件过程中的活动存在一种复杂的网状关系。软件开发是一个高度动态的过程,动态变化渗透到了软件过程的各个方面:需求说明、任务分配、调试、开发策略。工具集、支持环境等,这些变化的出现通常不可预料,造成的影响也无法确定。同时,软件过程是一个面向人的系统,而软件本身又是一种无形的产品,这就导致了工作进度难以控制,工作质量难以评估,产品质量难以把握,使整个过程具有极大的模糊性。随着计算机应用在各领域越来越广,软件项目规模愈来愈大,许多由分布在不同地区不同国家的大量工作人员合作的跨国际合作项目也纷纷出现,在此情况下,正确有效地进行管理的迫切要求使得软件过程的研究成为热点。
  2、建立过程模型的基本过程
  开发过程模型首先要对外部过程模型进行提取和抽象,产生一个非正式的过程模型,包括执行过程所接收到的反馈。随后对过程的活动顺序以及所涉及的产品进行抽象描述,它可用于许多相似的项目和组织之中,共享某些信息。这样的模型意味着是一个非常高层的过程体系结构,可以满足一般的原则和需求,可以将其视为一个通用的原模型。在此基础上,用户可以根据具体情况详细而又严格地描述过程中的各种任务类型,这时可以从管理人员的角度来精细化所有的子模型,如对特定领域内的任务和角色进行分类和施加约束。在将软件模块交付集成测试组时,可以说明这是某个特定过程模型所产生的结果。同时这个过程模型还需要进一步实例化以适应项目的各种约束和条件,因而实例化的过程模型是一个可执行的过程描述,它将实例化的活动(即任务类型实例化为具体的任务)与具体的产品和项目资源联系起来,并遵循一定的调度时间表。一旦过程模型为相应的项目进行了实例化,该模型就可以进行模拟和运作。在过程模拟期间,需要工具来帮助分析、评价和模拟过程模型,并得到许多反馈信息,包括资源使用情况、资源瓶颈、活动完成时间、活动等待时间、人员等待时间等等。有了这些信息就可以对实例化过程进行修改,使之趋于合理化。在模拟之后就可以对过程模型进行实际运作,生产有关的产品。
  3、当前主流的软件开发方法
  3.1结构化方法
  所谓软件构件化,就是要让软件开发像机械制造工业一样,可以用各种标准和非标准的零件来进行组装。软件的构件化和集成技术的目标是:软件系统可以由不同厂商提供的,用不同语言开发的,在不同硬件平台上实现的软件构件,方便地、动态地集成。这些构件要求能互操作,它们可以放在本地的计算机上,也可以分布式地放置在网上异构环境下的不同结点上。
  (1)结构化程序设计方法
  20世纪60年代,围绕是否应取消goto语句,人们展开了一场激烈的争论。最终人们认识到,软件开发中的问题的解决不仅仅是简单的取消goto语句,而是应该改变传统软件开发思维观念,在此基础上创建新的程序设计方法。围绕goto语句争论的结果使人们形成了新的思维观念:编写程序时,在正确地实现了软件功能的前提下,必须考虑到程序的可维护性,重视程序的可读性、清晰性和可理解性,而不能随心所欲地去过分追求程序编写技巧。
  由于使用三种基本程序结构(顺序、选择、循环)组成的程序具有良好的可读性、清晰性和可理解性,容易维护,所以逐渐成为主流的程序结构标准。按照这样的新思维观念,形成了一个新的程序设计方法———结构化程序设计方法,结构化程序设计是根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从而实现详细设计。
  (2)结构化分析方法和结构化设计方法
  结构化程序设计方法的巨大成功推动了结构化分析方法和结构化设计方法的发展。1974年,Stevens、Myers 和Constantine发表文章《Structured Analysis》,提出了结构化分析和结构化设计的概念。   结构化分析方法根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模块,从而完成需求分析工作。结构化设计方法使用模块化和自顶向下逐步细化技术,将数据流图等结构化分析的结果转化为软件系统总体结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。结构化软件开发方法成为20世纪70年代和80年代占主导地位的软件开发方法,它有效地遏制了软件危机的蔓延,直到现在仍在发挥作用。结构化方法简单实用,技术成熟,应用广泛,但难以承担大规模的项目或特别复杂的项目,难以解决软件重用(复用)问题,难于适应需求变化,且软件维护依然比较复杂。
  3.2面向对象方法
  面向对象软件开发方法包括面向对象分析方法(Object-Oriented Analysis,简称OOA)、面向对象设计方法(Object -Oriented Design,简称OOD)和面向对象程序设计(Object-Oriented Pro-gramming,简称OOP),其核心是面向对象程序设计方法。
  一般认为软件由程序和文档组成,而程序又由数据结构和算法组成,在传统的程序设计方法中,数据(数据结构)和施加在数据上的操作(算法)被分离成两个独立的部分,而程序被看作是工作在数据上的一系列过程或函数的集合,然而客观世界的实体既有静态的属性(即数据),又有动态的行为(即对数据的操作),因此这两方面内容密切相关,由于传统的程序设计方法将这两方面内容分离,无形中加深了问题空间与解空间之间的裂痕,增加了软件开发的难度。相反,面向对象方法有下列要点:客观世界是由各种对象(Object)组成的,复杂对象可以由简单对象组成。有共同属性和方法的一组对象抽象为一个类(Class)。一个类(子类)可以继承另外一个类(父类)的方法和属性,这一特性称为继承。对象之间通过传递消息进行通信。
  以上特点可以归结为如下的公式:Object-Ori-ented=Object+Classification+Inheritance+Commu-nicationwithMessages。在面向对象程序设计方法中,数据和施加在数据上的操作被封装在一起,形成类和对象的概念,用对象分解取代了传统方法的功能分解。这一思维观念创新使得问题空间与解空间的结构基本一致,有利于软件复用,也与人们通常认识世界的思维方式相符,更利于加强代码的易懂性。20世纪60年代末,Kristen Nygaard和Ole-Johan Dahl 在挪威计算中心开发出Simula67语言,提出许多面向对象的概念。1972年,AlanKay引用Simula语言中关于类和对象的概念,开发出第一种真正的面向对象语言Smaltalk。
  Smalhalk语言的发布引起了人们的广泛关注,随后产生了数十种面向对象语言,例如著名的C++和Java。在面向对象程序设计方法基础上,许多面向对象分析和设计(OOA/OOD)方法被提出,比较著名的如Wirfs-Brock方法、Booch方法、Coad/Yourdon方法、对象建模技术OMT(ObjectModelingTechnique)、面向对象软件工程OOSE(Object-Oriented SoftwareEngineering)等。这些面向对象分析和设计方法各有各的特点,为了吸收它们各自的优点,形成统一的面向对象分析和设计方法,Booch、Jacobson 和Rambaugh三人合作,于20世纪90年代后期提出了统一建模语言UML(Unified Modeling Language)。在UML基础上形成的面向对象软件开发方法开始得到广泛的应用,成为20世纪90年代直到目前占主导地位的软件开发方法,面向对象程序设计方法这一思维观念创新可以被称为程序设计方法的第二次飞跃。然而,在面向对象方法中,软件开发阶段的划分是比较模糊的,通常要在分析、设计与实现等阶段间进行多次迭代。
  3.3形式化方法
  软件工程中的形式化方法就是依靠数学模型和计算来描述和验证一个目标软件系统的行为和特性,包括需求規格、设计和实现等,形式化方法最根本的特征就是建立在严格的数学基础上,如果一个方法有良好的数学基础(这个基础提供一系列精确定义的概念,如:一致性和完整性,以及定义规范的实现和正确性),那么它就是形式化的,典型的以形式化规约语言给出。形式化方法能很好地解决在软件开发中经常出现的二义性问题,因为形式化方法主要是符号系统,这种符号系统具有一定的数学性质。
  形式化方法也有其缺点,首先是规范所使用的数学工具与模型并不能保证规范的绝对正确和安全性;其次是对于任何一种数学规范,在其基本的数学意义下,针对不同的工程背景,并不是只有一种解释。当然,这些不是二义性问题,而是不同领域对规范的解释和相容性问题。
  4、结束语
  总之,我们要不断坚持和谐软件过程,根据软件、行业、人文等各类因素,不断地落实和深化和谐软件过程的理念,不断反思总结吸收借鉴改善创新,如并行工程,敏捷制造和全球制造。这些新的模式对产品进行生命周期的设计和管理提出了进一步的要求。结构化方法和面向对象方法是现今主要的软件开发过程方法。构化方法贯彻自顶向下逐步细化的“功能分解”思想,其基于功能分解的特点,使之不足明显。面向对象方法则是从问题域中客观存在的事物出发来构造系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位,面向对象方法和结构化方法的相比有了更大的进步。
  参考文献
  [1]禾盈.软件研发向质量管理要效益[N].金融时报,2001年
  [2]何丽.基于UML的软件开发过程——标准开发过程研究[D].天津财经学院,2000年
其他文献
对前环藻细胞直接进行戊二醛锇酸双固定后,在常规电镜切片上,不能分辨出核基质部分的细微结构;但采用特殊的DGD(Diethylene Glycol Distearate)包埋一切片去包埋电镜技术直接
<正> 一、什么是昆虫性信息素性信息素(sexpheromone)是由一种昆虫产生和释放出来,引诱或激起同种异性昆虫交配的化学物质。昆虫性信息素按其作用方式可分为两种:一种是挥发
越来越多的未成年人沉迷于手机游戏,但是目前主流的防沉迷系统并不能起到很好的防沉迷效果。为解决这一问题,基于当前流行的深度学习方法,提出结合人脸身份识别技术和年龄估计技术判断登录者是否成年,在此基础上,为防范未成年人使用成年人的照片、录像骗过摄像头,采用活体检测技术提高系统的可靠性。在人脸身份识别方面,准确率达到97.3%;在年龄估计方面,准确率达到75.02%;在活体检测方面,准确率达到78.8%
城市里的光化学污染和汽车尾气排放,已不是太新鲜的话题。但随着城市化进程的加快,尤其是现在,这个话题应格外受到重视。
<正> 怎样迅速而准确地求出按基因自由组合规律进行遗传的个体(基因型)产生的配子种类数、杂交后代的基因组合数和基因型种数及子代表现型种数?大多数学生由于受到“定势思维
全国“十二五”期间湿地保护管理工作会议在福建省长乐市召开,会上公布,我国未来五年自然湿地有效保护率将提高6个百分点。会议指出,“十二五”期间,我国将通过严格保护自然湿地,
目的探讨多发骨折I期一次性手术固定的可行性及围手术期处理方案。方法对于ISS评分〈30分的1组45例20~55岁的多发骨折病人,当其生命体征平稳,CPR﹤50mg/L时,一次性手术固定需手
根据阿海水电站输水系统布置和机组参数特性,应用外特性法进行机组增容10%处理后的大波动过渡过程计算,复核蜗壳末端、转轮出口处压力值及转速上升值,验证其是否满足原设计要
中央林业工作会议要求我国林业必须肩负起改善生存环境、维护生态安全、建设生态文明、保资源增长和农民增收的任务并为抑制全球性不良气候改变作出更大贡献。要完成林业肩负
计算机诞生,就在很多方面存在着缺陷,比如体积太大,很不方便携带和日常使用,功能单一,只能用来做一些简单的操作。但是,随着单片机技术的应用,计算机的发展实现了飞跃,出现了