软件设计基础_第1页
软件设计基础_第2页
软件设计基础_第3页
软件设计基础_第4页
软件设计基础_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

软件设计基础

是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构软件设计:第2页,共82页,2024年2月25日,星期天软件工程第7章软件设计基础概念基本概念设计过程设计工具说明与评审第3页,共82页,2024年2月25日,星期天7.1.1软件设计过程TextText技术角度与管理角度详细设计概要设计过程设计数据设计结构设计概要设计根据需求确定软件和数据的总体框架详细设计将“概设”结果进一步精化成算法表示和数据结构结构设计确定程序各主要部件之间的关系数据设计把信息描述转换为实现软件所要求的数据结构过程设计完成每一部件的过程化描述第4页,共82页,2024年2月25日,星期天7.1.2抽象与逐步求精抽象抽出事务的本质特性而暂时不考虑它们的细节。是控制复杂性的基本策略。定义需求设计实现软件系统被描述为基于计算机的大系统的一个组成部分软件用问题域约定的习惯用语表达概要设计过渡到详细设计时,抽象级再一次降低编码完成后达到了抽象的最低级过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名第5页,共82页,2024年2月25日,星期天抽象1:该CAD软件系统配有与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工具画各种直线和曲线;能完成所有几何计算以及所有截面视图和辅助视图的设计。图形设计的结果保存在图形文件中,图形文件可以包含几何的、正文的和其他各种补充设计信息。例7.1考虑适用于低级CAD的图形软件包CAD软件任务创建二维图形管理图形文件用户界面显示图形任务抽象2:

CAD软件任务;用户界面子任务;创建二维图形子任务;显示图形子任务;管理图形文件子任务;

endCAD.抽象3(仅以“创建二维图形任务”为例)

PROCEDURE创建二维图形

REPEATUNTIL<创建图形任务终止>……ENDREPETITION;ENDPROCEDURE.;DOWHILE<出现与数字仪的交互时>

数字仪接口任务;判断作图请求;线:画线任务;圆:画圆任务;

……END;

DOWHILE<出现与键盘的交互时>

键盘接口任务;选择分析或计算;辅助视图:辅助视图任务;截面视图:截面视图任务;

……END;第6页,共82页,2024年2月25日,星期天数据对象:

TYPEdrawing

ISSTRUCTUREDEFINEDnumberISSTRINGLENTH(12);

geometryDEFINED…notesISSTRINGLENTH(256);

bomDEFINED…ENDdrawingTYPE;数据抽象blueprintISINSTANCEOFdrawing;

或schematicISINSTANCEOFdrawing;

第7页,共82页,2024年2月25日,星期天逐步求精逐步求精为了能集中精力解决主要问题而尽量推迟对问题细节的考虑抽象求精第8页,共82页,2024年2月25日,星期天7.1.3模块化与信息隐藏模块理论依据理想的属性大小I/O、功能,程序、数据程序、程序段、子程序一个功能、易理解、独立例:库存管理系统的模块划分事务接收模块更新库存清单订货处理生成报表例:人事管理系统输入职工档案职工档案管理系统生成职工档案报表系统最小成本区域MO软件总成本用于接口的成本每个模块成本之和模块总数成本或工作量信息隐藏内聚度耦合度分治法:C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2第9页,共82页,2024年2月25日,星期天 有人说,模块化是为了使一个复杂的大型程序能被人的智力所管理,软件应该具备的唯一属性。如果一个大型程序仅由一个模块组成,它将很难被入所理解。下面根据人类解决问题的一般规律,论证上面的结论。 设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。对于两个问题Pl和P2,如果

C(P1)>C(P2)即P1比P2复杂,显然E(PI)>E(P2)即问题越复杂,所需的工作量越大。根据人类解决一般问题的经验,另一个有趣的规律是

C(P1十P2)>C(PI)十C(P2)也就是说,如果一个问题由Pl和P2两个问题组合而成那么它的复杂程序大于分别考虑每个问题时的复杂程度之和。综上所述,得到下面的不等式

E(Pl十P2)>E(PI)十E(P2)第10页,共82页,2024年2月25日,星期天 这个不等式导致“各个击破”的结论——把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。由上面的不等式似乎还能得出下述结论:如果无限地分割软件,最后为了开发软件而需要的工作量也就小得可以忽略了。事实上,还有另一个因素在起作用,从而使得上述结论不能成立。参看上图,当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了;但是,随着模块数目增加,设计模块问接口所需要的工作量也将增加。根据这两个因素,得出了图中的总成本曲线。每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。虽然目前我们还不能精确地决定M的数值,但是在考虑模块化的时候总成本曲线确实是有用的指南。

