版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选优质文档-----倾情为你奉上精选优质文档-----倾情为你奉上专心---专注---专业专心---专注---专业精选优质文档-----倾情为你奉上专心---专注---专业软件工程——结构化方法上世纪60年代,由于计算机计算能力和处理的问题复杂度的急速增长,爆发了众所周知的软件危机。为了应对软件危机带来的危害,解决管理大型复杂软件的难题,学术界与工业界共同研究并提出了许多有效的软件开发方法。而其中影响最为深远的,分支最为庞大的方法就是结构化方法。自1967年起就涌现出了许多软件工程领域有关结构化的相关概念与方法。如结构化程序设计,结构化分析技术,结构化设计。本文将针对它们进行介绍以及其应用。结构化编程结构化编程(Structuredprogramming)是上世纪60年代迪杰斯特拉,科拉多·伯姆及朱塞佩·贾可皮尼等计算机科学家所提出的。图灵奖得主迪杰斯特拉(EdsgerWybeDijkstra)在1968年的一篇名称为《GOTO陈述有害论》的论文写到:最近我发现为什么使用goto语句具有灾难性的影响,而且我认为goto语句应该从所有的高级语言中废除,因为它使分析和验证程序正确性(特别是涉及循环)的任务变得复杂。——GoToStatementConsideredHarmfulEdsgerW.Dijkstra科拉多·伯姆于1966年5月在《CommunicationsoftheACM》期刊发表论文,说明任何一个有goto指令的程序,可以改为完全不使用goto指令的程序。下面来看一个例子,用于展示goto带来的差可读性。voidfoo{A:...if(c==1)gotoB;elsegotoC;B:...if(c==2)gotoA;elsegotoC;C:...if(c==3)gotoB;elsegotoA;}因此为了应对这些弊端,迪杰斯特拉提出了结构化程序设计。首先他证明了任何程序都可以用以下三种流程架构所组成。可分为循序(sequence)、选择(selection)及重复(repetition),循序是指程序正常的运行方式,运行完一个指令后,运行后面的指令。选择是依程序的状态,选择数段程序中的一个来运行,一般会使用if..then..else..endif或switch、case等关系字来识别。重复是指一直运行某一段程序,直到满足特定条件,或是一集合体中的所有元素均已处理过,一般会使用while、repeat、for或do..until等关键字识别。划分出三种结构以后,程序可以变成一个个基本块,每个基本块之间互不影响(有的时候存在跨基本块的变量),使得程序可读性变强。结构化程序设计一经提出,在当时受到广泛的关注,大多数人赞同该设计方法。一个很显著的影响就是,后期几乎所有的高级程序设计语言都受其影响,强调结构化设计,虽然Java,Python,C++等语句以面向对象为主要设计思想,但其对象内部实现依旧以结构化思想为主。当然也有人提出了一些反对意见,著名计算机科学家高德纳(计算机程序设计艺术作者)也提出了使用goto指令可以使得程序更清楚而有效率,也不会牺牲程序的可读性。高德纳提出了一个较松的结构限制要求:将程序以流程图表示,前进的分支在流程图的左侧,倒退的分支在流程图的右侧,所有分支均不得交叉。无可争议的是,结构化编程思想统治了上个世纪的软件开发界。结构化分析技术结构化分析技术(StructuredAnalysis,简称SA),80年代起广为使用的软件开发方法。强调面向应用,分解需求。该技术通过将需求分解,使用抽象化机制,建立一个个小Unit,通过数据的流通构建单元之间的输入输出。结构化分析还使用诸如数据流图(DFD),数据字典,系统关系图(SystemContextDiagram)等建模方式来形象表达系统的功能与设计。1抽象化机制结构化分析会利用抽象化机制的层次结构系统。该抽象机制由需求开始进行。机制一开始会先确认整体需求,再反复地将需求分区为更小的需求,保留程序最优化需要的输入、输出、控制及机制。功能分解的结构化方法单纯描述程序,而不去划定系统的行为,也不决定系统架构。此方法只确认和模块有关的输入及输出。结构化分析受欢迎的一个原因是其本质适合描述一个高级的程序及概念,使得一个大型复杂系统的层次划分切割的十分适合。2分析方法结构化分析以数据在不同模块中流动(Flow)的观点来看待一个系统,系统的功能可以用转换数据流的移动来表示。结构化分析巧妙的利用功能拆解(或由上到下设计)的信息隐藏特性,因此可以关注在重要的细节,而不会被无关的细节干扰。而且分析方法可以确定具体的层次,当细节的层级提高时,信息的广度也随之减少。常见分析方法包括以下几项:2.1系统关系图系统关系图(SystemContextDiagram)用以表示系统的边界,以及系统外实体(使用者)和系统之间的交互关系。从抽象层次来看,它是系统的最高层次视图。上图是移动蜂窝网络使用的系统关系图,行为者(右侧小人)通过一个蜂窝接口与各个系统模块进行交互。从图中不难看出系统关系图一般是用在项目的初期,它的目的是为了开发初期能够大致确定系统的架构。项目的所有相关人都需查阅系统关系图,因此系统关系图需用通俗易懂的语言书写,利害相关人才能了解其中的内容。2.2数据流程图数据流程图(DataFlowDiagram)是由赖瑞·康斯坦丁所提出。它是用图像方式表示信息系统中数据的流动方式。数据流程图和系统流程图不同,主要是表示数据在不同程序之间的流动,而不是程序的控制流程。一般在绘制数据流程图前,会需要上文所说SCD图,描述系统和外界环境的交互作用。因此来说,它的抽象层次要低于SCD图,是将SCD中的大模块分解成一个个的小模块。一般在具体实现中,如果系统的规模较大,仅用一个DFD难以描述,会使得系统变得复杂、庞大而又难以理解。为了降低系统的复杂性,一般采取“逐层分解”的方法,绘制分层的DFD。如下图所示是一个学生管理系统的分层DFD图。可以看到第0层DFD图粗略的描述了行为者与系统和数据库交互的方法,第1层中的模块对应的是软件/系统的主要处理(或功能),箭头对应各处理间的数据流。这样每个模块所代表的处理都执行一个功能,并且该功能可以很容易地被实现。使得实现的过程变得简洁明了。绘制分层DFD的原则一般是:先全局后局部,先整体后细节,先抽象后具体。2.3数据字典数据字典是定义数据库基本组织的文件。数据字典包括数据库中所有数据项、数据结构,数据流,数据存储以及处理过程。为了保护数据字典的内容不被破坏,大部分的数据库管理系统不允许用户更改数据字典。数据字典没有数据库中的数据内容,只有一些访问数据库需要的信息。数据库管理系统一定要配合数据字典才能访问数据库的内容。一个很好的能说明结构化设计流行的实例就是数据库的SQL语言。结构化查询语言(SQL)是一种查询数据库的标准语言。结构化查询语言一开始是用在一个商用数据库系统中,后来成为在迷你电脑及大型计算机运作的数据库管理系统中,最受欢迎的数据库查询语言。结构化查询语言也可在一般个人电脑中的数据库管理系统中使用,并且可配合分布式数据库使用,因此允许许多用户在网络上同时访问同一个数据库的内容。在软件工程课程的实践过程中,我接触到了数据流程图和数据字典。利用两者可以很好的构建大型系统的具体框架,使用结构化分析的方法,将需求切分成小块从而达到分解的目的。结构化设计一开始听到结构化设计这个名词,没有理解它与结构化分析的区别在哪,看了它的定义才明白几分。结构化设计(SD)是有关软件模块的开发,及分析模块之间的“模块层次”(modulehierarchy)。两者的区别在哪呢,简单来说,结构化分析是结构化设计的基础。结构化分析对应于系统需求说明书,强调的是通过DFD,DD等建模方法,将系统的整体框架和设计理念搭建好。而结构化设计是在具体实现,也就是系统设计说明书。强调如何将分析结果实现。结构化设计是一种面向数据流的设计方法,目的在于确定软件的结构。采用自顶向下、逐层分解的方法,建立系统的处理流程。结构化设计的步骤如下:①评审和细化数据流图;②确定数据流图的类型;③把数据流图映射到软件模块结构,设计出模块结构的上层;④基于数据流图逐步分解高层模块,设计中下层模块;⑤对模块结构进行优化,得到更为合理的软件结构;⑥描述模块接口。在结构化设计中,有以下两个主要的概念:1,内聚力,是指机能相关的程序组合成一模块的程度。2,耦合力,是指模块及模块之间信息或参数流动的程度。当耦合力调整到最佳情形时,会简化模块之间的接口,也会简化程序的复杂度。通过上述结构化设计的方法流程,将模块打散,使得模块之间的联系越松散越好,而模块内各成分之间的联系越紧凑越好。使程序的结构尽可能反映要解决的问题的结构。在一步步的细化中使整个系统变得清晰,明确,实现更加轻松。总结从以上三种结构化方法的简述和分析过程中可以提取出来结构化方法的主要思想如下:1、强调软件是有组织、有结构的逻辑实体,其结构为自顶向下的形式,软件由程序和数据组成,其结构呈现三层组织形式,即系统、子系统、功能模块/数据体。软件结构中的各部分既独立又关联。2、特点:抽象性:抽象描述系统的本质内容,结构化、模块化、层次化:分而治之,由分到合,分析与设计线索:面向过程(处理)–过程驱动面向数据–数据驱动3、总体规划:为所规划的软件系统作出一个战略的、宏观的、全局的技术方案,构建宏观结构模型,为后期的分析与设计奠定基础三个工作内容:(1)需求调查(2)结构模型建立(3)总体规划文档撰写在计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026交流干部面试题及答案
- ESG评级提升策略与企业社会责任报告模板
- 掘金下沉市场万亿蓝海:儿童滑梯秋千行业核心壁垒与县域商业闭环
- 2026经典小组面试题目及答案
- 供应链管理与采购成本控制优化策略
- 新能源汽车电池回收供应链体系构建与运营
- 智能地毯干洗机+量子计算优化算法:极致能效与耗材管理革命
- 智能座舱融合+双碳目标:绿色材料应用与碳足迹追踪
- 智能壁灯赋能智慧零售:重构门店光影体验与客流转化率
- 书法高效课堂:偏旁部首写法教学实录与反思
- 边坡安全管理措施
- 企业廉政培训课件
- 四年级语文上册快乐读书吧《中国神话传说》
- 村级应急物资管理制度
- 2025年公路水运工程重大事故隐患判定标准深度解析
- 电力电气设备安装工(试行) -国家职业标准(2024年版)
- 教学课件道德与法治部编版(2024版)七年级初一上册4.2让家更美好课件01
- 2024年可行性研究报告投资估算及财务分析全套计算表格(含附表-带只更改标红部分-操作简单)
- 电动汽车充电桩安装检修赛项考试题库500题(含答案)
- 临床营养学(重点)
- Weiss′s 功能性缺陷程度(父母问卷)
评论
0/150
提交评论