软件设计概念,设计方法等内容讲解
树图思维导图提供 结构化设计思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 结构化设计思维脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:b2067af6fb2b6a1bbacc85bfa8782007
结构化设计思维导图模板大纲
软件设计的目标和任务
软件需求:解决“做什么”
软件设计:解决“怎么做”
软件设计的任务: 将分析阶段获得的需求说明转换为计算机中可实现的系统。包括:软件体系结构的设计、用户界面的设计、数据结构的设计、算法的设计。
软件设计的重要性:是软件开发阶段的第一步,最终影响软件实现的成败和软件维护的难易程度。
第一阶段:概要设计(总体设计)
根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互关系。
第二阶段:详细设计(过程设计)
确定模块内部的算法和数据结构;
选定某种过程的表达形式来描述各种算法;
产生精确描述各模块程序过程的详细文档,并进行评审。
总体设计由两个主要阶段组成:
系统设计阶段,确定系统的具体实现方案
设想供选择的方案
选取合理的方案
推荐最佳方案
结构设计阶段,确定软件结构
功能分解制定
设计软件结构
设计数据库
测试计划
书写文档
审查和复审
典型的总体设计过程包括下述9个步骤:
设想供选择的方案
选取合理的方案
推荐最佳方案
功能分解
设计软件结构
设计数据库
制定测试计划
书写文档
审查和复审
软件设计的意义和目标
软件设计在软件开发过程中处于核心地位,它是保证质量的关键步骤 。
指导评价良好设计演化的3个特征
设计必须实现所有包含在分析模型中的明确需求,而且必须满足用户期望的所有隐含需求
设计必须是可读的、可理解的指南
设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域
软件设计原则
使用基本的设计概念:模块化,抽象,逐步求精,信息隐蔽,自顶向下等。
模块化
模块化就是把软件按照规定的原则,划分为一个个较小的、相互独立的、又相互关联的部件。模块化实际上是系统分解和抽象的过程。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
评价设计方法定义有效的模块系统能力的标准
模块可分解性
模块可组装性
模块可理解性
模块连续性
模块保护性
软件独立性准则:
软件独立性的含义是指开发具有功能专一,模块之间无过多相互作用的模块。又称为模块独立性准则。
这种类型的模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。
抽象
抽象:现实世界中一些事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。抽象就是抽出事物本质特性而暂时不考虑细节。
一般抽象过程:
处理复杂系统的惟一有效的方法是用层次的方式构造和分析它。
一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直至最低层次的具体元素。
软件工程抽象过程:
软件工程过程的每一步都是对软件解法的抽象层次的一次精化;
在可行性研究阶段,软件作为系统的一个完整部件;
在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;
当由总体设计向详细设计过渡时,抽象的程度也就随之减少了;
当源程序写出来以后,也就达到了抽象的最低层。
逐步求精
逐步求精是人类未了解决复杂问题时采用的基本技术。为了能集中精力解决主要问题而尽量推迟对问题细节的考虑 。
逐步求精的作用:
能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面,而忽略那些对整体解决方案来说虽然是必要的,但目前还不需要考虑的细节。
逐步求精方法确保每个问题都将被解决,而且每个问题都将在适当的时候被解决。注意,在任何时候一个人都不要同时处理7个以上模块。
信息隐藏
通过抽象,可以确定组成软件的过程实体。通过信息隐蔽,可以定义和实现对模块的过程细节和局部数据结构存取限制。
信息隐蔽指在设计和确定模块时,使得一个模块的信息(过程或数据)等实现细节对于其他模块来说,是不能访问的 。
模块独立
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的必然结果。
模块独立的重要性:
有效的模块化(即具有独立的模块)使软件比较容易开发出来。这是由于能够分割功能,而且接口可以简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。
独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。
模块独立程度的两个定性标准度量:
耦合是衡量不同模块彼此间互相依赖(连接)的紧密程度。耦合要低,即每个模块和其他模块之间的关系要简单;
耦合也称块间联系,指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合髙低取决于模块间接口的复杂性、调用的方式及传递的信息。
耦合指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。
为了提高模块的独立性,应该尽量降低模块之间的耦合程度 ,模块的耦合性有以下几种类型,分为:
无直接耦合
数据耦合
标记耦合
控制耦合
较强耦合包括外部耦和和公共耦合。
外部耦合是指系统允许多个模块同时访问同一个全局变量。
公共耦合是指允许多个模块同时访问一个全局性的数据结构。
内容耦合是最高强度的耦合,它允许一个模块直接调用另一个模块中的数据。
在软件设计时,开发人员应该尽量使用数据耦合,较少使用控制耦合,限制公共耦合的使用范围,同时坚决避免使用内容耦合。
内聚是衡量一个模块内部各个元素彼此结合的紧密程度。内聚要高,即每个模块完成一个相对独立的特定子功能。
内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。
要求:设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚不要使用。
内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。
内聚衡量一个模块内部组成部分间整体统一性的度量。
在软件设计时,应该尽量提高模块的内聚程度 内聚性有以下几种类型:
偶然内聚
逻辑内聚
时间内聚
过程内聚
通信内聚
顺序内聚
功能内聚
启发规则
软件工程师们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得出了一些启发规则。
改进软件结构提高模块独立性
模块规模应该适中
深度、宽度、扇出和扇入都应适当
模块的作用域应该在控制域之内
力争降低模块接口的复杂程度
设计单入口单出口的模块
模块功能应该可以预测
软件结构图
软件结构图是系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。对于一个“问题”,可用不同的软件结构来解决,不同的设计方法和不同的划分和组织,得出不同的软件结构。
软件结构表示程序的系统结构,它是以层次结构来表示的一种控制程序体系,它并不表示软件的具体过程,比如各个进程的顺序,判定和操作重复等。
它表示的是软件元素之间的关系,比如调用关系、存储关系与嵌套关系。
结构图的主要内容
模块
模块的控制关系
模块间的信息传递
画结构图应注意的事项
同名字的模块在结构图中仅出现一次
调用关系只能从上到下。
不严格表示模块的调用次序,习惯上从左到右。有时为了减少连线的交叉,适当地调整同一层模块左右位置,以保持结构图的清晰性。
面向数据流的设计方法
依据一定的映射规则,将需求分析阶段得到的数据描述从系统的输入端到输出端所经历的一系列变换或处理的数据流图转换为目标系统的结构描述
变换型数据流
针对变换型数据流的设计可以分为以下几个步骤
区分变换型数据流中的输入数据、变换中心和输出数据,并在数据流图上用虚线标明分界线
分析得到系统的初始结构图
对系统结构图进行优化
事务性数据流
针对事务型数据流的设计可以分为以下几个步骤
确定以事务为中心的结构,找出事务中心、接收数据、处理路径三个部分
将数据流图转换为初始的系统结构图
分解和细化接收分支和处理分支
面向数据结构的设计方法
Jackson图
可分为
顺序结构
选择结构
重复结构
Jackson图的优点
便于表示层次结构,而且是对结构进行自顶向下分解的有力工具
形象直观可读性好
既能表示数据结构也能表示程序结构(因为结构程序设计也只使用上述3种基本结构)
Jackson图的缺点
用这种图形工具表示选择或重复结构时,选择条件不能直接在图上表示出来,影响了图的表达能力,也不易直接把图翻译成程序。此外框线间的线为斜线,不易在行式打印机上输出
Jackson图和层次图区别
层次图中的一个方框通常代表一个模块,Jackson图中一个方框只代表几条语句
层次图表现的是调用关系,Jackson图表现的是组成关系
子主题 3
Jackson结构程序设计方法的步骤
分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构
找出输入数据结构和输出数据结构中有对应关系的数据单元
用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图
为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框
根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框
根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框
流程图
程序流程图
顺序型
选择型
先判定型循环(WHILE-DO)
后判定型循环(DO-WHILE)
多分支选择型
程序流程图的主要优点
采用简单规范的符号,画法简单
结构清晰,逻辑性强
便于描述,容易理解
程序流程图的主要缺点
不利于逐步求精的设计
图中可用箭头随意地对控制进行转移,与结构化程序设计精神相悖
不易于表示系统中所含的数据结构
当目标系统比较复杂时,流程图会变得很繁杂、不清晰
盒图(N-S图)
N-S图,也被称为盒图或NS图,有时候也叫方框图,是结构化编程中的一种可视化建模。
顺序型
选择型
多分支选择型
while重复型
until重复型
特点
不允许随意的控制转移,有利于严格的结构化程序设计
可以很方便地确定一个特定控制结构的作用域,以及局部数据和全局数据的作用域
可以很方便地表示嵌套关系以及模块之间的层次关系
PAD图(问题分析图)
用二维树形结构的图来表示程序的控制流及逻辑结构。
一条竖线代表一个层次,最左边的竖线是第一层控制结构,随着层次的加深,图形不断地向右展
类型同盒图
PAD图的主要特点
表示的程序结构的执行顺序是自最左边的竖线的上端开始,自上而下,自左向右
表示的程序片断结构清晰、层次分明
支持自顶向下、逐步求精的设计方法
只能用于结构化的程序设计
不仅可以表示程序逻辑,还能表示数据结构
判定表
判定表用于表示程序的静态逻辑
判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系
在判定表中的条件部分给出所有的分支判断的列表,动作部分给出相应的处理。
判定表的组成
左上部列出所有条件
左下部是所有可能做的动作
右上部是表示各种条件组合的一个矩阵
右下部是和每种条件组合相对应的动作
建立判定表的步骤
列出与一个具体过程(或模块)有关的所有处理
列出过程执行期间的所有条件(或所有判断)。
将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。
将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。
判定树
判定树也是用来表达加工逻辑的一种工具
判定树是判定表的变形,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系,一般情况下它比判定表更直观且易于理解和使用。
判定树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。
优点
使用判定树的优点是简单、直观、易于掌握和使用。但它也有明显的缺点,判定树的简洁性不如判定表,数据元素的同一个值往往要重复多遍,而且越接近树的叶端重复次数越多。
过程设计语言(PDL,伪码)
PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序语言。它是一种伪码。
PDL具有严格的关键字外部语法,用于定义控制结构和数据结构,同时它表示实际操作和条件的内部语法又是灵活自由的,可使用自然语言的词汇。
特点
关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点
自然语言的自由语法,它描述处理特点
数据说明的手段
模块定义和调用的技术,应该提供各种接口描述模式
PDL的优点
可以作为注释直接插在源程序中间
可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作
已经有自动处理程序存在,而且可以自动由PDL生成程序代码
PDL的缺点
不如图形工具形象直观
描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单
这三种描述加工逻辑的工具各有优缺点,对于顺序执行和循环执行的动作,用结构语言描述。 对于存在多个条件复杂组合的判断问题,用判定表和判定树。 判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部都考虑到。
数据库结构设计包括概念结构设计、逻辑结构设计和物理结构设计
概念结构:描述系统最基础的数据结构
逻辑结构:提供比较接近数据库内部构造的逻辑描述
物理结构:数据库的物理数据模型
数据库的概念结构通常用ER图(实体--联系图)
软件系统本质上是信息处理系统,因此,在软件系统的整个开发过程中都必须考虑两方面的问题--“数据”及对数据的“处理”。
实体--联系模型中包含“实体”、“联系”和“属性”等三个基本成分。
实体
实体是客观世界中存在的且可相互区分的事物。实体可以是人也可以是物;可以是具体事物也可以是抽象概念。
联系
客观世界中的事物彼此间往往是有联系的。例如,教师与课程间存在“教”这种联系,而学生与课程间则存在“学”这种联系。
联系可分为以下三类:
一对一联系(1:1)
一对多联系(1:N)
多对多联系(M:N)
属性
属性是实体或联系所具有的性质。通常一个实体由若干个属性来刻画。
人机界面设计是接口设计的一个组成部分。对于交互式系统来说,人机界面设计和数据设计、体系结构设计、过程设计一样重要。
人机界面的设计质量,直接影响用户对软件产品的评价,从而影响竞争力和寿命,因此,必须对人机界面设计给予足够重视。
界面设计的4个模型
由软件工程师创建的设计模型
由人机工程师(或软件工程师)创建的用户模型
终端用户对未来系统的假想
系统实现后得到的系统映象
界面设计中应该考虑的问题
系统响应时间
用户求助机制
出错信息
命令方式
树图思维导图提供 工业机器人的基本特性 在线思维导图免费制作,点击“编辑”按钮,可对 工业机器人的基本特性 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:26723f573dc1ecf653e069c3dfaeb7c4
树图思维导图提供 1107文家市玉萍思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 1107文家市玉萍思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:ed943ef641f6dc874860eb6095857ed6