SE06-瀑布模型-设计过程_第1页
SE06-瀑布模型-设计过程_第2页
SE06-瀑布模型-设计过程_第3页
SE06-瀑布模型-设计过程_第4页
SE06-瀑布模型-设计过程_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

设计工程总体设计详细设计设计设计是将问题转换成解决方案的创造性过程。满足需求规格说明中所有需求的设计,就是一个可行的解决方案要从假设干可行方案中选择一种适宜的方案设计分概要设计和详细设计后者是前者的细化概要设计、系统设计、总体设计的含义一样介绍做什么详细设计、技术设计的含义一样介绍怎么做区别概念设计与技术设计的区别概念设计:客户可解读系统的外部特征详细设计:开发人员可解读系统的内部特征与解决方案概要设计需解决的问题数据来自哪里系统中的数据会发生什么情况对用户来说,系统将会怎样向用户提供的选择有哪些事件的计时是什么报表和屏幕是什么样的等等详细设计需解决对主要硬件局部及其功能描述软件构件的层次和功能数据结构和数据流硬件配置、软件需求、通信接口、系统的输入输出、网络体系结构等两者可以综合在一个文档中不在一个文档中时,需保持二者的联系系统区分方式面向对象设计OODOOA、OOD、OOP、OOT根本上是迭代进行的面向结构设计SDSA、SD、SP和ST根本是顺序进行的混合方式OO与S的混合使用SA/OOA+OOD/SD+OOP/SP+OOT/STSD总体设计决定“怎么做”系统设计,确定系统的具体实现方案。将系统划分成组成系统的物理元素——程序、文件、数据库、人工过程和文档设计软件的结构:确定系统中每个程序由那些模块组成,以及这些模块之间的关系SD总体设计过程设想供选择的方案选取合理的方案推荐最正确方案功能分解DFDIPO的细化设计软件结构数据库设计制定测试方案书写文档系统说明用户手册测试方案详细地实现方案数据库设计结果审查和复查SD总体设计过程设想供选择的方案寻找实现目标系统的各种不同的方案,并力求从中选出最正确方案可能的方法是:将DFD中某些处理按逻辑地放在一个自动化边界内作为一组,对处理进行各种分组,抛弃在技术上行不通的分组方法,余下的分组方法,不同的自动化边界分法意味着不同的实现策略。选取合理的方案低、中、高本钱三种方案系统流程图+物理元素清单+本钱/效益分析+进度方案翻译分析模型到设计数据字典ERDDFDSTDPSPECCSPECDSDS

数据对象描述STD

状态变迁图PSPEC

加工规约CSPEC

控制规约过程设计接口设计体系结构设计数据设计设计原那么设计过程不应该受“隧道视野”的限制设计对于分析模型来说应是可跟踪的设计不应该从头做起设计应该缩短软件和现实世界中问题的距离应表现出一致性和集成性应该被构造以适应变更设计不是编码,编码也不是设计在创立设计时就应该能够评估质量,而不是在事情做完之后应该评审设计以减少概念性错误设计概念每一种概念都为设计者提供了应用更加复杂的设计方法的根底模块化抽象求精详细描述的过程信息隐蔽和局部化软件体系结构控制层次结构划分数据结构软件过程软件工程师的智慧的开始表达于识别使程序工作和使程序正确之间的区别复杂问题简单C(x)复杂度E(x)工作量

IfC(P1)>C(P2)ThenE(P1)>E(P2)

C(P1+P2)>C(P1)+C(P2)

E(P1+P2)>E(P1)+E(P2)本钱/模块集成本钱总本钱分解与模块化模块化分解将功能分配给构件/模块功能的高层描述

给出每个构件及构件间连接的低层说明面向数据的分解依据外部数据结构高层描述总体数据结构

低层包含的数据元素及相互关系面向事件的分解基于系统必须处理的事件,事件改变系统状态例:消息处理机制,Windows高层对状态分类

低层描述状态如何转移由外到内的设计面向对象的设计分解与模块化模块化分解面向数据的分解面向事件的分解由外到内的设计黑盒法,基于系统输入输出高层描述所有可能输入

