结构化软件设计
软件设计师结构化方法、原型化方法

软件设计师结构化方法、原型化方法1. 结构化方法是一种系统性的方法论,用于分析、设计和开发软件系统。
2. 结构化方法强调将软件系统分解为小的、可管理的模块,以便于理解和维护。
3. 结构化方法将软件系统的功能和数据定义分离,使得系统更具灵活性和可扩展性。
4. 结构化方法提供了一种规范化的设计和开发过程,使得团队成员可以更加协作和高效地工作。
5. 结构化方法通常包括需求分析、系统设计、模块设计和编码等阶段。
6. 需求分析阶段是结构化方法的起点,用于确定软件系统的功能和性能需求。
7. 系统设计阶段将需求分析结果转化为系统结构和模块之间的关系,通常使用流程图、数据流图和状态转换图等工具进行描述。
8. 模块设计阶段将系统设计结果继续细化,确定模块内部的数据结构、算法和接口规范。
9. 编码阶段是将模块设计结果转化为真正的代码实现,通常使用结构化编程语言和软件开发工具进行。
10. 结构化方法还包括整体测试和维护阶段,用于验证系统的正确性和完整性,并修复已发现的错误。
11. 结构化方法的优势是提供了一种基于模块化的开发框架,使得软件系统更易于理解、修改和扩展。
12. 结构化方法强调抽象和信息隐藏的原则,可以减少复杂系统的复杂性,提高代码的可读性和可维护性。
13. 结构化方法可以提高软件开发的生产效率和质量,降低项目风险和成本。
14. 结构化方法适用于中小型软件开发项目,特别是那些要求较高灵活性和可扩展性的项目。
15. 结构化方法常用的工具包括数据流图工具、流程图工具、结构化编程语言和软件开发环境等。
关于软件设计师原型化方法:16. 原型化方法是一种迭代的、快速开发的方法论,用于验证和优化软件系统的设计和界面。
17. 原型化方法强调通过创建原型来探索用户需求和验证设计思路,以提高系统的用户体验和性能。
18. 原型化方法可以减少需求分歧和风险,加快软件开发的速度和质量。
19. 原型化方法通常包括需求收集、原型设计、验证和修订等阶段。
结构化软件设计的实施步骤

结构化软件设计的实施步骤1. 确定软件需求在进行结构化软件设计之前,首先需要明确软件的需求。
这包括理解用户的需求和问题,确定软件的功能和特性,以及评估软件的性能要求。
以下是确定软件需求的几个关键步骤:•与用户进行需求讨论和沟通,了解用户的实际需求。
•分析用户需求,识别和记录关键功能和特性。
•确定软件的预期目标和目标用户。
•评估软件的性能需求,例如响应时间、吞吐量和稳定性要求。
2. 分析软件系统在进行结构化软件设计之前,必须对软件系统进行详细的分析。
这包括对软件系统的组成部分、功能模块和数据结构进行分析。
以下是分析软件系统的步骤:•确定软件系统的模块和子系统。
•分析每个模块的功能和职责,并记录这些信息。
•确定模块之间的接口和依赖关系。
•分析数据结构和算法,以便优化软件的性能。
3. 设计软件架构基于对软件需求和系统分析的理解,进行软件架构的设计。
软件架构是软件系统的骨架,它定义了软件的组织结构、模块之间的关系以及模块的功能。
以下是设计软件架构的步骤:•根据需求确定适当的软件架构风格,如客户端-服务器、分层、微服务等。
•设计模块之间的接口和依赖关系。
•确定模块的功能和职责,并将其组织成适当的层次结构。
•确定数据流和控制流,以及模块之间的通信机制。
4. 进行详细设计基于软件架构,进行详细设计以定义软件系统的具体实现。
以下是进行详细设计的步骤:•为每个模块定义详细的接口和实现细节。
•设计和实现数据结构和算法。
•确定测试策略和方法,以确保软件的正确性和稳定性。
•内容的表述应该准确、简洁,在句子的书写中尽量使用并列句和简单句。
5. 编码和测试在完成详细设计后,进行编码并进行相应的测试。
以下是在实施步骤中进行的主要任务:•根据详细设计的规范进行编码。
•利用适当的测试方法进行单元测试、集成测试和系统测试。
•随着代码的编写,进行持续集成和自动化测试,以提高软件质量。
•整理并记录测试结果,并确保代码没有错误和缺陷。
6. 部署和维护在经过严格的测试后,将软件部署到目标环境中,并维护软件的正常运行。
软件工程结构化软件设计PPT

