04第四章软件概要设计
软件设计概要讲义PPT(83张)
三、软件设计的概念和原理
自顶向下,逐步细化将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。 软件结构 ①软件结构包括两部分。程序的模块结构和数据的结构。 ②软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了。
项目经理
负责分配设计任务,追踪设计阶段进度,在项目组内协调设计过程中所需资源,参与设计文档的同行评审
系统分析员
完成相关的设计任务,编写设计文档,修改设计评审中发现的问题
项目组开发人员代表
参与设计文档的同行评审
其他项目经理
参与设计文档的同行评审
其他项目系统分析员
参与设计文档的同行评审
质量保证员
检查设计过程及设计阶段产生的文档,跟踪发现的问题的解决情况
一、软件设计的目标和任务
1、目标 系统结构设计定义软件系统各主要成份之间的关系。 过程设计。把结构成份转换成软件的过程性描述。
开发阶段的信息流
把需求翻译成文档
2、软件设计的任务 概要设计(系统设计),将软件需求转化为数据结构和软件的系统结构。概要设计由技术总监,部门经理和项目经理来做的,有可能会加一两个核心程序员。
二维画图又分为以下CASE,案例,任务的集合
(2)数据抽象 在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。 例如,在CAD软件中,定义一个叫做drawing绘图的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:
第4章 软件概要设计
内容耦合度 一个模块不经调用直接使用另一模块的内容
4.1.6 高内聚和低耦合
内聚和耦合是密切相关的,模块内的高内聚往往
意味着模块间的低耦合 内聚度和耦合度要说明的是同一内容,即模块的 独立性,它们是衡量这种独立性的两个不同的方 面
4.1.6 高内聚和低耦合
在软件设计中,应该追求高内聚、低耦合 (即块
逐次运用“黑盒”的工程定义将问题进行功能分解 即按数据变换的阶段划分模块,其中每个模块都看成 是一个“黑盒” 对这个“黑盒”进行输入、输出以及输入、输出间的 变换的考察 考察的结果又划分成若干更小的模块,然后将这些模 块作为新的“黑盒”,再进行考察 最后细分到每个“黑盒”都能用简单程序实现为止
而模块间的外部联系尽可能地弱,即尽可能地提高模块 的相对独立性 评价模块结构质量的具体标准是
模块的内聚度(模块强度)——指一个模块内部各成分之间的联系。 内聚度高,则模块的相对独立性高。内聚度可划分为七级 模块的耦合度(模块结合度)——是模块结构中各模块之间相互联 系的一种度量。耦合度越弱,意味着模块独立性越高,模块间相 互影响就越小。耦合度分四个方面
第4章 软件概要设计
模块的划分
结构化设计方法 (SD) Parnas方法 Jackson方法 程序的逻辑构造(LCP)方法 概要设计文件与复审
第4章 软件概要设计
需求分析阶段解决了让软件“做什么”的问题,
并且在软件需求说明书中得到了充分的表达 进入设计阶段,开始软件需求的实施工作,也就 是解决“怎么做”的问题 概要设计 (总体设计或结构设计) 工作由设计员完 成,设计员应该是经验丰富的软件人员
软件概要设计文档
软件概要设计文档
概述:
软件概要设计文档是软件工程中的重要文档之一,用于对软件设计的整体架构和关键模块进行描述和说明。
本文档将介绍软件的总体设计思路和主要功能模块。
设计目标:
1. 开发一款用户友好、功能完善的软件;
2. 实现系统的高效运行和稳定性;
3. 提供易于维护和扩展的软件架构;
4. 遵循软件工程规范和最佳实践。
总体设计思路:
1. 模块化设计:将软件系统拆分为多个独立的模块,每个模块负责特定的功能;
2. 数据流设计:通过定义合适的数据流和数据结构,实现系统内数据的传递和处理;
3. 用户界面设计:设计直观、易用的用户界面,以提升用户体验;
4. 安全性设计:保护系统数据和用户隐私,防止恶意攻击和非
法访问。
主要功能模块:
1. 用户管理模块:用于管理系统的用户,包括注册、登录、权
限控制等功能;
2. 数据管理模块:处理系统内的数据,包括数据的增删改查和
数据的备份和恢复等功能;
3. 搜索模块:提供高效的搜索功能,支持关键字搜索和筛选条
件搜索;
4. 报表生成模块:根据系统内的数据生成各类统计报表,用于
分析和决策支持;
5. 日志管理模块:记录系统运行过程中的操作日志和异常情况,用于故障排查和审计。
以上是软件概要设计文档的主要内容概要。
详细设计将在后续
的文档中进行,包括每个模块的详细功能设计、数据结构设计和算
法设计等。
该概要设计文档将作为整个软件开发过程的基础,为后
续的开发工作提供指导和支持。
软件概要设计
软件概要设计
软件概要设计是软件开发过程中的关键一环,它承载着软件架构和设计的基本思路,为软件开发提供了整体的框架和指导。
本文将从需求分析、系统结构、模块设计和接口设计等方面,对软件的概要设计进行阐述。
需求分析
在进行软件概要设计之前,首先需要对软件的需求进行全面而深入的分析。
根据需求分析的结果,确定软件的功能模块和性能要求,进而设计出合理的系统结构和模块划分。
系统结构
软件的系统结构是软件概要设计的核心,它定义了软件整体框架和各个模块之间的关系。
系统结构应当具有高内聚、低耦合的特点,确保软件的可维护性和扩展性。
模块设计
软件的模块设计是系统结构的具体体现,它将系统划分为若干个功能模块,每个模块负责实现特定的功能。
模块之间应当具有清晰的接口和相互独立的特性,以确保模块的可重用性和独立性。
接口设计
软件的接口设计是不同模块之间进行通信和协作的关键,接口设计应当简洁清晰,同时考虑到接口的健壮性和扩展性。
合理的接口设计能够有效降低模块之间的耦合度,提高软件的可维护性和可扩展性。
综上所述,软件概要设计是软件开发过程中不可或缺的一环,它为软件开发提供了必要的设计思路和整体框架。
通过合理的需求分析、系统结构、模块设计和接口设计,能够有效提高软件的质量和开发效率,实现软件开发的顺利进行。
第四章软件概要设计
第四章软件概要设计第四章软件概要设计在软件需求分析阶段,已经搞清楚了软件“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。
进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,而概要设计(又称结构设计)就是软件设计最初形成的一个表示(这里的表示是一个名词),它描述了软件的总的体系结构。
简单地说软件概要设计就是设计出软件的总体结构框架。
而后对结构的进一步细化的设计就是软件的详细设计或过程设计。
本章所学内容主要就是软件的概要设计内容。
4.1 软件概要设计的基本任务4.1.1 基本任务1. 设计软件系统结构(简称软件结构)为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库(文件),对于程序,则首先进行结构设计,具体为:(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。
(2)确定每个模块的功能。
(3)确定模块之间的调用关系。
(4)确定模块之间的接口,即模块之间传递的信息。
(5)评价模块结构的质量。
根据以上内容,软件结构的设计是以模块为基础的,在需求分析阶段,已经把系统分成层次结构。
设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构。
软件结构的设计是概要设计关键的一步,直接影响到下一阶段详细设计与编码的工作软件系统的质量及一些整体特性都在软件结构的设计中决定。
2.数据结构及数据库设计对于大型数据处理的软件系统,除了控制结构的模块设计外,数据结构与数据库设计也是很重要的。
(1)数据结构的设计逐步细化的方法也适用于数据结构的设计。
在需求分析阶段,已通过数据字典对数据的组成、操作约束、数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。
软件工程 第四章 概要设计
第4章
4.4 模块的独立性
15
4.4.1 耦合性(Coupling)
5.外部耦合 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为 外部耦合。 6.公共耦合
若一组模块都访问同一全局数据结构,则称之为公共耦合。公共数据环境可以是全局数据
4
4.2.1 概要设计的任务
概要设计的基本任务是: (1)设计软件系统结构; (2)数据结构及数据库设计; (3)编写概要设计文档;
(4)评审概要设计文档。
第4章
4.2 概要设计的任务与步骤
5
4.2.2 概要设计的步骤
概要设计的一般步骤如下: 1.选定体系结构 2.确定设计方案 3.设计软件结构
4.数据结构及数据库设计
(2)一个模块不通过正常入口而直接转入到另一个模块的内部;
(3)两个模块有一部分代码重叠(该部分代码具有一定的独立功能); (4)一个模块有多个入口。
第4章
4.4 模块的独立性
17
4.4.2 内聚性(Cohesion)
一个模块内各个元素彼此结合的紧密程度用内聚(或称聚合)来度量。一个理想的模块只
完成一个功能,模块设计的目标之一是尽可能高内聚。
第4章
4.4 模块的独立性
21
4.4.2 内聚性(Cohesion)
5.通信内聚
指模块内所有处理功能都通过公用数据而发生关系。即模块内各个组成部分都使用相同的 输入数据或产生相同的输出结果。
第4章
4.4 模块的独立性
22
4.4.2 内聚性(Cohesion)
软件设计概要设计
顾客交互子系统旳程序构造雏形
(环节六)启发式设计策略优化初始SC图
▪ 使用启发式设计策略,精化所得程序构造
雏形——初始SC图,改良软件质量。
▪ 这一环节与变换分析法相同。
2.4混合构造
▪ 一种大型系统经常是变换型构造和事务型旳混合构造,为
了导出初始SC图,必须同步使用变换映射和事务映射
▪ 下例中,总体是一种变换构造,但是输入途径输入是事务
1.概要设计工具
▪ 层次图和HIPO图 ▪ 构造图
层次图
▪ 层次图用来描绘软件旳层次构造旳图
形工具。 正文加工系统
输入 输出 编辑 加标题 存储 检索 编目录 格式化
添加 删除 插入 修改 合并 列表
IPO图
▪ 层次图中旳每一种模块,均可用一张IPO图来描述。
IPO 图由输入、处理和输出三个框构成,需要时 还能够增长一种数据文件框。IPO图在需求分析阶 段主要用来描述系统旳主要算法。
▪ 在上例中,可能旳修改有:
▪ 输入构造中旳模块"转换成rpm"和"搜集sps"能
够合并;
▪ 模块"拟定加速/减速"能够放在模块"计算mph"
下面,以降低耦合;
▪ 模块"显示加速/减速"能够放在模块"显示mph"
下面。
精化后旳软件构造
模块阐明
▪程序构造旳模块名隐含模块功能,必须为每
个模块写一种简要旳处理阐明,
2.面对数据流旳设计——SD法
▪ 需求阶段对数据流进行分析,生成DFD和
DD
▪ 以此为基础,将DFD经过SD法软件构造。
面对数据流旳设计措施根据数据流图旳特征 定义变换流和事务流两种“映射”,这两种 映射能机械地将数据流图转换为程序构造。
软件工程各章名词解释
名词解释一个三分 五个十五分第一章 绪论1. 软件2. 文档3. 软件工程4. 软件工程过程5. 软件生存周期6. 软件生存周期模型第二章 软件可行性研究与项目开发计划1. 投资回收2. 纯收人第三章 软件需求分析1. 需求分析2. 数据流3. 数据字典4. 加工5. 数据流图第四章 软件概要设计1. 模块2. 模块化3. 抽象4. 信息隐蔽5. 模块独立性6. 耦合性7. 无直接耦合8. 数据耦合9. 标记耦合10. 控制耦合11. 公共耦合12. 内容耦合13. 内聚性14. 偶然内聚15. 逻辑内聚16. 时间内聚17. 通信内聚18. 顺序内聚19. 功能内聚第五章 软件详细设计1. PAD2. 过程设计语言(PDL)第六章 软件编码1. 程序设计风格2. 程序可移植性第七章 软件测试1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖7. 环路复杂性8. 黑盒测试9. 白盒测试10. 驱动模块11. 桩模块12. 单元测试13. 集成测试14. 确认测试15. 调试第八章 软件维护1. 维护2. 校正性维护3. 适应性维护4. 完善性维护5. 预防性维护6. 软件可维护性第九章 软件开发的增量模型1. 原型第十章 面向对象的方法1. 对象2. 类3. 消息4. 方法5. 继承性6. 单重继承7. 多重继承8. 多态性9. 抽象10. 信息隐藏11. 链12. 关联第十一章 软件质量与质量保证1. 软件可靠性2. 效率3. 可维护性4. 可移植性5. 可互操作性6. 适应性7. 可重用性8. 软件设计质量9. 软件程序质量10. 冗余第十二章 软件工程管理1. 软件配置管理2. 软件配置项3. 基线4. 文档第十三章 软件开发环境1. 软件开发环境2. 软件工具3. CASE4. CASE生存期5. CASE工作台软件工程自考名词解释答案第一章 绪论1. 计算机程序及其说明程序的各种文档.2. 文档是有关计算机程序功能,设计,编制,使用的方案或图形资料.3. 用科学知识和技术原理来定义,开发,维护软件的一门学科.4. 软件工程过程规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务.5. 软件生存周期是指一个软件从得出开发要求开始直到该软件报废为止的整个时期.6. 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型.第二章 软件可行性研究与项目开发计划1. 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.2. 在整个生存周期之内的累计经济效益(折合成现在值)与投资之差.第三章 软件需求分析1. 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非不甘落后将用户非不甘落后 需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程.2. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成.3. 数据字典(Data Dic onary, 简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 加工又称为数据处理,是对数据流进行某些操作或变换.5. 数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程.第四章 软件概要设计1. 模块在程序中是数据说明,可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合,分解和更换的单元.2. 模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成若干模块的过程.每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能.3. 抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素.4. 信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.5. 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单.6. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程序的一种度量.7. 无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息.8. 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.9. 标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.10. 控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关,标志等),被调模块通过该控制变量的值有选择地执行块内某一功能.11. 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可是是全程变量或数据结构,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合).12. 当一个模块直接使用另一个模块的内部数据,或通过非正常口转入另一个模块内部,这种模块之间的耦合为内容耦合.13. 内聚块又称块内联系指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.14. 偶然内聚指一个模块内的各处理元素之间没有任何联系.15. 逻辑内聚指模块内执行个逻辑上相似的功能,通过参数确定该模块完成哪一个功能.16. 把需要同时执行的动作组合在一起形成的模块为时间内聚模块.17. 通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据.18. 顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入.19. 功能内聚指模块内所有元素共同完成一个功能,缺一不可.因此模块不能再分割.第五章 软件详细设计1. PAD图指问题分析图(Problem Analysis Diagram),是一咱算法描述工具,它是一种由左往右展开的二维树型结构.PAD图的控制流程为自上而下,从左到右地执行.2. 过程设计语言(Process Design Language,简称PDL),也称程序描述语言(Program Descrip on Language),又称为伪码.它是一种用于描述模块自法设计和处理细节的语言.第六章 软件编码1. 程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等.2. 指程序从一个计算机环境移值到另一个计算机环境的容易程序.第七章 软件测试1. 语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次.2. 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次”真”和”假”值,从而使程序的每一个分支至少都通过一次.3. 条件覆盖指设计足够的测试用例,使得判定表达工中每个条件的各种可能的值出现一次.4. 判定/条件覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次.5. 条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次.6. 路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径.7. McCabe定义程序图的环路为程序图中区域的个数.区域个数为边和结点圈定的封闭区域数加上图形外的区域数1.8. 黑盒测试是功能测试又称为功能测试或数据驱动测试.9. 白盒测试是对程序中尽可能多和逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.10. 驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被模块,接收被测模块的测试结果并输出.11. 桩模块用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息.12. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误.13. 集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试,故也称组装测试或联合测试.14. 确认测试又称有效性测试.是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试.15. 调试是为了确定错误的原因和位置,并改正错误所进行的工作,因此调试也称为纠错.第八章 软件维护1. 在软件运行/维护阶段对软件产品所进行的修改就是维护.2. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.3. 随着计算机的飞速发展,计算机硬件,软件及数据环境在不断发生变化,为了使应用软件适应这种变化而修改软件的过程称为适应性维护.4. 在犯罪分子件运行时期中,用户往往会对软件提出新的功能要求与性能要求.这种增加软件功能,增强软件性能,提高软件运行效率而进行的维护活动称为完善性维护.5. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护.6. 软件可维护性是指软件能够被理解,校正,适应及增强功能的容易程度.第九章 软件开发的增量模型1. 软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性.第十章 面向对象的方法1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件.2. 具有相同或相似性质的对象的抽象就是类具有相同或相似性质的对象的抽象就是类3. 对象之间进行通信的构造叫做消息.4. 类中操作的实现过程叫做方法,一个方法有方法名,参数,方法体.5. 继承性是子类自动共享父类数据结构和方法的机制这是类之间的一种关系.6. 在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承.7. 在类层次中,子类继承了多个父亲的数据结构和方法,称为多重继承.8. 多态性是指相同的操作或函数,过程可作用于多用户种类型的对象上并获得不同结果.不同的对象收到同一消息可以产生不同的结果,这种现象称为多态性.9. 抽象是指强调实体的本质,内在的属性,忽略一些无关紧要的属性.10. 信息隐蔽是指所有软件部件内部都有明确的范围以及清楚的外部边界每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离.11. 链表示对象间的物理与概念联结.12. 关联表示类之间的一种关系,就是一些可能的链的集合.第十一章 软件质量与质量保证1. 软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度.2. 为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度.3. 找到并改正程序中的一个错误所需代价的程度.4. 将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量.5. 将一个系统耦合到另一个系统所需的工作量.6. 修改或改进一个已投入运行的软件所需工作量的程度.7. 一个软件能再次用于其他相关应用的程度.8. 设计的规格说明书要符合用户的要求.9. 程序要按照设计规格说明所规定的情况正确执行.10. 冗余是指实现系统规定功能是多余的那部分资源,包括硬件,软件,信息和时间.第十二章 软件工程管理1. 软件配置管理,简称SCM,是一组管理整个软件生存期各阶段中变更的活动是一组管理整个软件生存期各阶段中变更的活动2. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位.3. 基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果.4. 文档是指某种数据媒体和其中所记录的数据.在软件工程中,文档用来表示对需求,工程或结果进行描述,定义,规定,报告或认证的任何书面或图示的信息.它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令.第十三章 软件开发环境1. 软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成.2. 软件工具是指为支持计算机软件的开发,维护,模拟,移植或管理而研制的程序系统.3. CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发.4. 一个组织中的CASE系统从被始需求到完全废弃这一生存期.5. 一个CASE工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。
软件概要设计的主要任务
软件概要设计的主要任务一、什么是软件概要设计软件概要设计是软件开发中的重要阶段,通常跟在需求分析之后,软件详细设计之前。
它旨在对软件系统进行整体的规划和设计,确定系统的整体结构和功能模块,为后续的详细设计和编码工作奠定基础。
软件概要设计主要包括以下几个方面的任务:二、需求分析与功能规划1.确定软件系统的主要目标和功能,明确用户的需求和期望。
2.划分软件系统的功能模块,识别主要的业务流程和数据流动。
3.分析系统需求,确定系统的功能规划和业务流程。
三、系统架构设计1.设计系统的整体结构,确定系统的分层架构和模块划分。
2.设计系统的数据流动和信息交互,确定数据的输入、处理与输出。
3.评估系统的性能需求,确定系统的硬件和软件环境要求。
4.定义系统的接口和通信方式,与外部系统进行集成。
四、数据库设计1.根据系统需求和功能规划,设计系统的数据库结构。
2.定义数据库的表结构,确定表之间的关系和约束。
3.设计数据库的索引和查询优化策略,提高系统的性能和响应速度。
五、界面设计1.设计用户界面的组织结构和布局,保证用户界面的易用性和友好性。
2.设计界面的样式和色彩搭配,保证视觉效果的一致性和美观性。
3.定义用户界面的交互方式和操作流程,提供良好的用户体验。
六、安全性设计1.分析系统的安全需求,确定系统的安全策略和权限控制。
2.设计系统的身份认证和访问控制机制,保护系统的数据安全。
3.设计系统的日志记录和异常处理,保障系统的运行稳定性和可靠性。
七、性能优化与测试规划1.评估系统的性能需求和瓶颈,设计系统的性能优化方案。
2.制定系统的测试计划和测试用例,保证系统的质量和稳定性。
3.设计性能测试和压力测试的方法和步骤,确保系统的可扩展性和可靠性。
总结:软件概要设计是软件开发中的重要环节,它对软件系统的整体架构和功能模块进行规划和设计,为后续的详细设计和编码工作提供指导和支持。
在概要设计阶段,需要进行需求分析与功能规划、系统架构设计、数据库设计、界面设计、安全性设计、性能优化与测试规划等任务。
软件工程导论第四章 概要设计
模式4:共享数据模式
共享数据系统以一个或多个数据库 / 数据仓库为中心进行 组织,其它部件可以从中读写存储的数据。共享数据系统还 提供并发访问、容错处理、访问权限控制等功能。 典型的共享数据系统包括: a. 数据库 b. 知识库 c. 源代码控制程序
模式5:信息系统模式
现代信息系统平台模式,主要考虑B/S模式。 B/S模式的三层:表示层(presentation),业务 层(business),和数据存储层(data access) 。 B/S模式的优点: a. 架构简化了客户端。它无需象C/S模式那样在 不同的客户机上安装不同的客户应用程序,而只需安 装通用的浏览器软件。 b. 简化了系统的开发和维护。 c. 使用户的操作变得更简单。 d. 特别适用于网上信息发布 。
第四章 概要设计
•4.1软件体系结构 •4.2概要设计任务与步骤 •4.3软件设计的基本概念 •4.4面向数据流的设计方法 •4.5面向数据结构的分析设计方法 •4.6概要设计文档评审
概要设计
一是要覆盖《需求规格说明书》的全部内容, 二是要作为指导详细设计的依据。
概要设计注重于宏观上和框架上的设计,它是软 件系统的总体结构设计、全局数据库(包括数据结 构)设计、外部接口设计、功能部件分配设计、部 件之间的接口设计。 概要设计又称为架构设计。 • 用于描述系统最顶的结构和组织形式,标识出软 件的各个组成部分。
2.子系统和模块的区别 (1)一个子系统独立一个构成系统,不依赖 于其他子系统提供的服务。 (2)一个模块通常是一个能提供一个或多个 服务的系统组件。 3.体系结构设计的结果 体系结构设计过程的结果是一个体系结构 的设计文档。
4.1软件体系结构 4.1.1概述
4.体系结构模型 (1)静态结构模型 将子系统或组件作为一个个独立的单元来开发 (2)动态过程模型 给出系统在运行时的过程组成。它与静态模型不 同。 (3)接口模型 定义每个子系统从他们的公共接口能得到的服务。 (4)关系模型 关系模型给出子系统间的数据流的关系。
软件工程第4章概要设计
通常,通信内聚模块是通过数据流图来定义的。
5.通信内聚(2)
6.功能内聚
一个模块中各个部分都是完成某一具体功能 必不可少的组成部分 或者说该模块中所有部分都是为了完成一项 具体功能而协同工作,紧密联系,不可分割 的 软件结构中应多使用功能内聚类型的模块
内聚类型汇总
5.标记耦合
如果一组模块通过参数表传递信息 这个参数是: 数据结构 字符串 记录 不是简单变量
标记耦合举例 计算水电费
住户情况
计算水费
水费
住户情况
电费
计算电费
“住户情况”是一个数据结构,图中模块都 与此数据结构有关. “计算水费”和“计算电费”本无关,由于 引用了此数据结构产生依赖关系,它们之间 也是标记偶合.
4.2.2 软件结构风格与策略
1.软件结构风格取决于 程序的模块结构表明了程序各个模块的 组织情况,是软件的过程表示 数据的结构表明各个数据之间的关系和 各个数据元素的约束,是软件的信息表 示
2.软件结构的独立性风格
(1).独立性 软件系统中每个模块只涉及软件要求的 具体的子功能, 而和软件系统中其它的 模块的接口是简单的 一个模块和其它模块的独立程度是评价 一个模块设计好坏的重要度量尺度。
例如初始化模块和终止模块。
4.过程内聚
一个模块内部的处理成分是相关的,而且这些处 理必须以特定的次序执行
函数A 函数B 函数C
例如,把流程结构中的循环部分、判定部分、计 算部分分成一个模块,这三个任务组成的模块是 过程内聚模块。
5.通信内聚
如果一个模块内各功能部分都使用了相同的输入数 据,或产生了相同的输出数据,则称之为通信内聚 模块。
软件概要设计方案
软件概要设计方案
软件概要设计方案是指在软件开发过程中,对整个软件系统进行整体设计,对软件系统的功能、架构、模块划分、数据库设计等方面进行综合规划和设计的文档。
软件概要设计方案应包括以下内容:
1. 引言:介绍软件的背景、目标和范围,对软件系统进行总体描述。
2. 功能需求:对软件系统的功能需求进行详细描述,包括用户需求、系统需求和非功能需求等。
3. 架构设计:对软件系统的整体结构和组成进行描述,包括系统的层次结构、模块划分、模块之间的关系等。
4. 接口设计:对软件系统内部模块之间、软件系统与外部系统之间的接口进行详细设计,包括接口的定义、参数、调用方式等。
5. 数据库设计:根据软件系统的需求分析,设计数据库的表结构、字段定义、主键外键关系等。
6. 安全性设计:根据软件系统的安全需求,设计系统的安全机制,包括用户认证、访问控制、数据保护等。
7. 性能设计:根据软件系统的性能需求,设计系统的性能规划
和优化措施,包括系统的并发处理能力、响应时间等。
8. 测试计划:根据软件系统的功能需求和接口设计,制定软件的测试计划,包括测试的范围、测试方法、测试环境等。
9. 开发计划:根据软件的功能需求和开发资源,制定软件的开发计划,包括开发的时间进度、项目分工等。
10. 项目风险分析:对软件开发过程中可能遇到的风险进行分析和预测,并提出相应的风险应对策略。
软件概要设计方案是软件开发过程中的重要文档,可以作为软件开发的指导和参考,帮助开发团队明确开发目标,合理规划开发过程,确保软件开发的顺利进行。
软件概要设计(精)
46
第4章 软件概要设计
2.耦合性(coupling) 耦合性是软件结构内不同模块之间相互关联程 度的度量。耦合的强弱取决于模块之间接口的复 杂ห้องสมุดไป่ตู้度、模块的调用方式以及通过接口的数据。
47
第4章 软件概要设计
试判断下列叙述是哪一种内聚?
1 )一组语句在程序中多处出现,为了节 省内存空间把这些语句放在一个模块中, 该模块的内聚性是 偶然内聚 。 2 )将几个逻辑上相似的成分放在同一模 块中,通过模块入口处的一个判断决定执 行哪一种功能,该模块的内聚性 是 逻辑内聚 。
27
第4章 软件概要设计
标记耦合举例
计算水电费
住户情况
计算水费
水费
住户情况
电费 计算电费
“住户情况”是一个数据结构,图中模块都与此数 据结构有关. “计算水费”和“计算电费”本无关,由于引用了 此数据结构产生依赖关系,它们之间也是标记偶合.
28
第4章 软件概要设计
将标记耦合修改为数据 耦合举例
计算水电费
局部化的概念和信息隐蔽概念是密切相关的。所谓局部 化是指把一些关系密切的软件元素物理地放得彼此靠近。
40
第4章 软件概要设计
4.3 软件模块化的优化原则
1.改进软件的结构,提高模块独立性
2.模块大小应该适中 3.软件的层次结构要合理 4.模块的作用领域应该在控制领域之内 5.力争降低模块接口的复杂程度 6.设计单入单出的模块 7.模块的内部功能应该可以预测
31
计算平均分 或最高分
第4章 软件概要设计
去除模块间控制耦合的方法
控制耦合增加了理解和编程的复杂 性,调用模块必须知道被调模块的内部 逻辑,增加了相互依赖 (1)将被调用模块内的判定上移到调用模 块中进行 (2)被调用模块分解成若干单一功能模块
软件概要设计的主要任务
软件概要设计的主要任务软件概要设计的主要任务概述软件概要设计是软件开发过程中非常重要的一步,它是在需求分析和详细设计之间的一个环节。
软件概要设计的主要任务是确定系统的整体结构,包括模块划分、模块之间的接口定义、数据流和控制流等。
本文将详细介绍软件概要设计的主要任务。
模块划分模块划分是软件概要设计中最基本的任务之一。
它将整个系统划分为若干个较小的模块,每个模块负责完成特定的功能。
在进行模块划分时需要考虑以下几个方面:1. 功能划分:根据系统需求将功能进行划分,每个模块负责完成一个或多个相关功能。
2. 数据划分:根据数据流向将数据进行划分,每个模块负责处理一部分数据。
3. 业务逻辑划分:根据业务逻辑将系统进行划分,每个模块负责处理一个或多个相关业务逻辑。
4. 性能和可维护性考虑:在进行模块划分时需要考虑系统性能和可维护性,避免单一模块过于庞大导致系统性能下降和维护难度增加。
模块之间的接口定义在进行模块划分后,需要定义模块之间的接口。
接口定义是指明每个模块对外提供的服务和对内调用其他模块服务的方式和规范。
在进行接口定义时需要考虑以下几个方面:1. 接口类型:根据实际需求选择适合的接口类型,如函数调用、消息传递、共享内存等。
2. 接口参数:明确每个接口所需传递的参数和返回值,包括数据类型、数据范围等。
3. 接口协议:规定每个接口所需遵循的协议,如同步或异步、阻塞或非阻塞等。
4. 接口文档:编写详细的接口文档,包括输入输出格式、错误码定义等。
数据流和控制流在进行软件概要设计时还需要考虑数据流和控制流。
数据流指数据在系统中的传输方式和路径,控制流指程序执行过程中各个模块之间交互方式和顺序。
在进行数据流和控制流设计时需要考虑以下几个方面:1. 数据流向:明确每个模块所处理的数据来源和目标,并确定数据传输路径。
2. 数据转换:确定每个模块所需进行的数据转换操作,如数据格式转换、数据加密等。
3. 控制流程:规定程序执行过程中各个模块之间的交互方式和顺序,确保程序正确执行。
软件工程 第4章 概要设计
4.4.1 结构化方法
变换流
– 数据沿输入通路进入系统,同时由外部形式 变换成内部形式,通过变换中心,经加工处 理后再沿输出通路变换为外部形式离开系统
事物流
– 数据沿输入通路到达某一处理,该处理根据 输入数据的类型在若干个处理序列中选择某 一个来执行
事务流 图例
4.4.1 结构化方法
如果两个模块共享的数据很多,通过参 数传递不方便时可以利用公共环境耦合
模块的耦合
内容耦合
– 耦合程度最高的是内容耦合 – 某个模块直接访问另一模块的内部数据 – 两个模块有相同的程序段 – 某个模块直接进入另一个模块的内部
模块的耦合设计原则
在传递信息时,尽量使用数据耦合,少 用控制耦合。不采用内容耦合,尽量控 制公共环境耦合。 模块之间相互调用时,传递的参数最好 只有一个,最多不超过4个。 在设计模块时,尽量做到把模块之间的 连接减少到最少程度。
2. 模块的内聚
一个模块内各个元素彼此结合的紧密程度用内聚 来度量。 (1)偶然内聚 偶然内聚 (2)逻辑内聚 逻辑内聚 (3)时间内聚 时间内聚 (4)通信内聚 通信内聚 (5)顺序内聚 (6)功能内聚 功能内聚 内聚按紧密程度从低到高排列: 偶然内聚、逻辑内聚、时间内聚、通信内聚、 功能内聚。
– 深度 深度指软件结构中模块的层数 – 宽带 宽带指软件结构内同一层次的模块数 – 扇出 扇出指一个模块所调用的模块数 – 扇入 扇入指有多少个上级模块直接调用它
4.2.3 软件结构设计优化准则
5.模块的大小应适中 模块的大小应适中
– 模块过大:过于复杂,使设计、调试、维护 困难 – 模块过小:功能意义消失,系统接口复杂 过小不值得单独存在,可合并 到上级模块 大小标准:考虑模块的功能意义和复杂程度 大小标准: 易于理解,便于控制
软件概要设计范文
软件概要设计范文
一、软件开发的背景与目的
1.1背景
随着物联网技术的发展,越来越多的物联网设备可以互联互通,构成
了一个庞大的物联网系统,为行业应用提供了极大的便利和挑战。
有效的
连接管理、可靠的设备控制和高效的数据分析,是物联网应用中的关键技
术环节。
本文所述的软件开发,就是为了满足这些技术需求,建立一个完整的
物联网网络管理系统,并开发相应的软件,以更好地满足用户的需求。
1.2目的
该软件开发的目的主要是建立一个完整的物联网网络管理系统,实现
设备连接、设备控制和数据分析等功能,帮助用户更好地掌控物联网设备,更好地利用这些设备的数据,从而实现更有效和高效的管理。
二、软件需求分析
2.1功能需求
(1)物联网网络管理:为用户提供物联网设备连接、控制及数据采
集等功能,使用户可以更容易的实现物联网设备的连接、控制及数据采集
等功能。
(2)设备控制:通过设备控制模块,使用户可以轻松控制物联网设备,调整其运行状态,实现物联网设备的远程控制。
(3)数据分析:通过数据分析模块,用户可以对采集的物联网设备数据进行分析。
第四章 总体设计(概要设计)
§4.1 总体设计的过程
总体设计过程通常由两个主要阶段组成: 1.系统设计,确定系统的具体实现方案; 2.结构设计,确定软件结构。
总体设计的过程: 总体设计的过程:
一、设想供选择的方案
确定方案
二、选择合理的方案 三、推荐最佳方案 四、功能分解
确定结构
五、设计软件结构 六、数据库设计 七、制定测试计划 八、书写文档 九、审查复审
第四章 总体设计(概要设计)
软件设计的任务是把分析阶段产生的软 件需求说明转换为用适当手段表示的软件 设计文档。 软件设计可分为概要设计(Preliminary Design)和详细设计(Detail Design)。 概要设计确定软件的结构,即软件的组成 及各子系统之间的相互联系;详细设计确 定模块内部的算法和数据结构,产生描述 各模块程序过程的详细设计的文档。
七.模块功能应该可以预测。 模块功能应该可以预测。 模块的功能应该可以预测, 模块的功能应该可以预测,但也要防止模块 功能过分局限。 功能过分局限。 如果一个模块可以当作一个黑盒子, 如果一个模块可以当作一个黑盒子 , 也就是 只要输入数据相同就产生同样的输出, 说,只要输入数据相同就产生同样的输出,这个 模块就是可以预测的。 模块就是可以预测的。 以上列出的启发式规则多数是经验规律, 以上列出的启发式规则多数是经验规律 , 对 改进设计,提高软件质量, 改进设计,提高软件质量,往往有重要的参考价 但是, 值。但是,它们既不是设计的目标也不是设计时 应该普遍遵循的原则。 应该普遍遵循的原则。
1. 偶然性内聚(Coincidental Cohesion) 所谓偶然性内聚是指一个模块内各成分为完成一组 功能而组合在一起,它们相互之间即使有关系,也很 松散。 2. 逻辑性内聚(Logical Cohesion) 如果一个模块完成的任务逻辑上相关(例如,一个产 生所有与类型无关的输出),则称为逻辑性内聚。 3. 时间性内聚 (Temporal Cohesion) 如果一个模块内包含的任务必须在一个时间段内执行 (例如一个初始化模块),则称之为时间性内聚。 4. 过程性内聚 (Procedural Cohesion) 模块的过程性内聚是指,模块内成分彼此相关,并 且必须按特定的次序执行。
4软件概要设计
A B 深度
I
顶层 D G L
扇入为2
C F
K
1层 H M 2层 3层 4层
E
J N
扇入为3
宽度 程序模块示意图
软件的树状结构和网状结构
由模块连接而得到的软件结构最普通的形式就是树状结构和网状结构。
A
B E F C G H L D I
顶层 1层 E 2层
A
B
C
D
K
M
3层
F
G 网状结构
H
软件的树状结构
将分析模型转换为设计
加 数 工 据 规 对 实 数 体 据 格 象 关 流 说 描 系 数据字典 图 明 述 图 状态转换图 控制 明 规格说
过程设计 接口设计 体系结构设计 数据设计
软件设计的重要性
软件设计是后续开发步骤及软件维护工作的基础。如 果没有设计,只能建立一个不稳定的系统结构。
维护
• 区别设计与编码的关系;
• 在构造设计时就应该能够评估质量; • 复审设计以减少概念性错误。
软件设计内容
4.1.5 概要设计过程
1、设想供选择的方案;2、选取合理的方案; 3、推荐最佳方案; 4、功能分解; 5、设计软件结构; 6、设计数据库; 7、制定测试计划; 8、书写文档; 9、审查和复查。
• 抽象层次Ⅲ. 程序过程表示。以2-D (二维)绘图生成任务为例: PROCEDURE:2-D drawing creation REPEAT UNTIL (drawing creation task terminates) DO WHILE (digitizer interaction occurs) digitizer interface task; DETERMINE drawing request CASE; line: line drawing task; rectangle:rectangle drawing task; circle: circle drawing task; ……
软件设计概述
模块的独立性
模块(Module)
“模块”,又称“组件”。它一般 具有如下三个基本属性: 功能:描述该模块实现什么功能 逻辑:描述模块内部怎么做 状态:该模块使用时的环境和条 件
在描述一个模块时,还必须按模块 的外部特性与内部特性分别描述 模块的外部特性 模块的模块名、参数表、其中的 输入参数和输出参数,以及给程序 以至整个系统造成的影响 模块的内部特性 完成其功能的程序代码和仅供该 模块内部使用的数据
详细设计
在详细设计过程中,需要完成的 工作是: 1.确定软件各个组成部分内的 算法以及各部分的内部数据组织 2.选定某种过程的表达形式来 描述各种算法。 3.进行详细设计的评审
模块化设计
分解: 最小成本区 信息隐藏, 模块独立性:
内聚, 耦合(数据耦合与特征耦合)
C(P1+P2) >C(P1)+C(P2) E(P1+P2) >E(P1)+E(P2) P1,P2 问题 C 问题复杂度 E 工作量
设计表达工具
目的:是为了把设计师的思想告诉其它有关人员 。可读性,便于维护,方便他人阅读。概要设 计表达工具:用于表达软件结构;详细设计表 达工具:用于表达软件过程。
1. 图形表达工具:如流程图,N-S图,PAD图, HIPO图,SC图等; 2. 文字表达工具:如伪代码,PDL等;
3. 表格表达工具:如判定表等。
设 计 的 后 处 理
为每一个模块写一份处理说明 为每一个模块提供一份接口说明 确定全局数据结构和局部数据结构 指出所有的设计约束和限制 进行概要设计的评审 进行设计的优化(如果需要和可能 的话)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
仲恺农业技术学院计算机与电子工程学院
40
•状态:该模块的运行环境,即模块的调用 与被调用关系。
•功能、状态与接口反映模块的外部特性, 逻辑反映它的内部特性。 •模块化:指解决一个复杂问题时自顶向下 逐层把软件系统划分成若干模块的过程。每 个模块完成一个特定的子功能,所有的模块 按某种方法组装起来,成为一个整体,完成 整个系统所要求的功能。模块化是软件解决 复杂问题所具备的手段,为了说明这一点, 可将问题的复杂性和工作量的关系进行推理。
09:48:36
仲恺农业技术学院计算机与电子工程学院
38
4.4 软件设计的概念和原理
4.4.1 模块化
4.4.2 抽象
4.4.3 信息隐蔽
4.4.4 模块独立 4.4.5软件模块结构的改进
09:48:36
仲恺农业技术学院计算机与电子工程学院
39
4.4.1模块(module)化
模块又称”构件” :是一个适当尺寸能独 立执行一个特定功能的子程序。如高级语 言中的过程、函数、子程序等等。在软件 的体系结构中,模块是可组合、分解和更 换的单元。模块具有以下几种基本属性: 接口:指模块的输入与输出。 功能:指模块实现什么功能。 逻辑:描述内部如何实现要求的功能及所 需的数据。
09:48:36
仲恺农业技术学院计算机与电子工程学院
23
自顶向下、逐步细化
09:48:36
仲恺农业技术学院计算机与电子工程学院
24
4.3.2 程序结构
程序结构表明了程序各个部件(模块) 的组织情况,是软件的过程表示。 程序结构意味着一种控制层次体系, 指出了需求分析中确定的某一问题中 各元素(模块)之间的相互关系。
冗余性设计:针对同一问题,由两个开发者采用不同的程序设
计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时, 利用检错系统予以纠正,或使用表决技术决定一个正确结果,保证软 件的容错性。
09:48:36
仲恺农业技术学院计算机与电子工程学院
14
5.可靠性设计
可靠性设计也叫做质量设计 在运行过程中,为了适应环境的变化和用户新的要 求,需经常对软件进行改造和修正。在软件开发的 一开始就要确定软件可靠性和其它质量指标,考虑 相应措施,以使得软件易于修改和易于维护
《软件工程》
Software Engineering
第四章 软件概要设计
(总体设计)
09:48:36
仲恺农业技术学院计算机与电子工程学院
1
第四章 软件概要设计
•4.1 软件设计的目标与任务 •4.2 概要设计(总体设计) •4.3 软件结构、程序结构和软件过程 •4.4 软件设计的概念和原理 •4.5 面向数据流的设计方法 •4.6 小 结
产生最佳解的一般结构
09:48:36
仲恺农业技术学院计算机与电子工程学院
35
4.3.2.2 程序结构中的几个概念
09:48:36
仲恺农业技术学院计算机与电子工程学院
36
程序的系统结构图
09:48:36
仲恺农业技术学院计算机与电子工程学院
37
4.3.4 软件过程 软件过程侧重于描述各个模块的处理细节,包括事件 的顺序、正确的判定点、重复的操作等。
从工程管理的角度来看,软件设计分两步完成。
概要设计,将软件需求转化为数据结构和软件 的系统结构。 详细设计,即过程设计。通过对结构表示进行 细化,得到软件的详细的数据结构和算法
09:48:36
仲恺农业技术学院计算机与电子工程学院
9
4.1.3软件设计过程
1. 制定规范
在进入软件开发阶段之初,首先应为软件开发组制定 在设计时应该共同遵守的标准,以便协调组内各成员 的工作。包括: 阅读和理解软件需求说明书,确认用户要求能否实现, 明确实现的条件,从而确定设计的目标,以及它们的 优先顺序 根据目标确定最合适的设计方法
09:48:36
仲恺农业技术学院计算机与电子工程学院
25
程序的树状结构和网状结构
09:48:36
仲恺农业技术学院计算机与电子工程学院
26
4.3.2.1 结构图(sc)
结构图反映程序中模块之间的层 次调用关系和联系:它以特定的 符号表示模块、模块间的调用关 系和模块间信息的传递
09:48:36
仲恺农业技术学院计算机与电子工程学院
21
从以上内容看,软件结构的设计是以模块为基 础的,在需求分析阶段,已经把系统分解成层次结 构。设计阶段,以需求分析的结果为依据,从实现 的角度进一步划分为模块,并组成模块的层次结构。
方法: 对于有经验的程序员:把这些功能模块自顶向下组 成一种良好的层次调用关系,从而完成软件结构设计的 任务。 常规方法:从DFD图中映射成软件结构图。
规定设计文档的编制标准
规定编码的信息形式,与硬件,操作系统的接口规约, 命名规则
仲恺农业技术学院计算机与电子工程学院 10
09:48:36
2. 软件系统结构的总体设计
基于功能层次结构建立系统。
采用某种设计方法,将系统按功能划分成模块的 层次结构 确定每个模块的功能 建立与已确定的软件需求的对应关系 确定模块间的调用关系 确定模块间的接口 评估模块划分的质量
09:48:36
仲恺农业技术学院计算机与电子工程学院
20
结构设计
(1)采用某种设计方法,将一个复杂 的系统按功能划分成模块。 (2)确定每个模块的功能。 (3)确定模块之间的调用关系。 (4)确定模块之间的接口,即模块之 间传递的信息。 (5)评价模块结构的质量。
09:48:36
仲恺农业技术学院计算机与电子工程学院
09:48:36
仲恺农业技术学院计算机与电子工程学院
11
3. 处理方式设计 确定为实现系统的功能需求所必需的算法,评估算 法的性能 确定为满足系统的性能需求所必需的算法和模块间 的控制方式 周转时间 响应时间(对于实时联机系统的的性能需求) 吞吐量(单位时间内能够处理的数据量) 精度 确定外部信号的接收发送形式
09:48:36
仲恺农业技术学院计算机与电子工程学院
41
设问题x,表示它的复杂性函数为C(x),解决它 所需要的工作量函数为E(x)。对于问题P1和P2, 如果 C(P1)>C(P2) 即P1比P2复杂 那么 E(P1)>E(P2) 即问题越复杂,所需要 的工作量越大。 根据解决一般问题的经验,规律是: C(P1+P2)>C(P1)+C(P2) 即一个问题由两个问题组合而成的复杂度大于分别 考虑每个问题的复杂度之和。这样,可推出: E(P1+P2)>E(P1)+E(P2) 由此可见,开发一个大而复杂的软件系统,将它进 行适当的分解,不但可降低其复杂性,还可减少开发 工作量,从而降低开发成本,提高软件生产率,这就 是模块化的依据。
09:48:36
仲恺农业技术学院计算机与电子工程学院
30
④ 在模块A的箭头尾部标以一个菱 形符号,表示模块A有条件地调用 另一个模块B。当一个在调用箭头 尾部标以一个弧形符号,表示模 块A反复调用模块C和模块D。
09:48:36
仲恺农业技术学院计算机与电子工程学院
31
SC中的选择调用
判定为真时调用A,为假时调用B
09:48:36
仲恺农业技术学院计算机与电子工程学院
19
总体设计的过程
2、结构设计 —— 模块化思想: 将DFD细化,至每个子功能都明白易懂;每个 模块完成一个子功能;每层模块合成一个高一级的 功能。 主要工具有 System Design Hierarchy及HIPO图等。 3、数据库设计 (略) 4、测试计划 5、文档、审查
09:48:36
仲恺农业技术学院计算机与电子工程学院
17Βιβλιοθήκη 总体设计从回答“做什么”到回答“怎样做” 划分出组成系统的物理元素——程序、 文件、数据库、过程和文档等等 每个元素还是黑盒子 ---“全局高度,抽象层次”
09:48:36
仲恺农业技术学院计算机与电子工程学院
18
总体设计的过程
1、确定最佳方案: 从DFD出发进行任务分解,不同的划分方法即对 应不同的方案。每个合理的方案应配备下列4份 资料: ⑴系统流程图 ⑵组成系统的物理元素清单 ⑶成本/效益分析 ⑷进度计划 选择最佳方案并制定详细的实现计划
09:48:36
仲恺农业技术学院计算机与电子工程学院
6
开发阶段的信息流
09:48:36
仲恺农业技术学院计算机与电子工程学院
7
4.1.1 正确的软件设计
软件设计是后续开发步骤及软件维护工 作的基础。如果没有设计,只能建立一 个不稳定的系统结构
09:48:36
仲恺农业技术学院计算机与电子工程学院
8
4.1.2 软件设计的任务
27
① 模块:模块用矩形框表示,并 用模块的名字标记它。
09:48:36
仲恺农业技术学院计算机与电子工程学院
28
② 模块的调用关系和接口:模块之 间用单向箭头联结,箭头从调用模 块指向被调用模块,表示调用模块 调用了被调用模块。
09:48:36
仲恺农业技术学院计算机与电子工程学院
29
③ 模块间的信息传递:当一个模块 调用另一个模块时,调用模块把数 据或控制信息传送给被调用模块, 以使被调用模块能够运行。而被调 用模块在执行过程中又把它产生的 数据或控制信息回送给调用模块
09:48:36
仲恺农业技术学院计算机与电子工程学院
12
4. 数据结构设计 确定软件涉及的文件系统的结构以及数 据库的模式、子模式,进行数据完整性和安 全性的设计 确定输入,输出文件的详细的数据结构 结合算法设计,确定算法所必需的逻辑数据 结构及其操作 确定对逻辑数据结构所必需的那些操作的程 序模块(软件包)