第11页,共82页,2024年2月25日,星期天信息隐藏模块内所含信息对那些不需要这些信息的模块不可访问,每个模块只完成一个相对独立的特定功能。应用模块化原理时,自然会产生的一个问题是:“为了得到最好的一组模块,应该怎样分解软件呢?”信息隐蔽原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化的概念和信息隐蔽概念是密切相关的。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局部数据元素是局部他的一个例子。显然,局部化有助于实现信息隐蔽。“隐蔽”意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。第12页,共82页,2024年2月25日,星期天信息隐藏如果在测试期间和以后约软件维护期间需要修改软件,那么使用信息隐蔽原理作为模块化系统设计的标准就会带来极大好处。因为绝大多数数据和过程对于软件的其他部分而言是隐蔽的(也就是“看”不见的),在修改期间由于疏忽而引入的错误就很少可能传播到软件的其他部分。第13页,共82页,2024年2月25日,星期天模块独立性(Moduleindependence)好设计的关键:每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。换句话说,希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。模块独立性第14页,共82页,2024年2月25日,星期天为什么模块的独立性很重要呢?主要有两条理由:第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。第二,独立的模块比较容易测试相维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节。模块独立性第15页,共82页,2024年2月25日,星期天独立性的度量:耦合(Coupling)&内聚(Cohesion)模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。以下分别详细阐述。第16页,共82页,2024年2月25日,星期天内聚标志一个模块内各个元素被此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。第17页,共82页,2024年2月25日,星期天低级内聚度(3个)一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。1偶然有时在写完一个程序之后,发现一组语句在两处或多处出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块第18页,共82页,2024年2月25日,星期天一个模块完成的诸任务逻辑上相关

2逻辑读入分数平均/最高?计算平均分计算最高分输出结果例如一个计算全部同学平均分和最高分的模块。无论计算哪种分数,都要经过读入全班学生分数,进行计算,输出计算结果等步骤。实际上除中间的一步须按不同的方法计算外,前、后这两步都是相同的。把这两种在逻辑上相似的功能放在一个模块中,就可以省去程序中的重复部分。缺点是执行中要从模块外引入用作判断的开关键,从而增加了块间的耦合第19页,共82页,2024年2月25日,星期天如果一个模块包含的诸任务必须在同一时间段内执行。例如一个初始化模块3时间A:Readinputsfromdiskfromtapefrom……第20页,共82页,2024年2月25日,星期天在偶然内聚的模块中,各种元素之间没有实质性联系,很可能在一种应用场合需要修改这个模块,在另一种应用场合又不允许这种修改,从而陷入困境。事实上,偶然内聚的模块出现修改错误的概率比其他类型的模块高得多。在逻辑内聚的模块中,不同功能混在一起,合用部分程序代码,即使局部功能的修改有时也会影响全局。因此.这类模块的修改也比较困难。时间关系在一定程度上反映了程序的某些实质,所以时间内聚比逻辑内聚好一些。这三种内聚为低内聚。第21页,共82页,2024年2月25日,星期天中级内聚度(2个)模块内成分彼此相关,并且必须按特定的次序执行4过程enterdatacheckdatamanipulatedata循环体计算累积事务记录累积销售额累积订货量循环传送事务记录给计算累积模块,得到累积订货量之后,也得到了累积销售量。第22页,共82页,2024年2月25日,星期天模块中各成分都将对数据结构的同一区域进行操作,即如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚。5通信模块A从文件FILE读出数据1.由数据产生报表一2.由数据产生报表二开领书单登记售书售书登记表领书单发票修改删除文件第23页,共82页,2024年2月25日,星期天高级级内聚度(2个)模块内的各处理成分均与同一功能相关,且这些处理必须顺序执行6顺序这类模块中的各组成部分是顺序执行的。在通常情况下,上一个处理框的输出就是下一个处理框的输入。建立方程组系数矩阵高斯消除法回代第24页,共82页,2024年2月25日,星期天模块内所有成分形成一个整体,完成单个功能7功能1.输入系数2.求方程的根3.打印方程的根求一元二次方程根的模块第25页,共82页,2024年2月25日,星期天七种“内聚模块”的性能比较