软件工程结构化软件设计PPT 在当今数字化的时代,软件已经成为了驱动社会发展和创新的重要力量。
而软件工程中的结构化软件设计则是确保软件质量、可维护性和可扩展性的关键环节。
本 PPT 将深入探讨软件工程结构化软件设计的相关概念、原则、方法和技术。
一、结构化软件设计的概念结构化软件设计是一种基于模块化、自顶向下、逐步细化的设计方法。
它将软件系统分解为多个相互独立、功能明确的模块,通过清晰的接口进行通信和协作。
这种设计方法有助于提高软件的可读性、可理解性和可维护性,降低开发成本和风险。
二、结构化软件设计的原则1、模块化原则将软件系统划分为若干个模块,每个模块具有独立的功能和明确的接口。
模块之间的耦合度要低,内聚度要高,以提高模块的独立性和可复用性。
2、自顶向下原则从软件系统的顶层开始,逐步向下分解和细化,直到最底层的模块。
这种方法有助于把握软件系统的整体结构和功能,避免出现混乱和遗漏。
3、信息隐藏原则模块内部的实现细节对其他模块隐藏,只通过公开的接口进行交互。
这样可以减少模块之间的相互影响,提高软件的稳定性和可修改性。
4、高内聚低耦合原则模块内部的元素之间具有紧密的联系,形成一个高度内聚的整体;模块之间的联系要尽量松散,降低耦合度。
这样可以使软件系统更容易理解和维护。
三、结构化软件设计的方法1、数据流图(DFD)用于描述软件系统中数据的流动和处理过程。
通过绘制 DFD,可以清晰地了解系统的功能需求和数据流程,为后续的设计提供依据。
2、结构图展示软件系统的模块结构和模块之间的层次关系。
结构图可以帮助开发人员直观地了解系统的整体架构,便于进行模块的划分和设计。
3、程序流程图用于描述程序的控制流程和逻辑结构。
通过绘制程序流程图,可以清晰地了解程序的执行过程,便于进行代码的编写和调试。
四、结构化软件设计的技术1、模块划分技术根据功能需求和设计原则,将软件系统划分为合理的模块。
在划分模块时,要考虑模块的大小、功能的独立性和复用性等因素。
软件工程结构化分析与设计

