4-概要设计
4.概要设计阶段--概要设计说明书的
学生成绩管理系统概要设计说明书●拟制人: 罗陈黄、张远浩、徐硕勋●审核人:●批准人:概要设计说明书1.引言1.1编写目的我们组编写目的是为了将某校的学生成绩管理系统存在的问题进行解决和优化,也是为了使学生和教师更好的使用学生成绩管理系统。
推动软件工程中编程的规范化,使设计人员遵循统一的概要设计书写规范,节省制作文档的时间,降低系统实现的风险,做到系统设计资料的规范性与全面性,以利于学生成绩管理系统的实现、测试、维护、版本升级优化等阶段。
1.2背景[1]待开发软件系统的名称:学生成绩管理系统[2]本项目的任务提出者:高月。
开发者:张远浩、罗陈黄、徐硕勋。
用户:某校学生、教师。
1.3定义1.3.1总体结构软件系统的总体逻辑结构按照不同的设计方法,有不同的总体逻辑结构。
若采用面向功能或面向数据的设计方法,则总体逻辑结构为一树形的功能模块结构图。
若采用面向对象或面向部件(构件)的设计方法,则总体逻辑结构为部件(构件)的组装图1.3.2外部接口本软件系统与其他软件系统之间的接口,接口设施可以是中间件。
接口描述包括:传输方式、带宽、数据结构、传输频率、传输量、传输协议1.3.3数据结构数据结构包括:数据库表的结构、其他数据结构等1.3.4概念数据模型CDM关系数据库的逻辑设计模型,叫做概念数据模型。
主要内容包括一张逻辑E-R图及其相应的数据字典1.3.5物理数据模型PDM关系数据库的物理设计模型,叫做物理数据模型。
主要内容包括一张物理表关系图及其相应的数据字典1.3.6视图在基表或其他视图之上建立的一张虚表,叫做视图,它具有物理表的许多性质,在数据处理和授权上很有用1.3.7角色数据库中享有某些特权操作的用户,叫做角色。
角色的权利通过授权来实现1.3.8子系统具有相对独立功能的小系统叫做子系统。
一个大的软件系统可以划分为多个子系统,每个子系统可由多个模块或多个部件组成1.3.9模块具有功能独立、能被调用的信息单元叫做模块。
概要设计范本
概要设计范本1.概要设计和详细设计怎么写知乎撰写的设计文档主要分为:总体概要设计文档+详细设计文档,后简称为“概设”+“详设”。
总设和详设都应该包含的部分:(1)需求:一般以产品的语言描述,这一块可以拷贝产品需求文档中的storylist部分;(2)名词解释(可选):非相关领域内的同学需要看到文档需要提前了解的一些概念性质的东西;(3)设计目标:又分为功能目标和性能目标,功能目标一般是对产品需求的技术描述,性能目标是根据产品给出的数据对性能进行的评估。
一般来说,新服务必须要有性能目标一项,性能目标可能会影响设计方案。
除了都应该包含的部分,总体概要设计一般还包含:(1)系统架构:一般来说会有个简单的架构图,并配以文字对架构进行简要说明;(2)模块简介:架构图中如果有很多模块,需要对各个模块的功能进行简要介绍;(3)设计与折衷:设计与折衷是总体概要设计中最重要的部分;(4)潜在风险(可选);输出总体概要设计的时候,很多方案还是不确定的,需要在设计评审会议上确认。
总体概要设计重点在“方案折衷”,总体概要设计评审完毕之后,此时应该是所有方案都确认了,需要输出各模块的详细设计,详细设计重点在“详细”:(1)总体概要设计结论汇总(可选):达成一致的结论有个简要概述,说明详设是对这些结论的实现;(2)交互流程:简要的交互可用文字说明,复杂的交互建议使用流程图,交互图或其他图形进行说明;(3)数据库设计:这个是应该放在总设还是详设呢?(4)接口形式:有了数据库+接口+流程,别的同学拿到详设文档,基本也能够搞定了;(5)其他细节:例如公式等;理论上输出了详细设计之后,无论谁拿到了这个详设文档,都是能够完成该项目的。
个人实践分享:一、大图(1)大系统或复杂流程,其架构图或者流程图会非常大,经常比A4纸或word的一页大很多,此时不宜在word中直接贴图形,贴了也看不清,建议将图放在wiki上,文档中直接贴链接;(2)一定要保存viso或者其他图形的源文件,否则今后改动起来要重画,代价可想而知;二、设计与折衷(1)设计与折衷是总设中最重要的内容,总设评审中,主要就是讨论这些折衷的优劣;(2)评审过后,不但要邮件周知结论,还要在总设中进行更新,说明最终决定使用了哪种方案,为什么使用这种方案;根据自己的经验,接手别人的模块、项目,拿到代码和文档,设计方案对我来说完全是个谜!!!(3)有时候因为排期或者其他原因,不一定采用了最优的设计方案,此时更应该在总设中记录决策的过程与原因;(4)最后,设计折衷是一个很好的自我辩解的机会:因为项目进度,或者历史遗留问题,我不得不采取了一个这样的设计,不要再骂我了。
第4章 软件概要设计
内容耦合度 一个模块不经调用直接使用另一模块的内容
4.1.6 高内聚和低耦合
内聚和耦合是密切相关的,模块内的高内聚往往
意味着模块间的低耦合 内聚度和耦合度要说明的是同一内容,即模块的 独立性,它们是衡量这种独立性的两个不同的方 面
4.1.6 高内聚和低耦合
在软件设计中,应该追求高内聚、低耦合 (即块
逐次运用“黑盒”的工程定义将问题进行功能分解 即按数据变换的阶段划分模块,其中每个模块都看成 是一个“黑盒” 对这个“黑盒”进行输入、输出以及输入、输出间的 变换的考察 考察的结果又划分成若干更小的模块,然后将这些模 块作为新的“黑盒”,再进行考察 最后细分到每个“黑盒”都能用简单程序实现为止
而模块间的外部联系尽可能地弱,即尽可能地提高模块 的相对独立性 评价模块结构质量的具体标准是
模块的内聚度(模块强度)——指一个模块内部各成分之间的联系。 内聚度高,则模块的相对独立性高。内聚度可划分为七级 模块的耦合度(模块结合度)——是模块结构中各模块之间相互联 系的一种度量。耦合度越弱,意味着模块独立性越高,模块间相 互影响就越小。耦合度分四个方面
第4章 软件概要设计
模块的划分
结构化设计方法 (SD) Parnas方法 Jackson方法 程序的逻辑构造(LCP)方法 概要设计文件与复审
第4章 软件概要设计
需求分析阶段解决了让软件“做什么”的问题,
并且在软件需求说明书中得到了充分的表达 进入设计阶段,开始软件需求的实施工作,也就 是解决“怎么做”的问题 概要设计 (总体设计或结构设计) 工作由设计员完 成,设计员应该是经验丰富的软件人员
系统设计-第4章软件概要设计
标记耦合举例
住户情况
计算水电费 水费
电费
住户情况
计算水费
计算电费
“住户情况”是一个数据结构,图中模块都与此数 据结构有关. “计算水费”和“计算电费”本无关,由于引用了 此数据结构产生依赖关系,它们之间也是标记偶合.
28
将标记耦合修改为数据 耦合举例
计算水电费
本月 用水量
水费 电费
本月 用电量
内聚是模块功能强度的度量,它标志一个模块内 部各个元素彼此结合的紧密程度。
46
2.耦合性(coupling) 耦合性是软件结构内不同模块之间相互关联程
度的度量。耦合的强弱取决于模块之间接口的复 杂程度、模块的调用方式以及通过接口的数据。
47
试判断下列叙述是哪一种内聚?
1)一组语句在程序中多处出现,为了节
50
4.3 软件模块化的优化原则
1.改进软件的结构,提高模块独立性 2.模块大小应该适中 3.软件的层次结构要合理 4.模块的作用领域应该在控制领域之内 5.力争降低模块接口的复杂程度 6.设计单入单出的模块 7.模块的内部功能应该可以预测
返回51 节目录
设计出软件的初步结构以后,应该审查分 析这个结构,通过对模块的分解或合并,力求 降低耦合提高内聚。
一组模块引用同一个公用数据区(也 称全局数据区、公共数据环境)。 公共数据区指:
全局数据结构 共享通讯区 内存公共覆盖区等
35
公共耦合举例
A
B
C
公共数据区 模块A、B、C间存在错综复杂的联系
36
公共耦合存在的问题
(1)软件可理解性降低 (2)诊断错误困难 (3)软件可维护性差, (4)软件可靠性差 (公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量!!!
4[1].概要设计阶段--概要设计说明书的
[合胜固定资产管理系统] 概要设计说明书[V1.0(版本号)]拟制人___赵海龙______________ 审核人______________________ 批准人______________________[二零一零年四月十五日]概要设计说明书1.引言1.1编写目的本概要设计说明书详细叙述了本项目第一阶段的主要内容,并且对系统的性能需求、安全保密需求做了较为详细的阐述。
本说明书供业务和技术部门人员、软件需求提供人员、软件的概要设计人员、软件的开发人员、软件的测试人员使用,并作为产品开发的依据之一。
1.2背景作为软件开发的前期文档,主要是1.3定义HST:合胜信息技术有限公司B/S :Browser/Server结构)结构即浏览器和服务器结构。
需求:用户解决问题或达到目标所需的条件和功能;系统或系统部件要满足合同、标准,规范或其他正式文档所需具有的条件及权能。
1.4参考资料《国家标准软件开发文档规范》《软件开发流程》闪四清:《SQL Server 实用简明教程》,清华大学出版社,2003年1月版2.总体设计2.1需求规定2.1.1系统功能本系统主要是对资产进行全程的时时的跟踪和管理,能随时掌握资产所处的状态以及使用状况。
对资产的检修、折旧、报废等问题做出分析,为管理者对资产的评估做出全面准确的分析。
2.1.2系统性能2.1.2.1精度在用条码扫描仪扫描条形码时,必须要准确以及在进行向数据库文件提取数据时,要求数据记录定位准确,在往数据库文件数组中添加数时,要求输入数准确。
系统中的编码要球为String 类型,长度最长为30位。
单号的编码为String 类型,长度最长为30位。
日期类型为Datetime 类型,格式为“yyyy-MM-dd”数量为 int类型,最大为62535.货币为 Decimal 类型,精度为小数点后2位。
2.1.2.2时间特性要求没有具体特别的要求2.1.2.3可靠性系统应能长时间的工作,并能在大量数据录入的情况下保持稳定,对数据的处理能力要稳定。
软件工程 第四章 概要设计
第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)
软件工程各章名词解释
名词解释一个三分 五个十五分第一章 绪论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工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。
4.概要设计说明书
本文系原创,欢迎来小店:项目名称概要设计说明书XX软件有限公司研发部版本历史目录1文档介绍 (5)1.1文档目的 (5)1.2文档范围 (5)1.3读者对象 (5)1.4参考文献 (5)1.5术语与缩写解释 (5)2系统概述[边界] (6)2.1系统说明 (6)2.2系统任务 (6)2.2.1系统目标 (6)2.2.2运行环境 (6)2.2.3与其它系统关系 (6)2.3需求规定 (6)2.3.1功能需求 (6)2.3.2性能需求 (6)2.3.3约束性需求 (6)3总体设计 (6)3.1系统功能架构 (6)3.1.1功能架构 (7)3.1.2模块清单 (7)3.2系统技术架构 (7)3.3系统物理架构 (7)3.4系统数据模型 (7)4模块功能描述 (7)4.1模块1(标识符)功能 (7)4.1.1功能描述 (7)4.1.2数据描述 (7)4.1.3界面描述 (8)4.2模块2(标识符)功能 (8)4.2.1功能描述 (8)4.2.2数据描述 (8)4.2.3界面描述 (8)5接口设计 (8)5.1硬件接口 (8)5.2软件接口 (8)5.3通信接口 (8)6系统安全 (8)6.1系统安全 (8)6.2数据安全 (9)6.3后备与恢复 (9)6.4出错处理 (9)6.5计算机病毒的防治措施 (9)1文档介绍1.1文档目的提示:描述本文档的目的。
1.2文档范围提示:描述本文档的边界范围。
1.3读者对象提示:列出本文档可能存在的读者。
1.4参考文献提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下:[标识符] 作者,文献名称,出版单位(或归属单位),日期例如:[AAA]作者,《立项建议书》,机构名称,日期[SPP-PROC-PP] SEPG,项目规划规范,机构名称,日期1.5术语与缩写解释2系统概述[边界]2.1 系统说明任务提出单位:开发单位:预期用户:2.2 系统任务2.2.1系统目标2.2.2运行环境2.2.3与其它系统关系2.3 需求规定2.3.1功能需求2.3.2性能需求2.3.3约束性需求3总体设计3.1 系统功能架构用构件模型描述系统各模块组成及其之间的关系。
概要设计的四个主要任务
概要设计的四个主要任务概要设计是整个软件开发过程中的重要环节,它主要包括四个主要任务:需求分析、系统设计、接口设计和数据设计。
1. 需求分析:需求分析是概要设计的第一个主要任务,它是软件开发过程中最重要的一环。
在这个任务中,开发团队需要了解用户的需求、期望以及业务流程,以确保软件能够满足用户的期望。
需求分析还需要将用户的需求转化为具体的软件规格说明书,并进行需求优先级的排序和管理,以确保软件的开发能够高效和有序地进行。
2. 系统设计:系统设计是概要设计的第二个主要任务,它是将需求分析的结果转化为实际系统设计的过程。
在这个任务中,开发团队需要确定软件的整体结构、模块划分以及功能分配。
系统设计需要考虑系统各个模块之间的通信方式,数据流以及流程控制等内容,并在整个设计方案中保持一致性和可扩展性。
3. 接口设计:接口设计是概要设计的第三个主要任务,它是设计软件对外接口的过程,是软件开发中的一个关键方面。
接口设计需要考虑软件跨平台兼容性、稳定性、安全性以及扩展性等方面,并为其他模块或外部应用程序提供提供规范的API、Webservice或RPC的实现。
4. 数据设计:数据设计是概要设计的第四个主要任务,它是根据需求分析中确定的数据需求,设计出系统中的数据库结构和数据表的定义。
数据设计需要考虑系统各个模块需要用到的数据类型、数据量以及数据处理方式,确保数据的完整性、一致性和安全性,同时也要为未来系统的可扩展性考虑可能的数据变更和数据迁移问题。
总体而言,在概要设计任务中,需要开发团队按照一定的任务序列,完成软件的系统分析、功能设计、API设计和数据设计等工作,以确保软件开发中能够系统性地、有序地推进。
这一任务的完成水平是直接决定软件开发项目能否按计划、高质量地完成的关键因素。
软件工程复习提纲
《软件工程》课程要点●每章教学课件中的“本章小结”列出了需要掌握的内容●教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);答:计算机软件是程序、数据和相关文档的集合;用于实现计算机系统所需要的逻辑方法和控制过程(2)软件危机的含义、表现、产生原因(客观、主观)答:计算机软件开发和维护过程中遇到的一系列严重问题。
软件危机的表现:①对软件开发成本和进度的估计很不准确②已完成的软件不能满足用户需求③软件质量差④软件不可维护⑤软件没有开发文档⑥软件成本在计算机系统总成本中所占的比例逐年上升⑦软件生产率跟不上硬件的发展和计算机迅速普及的趋势与软件的特点有关(客观原因):①软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难②软件在使用期间不存在机械磨损和老化问题,一旦发现错误,通常意味着修改原来的设计,因此软件难维护③软件规模庞大,程序复杂性增加,需多人分工合作(不能保证每个人完成的工作合在一起构成一个高质量的大型软件系统)与软件开发和维护的方法不正确有关(主观原因):①开发无计划②忽视软件需求分析的重要性③轻视软件维护④无过硬评测手段⑤缺乏有力的开发方法和工具⑥不重视开发文档等软件配置(3)软件工程学科包括的内容(三要素)、解决的主要问题答:(1)软件工程定义:1)软件工程是指导计算机软件开发和维护的工程学科 2)采用工程化的概念、原理、技术和方法来开发和维护软件3)将经过时间考验而证明正确的管理技术和开发技术结合起来,以较经济的手段开发出高质量的软件并有效维护它2)软件工程方法学的三要素:①方法:完成软件开发各项任务的技术方法②工具:为方法的高效运用,而提供的自动或半自动的软件支撑环境③过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤(4)软件生命周期的含义、组成阶段及各阶段主要任务答:软件生命周期:一个软件从定义、开发、运行维护,直到最终被废弃要经历一个漫长的时期,这个时期称为软件生命周期。
软件工程导论第四章 概要设计
模式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章-软件概要设计
软件工程考核知识点-第4章-软件概要设计4.1 软件概要设计的基本任务在软件需求分析阶段,已经搞清楚了软件“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。
进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件概要设计或结构设计。
4.1.1 基本任务1. 设计软件系统结构(简称软件结构)为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库(文件),对于程序,则首先进行结构设计,具体为:(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。
(2)确定每个模块的功能。
(3)确定模块之间的调用关系。
(4)确定模块之间的接口,即模块之间传递的信息。
(5)评价模块结构的质量。
根据以上内容,软件结构的设计是以模块为基础的,在需求分析阶段,已经把系统分成层次结构。
设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构。
软件结构的设计是概要设计关键的一步,直接影响到下一阶段详细设计与编码的工作软件系统的质量及一些整体特性都在软件结构的设计中决定。
2.数据结构及数据库设计对于大型数据处理的软件系统,除了控制结构的模块设计外,数据结构与数据库设计也是很重要的。
(1)数据结构的设计逐步细化的方法也适用于数据结构的设计。
在需求分析阶段,已通过数据字典对数据的组成、操作约束、数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。
在概要设计阶段,宜使用抽象的数据类型。
(2)数据库的设计数据库的设计指数据存储文件的设计,主要进行以下几方面设计:①概念设计。
在数据分析的基础上,采用自底向上的方法从用户角度进行视图设计,一般用ER模型来表示数据模型,这是一个概念模型。
软件工程第4章概要设计
通常,通信内聚模块是通过数据流图来定义的。
5.通信内聚(2)
6.功能内聚
一个模块中各个部分都是完成某一具体功能 必不可少的组成部分 或者说该模块中所有部分都是为了完成一项 具体功能而协同工作,紧密联系,不可分割 的 软件结构中应多使用功能内聚类型的模块
内聚类型汇总
5.标记耦合
如果一组模块通过参数表传递信息 这个参数是: 数据结构 字符串 记录 不是简单变量
标记耦合举例 计算水电费
住户情况
计算水费
水费
住户情况
电费
计算电费
“住户情况”是一个数据结构,图中模块都 与此数据结构有关. “计算水费”和“计算电费”本无关,由于 引用了此数据结构产生依赖关系,它们之间 也是标记偶合.
4.2.2 软件结构风格与策略
1.软件结构风格取决于 程序的模块结构表明了程序各个模块的 组织情况,是软件的过程表示 数据的结构表明各个数据之间的关系和 各个数据元素的约束,是软件的信息表 示
2.软件结构的独立性风格
(1).独立性 软件系统中每个模块只涉及软件要求的 具体的子功能, 而和软件系统中其它的 模块的接口是简单的 一个模块和其它模块的独立程度是评价 一个模块设计好坏的重要度量尺度。
例如初始化模块和终止模块。
4.过程内聚
一个模块内部的处理成分是相关的,而且这些处 理必须以特定的次序执行
函数A 函数B 函数C
例如,把流程结构中的循环部分、判定部分、计 算部分分成一个模块,这三个任务组成的模块是 过程内聚模块。
5.通信内聚
如果一个模块内各功能部分都使用了相同的输入数 据,或产生了相同的输出数据,则称之为通信内聚 模块。
概要设计 基本设计概念和处理流程
概要设计基本设计概念和处理流程摘要:一、概要设计的基本概念1.定义与作用2.概要设计的任务与目标二、概要设计的核心处理流程1.需求分析与梳理2.功能模块划分3.结构设计4.接口设计5.设计审查与优化正文:概要设计是软件开发过程中的一个重要环节,它位于需求分析和详细设计之间,主要负责对需求分析的结果进行整理和优化,为详细设计提供指导。
本文将从基本设计概念和处理流程两个方面对概要设计进行介绍。
一、概要设计的基本概念1.定义与作用概要设计,又称总体设计,是在需求分析的基础上,对软件系统结构、组成、功能、性能、接口等方面进行分析和设计的过程。
概要设计的目的是使系统结构更加清晰,功能模块更加合理,为详细设计提供依据。
2.概要设计的任务与目标(1)任务概要设计的任务主要包括:确定软件系统的结构、组成和层次关系;定义各个功能模块及其相互之间的关系;制定数据结构和数据库设计;确定系统性能要求和技术选型;制定详细设计指南。
(2)目标概要设计的目标是使软件系统结构更加清晰、合理,功能模块更加明确,接口设计更加规范,满足需求分析所提出的各项功能要求和技术要求。
二、概要设计的核心处理流程1.需求分析与梳理需求分析的结果是得到一组需求规格说明书,概要设计的首要任务是对这些需求进行梳理和归类,明确哪些需求是关键的、哪些是次要的,以便于后续设计工作的展开。
2.功能模块划分在需求梳理的基础上,将相互关联的需求进行归类,形成一个个相对独立的功能模块。
功能模块划分要遵循高内聚、低耦合的原则,以提高系统的可维护性和可扩展性。
3.结构设计结构设计主要是对软件系统的组成结构进行设计,包括软件层次结构、组件结构和部署结构等。
结构设计要充分考虑系统的可扩展性、可维护性和安全性等方面的要求。
4.接口设计接口设计包括内部接口和外部接口。
内部接口设计要遵循清晰、简单、稳定的原则,以方便模块间的通信;外部接口设计要考虑易用性、可扩展性和安全性等方面的要求。
概要设计
未加工的设计材料,如构件、解决方案和知 识; 收敛(convergence):设计者从设计材料中选择 和组合合适元素,以满足设计目标。这是一 个不断删除的过程。
过程 设计
接口设计
数据 字典
体系结构设计
状态转换图
数据设计
控制规格说明
分析模型转变成软件设计示意图
4.1.2系统构成 体系结构的三个标准模型 : 1.容器模型:适合于数据是由一个子系统产生而 由其他子系统使用的情形。 2.客户机/服务器模型:是一个分布式系统模型, 数据和处理过程可分配在多个处理器之中。 3.抽象机模型:有时叫做分层模型,是用来建立 子系统的接口模型。
3.信息隐藏(Information Hiding)原理:软件开发 过程中设计和确定模块时,应使模块内所包含的 信息(数据和过程)对于不需要这些信息的模块来 说,是不能访问的(隐蔽模块的实现细节)。 4.局部化原理:把模块内关系密切的软件元素物 理地放得彼此靠近些。 作用: a.提高系统安全性; b.软件结构更清晰。
3.深度、宽度、扇出和扇入都应适当 深度:表示软件结构中控制的层数,能大体上反 映一个系统的大小和复杂程度。 宽度 : 软件结构内同一个层次上模块总数的最 大值。一般地说,宽度越大,系统越复杂。 扇出:模块直接控制的模块数目.扇出过大, 需 要控制和协调过多的下级模块. 扇入 : 直接调用某个模块的模块个数。在提高 模块共享性的同时,不能违背独立性原则。 结论:顶层扇出高,中间扇出小,底层扇入高。
模块化 抽象 逐步求精 信息隐藏和局部化 模块独立(耦合和类聚)
4.3.1.模块化与模块独立 1)模块(Module)是由边界元素限定的相邻的程序 元素的序列,且有一个总体标识符来代表它(如过 程、函数、子程序名等),是构成程序的基本构件. 2)模块化(Modularity)即把程序划分成若干个相 对独立的模块,每个模块完成一定功能,集成起来 形成一个整体,完成系统的功能。软件体系结构 (Software Architecture, SA)体现了模块化。SA 包括构件(模块)的层次结构、构件间的交互方式 和构件的数据结构等。
四、概要设计说明书
09计嵌学生信息管理系统概要设计报告1 范围1.1 标识文件状态:[ ]草稿[ ]正式发布[√]正在修改文件标识:需求分析报告:B1 当前版本: 1.0作者:XXX完成日期:2010-12-231.2 系统概述(见《09计嵌学生信息管理系统需求规格说明书》的1.2系统概述)1.3 文档概述文档根据《09计嵌学生信息管理系统需求规格说明书》,对软件的功能实现、接口和界面等进行设计。
文档采用了面向对象的设计方法,描述了系统中主要的类以及与各用例对应的顺序图等。
1.4 基线09计嵌学生信息管理系统需求规格说明书2 引用文件计算机软件文档编制规范(GB/T 8567-2006),2006年3月14日发布,2006年7月1日实施。
3 系统结构系统采用B/S结构,用户界面通过WWW浏览器来实现,主要的逻辑在Web服务器和应用服务器端实现,数据存储在数据库服务器,形成常见的Web应用三层结构。
3.1 系统部署图系统部署如图A2-1所示,前台采用Web浏览器显示页面,后台包括Web服务器和数20090861132 王辉孝据库服务器,主要处理业务处理。
客户端……客户端客户端图B1-1 系统部署图3.2 类图图A2-2为系统的业务逻辑类图,系统共有七个类:管理员类、学生类、主菜单类、子菜单类、html文档类。
11..*11..*0..*10..*1class--classIDclassname: ng.String: ng.String+ + + +getName ()Update (String name)Add (String name)Delete (String name): String: void: boolean: booleanterm---termIDtermnameIscurrent: ng.String: ng.String: boolean+++++Add ()Update (int term)Delete (int term)getCurrentTerm ()getTerm (): int: int: int: int: int student+ + + + +studentIDstudentnamesexnationbirthday: ng.String: ng.String: boolean: ng.String: java.util.Date+ + + +getStudents ()Add (Student s)Update (String id)Delete (String id): Student: int: int: intcourse+++++courseIDcoursenamecredithourscredithourIsrequired: ng.String: ng.String: short: short: boolean++++getCourse ()Add (Course class)Update (String id)Delete (String id): Course: int: int: intscore-----studentIDcourseIDclassIDtermIDscore: String: String: String: String: int+++++getScores ()getScoreOfStudent (String sid)Add (int Parameter_1)Update ()Delete (): select: int: int: int: intuser---userIDuserNamepassword: String: String: String+++++Login (String name, String key)Add (User user)Update (String name)Delete (String name)getUsers (): int: int: int: int: Useradimilistrator---IDadminpassword: String: String: String+++++Login (String name, String key)Add (admilistrator user)Update (String name)Delete (String name)getUsers (): int: int: int: int: admilistratorB1-2 系统业务逻辑类图新建立的数据访问包类图如图A2-3所示。
《概要设计总体设计》课件
总体设计的重要性
确保项目实施顺利
通过总体设计,可以明确项目的 整体结构、功能和技术要求,为 后续的详细设计、制造和测试等 环节提供指导和依据,从而确保
项目的顺利实施。
提高产品质量
总体设计过程中需要对产品的整 体性能、功能和结构进行全面考 虑,有助于发现和解决潜在的问 题,从而提高产品的质量和可靠
性。
案例三
总结词
跨领域合作、整合资源
详细描述
该案例强调了在建筑工程中,概要设 计与总体设计的结合应用,需要跨领 域合作,整合资源,综合考虑建筑、 结构、机电等多个专业的要求,确保 项目的顺利进行。
06
总结与展望
本课程总结
课程内容回顾 介绍了软件工程中概要设计的基本概念、原则和方法。
讲解了如何进行系统分析、系统设计、数据库设计等核心内容。
学习新技术和方法,保持与时俱进。
03
感谢您的观看
THANKS
课程目标
掌握概要设计和总体设计的基本概念 、原理和方法。
培养学生的团队协作和沟通能力,以 适应实际软件开发团队的工作环境。
学会在实际项目中应用概要设计和总 体设计,提高软件开发的效率和软件 质量。
02
概要设计概述
定义与概念
定义
概要设计是对软件系统的高级描 述,包括系统的整体结构、功能 模块、数据流程、接口设计等。
优化性原则
总体设计应对项目的整体结构和功 能进行优化设计,以提高产品的性 能和降低成本。
04
概要设计与总体设计的比 较
设计目的比较
概要设计
旨在为软件系统提供一个高层次、粗粒度的设计框架,明确 系统的整体结构、主要功能和接口,以便后续详细设计、编 码和测试。
第四章 总体设计(概要设计)
§4.1 总体设计的过程
总体设计过程通常由两个主要阶段组成: 1.系统设计,确定系统的具体实现方案; 2.结构设计,确定软件结构。
总体设计的过程: 总体设计的过程:
一、设想供选择的方案
确定方案
二、选择合理的方案 三、推荐最佳方案 四、功能分解
确定结构
五、设计软件结构 六、数据库设计 七、制定测试计划 八、书写文档 九、审查复审
第四章 总体设计(概要设计)
软件设计的任务是把分析阶段产生的软 件需求说明转换为用适当手段表示的软件 设计文档。 软件设计可分为概要设计(Preliminary Design)和详细设计(Detail Design)。 概要设计确定软件的结构,即软件的组成 及各子系统之间的相互联系;详细设计确 定模块内部的算法和数据结构,产生描述 各模块程序过程的详细设计的文档。
七.模块功能应该可以预测。 模块功能应该可以预测。 模块的功能应该可以预测, 模块的功能应该可以预测,但也要防止模块 功能过分局限。 功能过分局限。 如果一个模块可以当作一个黑盒子, 如果一个模块可以当作一个黑盒子 , 也就是 只要输入数据相同就产生同样的输出, 说,只要输入数据相同就产生同样的输出,这个 模块就是可以预测的。 模块就是可以预测的。 以上列出的启发式规则多数是经验规律, 以上列出的启发式规则多数是经验规律 , 对 改进设计,提高软件质量, 改进设计,提高软件质量,往往有重要的参考价 但是, 值。但是,它们既不是设计的目标也不是设计时 应该普遍遵循的原则。 应该普遍遵循的原则。
1. 偶然性内聚(Coincidental Cohesion) 所谓偶然性内聚是指一个模块内各成分为完成一组 功能而组合在一起,它们相互之间即使有关系,也很 松散。 2. 逻辑性内聚(Logical Cohesion) 如果一个模块完成的任务逻辑上相关(例如,一个产 生所有与类型无关的输出),则称为逻辑性内聚。 3. 时间性内聚 (Temporal Cohesion) 如果一个模块内包含的任务必须在一个时间段内执行 (例如一个初始化模块),则称之为时间性内聚。 4. 过程性内聚 (Procedural Cohesion) 模块的过程性内聚是指,模块内成分彼此相关,并 且必须按特定的次序执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1.3 概要设计的工具
产生最佳结果 好输入 好输入 得到好输入 原始输入 原始输入 读输入 编辑输入 结果格式化 编辑结果 解 输出结果 解 格式化 的解 显示结果 格式化 的解 解
计算最佳解
M
M
A
B
A
B
C
a)选择调用
b)循环调用
4.2.1 模块化
模块化的思想:把软件划分为可独立命名和编址的 部件。每个模块完成一个子功能,当把所有模块组 装到一起成为一个整体时,便可以完成指定的功能。 模块是具有一定功能的可以用名词调用的程序语句 的集合。 模块化就是把程序划分成若干个模块,分别实现。
变换流
变换流的DFD是一个线性结构,由输入、变换和输 出三部分组成。
变换是系统的变换中心,变换输入端的数据流为系 统的逻辑输入,输出端为逻辑输出。而系统输入端 的数据流为物理输入,输出端为物理输出。
取得数据 C
变换数据 C为D
给出数据 D
变换型数据流图
物理输入
逻辑输入
逻辑输入
物理输出
4.3.1 概念
A flag flag
f1
f2
fn
4.2.2 模块的耦合性
5.
6.
外部耦合(external coupling):若干模块均与同 一个外部环境关联。一组模块都访问同一全局简单 变量而不是同一全局数据结构,而且不是通过参数 表传递该全局变量的信息。 公共耦合(common coupling):若干模块通过全 局的数据环境相互作用时(一组模块都访问同一个 公共数据环境)。 松散公共耦合、紧密公共耦合
4.2.1 模块化
模块化论据:
函数C(X)定义了问题X的复杂性; 函数E(X)定义了求解问题X所需要的工作量(按时 间计)
对于问题P1和P2,如果C(P1) > C(P2),则 E(P1)>E(P2) C(P1+P2)>C(P1)+C(P2) E(P1+P2)>E(P1)+E(P2)
4.2.2 模块的耦合性
模块独立性 模块独立性的度量标准 耦合(coupling):模块之间相对独立性的量度 内聚(cohesion):模块功能相对强度的量度
耦合性是对软件程序结构中各个模块之间相互关联 程度的一种度量。 在设计软件时应追求尽可能松散耦合的系统。
低 耦合性 非直接耦合 数据耦合 特征耦合 控制耦合 外部耦合 公共耦合 内容耦合 高
结论:一个复杂问题分割成若干个容易解决、容易 管理的小问题后更易于求解。
4.2.1 模块化
对每个问题都存在着某个最佳模块数目,它能使得 软件成本最小。 Hale Waihona Puke 需避免模块分割得过度或不足。
软件总成本 接口成本
成本(工作量)
最小成本区
成本/模块
模块总数
4.2.1 模块化
模块化的优点: 可以使软件结构清晰,容易设计、容易阅读和理 解、容易测试和调试。 提高软件的可靠性。 有助于软件开发工程的组织管理。 依据什么标准划分模块?耦合、内聚的概念。
A A A A
Common公共数据区 a) 松散的公共耦合
Common公共数据区 b) 紧密的公共耦合
4.2.2 模块的耦合性
7.
内容耦合(content coupling) 一个模块直接访问另一个模块的内部数据; 一个模块不通过正常入口转到另一模块内部; 两个模块有一部分程序代码重叠; 一个模块有多个入口; …
4.1.2 概要设计的过程
概要设计的步骤: 1. 设想供选择的方案 2. 推荐最佳方案 3. 功能分解 4. 设计软件结构:面向数据流的设计方法和面向数 据结构的设计方法 5. 数据设计 6. 制订测试计划 7. 书写文档:概要设计规格说明书、用户手册、测 试计划、详细的实现计划等 8. 审查和复审
A B A B Entry1 „„ entry2 „„
a) 进入另一模块内部
b) 模块代码重叠
c) 多入口模块
A
全局数据区
L
M
B
C 指定的公共区 N D E F O P
模块E和L为外部耦合; 模块C、F和N为公共耦合; 模块B和D为内容耦合。 C、F、N都访问全局数据区中的同一个数据项 ,读写问题!
4.3 结构化设计方法
结构化设计方法(简称SD方法)
基于数据流的设计方法 把数据流图变换成软件结构 因为任何软件系统都可以用数据流图表示,所以面向 数据流的设计方法理论上可以设计任何软件的结构。
4.3.1 概念
信息流有变换流和事物流两种类型。
变换流(transform flow) 特点:从同一数据源进入系统的数据,它在数据流 图中流动的逻辑路径是相同的。
4.2.2 模块的耦合性
3.
4.
特征耦合(stamp coupling)/标记耦合:两个模块 都要使用同一数据结构的一部分,不是采用全程公 共数据区共享,而是通过模块接口传递数据结构的 一部分(不是简单的数据)。 控制耦合(control coupling):两模块间通过参数 交换信息,而传递的信息中含有控制信息。
分析DFD:用一组分层的DFD来表示系统划分的功 能、数据流和对数据流所做的处理。
确定DFD的特点及边界:区分事务流、变换流。
映射为软件结构:有两个设计映射策略:变换分析和 事务分析可供采用。
细化后,得到初始结构图:顶层模块负责控制处理服 务,实际工作较少;每个下层模块较少执行控制功能 而较多作具体处理工作;底层模块应有高度聚合,较 少有外部控制的特性。 获得最终的软件结构图:使用设计的质量度量:耦合 性和内聚性。
4.1.3 概要设计的工具
HIPO图(hierarchy plus input-process-output):由层次 图(HC图)加上IPO图(Input-Process-Output)组成。 层次图中的矩形框表示模块,而针对层次图中的每 一个模块再配上IPO图来表达输入、处理、输出。 层次图中的矩形框代表模块,方框间的连线表示调 用关系。最顶层的方框代表主控模块,它调用下层 模块完成软件系统的功能。
变换分析
变换分析方法由以下四步组成:
重画数据流图; 区分有效(逻辑)输入、有效(逻辑)输出和中心 变换部分;
进行一级分解,设计上层模块;
进行二级分解,设计中、下层模块。
重画数据流图:描述系统中的数据是如何流动的,确定其 具有变换流特征。 区分有效(逻辑)输入、有效(逻辑)输出和中心变换部 分
如果它是利用所计算的年龄来确定雇员将要退休 的时间,那么它就具有顺序内聚性。 如果它是分别计算年龄和退休时间的,但使用相 同生日数据,那么它就具有通讯内聚性。 分别建立两个子程序,一个根据生日计算年龄, 另外一个根据生日确定退休时间,确定退休时间 子程序将调用计算年龄的程序。
怎样使这个子程序成为功能内聚性呢?
概要设计也称为总体设计,在这个阶段需要确定软 件的总体结构。
概要设计说明书主要由模块结构图、模块说明和测 试计划组成。 概要设计可分为数据设计、系统结构设计和过程设 计。(界面设计是发展趋势之一)
4.1.1 概要设计的目标和任务
概要设计的任务: 1. 制定规范 2. 总体结构设计:软件总体结构图 3. 处理方式设计:功能需求和非功能需求,算法评估 4. 数据设计:数据结构设计、文件设计和数据库设计 5. 质量设计 6. 文档设计:生成概要设计说明书、数据库设计说明 书、用户手册和软件测试计划 7. 评审概要设计
软件系统
输入
输出
编辑
统计一
统计二 除
查询
月处理
年处理
添加
删除
插入
修改
合并
列表
4.1.3 概要设计的工具
结构图
方框代表一个模块,框内标明模块的名字或主要功能; 方框之间的箭头(或直线)表示模块的调用关系。 用带注释的箭头表示模块调用过程中来回传递的信息。 尾部是空心圆表示传递的是数据,实心圆表示传递的 是控制信息。 附加的符号:模块的选择调用或循环调用。
4.2.3 模块的内聚性
内聚标志一个模块内部各成分彼此结合的紧密程度。 软件概要设计的目标是力求增加模块的内聚,尽量减少 模块间的耦合。增加内聚比减少耦合更重要。
高 内聚性
功能性内聚 顺序性内聚 通信性内聚 过程性内聚 时间性内聚 逻辑性内聚 偶然性内聚
低
模块独立性 强,功能单一 弱,功能分散
相同的输出数据。(eg. 对同一文件进行管理)
4.2.3 模块的内聚性
6.
高级内聚 顺序性内聚(sequential cohesion):一个模块内的各 个组成部分顺序执行几个处理动作,前一个处理动作 产生的输出数据是下一个处理工作的输入数据。
7.
功能性内聚(functional cohesion):模块内所有成分 形成一个整体,完成单个功能。象一个“黑盒子”。
事务流(transaction flow) 特点:“以事务为中心的”,也就是说,数据沿输入 通路到达一个处理T,这个处理(事务中心)根据输入 数据的类型在若干个动作序列中选出一个来执行。
事务
事务中心
T 动作路径
4.3.1 概念
SC图(结构图)
用矩形框来表示模块, 用带箭头的连线表示模块间的调用关系, 在调用线的两旁,应标出传入和传出模块 的数据流。
18
4.2.2 模块的耦合性
低 耦合性 非直接耦合 数据耦合 特征耦合 控制耦合 外部耦合 公共耦合 内容耦合 高