形式评价可修改性可读性黑箱程度通用性偶然最坏最坏最坏黑箱好逻辑最坏最坏不好不完全黑好时间不好不好中不完全黑中过程中中中半透明不好通信中中中半透明不好顺序好好好透明最坏功能好好好透明最坏第26页,共82页,2024年2月25日,星期天耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。在软件设计中应该追求尽可能松散耦合的系统。在这样的系统中可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解。此外,由于模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小。因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。GreatdealofdependenceIndependentHighlycoupled

LooselycoupledUncoupled

第27页,共82页,2024年2月25日,星期天模块间的耦合

耦合:表示一个软件结构内各个模块之间的互连程度,尽量选用松散耦合的系统1.非直接耦合:两个模块中任一个,都不依赖于对方能独立工作。如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们彼此完全独立,这意味着模块间无任何连接,耦合程度最低,模块的独立性最高。见图中的模块1和模块2的关系。它们之间是同级模块,互相之间没有信息的传统。但是,在一个软件系统中不可能所有模块之间都没有任何连接。1.非直接耦合--—2.数据耦合模块1模块2非直接耦合模块3第28页,共82页,2024年2月25日,星期天模块间的耦合1.非直接耦合--—2.数据耦合2.数据耦合两个模块间通过参数交换信息,而信息仅限于数据开发货单计算金额单价数量金额第29页,共82页,2024年2月25日,星期天3.特征耦合计算水费和电费计算水费计算电费住户详情水费住户详情电费计算水量和电费计算水费计算电费水费电费本月用水量本月用电量

住户详情数据结构中包括:

“本月用水量”、“本月用电量”。“特征耦合”图可改进“数据耦合”图如果两个模块都与同一个数据结构有关,则为特征耦合。第30页,共82页,2024年2月25日,星期天4.当模块A向模块B所传递的信息控制了B的内部逻辑。4.控制耦合读入分数平均/最高?计算平均分计算最高分输出结果当调用这一模块时,调用模块必须先把一个控制信号(平均分/最高分)传递给它,以便选择所需操作。因此必须知道被控模块的的内部结构,从而增加了模块间的相互依赖。第31页,共82页,2024年2月25日,星期天5.外部耦合5.若干模块均与同一个外部环境关联。如:I/O、格式、通信协议。一组模块都访问同一全局变量而不是同一全局数据结构就是外部耦合。第32页,共82页,2024年2月25日,星期天

6.公共耦合----7.内容耦合(病态耦合)6.如果两个模块都和同一个公共数据域有关,即一组模块都访问同一全局数据结构就是公共耦合ABC公用数据第33页,共82页,2024年2月25日,星期天7.一个模块和另一个模块的内部属性有关(运行程序和内部数据)。如:一个模块使用另一个模块内部的数据或控制信息;一个模块直接转移到另一个模块。模块A中TRC:模块B中GOTOTRC第34页,共82页,2024年2月25日,星期天设计模块时,应以数据耦合为主,辅以特征耦合与控制耦合,消除公共耦合和内容耦合。七种“耦合模块”的性能比较

耦合方式对连锁反应的影响可修改性可读性通用性非直接弱好好好数据弱好好好特征弱中中中控制中不好不好不好外部中不好不好不好公共强不好最坏最坏内容最强最坏最坏最坏第35页,共82页,2024年2月25日,星期天耦合、内聚与模块独立性的关系第36页,共82页,2024年2月25日,星期天7.1.4软件总体结构设计(softwarearchitecture)目标:模块化的程序结构、明确各模块之间的控制关系、说明程序的输入输出数据流、进一步协调程序结构和数据结构。软件结构组成系统中所有过程性部件(即模块)构成的层次结构(即程序结构)对应于程序结构的输入输出数据结构第37页,共82页,2024年2月25日,星期天结构设计原则第38页,共82页,2024年2月25日,星期天结构设计原则2.模块规模适中:过大不易理解;太小则接口开销过大。注意分解后不应降低模块的独立性。提高模块独立性争取低耦合、高内聚(增加内聚>减少耦合)第39页,共82页,2024年2月25日,星期天

深度=分层的层数。过大表示分工过细。

宽度=同一层上模块数的最大值。过大表示系统复杂度大。3.选择适当的深度、宽度、扇出和扇入第40页,共82页,2024年2月25日,星期天