软件工程结构化分析与设计在当今数字化的时代,软件几乎无处不在,从我们日常使用的手机应用程序,到企业内部复杂的业务系统,软件已经成为推动社会发展和提高生活质量的重要力量。
而软件工程中的结构化分析与设计,作为软件开发过程中的关键环节,对于确保软件的质量、可维护性和可扩展性具有至关重要的意义。
首先,让我们来理解一下什么是软件工程结构化分析。
简单来说,结构化分析就是对软件系统进行详细的调查和研究,以确定系统的需求和功能。
这就好比在盖房子之前,我们需要清楚地知道要盖什么样的房子,有多少房间,每个房间的用途是什么等等。
在软件领域,结构化分析的主要任务包括收集用户需求、理解业务流程、识别系统的输入和输出、定义数据结构等。
在收集用户需求时,开发人员需要与用户进行充分的沟通和交流。
用户可能来自不同的背景和领域,他们对软件的期望和需求也各不相同。
因此,开发人员需要具备良好的沟通技巧和理解能力,能够将用户模糊的、不明确的需求转化为清晰、具体的软件功能描述。
比如,用户可能说“我希望这个软件能够快速处理大量数据”,开发人员就需要进一步询问“快速”的具体标准是什么,“大量数据”大概是多少,以及数据的类型和格式等。
理解业务流程也是结构化分析的重要部分。
不同的行业和组织都有其独特的业务流程,软件系统需要能够与之相适应和支持。
例如,在一个电子商务系统中,订单处理、库存管理、支付流程等都是关键的业务环节,开发人员需要深入了解这些流程的细节,以便设计出符合业务需求的软件。
接下来,我们谈谈软件工程结构化设计。
结构化设计是在结构化分析的基础上,将系统的需求转化为软件的架构和模块设计。
这就像是根据房子的设计图纸,确定房子的框架结构、房间布局以及各个部分使用的材料等。
在结构化设计中,模块划分是一个关键步骤。
模块是软件系统中的独立组成部分,具有明确的功能和接口。
合理的模块划分可以提高软件的可维护性和可扩展性。
例如,将一个复杂的系统划分为用户界面模块、数据处理模块、业务逻辑模块等,每个模块都专注于完成特定的任务,并且可以独立地进行开发、测试和维护。
软件工程结构化分析与设计

软件工程结构化分析与设计1. 简介软件工程结构化分析与设计是软件开发中非常重要的一门课程,通过对软件系统进行结构化分析和设计,可以提高软件的质量、可维护性和可扩展性。
本文将介绍软件工程结构化分析与设计的基本概念和主要内容。
2. 结构化分析结构化分析是软件工程中的一种分析技术,它主要用于对问题域进行分析,确定问题需求和对问题进行建模。
结构化分析主要包括以下几个步骤:确定问题领域和问题域边界;识别问题中的对象和它们之间的关系;划分问题域为子问题,建立问题域模型;确定问题的功能需求和非功能需求。
结构化分析的核心是数据流图,它可以表示问题域中的数据流和处理过程,帮助确定系统功能和数据流向。
3. 结构化设计结构化设计是在结构化分析的基础上进行的,它主要用于确定系统的结构和设计系统的组件。
结构化设计的主要内容包括以下几个方面:系统结构设计:确定系统的模块和模块之间的关系;数据结构设计:设计系统中的数据结构和数据存储组织方式;接口设计:设计系统与其他系统或外部设备之间的接口;过程设计:设计系统中的算法和处理过程。
结构化设计的目标是提高系统的可维护性、可扩展性和可重用性,满足系统的功能需求和非功能需求。
4. 工具与方法在软件工程结构化分析与设计过程中,有一些常用的工具和方法可以帮助完成任务。
其中一些常用的工具包括:UML:统一建模语言,用于描述系统的结构和行为;数据流图:用于表示数据流和处理过程;结构图:用于表示系统的模块和模块之间的关系;状态图:用于描述系统中对象的状态和状态转换。
而一些常用的方法包括:数据字典:记录系统中的数据元素和数据流,帮助理清数据之间的关系;面向对象分析与设计:通过对象的抽象和分类,设计系统的结构和行为;结构化设计方法:采用自顶向下和自底向上的设计方法,将系统划分为模块并确定模块之间的关系。
5.软件工程结构化分析与设计是软件开发中非常重要的一环,它通过对问题域进行分析和设计,帮助构建高质量、可维护和可扩展的软件系统。
熟练运用软件设计的结构化设计方法