低层描述如何处理每个输入,并产生相应输出面向对象的设计对象的类及相互关系高层描述对象类型

低层讨论对象属性和动作,并解释对象间如何交互分解与模块化环境集成的NIST/ECMA参考模型与客户打交道,此模型OK设计人员还不能设计体系结构与策略完成任务/设计的3个层次体系结构设计将SRS中确定的系统能力与实现这些能力的构件关联起来;构件多为模块;体系结构还定义从子系统创立系统的相关操作代码设计含算法和数据结构;其构件是编程语言原语、数据操纵原语以及组装机制可执行设计静态层次处理代码设计,讨论内存分配、数据格式等设计方式自顶向下先体系结构,再代码设计,最后可执行设计正常情况下,是往返于上述各层之间〔类似迭代〕例如表驱动〔时间响应〕数组驱动体系结构分类管道和过滤器面向对象隐含调用分层信息库解释器过程控制C/SB/S管道和过滤器过滤器,输入到输出的转换过滤器不了解整体系统输出的正确性不依赖与过滤器使用的顺序过滤器是线性顺序的编译器可使用此模型词法分析语法分析语义分析代码生成管道和过滤器特性设计人员能理解整个系统对输入输出的影响容易将过滤器复用到其他系统〔用管道连接〕系统演化简单〔增删过滤器容易〕过滤器独立性,可模拟系统行为允许过滤器并发执行缺点鼓励使用批处理不善于处理交互式应用两个数据流相关时,系统需维护其对应关系过滤器独立性意味着可能需处理其他过滤器已处理的功能,对性能有影响的代码将相当复杂例:处理日期面向对象的设计需求按对象和其抽象〔类〕来组织设计围绕抽象数据类型来构造构件对象需保证数据表示的完整性数据表示对其他对象是隐藏的对象之间交互时,需知道其他对象的标识相互联系增加,不独立分层每一层为外层提供效劳,同时又是内层的客户每层可访问局部或所有层;每层仅能访问相邻层较好利用了抽象的概念层次结构的协调会影响效率文件平安性的系统信息库中心数据存储和其上的存储、检索与更新系信息的构件集两种类型构件的交互事物以输入流的形式触发进程黑板系统,中心数据存储控制进程的触发信号处理和模式识别多用此模式例子 可复用构件库大型数据库搜索引擎黑板系统难处为共享解释器读入一串字符〔伪代码〕,将其转换成可随后执行的实际代码组成内存解释引擎解释引擎的当前状态正被模拟的程序的当前状态Shell编程,matlab语言,basic语言解释器例子过程控制三个局部别离计算元素:过程与控制别离数据元素:控制循环方案:分布式系统C/SB/S抽象过程抽象数据抽象控制抽象模块化计算机中的设计三个芯片构建的左图另外三个芯片构建的左图模块化模块执行一个或一系列操作,并与其他模块相连模块化的要求模块可分解性模块可组装性模块可理解性以独立单位可被理解,那么易于构造和修改模块连续性对系统微小变更只需修改单个模块模块保护异常情况的影响限制在模块内部模块的关系模块间的耦合程度——越低越好(高)内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、无耦合(低)面向对象设计的构件多有低耦合度模块内的内聚程度——越高越好(高)功能内聚、顺序内聚、通信内聚、过程内聚、时态内聚、逻辑内聚、偶然内聚(低)耦合内容耦合:一个修改另一个访问另一个模块内部数据不通过正常入口而转到另一个模块内部两模块有程序代码重迭有多个入口例P修改q的一条语句P依据q中的数值位移来访问q的局部数据P跳到q中的一个局部标签耦合公共(环境)耦合通过公共环境相互作用缺陷代码不可读耦合控制耦合通过参数交换信息,含有控制信息数据耦合通过参数交换信息,且交换的仅仅是数据无耦合耦合举例qrstUP数据数据公共公共Q控制数据RS数据数据t公共耦合独立工作通过参数交换信息,且交换的仅仅是数据数据耦合交换信息,且交换的仅仅是数据结构自身标记耦合通过公共环境相互作用公共环境耦合内容耦合:一个修改另一个访问另一个模块内部数据不通过正常入口而转到另一个模块内部两模块有程序代码重迭有多个入口耦合两个模块间有依赖关系对一个软件结构内部不同模块之间的互连程度的度量耦合的强弱取决于模块间接口的复杂程度、进入或访问一个模块的点,通过接口的数据耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性耦合程度一个构件引用另一个构件一个构件传递给另一个构件的数据量某个构件控制其他构件的数量构件之间接口的复杂程度尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合内容耦合公共耦合内聚标志模块内部个元素彼此结合的紧密程度偶然内聚逻辑内聚时间内聚过程内聚通信内聚顺序内聚功能内聚力求做到高内聚高低内聚程度内聚偶然内聚构件各个局部不相关,只是出于方便或偶尔的原因,处于统一构件中逻辑内聚逻辑相关的功能或数据元素处于同一构件其元素是功能不相关时间内聚构件顺序执行的功能,具有时间相关性〔如顺序〕过程内聚必须按照某个顺序执行一系列功能,构件中的功能组合仅是为确保该顺序,那么该构件是过程内聚的例,输入数据,检查,操作数据内聚通信内聚将某些功能关联起来,仅因为他们操作或生成同一数据集,那么称为通信内均会破坏设计的模块化和功能独立性顺序内聚构件的某局部输出是下一局部的输入,那么该构件是顺序内聚功能内聚构件中的每个处理元素对于执行的单个功能是必须的,且在一个构件中包含了所有必须的元素其他改进软件结构,降低模块间耦合程度改进软件结构提高模块独立性模块规模适中深度、宽度、扇入和扇出都应适中模块的作用域应该在控制域之内力争降低模块接口的复杂程度设计单输入单输出的模块模块功能应该可以预测带内部“存储器”的模块的功能有可能不可预测MAGBCDEF规模适中7,2规那么规则7-277+2模块数781137,25748,427,651代码行62,48010,980,5603,874,204,880每模块以80代码行计OperatingSystemSLOC(Million)Debian2.255-59Debian3.0104Debian3.1215Debian4.0283Debian5.0324OpenSolaris9.7FreeBSD8.8MacOSX