扇出=一个模块直接调用\控制的模块数。3fan-out9AA的扇出AA的扇入

扇入=直接调用该模块的模块数在不破坏独立性的前提下,fan-in

大的比较好。第41页,共82页,2024年2月25日,星期天4作用域在控制域内MACB例如:M的控制域为{M,A,B,C}

模块控制域:模块本身和其下级模块(即可供它调用的模块)模块作用域:受这个模块中判定所影响的模块。本规则的含义是:(1)作用域不要超出控制域的范围(2)软件系统的判定,其位置离受它控制的模块越近越好第42页,共82页,2024年2月25日,星期天A:

…………if……thengotoB1……………………B:……………………B1:……………………作用域在控制域内A:…………if……thengotoM1……………………M:……………………M1:gotoC1……………………作用域超出了控制域上例右边中A的作用超出了控制域。改进方法之一,可以把A中的if

移到M中;方法之二,可以把C移到A下面。第43页,共82页,2024年2月25日,星期天5、降低接口的复杂程度:接口复杂可能表明模块的独立性差。6、单出单入,避免内容耦合。7、模块功能可预测——相同输入必产生相同输出。反例:模块中使用全局变量或静态变量,则可能导致不可预测。第44页,共82页,2024年2月25日,星期天7.2软件过程设计技术和工具结构化程序设计是程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制构件。

结构化设计图形表示法盒图流程图判定树判定表7.2.1结构化程序设计第45页,共82页,2024年2月25日,星期天7.2.2图形表示法1.流程图(也称为程序框图)是最常用的一种表示法,“顺序”、“分支”和“循环”三个基本控制构件用流程图表达的形式如图8-2-1所示。F第二个任务顺序结构then部分else部分do‑while循环第一个任务T分支条件If‑then‑else结构循环条件循环体TF图8-2-1流程图构件第46页,共82页,2024年2月25日,星期天7.2.2图形表示法2.盒图也称为N-S图或Chapin图。这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。第一个任务第二个任务第三个任务顺序结构else部分then部分条件FTif-then-else结构do-while部分循环条件循环结构图8-2-3盒图的构件第47页,共82页,2024年2月25日,星期天3.PAD图问题分析图(ProblemAnslysisDiagram,简称PAD图),是由日本日立公司的二村良彦等人于1973年提出的,它用二维树图形表示程序流程,是一种改进的图形描述方式,完全支持SP方法。近年来在软件开发中得到了广泛使用,并且越来越受到人们的赞赏。

PAD因的基本符号见下图。第48页,共82页,2024年2月25日,星期天第49页,共82页,2024年2月25日,星期天与其它的详细设计描述工具相比,问题分标图具有以下优点:(1)用PAD图表达的程序过程呈树形结构,这种图容易翻译成程序代码。(2)用PAD图描绘的程序结构清晰。图中最左边的竖线是程序的主线,表示第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。(3)用PAD图表达程序逻辑,易读、易懂、易记。PAD图是二维树形结构,从图中最左边的竖线上端的结点开始,自上而下、自左至右顺序执行,遍历所有的结点。第50页,共82页,2024年2月25日,星期天(4)PAD图既可描述程序,又可描绘数据结构。(5)PAD图完全支持自顶向下、逐步求精的结构化方法。开始设计时设计者可以定义一个抽象的程序,随着设计工作的深入,通过使用定义符号(def)逐步增加细节,直到完成详细设计。(6)沿着PAD的外边轮廓机械地走一遍,俗称“走树”,可以方便地实现编程。这步工作可由人工完成,也可以利用PAD自动生成程序完成。PAD图为COBOL、FORTRAN和PASCAL等高级语言都提供了一套相应的图形符号,每种控制语句都有一个图形符号与之对应。所以,很容易将PAD图转换成高级语言源程序。这是PAD图的最大的优点之一。第51页,共82页,2024年2月25日,星期天7.2.3判定表与判定树判定表由四部分组成:左上部列出所有条件左下部列出所有可能的动作右上部所有可能的条件组合(矩阵)右下部条件组合与动作之间的对应关系用于:条件复杂,根据这些条件的组合选择动作判定表的每一列可解释为一条处理规则第52页,共82页,2024年2月25日,星期天7.2.3判定表与判定树【例7.2】问题处理描述:耗电记费系统可以采用固定价格收费、浮动价格收费和其他方式收费三种方式。若采用固定价格方式收费,对每月耗电100kW•h以下的用户只征收最低标准费,超过100kW•h的用户按价格A收费;若采用浮动价格方式收费,则每月耗电100kW•h以下的用户按价格A收费,超过100kW•h的用户按价格B收费。第53页,共82页,2024年2月25日,星期天表7‑1判定表规则12345固定价格方式浮动价格方式耗电<100kW.h