熟练运用软件设计的结构化设计方法软件设计是指通过对软件系统进行需求分析、架构设计、详细设计等过程,最终得到一个可执行的软件系统。
而结构化设计方法则是软件设计过程中的一种重要方法。
它通过将软件系统划分为不同的模块或函数,并定义它们之间的接口和关系,以达到模块化、可重用、可维护的设计目标。
本文将介绍熟练运用软件设计的结构化设计方法的重要性和方法步骤。
一、软件设计的结构化设计方法的重要性熟练运用软件设计的结构化设计方法对于软件开发团队具有重要意义。
首先,结构化设计方法可以帮助开发团队提高开发效率,降低开发成本。
通过将软件系统拆分为若干个模块或函数,使开发人员可以同时进行多个模块的开发工作,加快了开发进度。
同时,由于每个模块都有清晰的接口和功能,可以降低开发过程中的错误和Bug,减少调试和修复的工作量。
其次,结构化设计方法可以提高软件系统的可维护性和可扩展性。
通过模块化的设计,可以使得软件系统的各个模块之间解耦合,便于对某个模块进行修改或替换,而不会影响其他模块的正常功能。
同时,当需要增加新的功能时,也可以通过新增一个模块来实现,而不会对原有代码产生太大的影响。
最后,结构化设计方法可以提高软件系统的可读性和可理解性。
模块化的设计使得软件系统的代码结构更加清晰,函数之间的关系更加明确,便于开发人员快速理解和维护代码。
这对团队协作和后续的软件更新和维护工作非常重要。
二、熟练运用软件设计的结构化设计方法的步骤1. 需求分析:首先,需求分析是软件设计的第一步。
要明确软件的功能和业务需求,将需求转化为清晰、明确的软件功能和模块要求。
2. 数据流图:根据需求分析的结果,可以运用结构化设计的方法绘制数据流图。
数据流图是描述软件系统中数据流动和处理的图形化表示,可以帮助开发人员更好地理解软件系统的数据流动方式。
3. DFD转换:在数据流图的基础上,可以运用转换规则将数据流图转换为数据结构图,并定义各个模块或函数的功能和接口。
结构化软件设计共116页文档

功能内聚
• 功能内聚
– 如果一个模块的各个成分都是完成某个具体任 务必不可少的成分,这些成分协同工作,紧密 联系,不可分割,则称为功能内聚。
– 功能内聚的内聚度最高,概要设计中要追求的 目标。
– 满足功能内聚的模块只执行一个功能,这是一 个判断模块是否是功能内聚的方法。
将分析模型转换为软件设计
数
• 例如:程序设计中的初始化模块。
顺序内聚
• 如果模块内的处理是相关的,必须以 特定顺序执行,前一个处理动作所产 生的输出数据是后一个处理动作的输 入数据,则称为过程内聚。
• 过程聚合维护起来不如功能聚合方便, 要修改模块中的一个功能,会影响到 同一个模块中的其他功能。
图示:顺序内聚
A
B
C
功能1 功能2
结构化软件设计
•
6、黄金时代是在我们的前面,而不在 我们的 后面。
•
7、心急吃不了热汤圆。
•
8、你可以很有个性,但某些时候请收 敛。
•
9、只为成功找方法,不为失败找借口 (蹩脚 的工人 总是说 工具不 好)。
•
10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
第四章 结构化软件设计
• 软件设计的概念 • 结构化设计方法 • 过程设计 • Jackson方法
4.1 软件设计的概念
模块和模块化 工程上,许多大的系统都是由一些较小的单元组成。例如,建筑工程中的砖瓦和构件,机械工程中 的各种零部件等。这样做的优点是便于加工制造,便于维修,而且有些零部件可以标准化,为多个系 统所用。同样,软件系统也可以根据其功能分解成许多较小的程序单元,它们就是模块。 一般把用一个名字就可调用的一段程序称为“模块”模块具有如下3个基本属性。 ·功能:指该模块要完成的任务。 ·逻辑:描述模块为了完成任务,模块内部怎么做。 ·状态:使用该模块时的环境和条件。 对于一个模块,还应该按模块的外部特性与内部特性分别进行描述。模块的外部特性是指模块的模 块名、模块的输入/输出参数,以及它给程序乃至整个系统造成的影响。而模块的内部特性则是指完 成其功能的程序代码和仅供该模块内部使用的数据。对于其他模块来说,只需了解被调用模块的外部 特性就足够了,不必了解它的内部特性。在软件设计时,通常是先确定模块的外部特性,然后再确定 它的内部特性。前者是软件总体设计的任务,后者是详细设计的任务。 模块化是把整个系统划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个 系统的功能。模块化设计方法强调清楚地定义每个模块的功能和它的输入/输出参数,而模块的实现 细节隐藏在各自的模块之中,与其他模块之间的关系可以是调用关系,因此模块化程序易于调试和修 改。随着模块规模的减小,模块的开发成本减少,但是模块之间的接口变得复杂起来,使得模块的集 成成本增加。 那么模块的规模多大才合适呢?模块之间的关系可能密切到什么程度呢?软件工程用模块独立性来 衡量。
软件开发的结构化设计方法,全面指导