10.486Linuxkernel

2.6.05.2Linuxkernel

2.6.2911.0Linuxkernel

2.6.3212.6Linuxkernel

2.6.3513.5YearOperatingSystemSLOC(Million)1993WindowsNT3.14-51994WindowsNT3.57-81996WindowsNT4.011-122000Windows2000>

292001WindowsXP452003WindowsServer200350图形工具层次图功能性HIPO图层次图+IPO每个功能框均有IPO图与之对应结构图带箭头的线表示调用关系带注释表示调用过程中传递的信息O表示数据,●表示控制产生最佳解得到好输入计算最佳解输出结果获得输入输出结果输出结果输出结果面向数据流的设计方法变换流与事务流T时间信息内部表示外部表示变换流输入流输出流活动通路事务变换流事务流变换型映射DesignCmCtCaCe事务型映射DesignDGFE总控E调度DGA-CTLB-CTLC-CTLF接收通路C通路B通路A通路设计过程精化数据流图流类型区分事务中心和数据接收通路区分输入和输出分支映射成事务结构映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计设计优化尽早对软件结构进行精化。这是把软件结构设计和程序设计分开的优点之一优化的原那么是有效的模块化的前提下使用尽量少的模块,以及在能够满足信息要求的前提下使用最简单的数据结构时间起决定性作用的软件可以使用一下方法优化在不考虑时间因素的前提下开发并精化软件结构在详细设计阶段选出最耗时的那些模块,仔细设计它的处理过程使用高级程序设计语言编程软件中孤立出那些占用大量资源的模块必要时重新设计或用依赖于机器的语言重写上述大量占用资源的模块的代码先使它工作,再使它快起来DFD