耗电≥100kW.hTFTFTFFTFTTFFTFTFF收取最低标准费按价格A收费按价格B收费其他处理√√√√√条件动作第54页,共82页,2024年2月25日,星期天【例7.2】判定树

耗电<100kW·h—收取最低标准费固定方式耗电≥100kW·h—按价格A收费耗电<100kW·h—按价格A收费耗电收费浮动方式耗电≥100kW·h—按价格表B收费其他方式—其他处理图8-2-5用判定树表示计算耗电收费的算法第55页,共82页,2024年2月25日,星期天7.2.3判定表与判定树判定树的优点:形式简单,直观明了,易于掌握。判定树的缺点:①存在着数据冗余的问题,相同的数据元素往往要重复多次,而且越接近树的叶端重复的次数越多。②判定树要求对条件进行层次划分,若条件所处层次不对,可能会导致增加判定树的复杂性。第56页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)PDL(ProcedureDesignLanguage)也称为结构英语或伪码,是所有正文形式的过程设计工具的统称。PDL经常表现为一种“混杂”的形式,允许自然语言(如英语)的词汇与某种结构化程序设计语言(如Pascal、C、Ada等)的语法结构交织在一起第57页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)PDL应具有下述特点:1.关键字采用固定语法并支持结构化构件、数据说明机制和模块化;2.处理部分采用自然语言描述;3.允许说明简单(标量、数组等)和复杂(链表、树等)的数据结构;4.子程序的定义与调用规则不受具体接口方式的影响。第58页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)考察一个PDL的原型,它可以建立在任意一个通用的结构化程序设计语言之上。基本成分包括:子程序定义、界面描述、数据说明、块结构、分支结构、循环结构和I/O结构。数据说明的形式为:

TYPE<变量名>IS<限定词1><限定词2>其中:<变量名>——局部变量或全局变量;<限定词1>——某个特定关键字(例如,SCALAR,ARRAY,LIST,STRING,STRUTURE等);<限定词2>——说明此处定义的变量在该过程或整个程序中应如何使用。第59页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)可进行抽象数据类型的定义,例如:TYPEtable_1ISINSTACEOFsymbol_table而symbol_table在另一处已定义如下:TYPEsymbol_tableISSTRUCTUREDEFINED第60页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)该PDL的块结构描述一个过程元素,即一个块内的所有语句将作为一个整体执行,形式为

BEGIN[<块名>]<语句序列>END该PDL的分支结构有if-then-else和case两种形式,分别为

IF<条件描述>THEN<块结构或语句>ELSE<块结构或语句>ENDIF第61页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)CASEOF<情况变量名>WHEN<第1种情况>SELECT<块结构或语句>WHEN<第2种情况>SELECT<块结构或语句>…WHEN<最后一种情况>SELECT<块结构或语句>DEFAULT:<块结构或语句>ENDCASE第62页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)循环结构包括三类,表达形式分别为:DOWHILE<条件描述><块结构或语句>ENDWHILEREPEATUNTIL<条件描述><块结构或语句>ENDREPEATDOFOR<循变>=<循变取值范围,表达式或序列><块结构或语句>ENDFOR第63页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)此PDL还提供了NEXT和EXIT两种语句:

EXIT语句,退出本层循环;

NEXT语句强迫本次循环结束,新一轮循环开始。在该PDL中,子程序说明为:

PROCEDURE<子程序说明><属性表>INTERFACE<参数表><块结构或语句序列>END

其中属性表指明该子程序的引用特性(比如,是INTERNAL还是EXTERNAL模式)和其他依赖于实现(即程序设计语言)的特性。第64页,共82页,2024年2月25日,星期天7.2.4过程设计语言(PDL)输入/输出说明部分常用的形式有

READ/WRITETO<设备><I/O表>

ASK<询问>ANSWER<响应选择项>

