23、结构化开发方法
1、系统分析与设计概述
◆系统分析过程一般按如图所示的逻辑进行:
(1)认识、理解当前的现实环境,获得当前系统的“物理模型“
(2)从当前系统的“物理模型“抽象出当前系统的“逻辑模型“
(3)对当前系统的“逻辑模型”进行分析和优化,建立目标系统的“逻辑模型”
(4)对目标系统的逻辑模型具体化(物理化),建立目标系统的物理模型。
◆系统开发的目的是把现有系统的物理模型转化为目标系统的物理模型,即图中所描述的路径,而系统分析阶段的结果是得到目标系统的逻辑模型。逻辑模型反映了系统的功能和性质,而物理模型反映的是系统的某一种具体实现方案。
逻辑模型就相当于设计图纸;物理模型就相当于售楼处的沙盘;
◆系统设计基本原理:抽象、模块化(划分模块)、信息隐蔽(暴露接口,但隐蔽接口中的具体实现)、模块独立
高内聚低耦合:(必考)
耦合:模块与模块之间,模块与模块之间的关联程度越低,越好。
内聚:模块内部的功能点要关联程度越紧密越好,因为这些功能点是共同支撑这个模块的。
系统总体结构设计就是系统概要设计。
◆系统总体结构设计是要根据系统分析的要求和组织的实际情况对新系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规划。
系统结构设计原则:
(1)分解-协·调原则。
(2)自顶向下的原则。
(3)信息隐蔽、抽象的原则。
(4)一致性原则。
(5)明确性原则。
(6)模块之间的耦合尽可能小,模块的内聚度尽可能高。(7)模块的扇入系数和扇出系数要合理。
(8)模块的规模适当。
扇出:就是调用别人;扇入:就是别人调你;多扇入少扇出。
◆系统模块结构设计
模块式组成系统的基本单位,它的特点是可以组合、分解和更换。系统中任何一个处理功能都可以看成是一个模块。根据功能具体化程序的不同,模块可以分为逻辑模块和物理模块。
一个模块应具备以下4个要素:
(1)输入和输出
(2)处理功能。把输入转换成输出的工作。
(3)内部数据。模块本身引用的数据。
(4)程序代码。用来实现模块功能的程序。
前两个要素是模块外部特性,反映了模块的外貌。后两个要素是模块的内部特性。
◆模块结构图为了保证系统设计工作的顺利进行,结构设计应遵循以下原则。
(1)所划分的模块其内部的凝聚性要强,模块之间的联系要少,即模块具有较强的独立性。
(2)模块之间的连接只能存在上下级之间的调用关系,不能有同级之间的横向联系。
(3)整个系统呈树状结构,不允许网状结构或交又调用关系出现。
(4)所有模块(包括后继IPO 图)都必须严格地分类编码并建立归档文件。
模块结构图主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,并不关心模块的内部,即不关系子系统、模块此阿勇何种数据结构和核心算法(即具体实现)。
2、结构化开发方法
◆结构化分析与设计方法是一种面向数据流的传统软件开发方法,它以数据流为中心构建软件的分析模型和设计模型。结构化分析(structuredAnalysis,SA)结构化设计(StructuredDesign,sD)和结构化程序设计(structuredProgramming Design,sPD)构成了完整的结构化方法结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。
1)数据流:由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向必须经过加工。
2)加工:描述了输入数据流到输出数据流之间的变换,数据流图中常见的三种错误如图所示
加工3.1.2 有输入但是没有输出,称之为“黑洞“加工
3.1.3 有输出但没有输入。称之为“奇迹“加工
3.1.1 中输入不足以产生输出,我们称之为“灰洞“
3)数据存储:用来存储数据。
4)外部实体(外部主体):是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。
分层数据流图:
◆数据字典DD
数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。
数据字典有以下4 类条目:数据流、数据项、数据存储和基本加工。
加工逻辑也称为“小说明”。常用的加工逻辑描述方法有结构化语言、判定表、判定树3种。
数据流图:功能建模
数据建模:E-R 图
行为建模:状态转换
3、结构化设计方法
◆结构化设计(Structured Design,SD)方法是一种面向数据流的设计方法,可以与SA 方法衔接。结构化设计方法的基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。
◆结构化设计方法中用结构图(structure chart)来描述软件系统的体系结构,指出一个软件系统由哪些模块组成,以及模块之间的调用关系。模块结构图是结构化设计的工具,由模块、调用、数据、控制和转接五种基本符号组成。
◆结构化设计主要包括:
①体系结构设计:定义软件的主要结构元素及其关系,
②数据设计(依赖E-R图): 基于实体联系图确定软件涉及的文件系统的结构及数据库的表结构。
③接口设计(依赖数据流图):描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。
④**过程设计: **确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。
**体系结构 就是架构 **
设计阶段接口设计主要依据需求分析阶段的 数据流图。接口设计的主要任务是描述软件与外部环境之间的交互关系,软件内模块之间的调用关系。
4、WebApp 分析与设计
◆WebApp是基于web的系统和应用。大多数WebApp采用敏捷开发过程模型进行开发。
◆WebApp的特性:
(1)网络密集性。WebApp 驻留在网络上,服务于不同客户全体的需求。网络提供开放的访问和通信(如Internet)或者受限的访问和通信(如企业内联网)
(2)并发性。大量用户可能同时访问WebApp。很多情况下最终用户的使用模式存在很大的差异。
(3)无法预知的负载量。WebApp的用户数量每天都可能有数量级的变化。例如,周一显示有100 个用户使用系统,周四就有可能会有10000 个用户。
(4)性能。如果一位WebApp用户必须等待很长时间(访问、服务器端处理客户端格式化显示),该用户就可能转向其他地方。
(5)可用性。尽管期望百分之百的可用性是不切实际的,但是对于热门的WebApp,用户通常要求能够24/7/365(全天候)访问。
(6)数据驱动。许多WebApp的主要功能是使用超媒体向最终用户提供文本、图片、音频及视频内容。除此之外,WebApp还常被用来访问那些存储在Web应用环境之外的数据库中的信息。
◆WebApp五种需求模型
1、内容模型:给出由webApp提供的全部系列内容,包括文字、图形、图像音频和视频。包含结构元素,为WebApp的内容需求提供了一个重要的视图。这些结构元素包含内容对象和所有分析类,在用户与WebApp交互时生成并操作用户可见的实体。
2、交互模型:描述了用户与WebApp采用了哪种交互方式。由一种或多种元素构成,包括用例、顺序图、状态图、用户界面原型等。
3、功能模型:许多WebApp提供大量的计算和操作功能,这些功能与内容直接相关(既能使用又能生成内容,如统计报表)。这些功能常常以用户的交互活动为主要目标。功能模型定义了将用于WebApp内容并描述其他处理功能的操作这些处理功能不依赖于内容却是最终用户所必需的。
4、导航模型:为WebApp定义所有导航策略。考虑了每一类用户如何从一个(如内容对象)导航到另一个元素。
5、配置模型:WebApp元素描述WebApp所在的环境和基础设施。在必需考虑复杂配置体系结构的情况下,可以使用UML部署图。
◆WebApp设计
1、架构设计:描述将以什么方式来管理用户交互、操作内部处理任务、实现导航及展示内容。MVC(模型-视图-控制器)结构是WebApp基础结构模型之一将WebApp功能及信息内容分离。
2、构件设计:
WebApp构件:定义良好的聚合功能,为最终用户处理内容或提供计算或处理数据;内容和功能的聚合包,提供最终用户所需要的功能。因此,webApp构件设计通常包括内容设计元素和功能设计元素。
构件级内容设计:关注内容对象,以及包装后展示给最终用户的方式,应该适合创建的WebApp特性。
构件级功能设计:将WebApp作为一系列构件加以交付,这些构件与信息体系结构并行开发,以确保一致性。
3、内容设计:着重于内容对象的表现和导航的组织,通常采用线性结构、网格结构、层次结构、网络结构四种结构及其组合。
4、导航设计:定义导航路径,使用户可以访问WebApp的内容和功能。