软件设计综述报告_第1页
软件设计综述报告_第2页
软件设计综述报告_第3页
软件设计综述报告_第4页
软件设计综述报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件设计综述报告软件设计包括一套原理、概念和实践。明确软件设计目标是软件设计的第一步。软件设计目标明确了最终的软件系统应该拥有的质量属性。软件设计的目标涉及性能、可靠性、本钱、维护等多个方面的目标。软件设计的目标软件设计的目标应从用户那里得到,确定了软件最终应拥有的功能。可以从需求规格说明书中选择重要的质量属性,作为设计目标,如性能目标、可靠目标等。而本钱和维护方面往往从客户和供给商那里得到。性能准则包括对系统速度和空间的需求。系统应该是能够发现请求并及时响应这些请求。可靠性准则决定了对减少系统崩溃以及随后所造成危害所做的努力程度。本钱准则包括开发、配置和管理系统的本钱。当新系统更新旧系统时,应该考虑确保向后兼容,或减少新系统移植的开销,同时需要考虑在多种不同本钱之间做出权衡。维护准则确定在开发完成后再改变系统的困难程度。这些准则很难进展优化和事先规划,因为很少能够清晰的给出工程成功的程度和系统的可操作的时间周期。最终用户准则包括从用户的视点出发所需的属性,但并没有覆盖性能准则和可靠性准则。软件设计的主要任务是要解决如何做的问题,要在需求分析的根底上,建立各种设计模型,并通过对设计模型的分析和评估,确定模型是否满足需求。软件设计是将用户需求准确的转化成为最终的软件产品的唯一途径,在需求到构造之间起到了桥梁作用。从工程管理的角度将软件设计分为两个阶段:概要设计阶段和详细设计阶段。从技术的角度,采用的方法不同,设计的内容也会有所不同。传统的构造化的方法将软件设方案分为体系构造设计、数据设计、接口设计和过程设计。体系构造设计:体系构造设计定义软件的主要构造元素及其之间的关系。体系构造设计表可以从系统规格说明、分析模型及体系构造的风格导出。类设计:类设计对分析阶段所建立的分析类模型进展细化,转化为设计类的实现及软件实现所要求的数据构造。数据设计:传统方法主要根据需求阶段所建立的实体-关系图来确定软件设计的文件系统的构造及数据库的表构造。接口设计:接口设计描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口。构件级设计:构件级设计将软件体系构造的构造元素变换为对软件构件的过程性的描述。接口设计类设计〔00方法〕接口设计类设计〔00方法〕详细设计过程设计〔传统方法〕构件级设计〔000方法〕需要设计体系构造设计数据设计管理观点技术观点图1从技术和管理的角度看设计的关系软件设计必须依据对软件的需求来进展,构造化分析的结果为构造化设计提供了最根本的输入信息。〔1〕研究、分析和审查数据流图。根据穿越系统边界的信息流初步确定系统与外部接口。〔2〕根据数据流图决定问题的类型。数据处理问题通常有两种类型:变换型和事务型。针对两种不同的类型分别进展分析处理。〔3〕由数据流图推导出系统的初始构造图。〔4〕利用一些启发式原则来改良系统的初始构造图,直到得到符合要求的构造图为止。〔5〕根据分析模型中的实体关系图和数据字典进展数据设计,包括数据库设计或数据文件的设计。〔6〕在设计的根底上,依旧分析模型中的加工规格说明、状态转换图进展过程设计。〔7〕制定测试方案。构造化设计与构造化分析的关系如图。左面是构造化分析阶段所建立的分析模版,右面为建立的设计模型。图2图2构造化设计与构造化分析关系实体-数据关系图流图数据字典状态-迁移图控制规格说明加工规格说明数据对象描述体系构造设计接口设计数据设计过程设计软件的构造包括两局部,一局部为软件的模块构造,另一局部为软件的数据构造。虽然这两局部是有密切联系的。但是在传统方法中,这两局部的设计是分开进展的。一般通过功能划分过程来完成软件构造设计。功能划分过程从需求分析确立的目标系统的模型出发,对整个问题进展分割,使其每一局部用一个或几个软件模块加以解决。一个软件系统通常由很多模块组成,构造化程序设计的函数和子程序都可称为模块。它是程序语句按逻辑关系建立起来的组合体。对于大的模块,一般还可以继续分为功能独立的较小模块,将不能再分解的模块称为原子模块。通常,可以按照在软件系统中的功能将模块分为四种类型。传入模块:传入模块的功能是取得数据或输入数据,经过某些处理,再将其传送给其他模块。传出模块:传出模块的功能是输出数据,在输出之前可能进展某些处理,数据可能被输出到系统的外部,也可能会输出到其他模块进展进一步的处理,但最终的目标是输出到系统的外部。变换模块:也叫加工模块,从上级调用模块取得数据,进展特定的处理,转换成其他形式,再将加工结果返回给调用模块。协调模块:协调模块本身一般不对数据进展加工,如数据X和Y,其主要功能是通过调用、协调和管理其他模块来完成特定的功能,如构造化程序设计中的主程序。模块构造说明了程序各个部件的组织情况,通常是树状构造和网状构造。是软件的过程的表示,并没有说明软件的某些过程性特征。〔1〕树状构造。位于最上层的的根部是顶层模块,他是程序的主模版。与其联系的有假设干下属模块,各下属模块还可以进一步引出更下一层的下属模块。由下列图可知,树状构造的特点是:整个构造只有一个顶层模块,上层模块调用下层模块,同一层模块之间不可相互调用。〔2〕网状构造。网状构造中,任意的两个模块间都可以有调用关系。不存在上下级模块关系,分不出层次;任何两个模块都是平等的,没有附属关系。ADADCBHIGABCEFD图4网状构造图4网状构造图3树状构造图3树状构造构造图是准确表达模块构造的图形标识工具,可以清楚的反映软件模块之间的层次调用关系和联系。严格定义了各个模块的名字、功能和接口,集中反映了设计思想。模块的调用关系接口:在构造图中,两个模块之间用单向箭头连接。箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块。被调用模块执行完成后,控制又返回到调用模块。模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息送给调用模块。为了表示在模块之间传递的数据或控制信息,在连接模块的箭头旁边给出短箭头,并且用尾端带有空心园的短箭头表示数据信息,用尾端带有实心园的短箭头表示控制信息。两个辅助符号:如下图,当模块A有条件的调用另一个模块B时,在模块A的箭头尾部标以一个菱形符号;当一个模块A反复的调用模块C和模块D时,在调用箭头尾部则标一个菱形符号。AABCD图5条件调用和循环调用的表示图5条件调用和循环调用的表示构造图的状态特征。图所表示的是一个软件系统的分层模块构造图。上级模块调用下级模块,他们之间存在着主从关系,同一层模块之间并没有这种主从关系。模块间的连线:模块之间的调用箭头也可用没有箭头方向的直线表示,在用直线表示时,用模块所处的位置表示他们之间的调用关系,位于上面的模块调用位于下面的模块。构造图的深度:在多层次的构造图中,模块构造的层次数称为构造图的深度。构造图的深度在一定程度上反映了程序构造的规模和复杂程度。构造图的宽度:构造图中同一层模块的最大模块数称为构造图的宽度。模块的扇入和扇出:扇出表示一个模块直接调用的下属模块数目,扇入则定义为调用一个给定的模块的调用模块的数目。数据构造是数据的各个元素之间的逻辑关系的一种表示。数据与程序是密不可分的,实现一样的功能,采用的数据构造不同,底层的算法也不一样。数据构造设计应先确定数据的组织、存取方式、相关程度,以及信息的不同处理方法,典型的数据构造种类是有限的。所谓的标量项就是单个的数据元素,如一个布尔量、整数、实数或一个字符串,可以通过名字对他们进展存取。根本数据构造可以构成其他数据构造可以用包含标量项、向量或N维空间的多重链表来建立分层树状构造和网状构造,并实现多种集合的存储。分而治之就是将大型复杂的问题分解为许多容易解决的小问题。模块化是将整体软件划分成独立访问的模块,不同的模块通常是具有不同功能或职责。每个模块可以独立的开发、测试,最后组装成完整的软件。一个模块的规模应该由它的功能和用途决定,并不是分解的越小越好。存在一个模块个数M,使得开发本钱到达最小。MM总的软件本钱连接本钱最小本钱范围本钱/模块模块个数模块数图6模块大小、模块数目与本钱的关系图6模块大小、模块数目与本钱的关系1.4.2模块独立性模块独立性是指软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口都是简单的。一般采用两个准则度量模块的独立性,即模块间的耦合和模块的内聚。耦合是模块间的相对独立性的度量,模块之间连接的越严密,联系越多,耦合性就越高,而模块独立性就越弱。内聚是模块功能强度的度量。一个模块内部各个元素之间的联系越严密,它的内聚性就越高,相对的,其他模块之间的耦合性就会降低。因此,模块独立性比拟强的模块应该是高度内聚、松散耦合的模块。松散耦合耦合性是程序构造中各个模块之间相互关联的度量。取决于各个模块之间的接口复杂程度、调用模块的方式以及哪些信息通过接口。非直接耦合。两个模块之间没有直接关系,他们之间的联系完全是通过主模块的控制和调用来实现的。模块之间的独立性最强数据耦合。一个模块访问里一个模块时,彼此之间是通过数据参数来交换输入、输出信息的。标记耦合。如果一组模块通过参数表达传递记录信息,就是标记耦合。控制耦合。一个模块通过传送开关,标志,名字等控制信息,明显的控制选择另一个模块的功能。外部耦合。一组模块都访问同意全局变量而不是同一全局数据构造,而且不是通过参数表传递该全局变量的信息。公共耦合。一组模块都访问同一个公共数据环境。内容耦合。一个模块直接访问另一个模块的内部数据。一个模块不通过正常入口转到另一模块内部。两个模块有一局部代码重叠。一个模块有多个入口。2.高度内聚一个内聚程度高的模块应当只完成软件过程中的一个单一的任务,而不与程序其他的局部进程发生关系。巧合内聚。模块内各局部之间没有联系,或者即使有联系,这种联系也很松散。逻辑内聚。模块把几种相关功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应该执行哪一种功能。时间内聚。模块为多功能模块,各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。过程内聚。一个模块内的处理是相关的,必须以特定程序执行。通信内聚。一个模块内各功能局部都使用了一样的数据,或产生了一样数据。信息内聚。模块完成多个功能,各个功能都在同一个数据构造上操作,每一项功能都有一个唯一的入口点。功能内聚。一个模块中各个局部都是完成某一种具体功能必不可缺少的组成局部。抽象是指无视一个主题与当前目标无关的那些方面,以便充分的注意与当前目标相关的方面。设计软件时,设计开场时应该尽量提高软件的抽象层次。按抽象级别由高到低进展软件设计。复用是指同一实体不做修改或者稍加修改就可以屡次重复使用,将复用的思想用于软件开发。复用的范围包括软件开发的各个阶段,包括需求模型和规格说明、设计模型、文档、测试用例的复用。保证软件灵活性的关键是抽象。在设计中引入灵活性的方法如下。降低耦合并提高内聚。易于提高替换能力。建立抽象。创立有多态操作的接口和父类。不要将代码写死。消除代码中的常数。抛出异常。由操作的调用者处理异常。使用并创立可复用的代码。预防过期的规则如下。防止使用早期发布技术。防止使用针对特定环境的软件库。防止使用软件库中文档不全或很少使用的功能。防止使用小公司提供的可复用构件和特殊硬件。使用众多厂商支持的标准语言和技术。进展可测试性设计时,坚持以下原则。坚持测试驱动设计的方法。函数小型化。尽量做到一个函数一个操作。数据的显示与控制别离,使修改程序功能而不影响视图变得容易。面向数据流的设计方法面向数据流的设计方法也称为过程驱动的设计方法,与软件需求分析阶段的构造化分析方法相衔接,可以与编码阶段的“构造化程序设计方法〞相适应,成为常用的构造化设计方法。〔1〕复查并精化数据流图。对需求分析阶段得出的数据流图进展认真复查,并在必要时精化。〔2〕确定数据流图中数据流的类型。〔3〕导出初始的软件构造图。根据数据流类型,应用变换型映射方法或事务型映射方法得到初始的软件构造图。〔4〕逐级分解。需要进展一级分解和二级分解。〔5〕精化软件构造。使用设计度量和启发式规则对得到软件构造进一步精化。〔6〕导出接口描述和全局数据构造。对每一个模块,给出进出该模块的信息,即该模块的接口描述。详细设计详细设计复读用启发式设计规则精化软件构造导出接口描述和全局数据构造区分事务中心和数据接收通路区分输入和输出分支映射成事务构造映射成变换构造精化数据流图数据流类型图7基于数据流方法的设计过程图7基于数据流方法的设计过程典型的数据流类型有变换型数据流和事务型数据流,数据流的类型不同,得到的系统构造也不同。变换型数据流与交换型系统构造图取得C取得CC变换成D取得AA变换成B取得BB变换成CD变换成E给出EDC主模块给出DCDD图8变换型的系统构造图图8变换型的系统构造图2.事务型数据流与事务型系统构造图结果结果结果作业作业已分析的作业内部表示的作业事务中心输入已分析的作业输出结果调度读入作业分析作业事务1事务2事务3操作1操作2操作3操作4操作5图8事务性系统构造图图8事务性系统构造图变换型映射方法是一系列设计步骤的总称,将具有变换流特点的数据流图按预先确定的模式映射成软件构造。先运用变换型映射方法建立初始的变换型系统构造图,然后对他做进一步改良,最后得到系统的最终构造图。变换分析方法分为四步组成:重画数据流图;区分有效输入,有效输出和中心变换局部;进展一级分解,设计上层模版;进展二级分解,设计输入,输出和中心变换局部的中、下层模版。一种数据流可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。事务分析方法的步骤如下。识别事务源。从问题定义和需求分析的结果中,找出各种需要处理的事务。规定适当的事务型构造。在确定了该数据流图具有事务型特征之后,根据模块化分理论,建立适当的事务型构造。识别各种事务和它们定义的操作。注意利用公共模块。如果不同事务的一些中间模块可由具有累死的语法和语义的假设干个低层模块组成,可以把这些模块构造成低级模块。对每一事务,或对联系密切的一组事务处理模块。对事务处理模块规定他们全部的下层操作模块。对操作模块规定他们的全部操作细节。对于大型系统的复杂事务处理,可能有假设干层细模块。〔1〕模块功能的完善化。一个完整的功能模块,不仅能够完成指定的功能,而且还能告诉使用者完成任务的状态,以及不能完成的原因。〔2〕消除重复功能,改善软件构造。如果发现几个模块的功能之间有相似之处,可以加以改良。〔3〕模块的作用范围应在控制范围之内。模块的控制范围包括它本身及其所有的附属模块。〔4〕尽可能的减少高扇出构造,随着深度增大扇入。〔5〕防止或减少使用病态连接,限制使用直接病态连接。公共数据域病态连接。通信模块连接。为了防止病态连接,防止内容耦合,设计应尽量到达单入口和单出口,便于阅读程序、理解程序,并且不易出错。〔6〕模块的大小要适中。接口设计的依据是数据流图中的自动化系统边界。自动化系统边界将数据流图中的处理划分为手工处理局部和系统处理局部,在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论