《软件工程概要设计课件.ppt》由会员分享,可在线阅读,更多相关《软件工程概要设计课件.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七讲第七讲 概要设计概要设计了解了解软件件设计工程及其研究内容工程及其研究内容理解概要理解概要设计的主要内容的主要内容理解概要理解概要设计的的过程程掌握概要掌握概要设计主要原主要原则理解体系理解体系结构构设计掌握模掌握模块划分特征划分特征掌握掌握层次次图软软件生命周期件生命周期需求分析需求分析问题定定义可性行研究可性行研究计划划时期期概要概要设计详细设计详细设计编 码 测测 试试开开发时期期运行与运行与维护运运 行行时 期期设计人人员把分析的把分析的结果果设计图纸程序程序员拿着拿着设计图纸编写代写代码需求规格说明书概要概要设计设计图纸-软件件结构构图模模块4设计详细设计需求分析成果软软件件设
2、计设计工程工程v设计工工程程就就是是把把需需求求分分析析过程程中中确确定定下下来来的的用用户需需求求定定义书(What=(What=做做什什么么)变为能能够进行行实际操作的操作的设计说明明书(How=How=怎怎样做)的工程。做)的工程。v设计工程是一个将系工程是一个将系统的需求的需求规格格转换成成软件件系系统的的说明明过程。程。v从多个可能的思路中找到最佳的解决方案。其从多个可能的思路中找到最佳的解决方案。其任任务包括构建系包括构建系统框架,框架,设计系系统功能,描述功能,描述系系统流程,建立系流程,建立系统的数据模型、接口模型及的数据模型、接口模型及界面模型,形成系界面模型,形成系统的的逻
3、辑结构,告构,告诉程序程序员软件系件系统应该“怎怎样做做”。n从工程管理角度来看,软件设计分两步完成:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计和详细设计。n概要设计概要设计将软件需求将软件需求转化为软件体系结构转化为软件体系结构确定系统级接口确定系统级接口全局数据结构或数据库模式。全局数据结构或数据库模式。n详细设计详细设计确立每个模块的实现算法和局部数据结构确立每个模块的实现算法和局部数据结构用适当方法表示算法和数据结构的细节用适当方法表示算法和数据结构的细节v软件件设计是后是后续开开发步步骤及及软件件维护工作的基工作的基础。如果没有如果没有设计,只能建立一个不,
4、只能建立一个不稳定的系定的系统结构。构。设计设计编码编码测试测试维护维护测试测试编码编码维护维护有软件设计有软件设计 没有软件设计没有软件设计Windows NT的一位系的一位系统设计师拥有有8辆法拉利跑法拉利跑车,让Microsoft公司的一些程序公司的一些程序员十分眼十分眼红。但。但你只能羡慕而不能你只能羡慕而不能愤恨,因恨,因为并不是每个程序并不是每个程序员都都有本事成有本事成为复复杂软件系件系统的的设计师。系。系统设计要比要比纯粹的粹的编程困程困难得多。即便你清楚客得多。即便你清楚客户的需求,却的需求,却未必知道未必知道应该设计什么什么样的的软件系件系统既能既能挣最最多的多的钱又能又能
5、让客客户满意意研究内容研究内容v主要内容:体系主要内容:体系结构构设计、模、模块设计、数据、数据结构与算法构与算法设计、用、用户界面界面设计v体系体系结构构就如同人的骨架。如果某个家伙的骨架是猴就如同人的骨架。如果某个家伙的骨架是猴子,那么无子,那么无论怎怎样喂养和美容,喂养和美容,这家伙始家伙始终都是猴子,都是猴子,不会成不会成为人。人。v模模块就如同人的器官,具有特定的功能。人体中最出就如同人的器官,具有特定的功能。人体中最出色的模色的模块设计之一是手,手只有几种之一是手,手只有几种动作,却能做无作,却能做无限多的事情。限多的事情。研究内容研究内容v数据数据结构与算法构与算法就如同人的血脉
6、和神就如同人的血脉和神经,它,它让器官具有生器官具有生命并能命并能发挥功能。数据功能。数据结构与算法分布在体系构与算法分布在体系结构和模构和模块中,它将中,它将协调系系统的各个功能。的各个功能。人的耳人的耳朵和嘴巴和嘴巴虽然是相然是相对独立的器官,但如果耳独立的器官,但如果耳朵失失聪了,嘴巴了,嘴巴就只能就只能发出出“啊啊”“”“呜”的声音,等于的声音,等于丧失了失了说话的功能(所以的功能(所以聋子天生就是子天生就是哑巴),可人巴),可人们却又能用手却又能用手势代替代替说话。v用用户界面界面就如同人的外表,最容易就如同人的外表,最容易让人一人一见钟情或一情或一见恶心。象人心。象人类追求心灵美和
7、外表美那追求心灵美和外表美那样,软件系件系统也追求也追求(内在的)功能(内在的)功能强大和(外表的)界面友好。大和(外表的)界面友好。研究内容研究内容v在在进行系行系统设计时,我,我们要深情地关注要深情地关注软件的件的质量因量因素素,如正确性与精确性、性能与效率、易用性、可理,如正确性与精确性、性能与效率、易用性、可理解性与解性与简法性、可复用性与可法性、可复用性与可扩充性等等。充性等等。v即使把系即使把系统设计做好了,也并不意味着就能做好了,也并不意味着就能产生好的生好的软件系件系统。在程序。在程序设计、测试、维护等等环节还要做大要做大量的工作,无量的工作,无论哪个哪个环节出了差出了差错,都
8、会把好事搞,都会把好事搞砸了。了。据据说上帝把所有的女士都上帝把所有的女士都设计成天使,可是天使成天使,可是天使们在下凡在下凡时有些双脚先着地,有些有些双脚先着地,有些脸先着地。上帝的先着地。上帝的这一疏忽一疏忽让很多女很多女孩孩伤透了心。透了心。v我我们在开在开发软件件时,一定要吸取,一定要吸取这个教个教训。概要概要设计设计v概要概要设计的主要任的主要任务是把需求分析得到的模型是把需求分析得到的模型转换为软件件结构和数据构和数据结构构。v设计软件件结构构的具体任的具体任务是:将一个复是:将一个复杂系系统按功能按功能进行模行模块划分、建立模划分、建立模块的的层次次结构及构及调用关系、确定模用关
9、系、确定模块间的接口及人机界面等。的接口及人机界面等。v数据数据结构构设计包括数据特征的描述、确定数据包括数据特征的描述、确定数据的的结构特性、以及数据构特性、以及数据库的的设计。v概要概要设计建立的是目建立的是目标系系统的的逻辑模型,与模型,与计算机无关。算机无关。1.主要内容主要内容v 1)软件的总体结构和模块外部设计。v 2)软件处理流程设计。v 3)确定软件的功能并分配。v 4)数据结构设计。v 5)网络及接口设计。v 6)运行设计。v 7)出错处理设计。v 8)性能可靠性及安全保密设计。v 9)维护设计。2.设计过设计过程程编码测试设计信息描述信息描述功能描述功能描述行为描述行为描述
10、其他需求其他需求总体结构设计总体结构设计数据设计数据设计过程设计过程设计 程序模块程序模块集成并确集成并确认的软件认的软件3.设计设计原原则则v总体设计的总原则是:由宏观到微观、逐步求精的原则,定性定量分析相结合、分解与协调相结合和模型化方法,并要兼顾系统的一般性、关联性、整体性和层次性。v根据系统的总体结构、功能、任务和目标的要求分解系统,使各子系统之间互相协调配合,实现系统的整体优化。v具体原则如下:3.1模模块化化v把整个系把整个系统划分成若干个模划分成若干个模块,每个模,每个模块完成一个完成一个子功能,将多个模子功能,将多个模块组织起来起来实现整个系整个系统的功的功能。能。v模块的三个
11、属性:模块的三个属性:功能功能-即指该模块实现什么样的功即指该模块实现什么样的功能。能。逻辑逻辑-即描述模块内部怎么做。即描述模块内部怎么做。状态状态-是指是指该模块使用时的环境和条件。该模块使用时的环境和条件。v模模块化化设计方法方法强调清楚地定清楚地定义每个模每个模块的功能和的功能和它的它的输入入/输出参数,而模出参数,而模块的的实现细节隐藏在各藏在各自的模自的模块之中,与其它模之中,与其它模块之之间的关系可以是的关系可以是调用关系,因此模用关系,因此模块化程序易于化程序易于调试和修改。和修改。v随着模随着模块规块规模的减小,模模的减小,模块块的开的开发发成本减少,成本减少,但是模但是模块
12、块之之间间的接口的接口变变得复得复杂杂起来,使得模起来,使得模块块的集成成本增加。的集成成本增加。最小成本区最小成本区M模块成本模块成本接口成本接口成本总成本总成本软件软件开发开发工作工作量量 模块数模块数 3.2抽象和逐步求精抽象和逐步求精v抽象是指抓住事物的本质特性而暂时不考虑其细节的方法。v逐步求精是指为了集中精力解决主要问题而尽量推迟并逐步考虑细节问题的方法,是人类解决复杂问题时采用的一种基本策略,也是软件工程技术的基础。3.3信息信息隐藏藏v 每个模每个模块的的实现细节对于其他模于其他模块来来说是是隐藏藏的。的。v模模块中所包含的信息是不允中所包含的信息是不允许其他不需要其他不需要这
13、些些信息的模信息的模块使用的。使用的。3.4内聚和耦合内聚和耦合v在在软件件设计中中应该保持模保持模块的独立性原的独立性原则。反。反映模映模块独立性的有两个独立性的有两个标准:内聚和耦合。准:内聚和耦合。v内聚:标志一个模块内各个元素彼此结合的紧密程度,是信息隐蔽和局部化概念的自然扩展。设计时应该力求做到高内聚。v耦合:是对软件结构内不同模块之间互连程度的度量,是影响软件复杂程度的一个重要因素。模块间的耦合程度将影响系统的可理解性、可测试性、可靠性和可维护性。设计时应该力求做到低耦合。练习练习一:确定内聚一:确定内聚类类型型计算每个班学生的平均成绩初始化变量sum并打开文件创建新的成绩记录存储
14、成绩记录关闭文件并打印平均成绩读取科目和成绩计算某个科目的平均成绩内聚内聚类类型型v功能内聚:一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。v顺序内聚如果一个模块中的处理元素和同一个功能密切相关,并且这些处理必须是顺序执行的,那么这个模块具有顺序内聚。v通信内聚:一个模块内各功能部分都针对相同输入/输出数据进行处理。v过程内聚:模块执行的若干动作,相互关联并且有顺序关系。例如,从录入界面读取数据,然后更新数据库记录。它仍然是将多个相关的功能放在一个模块中实现。v时间内聚:模块的
15、各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。v逻辑内聚:一个模块完成的任务在逻辑上相同/相似v巧合内聚又称为偶然内聚。当模块内各部分之间没有联系,或者即使有联系,这种联 系也很松散。练习练习二:确定耦合二:确定耦合类类型型pqrtsu135246说明:模明:模块p、t和和u更新同一个数据更新同一个数据库编号号输入入输出出1班级名称班级编号2班级学生清单3功能代码4班级学生清单5班级编号班主任6班级编号班长模模块接口描述接口描述耦合耦合类类型型如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。内容耦
16、合:如果一个模内容耦合:如果一个模块直接引用另一个模直接引用另一个模块的内容。的内容。公共耦合公共耦合多个模多个模块都都访问同一个公共数据同一个公共数据环境,境,则称它称它们是公共耦合。是公共耦合。控制耦合控制耦合模模块A向模向模块B传递一个控制信息,称一个控制信息,称这两个模两个模块是控制耦合的。是控制耦合的。数据耦合数据耦合如果两个模如果两个模块传递的是数据的是数据项,则这两个两个模模块是数据耦合。是数据耦合。特征耦合:特征耦合:传递整个数据整个数据结构,但是只需要使用一部分构,但是只需要使用一部分数据元素数据元素非直接耦合:两个模非直接耦合:两个模块之之间没有直接关系,它没有直接关系,它
17、们之之间的的联系是通系是通过主模主模块的控制和的控制和调用用4 体系体系结结构构设计设计v体系体系结构是构是软件系件系统中最本中最本质的的东西。西。v(1)体系)体系结构是构是对复复杂事物的一种抽象。良好的体系事物的一种抽象。良好的体系结构是普遍适用的,它可以高效地构是普遍适用的,它可以高效地处理多种多理多种多样的个体的个体需求。需求。一提起一提起“房子房子”,我,我们的的脑中中马上就会出上就会出现房子的印象(而不房子的印象(而不是地洞的印象)。是地洞的印象)。“房子房子”是人是人们对住宿或住宿或办公公环境的一种抽境的一种抽象。象。v(2)体系)体系结构在一定的构在一定的时间内保持内保持稳定。
18、定。软件开件开发最最怕的就是需求怕的就是需求变化,但化,但“需求会需求会发生生变化化”是个无法逃是个无法逃避的避的现实。人。人们希望在需求希望在需求发生生变化化时,最好只,最好只对软件件做些皮皮毛毛的修改,可千万做些皮皮毛毛的修改,可千万别改改动软件的体系件的体系结构。构。就如人就如人们对住宿的需求也会住宿的需求也会变动,你可以,你可以经常改常改变房房间的装璜的装璜和和摆设,但不会在每次,但不会在每次变动时都要去折都要去折墙、拆柱、挖地基。、拆柱、挖地基。v良好的体系良好的体系结结构意味着普适、高效和构意味着普适、高效和稳稳定。本定。本节节将将论论述两种非常通用的述两种非常通用的软软件体系件体
19、系结结构:构:v层层次次结结构构v客客户户机机/服服务务器(器(Client/Server)结结构构THANK YOUSUCCESS2023/2/229可可编辑4.1层层次次结结构构v层层次次结结构表达了构表达了这这么一种常么一种常识识:有些事情比:有些事情比较较复复杂杂,我,我们们没法一口气干完,就把事情分没法一口气干完,就把事情分为为好好几几层层,一,一层层一一层层地去做。高地去做。高层层的工作的工作总总是建立是建立在低在低层层的工作之上。的工作之上。v层层次关系主要有两种:上下次关系主要有两种:上下级级关系和关系和顺顺序相序相邻邻关系。关系。v一、上下一、上下级关系的关系的层次次结构构我
20、我们从小学一直从小学一直读到博士研究生到博士研究生毕业,要,要读20多年,多年,可以分可以分为五个五个层次。而范次。而范进的知的知识结构只有两构只有两层:“私塾私塾”和和“秀才秀才”,但,但读了五十多年。了五十多年。一般地一般地处于于较高高层次的学生次的学生应该懂得所有低懂得所有低层次的次的知知识,而,而处于低于低层次学生无法懂得所有高次学生无法懂得所有高层次的知次的知识。v上上层子系子系统可以使用下可以使用下层子系子系统的功能,而下的功能,而下层子系子系统不能不能够使用上使用上层子系子系统的功能。的功能。v二、二、顺序相序相邻关系的关系的层次次结构构v顺序相序相邻关系的关系的层次次结构表明通
21、构表明通讯只能在相只能在相邻两两层之之间发生,信息只能被一生,信息只能被一层一一层地地顺序序传递。这种种层次次结构的构的经典之作是典之作是计算机网算机网络的的OSI参考模型。参考模型。v为了减少了减少设计的复的复杂性,大多数网性,大多数网络都按都按层(Layer)或或级(Level)的方式)的方式组织。每一。每一层的目的都是向它的的目的都是向它的上一上一层提供一定的服提供一定的服务,而把如何,而把如何实现这一服一服务的的细节对上一上一层加以屏蔽。加以屏蔽。一台机器上的第一台机器上的第n层与另一台机器上的第与另一台机器上的第n层进行行对话。通。通话的的规则就是第就是第n层的的协议。数据不是从一台
22、机器的第。数据不是从一台机器的第n层直接直接传送到另一台机器的第送到另一台机器的第n层。发送方把数据和控制信息逐送方把数据和控制信息逐层向向下下传递。最低。最低层是物理介是物理介质,它,它进行行实际的通的通讯。接收方。接收方则将数据和控制信息逐将数据和控制信息逐层向上向上传递。4.2 客客户户机机/服服务务器器结结构构v让我我们先回先回顾一下早期的一下早期的电话系系统。贝尔(Alexander Graham Bell)于)于1876年申年申请了了电话专利。利。v那那时期的期的电话必必须一一对一一对地地卖,用,用户自己在两个自己在两个电话之之间拉一根拉一根线。如果一个。如果一个电话用用户想和其它
23、几个想和其它几个电话用用户通通话,他必,他必须拉拉n根根单独的独的线到每个人的房子里。到每个人的房子里。于是在很短的于是在很短的时间内,城市里到内,城市里到处都是穿都是穿过房屋和房屋和树木的混乱的木的混乱的电话线。很明。很明显,企,企图把所有的把所有的电话完全完全互互联(如(如图所示所示a)是行不通的。)是行不通的。abv贝尔电话公司在公司在1878年开年开办了第一个交了第一个交换局。局。v公司公司为每个客每个客户架架设一条一条线。打。打电话时,客,客户摇动电话的曲柄使的曲柄使电话公司公司办公室的公室的铃响起来,操作响起来,操作员听到听到铃声以后根据要求将呼叫方和被呼叫方用跳声以后根据要求将呼
24、叫方和被呼叫方用跳线手工手工连接起来。接起来。这种集中交种集中交换式的模型如式的模型如图b所示。所示。v很快地,很快地,贝尔系系统的交的交换局就出局就出现在各地。人在各地。人们又要又要求能打城市求能打城市间的的长途途电话,就出,就出现了二了二级交交换局,以局,以后后进一步一步发展展为多个二多个二级交交换局。局。Tanenbaum 1998v如果将如果将图b中的中的电话看成是客看成是客户程序,将中心程序,将中心的交的交换局看成是服局看成是服务程序,那么程序,那么图b就是典型就是典型的客的客户机机/服服务器器结构。构。v注意注意这里客里客户机和服机和服务器都是指器都是指软件而不是指件而不是指硬件。
25、硬件。v客客户机机/服服务器器结构存在两个构存在两个显然的然的优点:点:v(1)以集中的方式高效率地管理通)以集中的方式高效率地管理通讯。前面。前面讲电话系系统的故事就是要的故事就是要说明明这一点。一点。v(2)可以共享)可以共享资源。比如在信息管理系源。比如在信息管理系统中,中,服服务器将信息集中起来,任何客器将信息集中起来,任何客户机都可以通机都可以通过访问服服务器而器而获得所需的信息。得所需的信息。v客客户户机和服机和服务务器之器之间间的通的通讯讯以以“请请求求响响应应”的方式的方式进进行。客行。客户户机先向服机先向服务务器器发发起起“请请求求”(Request),服),服务务器再响器再
26、响应应(Response)这这个个请请求。求。客客户机机服服务器器请求求响响应v在在Internet/Intranet领域,目前域,目前“浏览器器Web 服服务器器数据数据库服服务器器”结构是一种非常流行的客构是一种非常流行的客户机机/服服务器器结构。构。v这种种结构最大的构最大的优点是:客点是:客户机机统一采用一采用浏览器,器,这不不仅让用用户使用方便,而且使得客使用方便,而且使得客户机端不存在机端不存在维护的的问题。当然,。当然,软件开件开发布和布和维护的工作不是自的工作不是自动消消失了,而是失了,而是转移到了移到了Web 服服务器端。在器端。在Web 服服务器端,器端,程序程序员要用脚本
27、要用脚本语言言编写响写响应页面。面。5 层次次结构构设计v 软件体系件体系结构构设计的三要素是程序构件(模的三要素是程序构件(模块)的)的层次次结构、构件之构、构件之间交互的方式以及数据的交互的方式以及数据的结构。构。子系统及模块划分还应考虑:v (1)模块大小适当。v (2)模块的层次结构。v 结构构图(Structure Chart,SC)是精确表达软件结构的图形表示方法,可反映模块之间的层次调用关系和联系。常用特定符号表示模块、模块间调用关系及其信息传递。模块间用单向箭头连结,箭头从调用模块指向被调用模块,如下图所示。图a 模块调用关系 图b 模块间接口表示 图c 模块的条件和循环调用关
28、系有的结构图对这两种信息不加以区别,一律用注有信息名的短箭头“”来表示【案例案例1】打印报告的软件结构图。其调用次序为上层调用下层,同层按照数据传递关系确定,一般从左到右执行。执行过程即按照数据流向进行。如图1所示。(3)软件层次结构。层次图如图2所示。有关指标为:深度。表示了模块间控制的层数,表明软件的复杂程度,深度越深,软件越复杂。宽度。表示同一层次上模块的总数,宽度越宽,表示软件越复杂。扇出。表示一模块直接控制其他模块的数量。如图3(a)和(b)。)。模块划分时,一般扇出平均3-4上限为5-8。扇入。表示模块直接受到多少其他模块控制,扇入越大表明共享该模块的上级模块数越多,虽有一定好处,
29、但不宜片面追求高扇入,如图3(c)和(d)。)。图2软件的层次 图3 软件的扇出和扇入控制6 模模块设计块设计v在在设计好好软件的体系件的体系结构后,就已构后,就已经在宏在宏观上明确了上明确了各个模各个模块应具有什么功能,具有什么功能,应放在体系放在体系结构的哪个位构的哪个位置。置。v保持保持“功能独立功能独立”是模是模块化化设计的基本原的基本原则。因。因为,“功能独立功能独立”的模的模块可以降低开可以降低开发、测试、维护等等阶段的代价。段的代价。v但是但是“功能独立功能独立”并不意味着模并不意味着模块之之间保持保持绝对的孤的孤立。一个系立。一个系统要完成某要完成某项任任务,需要各个模,需要各
30、个模块相互配相互配合才能合才能实现,此,此时模模块之之间就要就要进行信息交流。行信息交流。手和脚是两个手和脚是两个“功能独立功能独立”的模的模块。没有脚,手照。没有脚,手照样能干活。能干活。没有手,脚仍可以走路。如果希望跑得快,那么没有手,脚仍可以走路。如果希望跑得快,那么迈左脚左脚时一一定要伸右臂甩左臂,定要伸右臂甩左臂,迈右脚右脚时则要伸左臂甩右臂。要伸左臂甩右臂。v在在设计一个模一个模块时不不仅要考要考虑“这个模个模块就就该提供什么提供什么样的功能的功能”,还要考要考虑“这个模个模块应该怎怎样与其它模与其它模块交流信息交流信息”。v评价模价模块设计优劣的三个特征因素:劣的三个特征因素:“
31、信息信息隐藏藏”、“内聚与耦合内聚与耦合”和和“封封闭开放性开放性”6.1信息信息隐隐藏藏v为为了尽量避免某个模了尽量避免某个模块块的行的行为为去干去干扰扰同一系同一系统统中的其它模中的其它模块块,在,在设计设计模模块时块时就要注意信息就要注意信息隐隐藏。藏。应该让应该让模模块仅仅块仅仅公开必公开必须须要要让让外界知道的外界知道的内容,而内容,而隐隐藏其它一切内容。藏其它一切内容。v模模块块的信息的信息隐隐藏可以通藏可以通过过接口接口设计设计来来实现实现。一。一个模个模块仅块仅提供有限个接口(提供有限个接口(Interface),),执执行行模模块块的功能或与模的功能或与模块块交流信息必交流信
32、息必须须且只且只须须通通过过调调用公有接口来用公有接口来实现实现。6.2内聚和耦合内聚和耦合v内聚(内聚(Cohesion)是一个模)是一个模块块内部各成分之内部各成分之间间相关相关联联程度的度量。程度的度量。v耦合(耦合(Coupling)是模)是模块块之之间间依依赖赖程度的度量。程度的度量。v内聚和耦合是密切相关的,与其它模内聚和耦合是密切相关的,与其它模块块存在存在强强耦合的模耦合的模块块通常意味着弱内聚,而通常意味着弱内聚,而强强内聚的模内聚的模块块通常意味着与其它模通常意味着与其它模块块之之间间存在弱耦合。存在弱耦合。v模模块设计块设计追求追求强强内聚,弱耦合。内聚,弱耦合。6.3封
33、封闭闭开放性开放性v一个模一个模块可以作可以作为一个独立体被其它程序引用,一个独立体被其它程序引用,则称模称模块具具有封有封闭性。一个模性。一个模块可以被可以被扩充,充,则称模称模块具有开放性。具有开放性。v从字面上看,从字面上看,让模模块具有具有“封封闭开放性开放性”是矛盾的,但是矛盾的,但这种特征在种特征在软件开件开发过程中是客程中是客观存在的。存在的。v着手一个新着手一个新问题时,很,很难一次性解决一次性解决问题。应该先先纵观问题的一些重要方面,同的一些重要方面,同时作好以后作好以后补充的准充的准备。因此。因此让模模块存存在在“开放性开放性”并不是坏事情。并不是坏事情。“封封闭性性”也是
34、需要的,不能也是需要的,不能等到完全掌握解决等到完全掌握解决问题的信息后再把程序做成的信息后再把程序做成别人能用的模人能用的模块。v模模块的的“封封闭开放性开放性”实际上上对应于于软件件质量因素中的量因素中的可复用性和可可复用性和可扩充性。采用面向充性。采用面向过程的方法程的方法进行程序行程序设计,很很难开开发出既具有封出既具有封闭性又具有开放性的模性又具有开放性的模块。采用面向。采用面向对象象设计方法可以方法可以较好地解决好地解决这个个问题。7 设计设计方法方法v 软件设计方法可以分为三大类。v一是面向数据流的设计,也称为过程驱动设计v二是面向数据结构设计,也称为数据驱动的设计v三是面向对象
35、设计7.1 结构化设计方法v1)结结构化构化设计设计方法概述方法概述v结构化设计(Structured Design,SD)方法是一种典型的面向数据流的设计方法,是结构化开发方法的核心和关键,主要完成软件系统的总体结构设计。v软件具有层次性和过程性特征:软件的层次性反映了其整体性质,常用结构图表示。而过程性则反映了其局部性质,常用框图等表示。SD法分为总体设计和详细设计两个阶段。v v(1)总体设计。总体设计过程要解决系统的模块结构,确定系统模块的层次结构。SD法的总体设计步骤是:v 从 DFD 图导出初始的模块结构图。v 改进初始的模块结构图。v(2)详细设计。详细设计阶段的任务是:对模块图
36、中每个模块的过程进行描述。常用的描述的方式有:流程图、N-S图、PAD图等。v 2)结构化)结构化方法的方法的设计过设计过程程v 面向数据流的设计方法的目目标标是确定是确定设计软设计软件件结结构的一个系构的一个系统统化的途径。化的途径。面向数据流方法设计过程,如图所示。SD法的总体设计过程需要从DFD 图导出初始的模块结构图,首先要分析DFD 图的类型,对不同类型的DFD图,采用不同的技术将其转换为初始的模块结构图(SC 图图)。一般将 DFD 图分为两种典型类型:中心变换型和事务处理型。7.2 面向数据结构的设计方法v由M.Jackson 提出的Jackson开发(Jackson Syste
37、m Development,JSD)方法是一种典型的面向数据结构的分析与设计方法。其基本设计步骤分为3 步:v建立数据结构;v以数据结构为基础,对应地建立程序结构;v列出程序中要用到的各种基本操作,再将这些操作分配到程序结构中适当的模块。v分别对应结构化方法的需求分析、总体设计和详细设计。7.3 面向面向对对象方法象方法v第九第九讲讲内容内容小小结结v概要概要设计设计是用比是用比较较抽象的方式确定系抽象的方式确定系统统如何完如何完成成预预定的任定的任务务。v进进行行软软件件结结构构设计设计主要的原理是模主要的原理是模块块独立性原独立性原理理v设计层设计层次次结结构构时时的方法是:由抽象到具体地构的方法是:由抽象到具体地构造造软软件件层层次次结结构构v概要概要设计设计的描述工具:的描述工具:层层次次图图和和结结构构图图作作业业v判断内聚判断内聚类型型v判断耦合判断耦合类型型v层次次图画法画法THANK YOUSUCCESS2023/2/258可可编辑