软件开发的结构化设计方法,全面指导
软件开发的结构化设计方法是一种系统化、有条理的方法,它能够全面指导软件的设计过程。
以下是一些常用的结构化设计方法:
1. 分而治之(Divide and Conquer):将软件系统分解为较小的、功能独立的模块,然后分别设计和实现这些模块,最后再将它们集成起来。
这种方法可以提高软件系统的可维护性和可扩展性。
2. 自顶向下(Top-Down):从整体的角度出发,首先设计和实现整个系统的高层模块和功能,然后逐步细化和实现低层模块和功能。
这种方法能够确保系统的正确性和一致性,同时也能够提高开发效率。
3. 自底向上(Bottom-Up):从具体的、底层的模块和功能开始,逐步组合和实现更高层的模块和功能。
这种方法可以对具体的细节进行深入研究和设计,同时也能够提高模块的重用性和可测试性。
4. 结构化分析和设计(Structured Analysis and Design):采用数据流图、数据字典和结构图等工具,从数据流程和数据结构的角度出发,对系统进行分析和设计。
这种方法可以清楚地描述系统的功能和结构,同时也能够提高系统的可维护性和可扩展性。
除了以上提到的方法,还有其他一些结构化设计方法,如面向
对象设计、模型驱动开发等。
选择适合的结构化设计方法,可以根据具体的项目需求、开发团队的经验和技术水平等因素进行综合考虑。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B
模块化
• 模块是数据说明、可执行语句等程序对象的集
合,模块可以单独被命名,可通过名字访问。 例如,过程、函数、子程序、宏等等都可作为 模块。
• 模块化就是把程序划分为若干个模块,每个
模块具有独立子功能,再把各个模块集成后, B 实现指定功能,满足问题要求。
抽象化
• 抽象就是抽出事务的本质特性而暂不考虑细节 问题,是人类在认识复杂现象中使用的最强有 力工具。 • 软件工程过程的每一步都是对问题的软件解法 抽象层次的一次精化。 • 逐步求精与抽象是紧密相关的
开发票 单价 数量
金额
B
计算水费
标记耦合举例
计算水电费 住户情况
水费
电费
住户情况
计算水费
计算电费
B “住户情况”是一个数据结构,图中模块都 与此数据结构有关. “计算水费”和“计算电费”本无关,由于 引用了此数据结构产生依赖关系,它们之间 也是标记偶合.
耦合强弱排序
原则:如果模块间必须存在耦合,尽量使用数据耦 B 合,少用控制耦合,限制公共环境耦合的范围,完 全不用内容耦合。
•变换型结构 •事务型结构
B
变换型结构
信息流 外部表示
输入流 输出流
信 息
变换流 内部表示 时间
信息沿输入通路进 入系统,同时由外部 形式变换成内部形式 ,进入系统的信息通 过变换中心,经过加 工处理以后再沿输出 通路变换成外部形式 离开软件系统。 B 当数据流具有这些特 征时,这种信息流称 为变换流。
B
设计策略-1
按照模块化设计原则,相应的启发式设计策略如下: • 改造程序结构图,降低耦合度,提高内聚度 • 避免高扇出,并随着深度的增加,力求高扇入
– 避免如图a那样的“平铺”形态,较好的结构图形态 是如图b那样的“椭圆”型
B
(a)平铺形态
(b)椭圆形态
设计策略-2
• 模块的影响范围应限制在该模块的控制范 围内,例如下图中
功能都是必须的,则称为功能内聚。
偶然内聚(巧合内聚)
模块内各部分间无联系
例:
A
M
B
MOVE O TO R READ FILE F
C
MOVE S
TO
B
T
模块M中的三个语句没有任何联系 缺点:可理解性差, 可修改性差
逻辑内聚模块
A B C
公用代码段
E
F
G
E、F、G逻辑 功能相似,组 成新模块EFG
A1
• 过程内聚 如果一个模块内部的处理成分相关,必须
以特定的次序执行,则称为过程内聚。
B
• 通信内聚 如果一个模块的所有成分操作同一数据集
或生成同一数据集,则称为通信内聚。
内聚类型
• 顺序内聚 如果一个模块的各个成分和同一个
功能密切相关,而且一个成分的输出作为另一 个成分的输入,则称为顺序内聚。
• 功能内聚 模块的所有成分对于完成单一的B
则称为逻辑内聚。如一个模块读取各种不同类型外设的 输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚 的模块各成分在功能上并无关系,即使局部功能的修改 B 有时也会影响全局,因此这类模块的修改也比较困难。
内聚类型
• 时间内聚 如果一个模块完成的功能必须在同一时间
内执行(如系统初始化),但这些功能只是因为时间 因素关联在一起,则称为时间内聚。
事务型结构
事务 T 事务中心 数据沿输入通路到 达一个处理T,这个 处理根据输入数据的 类型在若干个动作序 列中选出一个来执行 。这种“以事务为中 心的”的数据流,成 为“事务流”。 B
– 模块功能可预测是指该模块对相同的输入能产生相同的输出 – 限制一个模块只处理单一的功能,那么,这个模块体现出高内聚 B – 单入口和单出口的模块能有效地避免内容耦合
概要设计
Sc图
DFD
(问题结构)
映射
软件系统的结构
B (程序结构)
SD方法表达工具—SC图
不加区分的数据 数据信息 控制信息
编辑学生记录 学生数据 学号
内聚
• 内聚标志一个模块内各个元素彼此结合的紧密 程度。 • 它是信息隐蔽和局部化概念的自然扩展。简单 地说,理想内聚的模块只做一件事情。 • 根据各个模块之间的内聚程度不同,分为七个 B 类型的内聚
内聚类型
• 偶然内聚 如果一个模块的各成分之间毫无关系,则称
为偶然内聚。
• 逻辑内聚 几个逻辑上相关的功能被放在同一模块中,
B
耦合
• 耦合是对一个软件结构内各个模块之间互连程 度的度量。 • 耦合强弱取决于模块间接口的复杂程度,调用 模块的方式,以及通过接口的信息。 • 根据模块间耦合程度的强弱的标准,划分耦合 类型,共有七种。
B
图示
紧密耦合-有 很多依赖关系 松散耦合-有 少量依赖关系
B
无耦合-没有依赖关系
耦合类型(高→低)
– 图a中,模块B2的影响范围(模块A)不在其控制范围(模块 B2)内 – 图b中,决策控制是在顶层模块,其影响范围(A、B2)在 控制范围内,但是从决策控制模块到被控模块之间相差 多个层次 – 图c和d较合适,图d为最好
Top X A Y B X A
Top
Top Y B X A B2 (b) B1 (c) Y B B2 X
Top Y B A (d)
B
B1
(a)
B2
B1
B1
B2
设计策略-3
• 降低模块接口的复杂程度和冗余程度,提高一致性
– 模块接口上应尽可能传递简单数据,而且传递的数据应保持与模块 的功能相一致,即不传递与模块功能无关的数据
• 模块的功能应是可预测的,避免对模块施加过多的 限制 • 尽可能设计单入口和单出口的模块
W B E G I H J 宽度 K 扇出 C L N O R M P 扇入 Q
A 深度 F D
B
相关指标的含义
• 深度和宽度在一定程序上反映了程序的规模和 复杂程度
– 相对而言,如果程序结构图的深度和宽度较大,则说明 程序的规模和复杂程度都较大。 – 模块的扇入扇出会影响结构图的深度和宽度,例如减少 模块的扇出,可能导致宽度变小而深度增加
Sc图
DFD
(问题结构)
映射
软件系统的结构 B
(程序结构)
结构化设计
• 强调模块化、自顶向下逐步求精、信息隐 蔽、高内聚低耦合等设计准则 • 分为概要设计和详细设计两大步骤
– 概要设计是对软件系统的总体设计,采用结构化设 计方法,其任务是:将系统分解成模块,确定每个 模块的功能、接口(模块间传递的数据)及其调用关系, 并用模块及其对模块的调用来构建软件的体系结构 B – 详细设计是对模块实现细节的设计,采用结构化程 序设计(Structured Programming,简称SP)方法
• SA、SD和SP构成完整的结构化方法体系
结构图(SC)
• 用结构图(Structure Chert)来描述软件系统 的体系结构 • 描述一个软件系统由哪些模块组成,以及 模块之间的调用关系 • 结构图的基本成分有:模块、调用和数据
B
模块
• 模块(module):指具有一定功能的可以用 模块名调用的一组程序语句,如函数、子 程序等 • 它们是组成程序的基本单元 • 一个模块具有其外部特征和内部特征
B
现实世界
面 向 OOA 对 象 开 OOD 发 方 法 OOP
结 构 化 开 发 方 法
结构化 分析SA
结构化 设计SD
结构化 编程SP B
计算机世界
软件设计任务
管理观点
概要设计 详细设计
数据设计 系统结构设计
技术观点
B
过程设计
软件设计方法分类
分 类
代 表
结构化设计方法
面向数据流的设计或者 过程驱动的设计 面向数据结构的设计或 者数据驱动设计 面向对象设计
– 外部特征包括:模块的接口(模块名、输入/输出参数、返 回值等)和模块的功能 B – 内部特征包括:模块的内部数据和完成其功能的程序代码
• 在SD中,我们只关注模块的外部特征,而 忽略其内部特征
调用和数据
• 调用(call):用从一个模块指向另一个模块的 箭头来表示,其含义是前者调用了后者
– 为了方便,有时常用直线替代箭头,此时,表示位于上 方的模块调用位于下方的模块
结构图(SC)举例
处方 挂号
医院管理系统
计 总 费
门诊 管理
挂 号 单
挂 号 费 总 计
药库 管理
药房 管理
病房 管理
财务 管理
B
挂号 病历 处方 处理 管理 管理
出库 处理
常规 处理
进药 管理
数据流图类型和SD方法的步骤
在软件设计开始之前,首先要分清DFD图所 显示的系统特征.在DFD图所代表的SA模型中, 所有系统均可以纳入两种典型的形式:
B
模块独立性 •软件系 统中其他的模块接口是简单的。 • 模块独立的概念是模块化、抽象、信息 隐蔽和局部化概念的直接结果。 B • 重要概念:耦合、内聚
模块独立性的度量
模块独立性取决于模块的内部和外部特征。 SD方法提出的定性的度量标准: • 模块之间的耦合性 • 模块自身的内聚性
耦合类型
• 标记耦合
模块间通过参数传递复杂的内部数据结 构,称为标记耦合。此数据结构的变化将使相关的模 块发生变化。 模块间通过参数传递基本类型的数据, 称为数据耦合。
B
• 数据耦合
• 非直接耦合 模块间没有信息传递时,属于非直接耦
合。
内容耦合举例 Entry1 …… Entry1 ……
多入口模块 B
A
B
A B
模块代码重叠
一模块直接访问 另一模块的内部 信息 (程序代码 或数据)