版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
需求分析问题定义可性行研究计划时期概要设计详细设计编码测试开发时期运行与维护运行时期当前位置:软件的生存周期第12章需求分析和软件设计12.2软件设计12.2.1
概要设计12.2.2软件设计概念与原则12.2.3结构化设计方法12.2.4详细设计概述12.2.1软件概要设计学习目标:
1.掌握:软件设计的概念与原则,概要设计的任务、步骤和方法。
2.了解:概要设计文档与评审。
学习要点:
软件设计的概念与原则、概要设计的任务、步骤和方法、面向数据流的设计方法
概述软件设计的总体目标:将需求分析阶段得到的目标系统的逻辑模型,变换为目标系统的物理模型。(根据需求分析的“做什么”,确定系统应该“怎么做”)软件设计的任务:把分析阶段产生的软件需求规格说明转换为用适当手段表示的软件设计(包括能实现软件功能、性能要求集合的最合理的软件系统结构、设计实现的算法和数据结构),并形成软件设计文档。概述从工程管理的角度来看,软件设计阶段的工作分成两步:
概要(总体/初步)设计:
将软件需求转化为数据结构和软件的系统结构(结构设计、接口设计),形成概要设计文档。
详细(过程/构件)设计:通过对结构表示进行细化,得到软件详细的数据结构和算法,产生描述各软件构件的详细设计文档。12.2.1软件概要设计基本过程:
软件体系结构设计系统架构设计:定义组成系统的子系统以及对子系统的控制、子系统之间的通信和数据环境等;(仓库模型、分布式结构(多处理器、客户-服务器等))软件结构设计:定义构造子系统的功能模块、模块接口、模块之间的调用与返回关系;数据结构(数据库)设计:12.2.1软件概要设计基本过程:
软件体系结构设计:系统架构设计、软件结构设计数据结构(数据库)设计:
设计构造子系统的数据结构、数据库等。数据结构设计:根据需求分析阶段对系统数据的组成、操作约束、和数据之间的关系(E-R图)的描述,确定数据结构的特性。数据库设计:一般的软件系统往往会借助数据库技术进行数据的存储和管理。数据库设计指数据存储文件/数据库系统的设计,包括概念设计、逻辑设计、物理设计。说明:概要设计获得软件系统的基本结构,它从从全局来把握系统的实施方案和策略。软件内部的实现细节,在详细设计阶段解决。12.2.1软件概要设计*概要设计的内容(了解)内容:1.制定规范2.系统架构设计3.软件结构设计4.公共数据结构设计5.安全性设计6.故障处理设计7.可维护性设计8.文档设计9.概要设计复审12.2.2软件设计概念与原则
软件设计原则在20世纪60年代后陆续被提出,指导软件设计决策以开发高质量的软件系统。1.模块与模块化2.抽象与逐步求精3.信息隐蔽和局部化4.模块独立性5.软件程序结构的设计原则1.模块化背景:软件的体系结构一旦确立以后,需要做的工作就是进行系统的模块分解。模块—是相对独立的,由数据说明、可执行语句等程序对象构成的集合。“模块“可单独被命名的而且可通过名字来访问。
如:过程、函数、子程序、宏等等都可作为模块。模块化—把软件系统划分成若干个模块,每个模块完成一个子功能,把这些模块组合起来,满足问题的需求。(说明:模块化是好的软件设计的一个基本准则。)模块化的目的:将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,易于阅读、易于理解、易于测试和调试,因而有助于提高软件的可靠性。复杂问题较小问题分解1.模块化是不是模块划分得越多越好呢?影响软件的总的工作量的因素有两个:模块复杂性成本,模块接口成本。模块化与软件成本如右图:模块化的目的—是减少程序复杂性。2.抽象与逐步求精什么是抽象?抽象是在认识复杂现象过程中使用的思维工具,即抽出事物本质的共同特性而暂不考虑它的细节,忽略那些与当前研究目标不相关因素。软件开发实际上就是一个从高层次抽象到低层次抽象逐步过渡的过程在抽象的最高层次,可以使用问题环境的语言,以概括的方式叙述问题的解。在抽象的较低层,采用更过程化的方法,描述问题时,面向问题的术语和面向实现的术语相结合。抽象的最底层,可以用直接实现的方式来说明。
什么是逐步求精思想(细化)?逐步求精是一种自顶向下的设计策略,是先总体后局部的原则。对一个问题的解决,自顶向下、逐步细化。软件开发过程中的层次结构上层是下一层的抽象,下层是上一层的求精(具体)软件结构的顶层:全局;软件结构的底层:具体处理;2.抽象与逐步求精3.信息隐蔽和局部化
信息隐蔽原理:每一个模块的实现细节对于其他模块来说是隐蔽的。独立的模块仅交换为了完成系统功能而必须交换的信息。一个模块中所包含的信息(数据和过程等)不允许其他不需要这些信息的模块使用。局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。好处:有助于信息屏蔽。说明:信息隐蔽的目的:主要是为了提高模块的独立性,减少将一个模块中的错误扩散到其他模块的机会。模块之间的信息传递只能通过合法的调用接口来实现。
一般模块具有的属性接口:模块的输入输出;功能:指模块实现什么功能,做什么事情(包括模块本身的功能加上它所调用的所有子模块的功能);逻辑:描述模块内部如何实现需求及所需数据;状态:该模块使用时的环境和条件(模块间调用与被调用关系)。把软件划分成模块后,怎样评价模块结构的好坏?模块独立性4.模块独立性
模块独立性--模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的(具有单一功能且与其它模块没有过多相互作用的特性)。模块独立性的重要性*有效模块化的(具有独立模块的)软件比较容易开发。*独立的模块比较容易测试和维护。4.模块独立性
模块的独立程度可以由两个定性标准度量:
·耦合性--块间联系
·内聚性--块内联系
理想的情况是:高内聚、低耦合:块间联系尽可能少,块内联系尽可能大。(1)
耦合
耦合是对一个软件结构内各个模块之间相互连接紧密程度的度量。具体区分模块间耦合程度的强弱的标准如右图:
耦合强弱取决于:数量:模块间接口的复杂程度;方式:调用模块的方式;作用:通过接口的信息类型。(1)
耦合①非直接耦合
--两个模块之间没有直接关系,它们直接的联系完全是通过主程序的控制和调用来实现的。图非直接耦合(1)
耦合②数据耦合--例:如图所示如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入/输出信息的,则称这种耦合为数据耦合。图数据耦合(1)
耦合③标记耦合
--通过模块接口传递的是整个数据结构而不是简单的参量。例:如图
标记耦合“房租水电”是一个数据结构房租水电=房租+用水量+用电量(1)
耦合
④控制耦合
--如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。控制耦合示例:控制耦合示例:去除模块间控制耦合的方法:将被调用模块内的判定上移到调用模块中进行被调用模块分解成若干单一功能模块⑤外部耦合
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。
⑥公共耦合一组模块都访问同一个公共数据环境。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等Acommon公共数据区BAcommon公共数据区B松散的公共耦合紧密的公共耦合⑦内容耦合一个模块直接访问另一模块的内部信息。出现下列情况之一,即出现了内容耦合:一个模块直接访问另一模块的内部数据;一个模块不通过正常入口转到另一个模块;两个模块有一部分程序代码重叠(汇编程序中);一个模块有多个入口。最不好的耦合形式!!!(1)
耦合耦合是影响软件复杂程度的一个重要因素。应该采取的原则:
尽量使用数据耦合;少用控制耦合;限制公共耦合;完全不用内容耦合。模块间的耦合与独立性程度(2)内聚性
--内聚性(cohesion),对一个模块内部各个成分(各种数据和各种处理)之间相互关联程度的度量。(2)内聚性①偶然内聚(coincidentalcohesion)--模块内各部分之间没有意义上的联系(完全不相关)。图偶然内聚缺点:可维护性差、不可重用(2)内聚性②逻辑内聚(logicalcohesion)
--一个模块由若干个逻辑功能相似的成分/操作组成(由调用模块选择)。
缺点:1、接口难以理解;2、增大了模块之间的耦合;完成多个操作的代码纠缠在一起,导致维护问题。(2)内聚性③时间内聚(temporalcohesion)
--模块执行一系列与及时性有关的操作(一个模块内所包含的多个任务必须在同一“时间”内执行)。因时间因素而相关联。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块。特点:1)模块内的操作之间关联很弱,但与其他模块的操作却有很强的关联,增加了模块的耦合性;2)不可重用。(2)内聚性④过程内聚(proceduralcohesion)--模块执行一系列与产品需要遵循的步骤顺序有关的操作(一个模块内的一组任务是相关的,且必须按某一特定的次序执行。)图过程内聚特点:操作之间是弱联系;不可重用。(2)内聚性⑤通信内聚(communicationalcohesion)--一个模块内各功能部分/操作在相同的数据上进行(都使用了同一个输入数据或产生了同一个输出数据)。它们靠公共数据而联系在一起。产生职工工资报表并计算平均工资模块特点:各操作紧密相连,优于过程内聚;不可重用。(2)内聚性⑥顺序内聚(sequentialcohesion)--一个模块的各个成分都与同一个功能密切相关,各成分需要顺序执行(一个成分的输出是下一个成分的输入)。(2)内聚性⑦功能内聚(functionalcohesion)--一个模块只完成一个单一功能(所有部分属于一个整体)。说明:模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。
模块内聚与独立性程度提高模块独立性的准则:高内聚、低耦合5.软件模块结构的设计原则优化软件程序结构设计的指导规则:
1)提高模块独立性
2)模块规模应该适中
3)适当的扇出和扇入
4)模块的作用域应该在控制域之内
5)力争降低模块接口的复杂程度
6)设计单入口单出口的模块
7)模块功能应该可以预测几个有关的术语:①下属和上属关系--在软件结构的层次中,上层模块调用下层模块,同一层模块之间不发生关系;②深度--表示控制层数,即软件结构中从顶层模块到最低层模块的层数;③宽度--表示控制的总分布,即结构图中同一层模块的最大模块数;④扇出数--指一个模块直接控制的下属模块个数;⑤扇入数--指一个模块的直接上属模块个数;软件结构图深度宽度扇出扇入顶层1层2层3层5.软件模块结构的设计原则准则1:改进软件结构提高模块独立性。
一个模块保持一个独立的功能。设计目标:高内聚、低耦合通过分解和合并如果若干模块之间耦合强度过高,每个模块功能不复杂,可将它们合并,以减少信息的传递和公共区的引用分解合并对相关模块进行分解,消除重复功能5.软件模块结构的设计原则
准则2:深度、宽度、扇入和扇出都应适当。平均扇出数:3或4
上限:5-7多扇出及其改造多扇入及其改造5.软件模块结构的设计原则准则3:模块的作用域应保持在该模块的控制域内。
模块的作用域——受该模块内一个判定影响所有的模块集合。模块的控制域——这个模块本身及所有直接或间接从属于它的模块集合。
软件结构准则3图例改进结构的方法:
①把判定上移到足够高的位置。②将受判定影响的模块下移到控制范围内。准则3:模块的作用域应保持在该模块的控制域内。模块的作用域和控制域5.软件模块结构的设计原则准则4:模块的规模应适中。规模:
一个模块的语句数量:30-50行左右,一页纸。准则5:力争降低模块接口的复杂度。
如果在几个模块中发现共有的子功能,一般应该将该子功能分解出来作为一个模块,以提高模块的内聚度和独立性。
合并那些具有较多的控制信息传递的模块,以降低模块之间的耦合度5.软件模块结构的设计原则准则6:追求单入口单出口的模块。准则7:设计功能可预测的模块。
12.2.3结构化设计方法(SD)回顾:结构化分析方法--是一种面向数据流进行需求分析(SA)的方法。
SA方法的基本思想
SA--是用抽象模型的概念,按照软件内部数据传递、变换关系,自顶向下逐层分解,直到找到满足功能需要的所有可实现的软件元素为止。
采用的基本手段:
·分解·抽象SA使用的描述工具:
·数据流图:表示了软件中的信息流向和信息的加工
·数据字典:对这些信息和加工进行更详细的描述;
特点:①自顶向下逐层分解;②采用简明易懂、直观的描述方式12.2.3结构化设计方法(SD)结构化设计方法(StructedDesign):是在模块化、自顶向下逐层求精、结构化程序设计等基础上发展起来的。属于面向数据流的软件设计方法,与需求分析阶段的SA方法相衔接。SD方法以数据流图DFD为基础,它定义了把DFD变换成软件结构图的不同映射方法。SD方法的基本思想--模块化、自顶向下,逐步求精1.软件结构图(SC图)(1)结构图(SC图)SC图是SD方法在概要设计中使用的主要描述工具。
用来描述软件的模块结构,反映了软件的模块组成及其调用关系。1)SC图的组成符号矩形框表示模块,反映模块功能矩形框之间的箭头表示模块之间的调用关系调用线旁的注释箭头表示调用中来回传递信息的方向模块符号从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑传入数据流。从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑传出数据流。模块符号它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。对所有下属模块进行协调和管理的模块。模块符号源模块是不调用其它模块的传入模块,只用于传入部分的始端。漏模块是不调用其它模块的传出模块,仅用于传出部分的末端。2)SC图中的模块调用①
简单调用模块符号②选择调用菱形——选择③循环调用
用叠加在调用线始端的环形箭头表示
2.数据流图的类型与SD方法的步骤面向数据流图的设计过程概要设计的过程:
(1)复查并精化数据流图
(2)确定数据流图的类型(转换/事务型)
(3)从数据流图导出系统的初始软件结构图
(4)改进初始软件结构图,得到更合理的软件结构
(5)复查(1)数据流图的类型
通常把数据流图分为两大类型:
·转换处理型(变换型)
·事务处理型
1)变换型结构组成:传入路径变换中心传出路径数据流——传入流——变换流——传出流图变换型结构的系统变换型数据流图在传入流中:外部数据(物理输入)→内部形式(逻辑输入)在变换流中:逻辑输入→逻辑输出在传出流中:逻辑输出→物理输出传入流变换流传出流特点: 数据流图基本上呈线性形状的结构,可以比较明显地分为输入、中心加工和输出三个部分。例:变换型数据流图2)事务处理型
组成:
·至少一条接收路径——事务流
·一个事务中心
·若干个动作路径——事务路径特点:呈辐射状,即一个加工将它的输入分离成许多平行的数据流,然后选择执行后面的某一个加工。
图事务型结构的系统基本模型关于数据流分类的讨论实际上所有的数据流都是变换流,事务流是变换流的一种特殊形式为什么要将事务型的数据流独立出来考虑?对于事务型的数据流,有更适当的结构设计大多数系统的数据流图中,事务流和变换流往往交织在一起。如右图:图同时存在两类结构的系统软件结构的描述方式软件:一个软件有层次性和过程性两个特点:“层次性”——反映整体性质,用软件结构图描述“过程性”——反映局部性质,用程序流程图描述软件结构图--描述软件的模块结构,反映了软件的组成及其调用关系。对于两种不同类型的数据流图,其映射方法不同:
3.变换映射(分析)
变换映射步骤:
(1)确定数据流图的类型:变换处理型。(2)在DFD图上标明流界
--确定输入流和输出流的边界,孤立出中心加工,即要找出逻辑输入、逻辑输出和中心加工①首先要找出输入流的终点,即逻辑输入;②找出输出流的起点,即逻辑输出;③找出中心加工。说明:中心加工的任务,就是通过计算或者处理,把系统的逻辑输入变换成系统的逻辑输出。转换型DFD转换映射初始的软件结构图根据各种准则修改完善最终的软件结构图变换映射(3)进行一级分解,设计上层模块
主要是画出顶层和第一层,任何系统的顶层都只有一个用于控制的主模块。它的下一层一般包括输入、输出和中心变换三个模块。
①在中心加工位置设计一个主模块M(顶层模块)
主模块M:其功能是控制整个软件结构,完成系统所要做的各项工作。②为输入流设计一个输入控制模块CI
输入控制模块CI:功能是为主模块提供逻辑输入信息
主模块MCI输入C变换映射③为输出流设计一个输出控制模块CO
输出控制模块CO:功能是为主模块提供数据输出
④为中心加工设计一个转换控制模块CT
转换控制模块CT:功能是控制所有内部数据的操作,将逻辑输入转换成逻辑输出
主模块MCI输入CO输出CDCCT处理D变换映射(4)进行二级分解,设计中下层模块对上一步的结果继续进行自顶向下的分解,直到画出每个分支所需要的全部模块。
①输入模块的从属模块设计两个从属模块:·输入模块 ·变换模块
②输出模块的从属模块设计 两个从属模块:·变换模块·输出模块
③变换模块的从属模块设计主模块MCI输入CO输出CDCCT处理D(5)进一步细化变换映射AABBBCCCDD4.事务映射(分析)事务型数据流图由至少一条接收路径、一个事务中心与若干条动作路径组成。与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统的结构图。(1)确定数据流图类型:事务处理型。(2)在DFD图上确定流界
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物标志物在药物临床试验中的临床转化研究
- 生物制剂失应答后IBD的联合治疗策略
- 生物3D打印皮肤在皮肤修复中的个性化方案
- 深度解析(2026)《GBT 19565-2017总辐射表》
- 考试题质量监督与检测技能测试
- 资产处置分析师考试题库
- 中广核设备制造商代表面试题库及解析
- 性能测试工程师岗位测试结果分析含答案
- 面试题集永辉超市收银主管岗位面试要点
- 深度解析(2026)《GBT 19155-2017高处作业吊篮》
- 2026届四川凉山州高三高考一模数学试卷试题(含答案详解)
- 银行党支部书记2025年抓基层党建工作述职报告
- 肿瘤标志物的分类
- 2025山西忻州市原平市招聘社区专职工作人员50人考试历年真题汇编附答案解析
- 中药煎煮知识与服用方法
- 2026东莞银行秋季校园招聘备考题库及答案详解(基础+提升)
- 年产10吨功能益生菌冻干粉的工厂设计改
- GB/T 31541-2015精细陶瓷界面拉伸和剪切粘结强度试验方法十字交叉法
- GB/T 26923-2011节水型企业纺织染整行业
- GB/T 14364-1993船舶轴系滑动式中间轴承
- 肺炎教学查房课件
评论
0/150
提交评论