软件工程 第六讲 结构化分析方法
- 格式:ppt
- 大小:471.51 KB
- 文档页数:88
软件工程结构化方法
软件工程结构化方法是一种将软件开发过程分解为一系列阶段和活动,并通过定义一些规范和指导原则来提高开发效率和质量的方法。
结构化方法强调将软件开发过程中的复杂问题分解为更小的、易于管理的问题,并通过逐步建立、验证和集成这些解决方案来完成软件开发任务。
软件工程结构化方法的主要特点包括:
1. 模块化:将软件系统划分为一系列相互独立的模块,每个模块具有明确定义的功能和接口,便于开发和维护。
2. 抽象化:通过对问题进行抽象和概括,将系统需求转化为易于理解和实现的形式。
3. 清晰的设计和规范:使用建模技术和工具,如结构图、数据流图等,来描述系统架构和模块之间的关系,以及数据流和处理逻辑等。
4. 逐步开发和集成:通过逐步实现和验证各个模块的功能,逐步构建完整的软件系统。
5. 验证和测试:在每个开发阶段都进行验证和测试,确保功能的正确性和质量。
6. 文档化:对软件开发过程中的设计、开发、测试和维护进行详细的记录和文档化,以便后续的维护和改进。
软件工程结构化方法可以帮助软件开发团队更好地组织和管理软件开发过程,提高开发效率、质量和可维护性。
在实际应用中,常见的软件工程结构化方法包括结构化分析与设计方法(SA/SD)、结构化系统分析与设计方法(SSADM)、实体关系建模方法(ER模型)等。
结构化分析方法结构化分析方法是指通过对问题、系统或者事物进行系统性的分解和分析,以便更好地理解其内在结构和运行机制的一种分析方法。
结构化分析方法在工程、管理、信息技术等领域都有着广泛的应用,能够帮助人们更好地理解和解决复杂的问题。
下面将从几个方面对结构化分析方法进行介绍和分析。
首先,结构化分析方法的基本原理是将一个复杂的系统或问题分解为若干个相对简单的部分,通过对这些部分的分析和理解,再将它们整合起来,从而得到对整体系统或问题的深入理解。
这种分解和整合的过程有助于人们更好地把握问题的本质和关键因素,从而有针对性地进行解决和改进。
其次,结构化分析方法的核心工具包括了数据流图、结构图、层次分析法等。
数据流图是一种用来描述系统功能和数据流动的图表,通过对数据流图的绘制和分析,可以清晰地了解系统的功能和数据流动情况,有助于找出系统中存在的问题和改进的空间。
结构图则是用来描述系统结构和组成部分之间的关系的图表,通过结构图的绘制和分析,可以帮助人们更好地理解系统的内在结构和组成部分之间的相互作用。
层次分析法则是一种用来处理复杂决策问题的方法,通过对问题进行层次化的分解和比较,可以帮助人们更好地进行决策和优化。
再次,结构化分析方法的应用范围非常广泛,可以应用于各种领域和行业。
在工程领域,结构化分析方法可以用来对复杂系统进行分析和设计,帮助工程师更好地理解和改进系统。
在管理领域,结构化分析方法可以用来对企业的组织结构和业务流程进行分析和优化,帮助管理者更好地管理和决策。
在信息技术领域,结构化分析方法可以用来对软件系统进行分析和设计,帮助程序员更好地理解和开发系统。
最后,结构化分析方法的优势在于可以帮助人们更好地理解和解决复杂问题,提高工作效率和质量。
但是,结构化分析方法也存在一些局限性,比如对于非线性、动态、不确定性较大的问题,结构化分析方法可能并不适用。
因此,在实际应用中,需要根据具体问题的特点和要求来选择合适的分析方法。
软件工程——结构化方法上世纪60年代,由于计算机计算能力和处理的问题复杂度的急速增长,爆发了众所周知的软件危机。
为了应对软件危机带来的危害,解决管理大型复杂软件的难题,学术界与工业界共同研究并提出了许多有效的软件开发方法。
而其中影响最为深远的,分支最为庞大的方法就是结构化方法。
自1967年起就涌现出了许多软件工程领域有关结构化的相关概念与方法。
如结构化程序设计,结构化分析技术,结构化设计。
本文将针对它们进行介绍以及其应用。
结构化编程结构化编程(Structured programming)是上世纪60年代迪杰斯特拉,科拉多·伯姆及朱塞佩·贾可皮尼等计算机科学家所提出的。
图灵奖得主迪杰斯特拉(Edsger Wybe Dijkstra)在1968年的一篇名称为《GOTO陈述有害论》的论文写到:最近我发现为什么使用goto语句具有灾难性的影响,而且我认为goto语句应该从所有的高级语言中废除,因为它使分析和验证程序正确性(特别是涉及循环)的任务变得复杂。
——Go To Statement Considered Harmful Edsger W.Dijkstra科拉多·伯姆于1966年5月在《Communications of the ACM》期刊发表论文,说明任何一个有goto指令的程序,可以改为完全不使用goto指令的程序。
下面来看一个例子,用于展示goto带来的差可读性。
void foo{A:...if(c==1)goto B;else goto C;B:...if(c==2) goto A;else goto C;C:...if(c==3)goto B;else goto A;}因此为了应对这些弊端,迪杰斯特拉提出了结构化程序设计。
首先他证明了任何程序都可以用以下三种流程架构所组成。
可分为循序(sequence)、选择(selection)及重复(repetition),循序是指程序正常的运行方式,运行完一个指令后,运行后面的指令。