软件工程中几种常用软件设计方法的概述研究

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程中几种常用软件设计方法的概述研究【摘要】在软件开发时期中,设计阶段是最富有活力、最需要发挥创造精神的阶段。本文通过对常用几种软件设计方法的研究,对软件的开发有进一步的认识。同时,也能通过对比得出哪些设计方法对某一软件的开发有更大的优势,可以更好的指导我们实践。【关键字】软件开发、常用设计方法一、引言在软件开发时期中,设计阶段是最富有活力、最需要发挥创造精神的阶段,软件设计方法对软件的开发以及投放市场有着重要的作用。在日常生活中,常用的软件工程设计方法有Parnas方法、Jackson(JSP/JSD)方法、问题分析方法(PAM)、面向对象的软件开发方法(OO)、形式化方法、可视化方法、软件重用。下面对这几种方法进行分析研究。二、Parnas方法最早软件开发方法是由D.Parnas在1972年提出。由于当时软件在可维护性和可靠性方面存在着严重问题,因此Parnas提出的方法是针对这两个问题的。首先,Parnas提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这些因素变化而需修改软件时,只需修改个别的模块,其它模块不受影响。信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。现在信息隐蔽原则已成为软件工程学中的一条重要原则。Parnas提出第二条原则是在软件设计时应对可能发生的种种意外故障采取措施。软件是很脆弱的,很可能因为一个微小的错误而引发严重的事故,所以必须加强防范。如在分配使用设备前,应该取设备状态字,检查设备是否正常。此外,模块之间也要加强检查,防止错误蔓延。Parnas对软件开发提出了深刻的见解。遗憾的是,他没有给出明确的工作流程。所以这一方法不能独立使用,只能作为其它方法的补充。三、Jackson(JSP/JSD)方法1975年,M.A.Jackson提出了一类至今仍广泛使用的软件开发方法。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的详细设计。Jackson方法有时也称为面向数据结构的软件设计方法。一般通过以下五个步骤来完成设计:1分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图来表示这些数据结构。2找出输入数据结构和输出数据结构中有对应关系的数据单元。3按以下的规则由输入、输出的数据结构导出程序结构。1)为每一对在输入数据结构和输出数据结构中有对应关系的单元画一个处理框。2)为输入和输出数据结构中剩余的数据单元画一个处理框。3)所有处理框在程序结构图上的位置,应与由它处理的数据单元在数据结构Jackson图上的位置一致。4)必要时,可以对映射导出的程序结构图进行进一步的细化。4列出基本操作与条件,并把它们分配到程序结构图的适当位置。5用伪码写出程序。3.1JSP方法JSP方法是杰克逊结构程序设计方法,是一种典型的面向数据结构的分析和设计的方法。其主要设计思想是按输入、输出和内部信息的数据结构进行软件设计的,把数据结构的描述变换成程序结构的描述,设计出反映数据结构的程序结构。JSP方法将问题分解为顺序、选择和重复三种基本结构形式表示的层次结构如图1所示。这样对一个要解决的问题,总是要把解的结构设计成同问题的结构一样,使程序既容易理解,又容易修改以满足将来问题的变化。JSP方法首先考察问题的环境,分析所要处理的数据,作出数据结构图及图示逻辑;再以数据结构为基本点形成程序结构;最后列出进行处理所需要的基本操作,并把这些操作分配给程序结构中的适当部分。JSP方法的优点是客观,不依赖于设计者自己的创造和经验,不同的设计者可以设计出同样的解。简单易学,用JSP图示逻辑可以很容易地导出Cobol程序,目前已研制出从JSP方法设计的结构自动导出Cobol程序的工具。虽然JSP方法简单易学,步骤规范,但也存在着一些局限性,最大的不足是当软件系统的规模庞大时,输入和输出之间就会出现大量复杂的信息,JSP方法难于对付的结构冲突问题。可以利用中间文件解决冲突,但它明显降低了功效,而且从概念上说中间文件也是不必要的;随着软件系统规模的增大,且结构冲突的可能性及解决冲突的算法复杂性亦随之增大。因此JSP方法只适用于小型程序的开发,只是一种程序设计方法,并不适用于解决大型软件的开发问题。3.2JSD方法JSD方法是杰克逊系统开发方法,它以活动(即事件)为中心,一连串活动的顺序组合构成进程,系统模型抽象为一组以通信方式互相联系的进程。JSD方法的基本思想是仿真并描述客观世界,然后添加输出功能,最后实现系统的转换。它的基本步骤可分为六步,一是实体动作分析,从问题的描述中,提取软件系统要产生和运用的实体(人、物或组织),以及现实世界作用于实体上的动作(事件);二是实体结构分析,把作用于实体的动作或由实体执行的动作,按时间发生的先后次序排序,构成进程,并用一个层次的Jackson结构图表示;三是定义初始模型步,把实体和动作表示成一个进程模型,定义模型与现实世界的联系。模型系统的规格说明可用系统规格说明图来表示;四是功能描述,说明与已定义的动作相对应的功能,为已定义的动作加入功能函数;五是决定系统时间特性,对进程加入时间因素,对进程调度特性进行评价和说明;六是实现,设计组成系统的硬件和软件,实现系统的原型。前三步属于需求分析阶段,后三步属于设计阶段。JSD方法开创性地进行了客观世界及其同软件间关系的研究;明确了软件系统说明决策同软件系统实现决策的界限;做出容易的决策应该先于困难的决策;应当尽可能推迟最容易导致错误的决策;含蓄的决策应当避免,不应有隐含的约定存在;如果一个决策易于出错,应当尽早证实它的正确性;应当尽可能使决策之间没有依赖关系,使它们互不相关。其局限性是客观世界及其同软件间关系的认识不完整;软件系统实现结构过于复杂;软件说明结构的描述技术不恰当;JSD中并不包含诸如选题,计划管理,代价P收益分析等内容,也不包含实施环境问题的研究内容,这在一定程度上影响了它的推广应用;JSD在实现阶段所做的变换十分费劲,以致利用人的智力进行变换难以保证其有效性和可靠性,且变换的选择又过于复杂,目前仍无法用计算机自动实现。[3][5]四、问题分析法(PAM)PAM(ProblemAnalysisMethod)是80年代末由日立公司提出的一种软件开发方法。PAM方法希望能兼顾Yourdon方法、Jackson方法和自底向上的软件开发方法的优点,而避免它们的缺陷。它的基本思想是:考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。这一方法的具体步骤是:从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的PAD图。从上述步骤中可以看出,这一方法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结构。PAM方法的另一个优点是使用PAD图。这是一种二维树形结构图,是到目前为止最好的详细设计表示方法之一,远远优于NS图和PDL语言。这一方法在日本较为流行,软件开发的成功率也很高。由于在输入、输出数据结构与整个系统之间同样存在着鸿沟,这一方法仍只适用于中小型问题。五、面向对象的软件开发方法(OO)面向对象方法(Object-OrientedMethod)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。面向对象方法的具体实施步骤如下:1面向对象分析(OOA(Object-OrientedAnalysis)):从问题陈述入手,分析和构造所关心的显示世界问题域的模型,并用相应的符号系统表示。模型必须是简洁、明确地抽象目标系统必须做的事,而不是如何做。分析步骤为:1)确定问题域,包括定义论域,选择论域,根据需要细化和增加论域;2)区分类和对象,包括定义对象,定义类、命名;3)区分整体对象以及组成部分,确定类的关系以及结构;4)定义属性,包括确定属性,安排属性;5)定义服务,包括确定对象状态,确定所需服务,确定消息联结;6)确定附加的系统约束。2面向对象设计(OOD(Object-orientedDesign)):面向对象的设计与传统的以功能分解为主的设计有所不同。具体设计步骤为:1)应用面向对象分析,对用其他方法得到的系统分析的结果进行改进和完善;2)设计交互过程和用户接口;设计任务管理,根据前一步骤确定是否需要多重任务,确定并发性,确定以何种方式驱动任务,设计子系统以及任务之间的协调与通信方式,确定优先级;4)设计全局资源,确定边界条件,确定任务或子系统的软、硬件分配;5)对象设计。3面向对象实现:使用面向对象语言实现面向对象的设计相对比较容易。如果用非面向对象语言实现面向对象的设计时,特别需要注意和规定保留程序的面向对象结构。传统的面向功能的方法学中,强调的是确定和分解系统功能,这种做法虽然是目标的最直接的实现方式,但是由于功能是软件系统中最不稳定、最容易变化的方面,因而使系统难以维护和扩展。面向对象设计首先强调来自域的对象,然后围绕对象设置属性和操作。用面向对象设计,其结构源于客观世界稳定的对象结构。因而与传统软件设计方法相比,明显提高了软件的生产率,可靠性,易重用性、易维护性等方面的效果。OO方法的主要优点是,归纳和演绎思想的综合体现;问题空间和解空间的同构;继承机制的引入,很好的支持了重用性;对象机制有力地支持了信息隐藏的概念;多态性、持久性和动态联编对程序设计起到了很好的作用。OO方法从计算机角度看有它巨大的优势,但OO方法在建立客观系统模型方面有不足之处。OOA一开始就有很多计算机方面的术语和概念不容易被一般用户或参与应用软件开发的业务人员所了解,即使了解了,也很难正确使用,为真正掌握这些概念需要有一定的计算机背景知识,所以OOA在应用软件开发中,建立客户系统的描述方面不能被普遍接受和推广使用。[6]六、形式化方法形式化方法(formalmethods)是保证计算机系统正确性的一种重要手段。这类方法用抽象的数学手段刻画计算机软硬件的结构及其性质,并通过形式证明等途径来提高系统的可靠性。在使用形式化方法时,形式化规格说明(formalspecification)起着重要的作用。它的基本思想是,对系统建立一个数学模型,研究提供一种基于数学的形式语义学的软件规格说明语言,用这种语言严格的描述所开发的软件功能,并由计算机完全机械地将它转换成可执行代码。其基本步骤:①定义形式化的规格说明语言;②对形式化的规格说明语言进行实现转换,即形式化语言可由计算机自动处理,可利用相应的软件工具对规格说明进行分析、查错和验证。形式化方法是以一定的数学概念和理论作基础来指导软件的开发的,所以具有严格、规范的优点。同时也因为要有较强的数学基础,不能被普遍接受,形式化规格说明的理论和技术尚处于研究阶段,未成熟到工程应用的程度,因此该方法不太实用。[3]七、可视化方法可视化开发90年代软件界最大的两个热点之一。随着图形用户界面的兴起,用户界面在软件系统中所占的比例也越来越大,有的高达60~70%。产生这一问题的原因是图形界面元素的生成很不方便。为此Windows提供了应用程序设计接口API(ApplicationProgrammingInterface),它包含了600多个函数,极大地方便了图形用户界面的开发。但是在这批函数中,大量的函数参数和使用数量更多的有关常量,使基于

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功