结构图键盘与用户交互处理密码配置系统激活/停止系统显示信息和状态配置信息总体设计详细设计详细设计具体地实现所要求的系统逻辑上正确地实现每个模块的功能,重要的是设计出的处理过程应该尽可能简明易懂模块来自于系统设计在编码阶段只要对本阶段得到的对系统的精确描述,翻译成某种程序设计语言书写的程序不是写程序,而是设计程序的“蓝图”工具程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制,而不是程序的全局结构程序流程图中的箭头代表控制流,可以随意转移控制不易表示数据结构工具NS图(Nassi-Shneiderlman)功能域明确不能随意转移控制容易确定局部和全局数据的作用域易表现嵌套关系,也可表示模块的层次结构任务1任务2任务3条件Thenelse部分部分TF循环条件DoUntil部分Dowhile部分循环条件工具PAD图(ProblemAnalysisDiagram)结构化控制结构程序结构清晰程序逻辑易读易懂易记易转换成高级语言可表示数据结构支持自顶向下逐步求精方法P1P2P3P4P5CP2P6P7WhileC3P10defUntilC2P8C1P9IPO表系统:模块:编号:作者:日期:被调用:调用:输入参数:输出参数:处理:局部数据元素:注释:IPO表描述算法工具判定表多重嵌套时使用,可以简洁而无歧义的描述判定规那么与卡诺图或布尔代数结合起来,可以教研或简化判定表判定树针对判定表的含义不直观的修正判定表123456789国内乘客TTTTFFFF头等舱TFTFTFTF残疾乘客FFTTFFTT行李重量w≤30TFFFFFFFF免费○(w-30)x2○(w-30)x3○(w-30)x4○○(w-30)x6○○(w-30)x8○(w-30)x12○条件可能的动作条件组合工具过程设计语言PDL(ProcessDesignLanguage)具有严格的关键字外部语法,定义控制结构和数据结构内部的实际操作和条件语言是灵活自由的评价评价标准模块性整体简单性易编辑性机器可读性可维护性结构增强性自动处理能力数据表示逻辑验证“面向代码”能力PDL最好的组合流程图和NS图易看清控制流PAD决策树与决策表是表驱动应用的理想工具其他问题界面的设计并发性设计模式与复用异常标识和处理防错和容错技术改进设计技术设计的评估和确认文档化设计界面的设计文化用户偏爱用户界面特性的指导原那么并发性并发处理的要求共享状态等计时、同步、进程优先权等将并发的正确性转换成决定性问题监控器控制特定进程互斥的对象或构件M是进程P的监控器,A要调用P,那么通过M进行调用,此时B也希望调用P,那么M将B挂起,直到A执行完P,再激活B,使其执行P守护者是永远在运行的任务,目的是控制对封装资源的访问有个条件检查器,进行访问控制的决策G是资源R的守护者,任务T要使用R,需向G发请求,G立即挂起T,直到条件检查器报告条件满足,然后G相应请求设计模式与复用设计或构造的某些系统与以前的系统类似复用这些模式设计模式:命名、抽象并标识公共设计结构的主要方面,使其可用于创立可服用的设计。设计模式标识参与的类和实例,他们的角色和协作以及责任的分配异常标识和处理典型的异常无法提供一种效劳提供了错误的效劳或数据破坏了数据处理方法重试,恢复到前一状态,尝试不同策略执行效劳改正,恢复到前一状态,改正某些方面,尝试同一策略再执行一次报告,恢复到前一状态,向错误处理构件报告问题,不再提供效劳捕获异常校验和以及检查数字,以便双重检查数据和计算的正确性冗余连接,包括前向和后向指针计时器防错和容错技术主动故障检测被动检测主动检测质疑尽快处理冗余故障改正容错对故障造成的损害进行隔离改进设计技术降低复杂性判定表可依据卡诺化简进行简化处理按合同设计原型化设计故障树分析自己查资料看设计的评估和确认确认是确保设计满足用户需求验证是确保设计的质量测量设计质量度量结构复杂度复杂度C=S+D结构复杂度S=(1/n)∑f2(i)数据复杂度D=V(i)/[f(i)+1]f(i)构件i的扇出V(i)构件i中输入和输出变量数n构件数设计复杂性占故障变化率的69%千行代码每增加1%复杂性,增加0.4%故障千行代码中故障数与C的关系1

温馨提示

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

评论

0/150

提交评论