目录
软件设计的目标和任务
软件设计任务
软件设计过程
软件设计基础
模块独立性
结构化设计方法
变换分析
事务分析
数据设计及文件设计
数据设计的原则
文件设计
过程设计
程序流程图-五种基本控制结构
N-S图:
问题分析图(PAD)
判定表
概要设计说明书
1.引言
2.任务概述
3.总体设计
4.接口设计
5.数据结构设计
6.运行设计
7.出错处理设计
8.安全保密设计
9.维护设计
详细设计说明书
1.引言
2.总体设计
3.程序描述-根据功能模块编写
面向过程的软件设计方法
软件设计的目标和任务
软件设计基础
模块独立性
结构化设计方法
数据设计和文件设计
过程设计
要点:
1、了解软件概要设计的原则和过程
2、掌握模块划分的评价准则
3、掌握结构化设计方法
4、掌握常用的详细设计的表达方法
5、了解软件设计规格说明和设计评审的主要内容
根据用信息域表示的软件需求,以及功能和性能需求,进行-数据设计、-系统结构设计、-过程设计。
数据设计:侧重于数据结构的设定义
系统结构设计:定义软件系统各主要成分之间的关系
过程设计:把结构设计转换为过程性的描述
管理观点:概要设计、详细设计
技术观点:数据设计、系统结构设计、过程设计
制定规范、软件按系统结构的总体设计、处理方式设计、数据结构设计、可靠性设计、编写概要设计阶段的文档、概要设计评审
自顶向下,逐步细化:讲软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化
软件结构:软件结构包括程序的模块结构和数据的结构
程序结构:
树状结构:层次分明,有向树形式
网状结构:
纵向为深度,横向为宽度
深度:指模块的层次深度---------宽度:指任意一层的宽度
结构图:反映程序中模块之间的层次调用关系和联系
模块:每个模块有一个名字,每个模块的功能不相同(以功能做模块名、以功能的缩写做模块名、已定义模块、子程序和过程表示)
模块化:能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构
抽象化:软件系统进行模块设计时,可有不同的抽象层次
信息隐蔽:
模块三个基本属性
功能:描述该模块实现什么功能
逻辑:描述模块内部怎么做
状态:该模块使用时的环境和条件
模块独立性:指软件系统中每个模块只涉及软件要求的具体的子功能------一般采用两个准则度量模块独立性,即模块间耦合和模块内聚
模块独立性完成比较好时表现为---高内聚,低耦合
耦合分为七级由低到高为:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合------模块独立性越强,耦合性越低
非直接耦合:如果两个模块之间没有直接关系,就是非直接耦合
数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数I(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的
标记耦合:一组模块通过参数表传递记录信息,为标记耦合
控制耦合:如果模块 通过传说开关、标志、名字等控制信息,明显的控制选择的另一模块的功能,就是控制耦合
外部耦合:一组模块都访问同一个全局简单变量而不是同意全局数据结构,而且不是通过参数表传递该全局变量的信息
公共耦合:若一组模块都访问同意给公共数据环境,则它们之间的耦合就称为公共耦合---分为松散公共耦合和紧密公共耦合
内容耦合:内容耦合是指如果一个模块与另一个模块的内部属性有关,不经调用直接使用另一个模块的程序代码或内部数据,那么这两个模块之间就存在内容耦合。这种耦合表明一个模块与另一个模块的内部数据或程序代码有关,当一个模块的程序代码被修改或内部数据出错,必然引起另一个模块出错。而对后一模块的出错是很难查出原因的,这样给模块的修改、维护带来极大困难。内容耦合的耦合度最大,为“病态耦合”,在设计时,应避免这种耦合
原则:尽量使用数据耦合,少用控制耦合,限制公共耦合,完全不用内容耦合
模块内聚
内聚由高到低分为:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、巧合内聚
内聚性越高,模块独立性越强,功能单一---内聚性越低模块独立性越弱,功能分散
功能内聚:一个模块中各个部分都是完成某一具体功能必不可少的组成部分,是不可分割的
信息内聚:这种模块完成多个功能,各个功能都在同一数据结构上的操作,每一项功能有一个唯一的入口点
通信内聚:如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,称为通信内聚模块
过程内聚:使用流程图做为工具设计程序时,把流程图中的某一部分或分出组成模块,就得到过程内聚模块
时间内聚:时间内聚模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行
逻辑内聚:这种模块把几种相关的功能组合在一起
巧合内聚:巧合内聚模块内各部分之间没有联系,或即使用联系,这种联系也很松散
1、首先研究、分析和审查数据流图
2、然后根据数据流图决定问题的类型。---数据处理问题典型的类型有两种:变换型和事务型
3、针对两种不同的类型分别进行分析处理
在系统结构图中的模块:传入模块、传出模块、变换模块、协调模块
变换型系统结构图:编号型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据
事务型系统结构图:它接受一项实物,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。
内容
1、重画数据流图
2、区分有效输入、有效输出和中心变换部分
3、进行一级分解,设计上层模块
4、进行二级分解,设计输入、输出和中心变换部分的中、下层模块
进行变换分析时应注意几点:
1、在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完成
2、在设计下层模块时,应考虑模块的耦合和内聚问题
3、使用“黑箱”技术:在设计当前模块时,先把这个模块的所有下层模块定义成“黑箱”
4、在模块划分时,一个模块的直接下属模块一般在5个左右
5、如果出现以下情况,就停止模块的功能分解
-当模块不能在细分为明显的子任务时
-当分解成用户提供的模块或程序库的子程序时
-当模块的界面是输入/输出设备传送的信息时
-当模块不宜再分解的过小时
与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图
事务分析过程:
1、识别事务源
2、规定适当的事务型结构
3、识别各种事务和它们定义的操作
4、注意利用公用模块
5、对每一事务,都要建立一个事务处理模块
6、对事物处理模块规定它们全部的下层操作模块
7、对操作模块规定它们的全部细节模块
软件模块结构的改进
模块功能的完善化
一个完整的模块应当有以下几部分
1、执行规定的功能的部分
2、出错处理的部分
3、给它的调用者返回一个结束状态标志---不允许出现哑操作
消除重复功能,改善软件结构
1、完全相似
2、局部相似
模块的作用范围应在控制范围之内
模块的控制范围包括它本身及其所有的从属模块
模块的作用范围是指模块内一个判定的作用范围,凡是受这个判断影响的所有模块都属于这个判定的作用范围
尽可能减少高扇出的结构,随着深度增大扇入
避免或减少使用病态联接
应限制使用三种病态联接:直接病态联接、公共数据域病态联接、通信模块病态联接
1、用于软件的系统化方法也适用于数据
2、确定所有的数据结构和在每种数据结构上施加的操作
3、应当建立一个数据词典并用它来定义数据和软件的设计
4、底层数据设计的决策应推迟到设计过程的后期进行
5、数据结构的表示只限于那些必须直接使用该数据结构内数据的模块才能知道(信息隐蔽和数据独立性)
6、应当建立要给存放有效数据结构及相关操作的库
7、软件设计和程序设计语言应当支持抽象数据类型的定义和实现
以上 原则适用于软件工程的定义阶段和开发阶段
清晰的信息定义是软件开发成功的关键
文件主要分为逻辑设计和物理设计
1-3为逻辑设计 4-5为物理设计
1、整理必须的数据元素
2、分析数据间的关系
3、确定文件的逻辑设计
4、理解文件的特性
5、确定文件的组织方式------顺序文件、直接存取文件
6、确定文件的存储介质
7、确定文件的记录格式
8、估算存取时间和存储容量
对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达,这是过程设计的任务
表达过程规格说明的工具---即详细设计工具:图形工具、表格工具、语言工具
顺序型、选择型、先判定型循环、后判定型循环、多情况选择型(CASE型)
符号:程序流程图的标准符号、循环的标准符号、多出口判断
也叫做盒图,五种基本控制结构由五种图形构件表示
设置了五种基本控制结构的图式,并允许递归使用
判定表用于表示程序的静态逻辑
在判定表中的田间部分给出所有的两分支判断的列表,动作部分给出相应的处理
要求将程序流程图中的多分支判断都改成两分支判断
PDL:是一种用于描述功能模块的算法设计和加工细节的语言,称为设计程序用语言,是一种伪码
PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词汇。
1.1编写目的
1.2项目背景
1.3定义
1.4参考资料
2.1目标
2.2运行环境
2.3需求概述
2.4条件与限制
3.1处理流程
3.2总体结构和模块外部设计
3.3功能分配
4.1外部接口
4.2内部接口
5.1逻辑结构设计
5.2物理结构设计
5.3数据结构与从程序的关系
6.1运行模块的组合
6.2运行控制
6.3运行时间
7.1出错输出信息
7.2出错处理对策
1.1编写目的
1.2项目背景
1.3定义
1.4参考资料
2.1需求概述
2.2软件结构