后一种形式多用于人机交互部分的设计。第65页,共82页,2024年2月25日,星期天7.3设计规格说明与评审软件设计阶段的输出主要是设计规格说明书:第一节:描述与设计活动有关的各个方面,该节中许多信息取自系统规格说明书和系统定义阶段产生的其他文档。第二节:具体指明引用信息的出处。第三节:设计描述,是概要设计的产物,此时设计由信息驱动,即软件总体结构主要受数据流程、数据结构的影响,需求分析时产生的DFD或其他某种形式的数据表示将在这一节中进一步精化,用于确定软件结构。当信息流程确定后,界面亦可作为整个软件的一部分进行描述。第66页,共82页,2024年2月25日,星期天7.3设计规格说明与评审第四、五两节是概要设计向详细设计过渡后形成的。第四节:模块指软件中可单独编址的部件,如函数和过程,最初用自然语言描述它们的功能,随后采用某种过程设计工具将这些自然语言描述转换为结构化描述。第五节:主要描述数据组织结构,包括辅存的文件结构、全局数据(例如FORTRAN公共区)的赋值以及这些文件与全局数据的交叉访问关系。第67页,共82页,2024年2月25日,星期天7.3设计规格说明与评审第六节:是与需求规格说明书的交叉访问表,根据交叉访问表可断定设计是否满足所有需求,这对于完成某个具体需求的模块来说十分重要。第七节:是测试的初步计划。一旦软件结构和模块间界面确定下来之后,即可制定模块单元测试和联调的计划。某些场合,要求同时开发测试规格说明书与设计规格说明书,此时第七节可从设计规格说明书中删去。第八节:将逐条说明各种限制和造成的影响。第九、十两节:包括若干辅助数据,如从其他文档中节选的算法描述、候选的过程、表格化数据和其他相关信息,这些信息是对设计的一种特殊注释最后开发一基本操作规格说明或安装手册作为附录。第68页,共82页,2024年2月25日,星期天设计规格说明书示例Ⅰ.作用范围

A.系统目标

B.硬件、软件和人机界面

C.主要的系统功能

D.外部数据库定义

E.主要的设计约束和限制Ⅱ.文档

A.现有的软件文档

B.系统文档

C.卖主(硬件的和软件的)的有关文档

D.技术参考书第69页,共82页,2024年2月25日,星期天设计规格说明书示例Ⅲ.设计描述

A.数据描述

1.数据流复审

2.数据结构复审

B.导出的程序结构

C.结构之间的界面第70页,共82页,2024年2月25日,星期天设计规格说明书示例Ⅳ.模块描述;针对每个模块给出

A.处理过程陈述

B.接口描述

C.设计语言(或其他形式)描述

D.引用的模块

E.数据组织

F.注释第71页,共82页,2024年2月25日,星期天设计规格说明书示例Ⅴ.文件结构及全局数据

A.外部文件结构

1.逻辑结构

2.逻辑记录描述

3.访问方式

B.全局数据

C.文件与数据的交叉访问表Ⅵ.需求交叉访问矩阵第72页,共82页,2024年2月25日,星期天设计规格说明书示例Ⅶ.测试准备

A.测试指南

B.集成策略

C.特殊考虑Ⅷ.装配

A.特殊的程序覆盖要求

B.转换方面的考虑Ⅸ.特别注释Ⅹ.附录第73页,共82页,2024年2月25日,星期天概要设计阶段的文件主要是概要设计说明书,又称为系统设计说明书。编写本说明的目的,是说明对程序系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织机构、功能分配、模块划分、接口设计、运行设计、数据结构设计和出错处理设计等,为系统的详细设计打下基础。概要设计说明书是概要设计阶段结束时提交的技术文档。除了概要设计说明书之外,还有用户手册、测试计划等文件。见下表第74页,共82页,2024年2月25日,星期天概要设计说明书1引言1.1目的1.2背景1.3定义1.4参考资料2概要设计

2.1需求规定

2.2运行规定

2.3基本设计原则与处理流程

2.4结构

2.5功能需求与程序关系

2.6人工处理过程

2.7未解决问题3接口设计

3.1用户接口(用户界面)

3.2内部接口(模块间)

3.3外部接口(软硬件间)4运行设计

4.1运行模块组合

4.2运行控制

4.3运行时间5数据结构设计

5.1

温馨提示

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

最新文档

评论

0/150

提交评论