第6章 结构化开发方法

第6章 结构化开发方法

一 系统分析

  • 系统分析是一种问题求解技术,它将一个系统分解成各个组成部分,目的是研究各个部分如何工作、交互,以实现其系统目标。

  • 目的和任务:系统分析的主要任务是对线性系统更进一步详细调查,将调查中所得到的文档资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需的资料,并提交系统方案说明书。

  • 系统分析的主要步骤

    • 1) 认识、理解当前的现实环境,获得当前系统的”物理模型”
    • 2) 从当前系统的”物理模型”抽象出当前系统的”逻辑模型”
      1. 对当前系统的”逻辑模型”进行分析和优化,建立目标系统的”逻辑模型”
      1. 对目标系统的逻辑模型具体化,建立目标系统的物理模型。
  • 系统开发的目的是将现有系统的物理模型转换为目标系统的物理模型。

1. 系统结构设计基本原理

  • 抽象(重点说明一个实体的本质方面,忽略非本质方面)
  • 模块化 (可组合、分解和更换的单元)
  • 信息隐蔽 (将每个程序的成分隐藏或封装在一个单一的设计模块中)
  • 模块独立 (每个模块完成一个相对独立的特定子功能,且与其他模块之间的联系简单)

2. 模块之间的联系 耦合内聚

  • 2.1 耦合:是模块之间的相对独立性的度量
    软件设计师教程知识点整理

  • 2.2 内聚:是一个模块内部各个元素彼此结合的紧密程度的度量
    软件设计师教程知识点整理

3. 系统结构化方法设计过程

  • 3.1 系统结构设计原则

    • 分解–协助原则
    • 自顶向下原则
    • 信息隐蔽和抽象原则
    • 一致性原则明确性原则
    • 模块间高内聚低耦合
    • 模块的扇入系数和扇出系数合理
    • 模块规模适当
  • 3.2 子系统划分的原则

    • 子系统要具有相对独立性
    • 子系统之间数据的依赖性尽量小
    • 子系统划分的结果应使数据冗余较小
    • 子系统的设置应考虑今后管理发展的需要
    • 子系统的划分应便于系统分阶段实现
    • 子系统的划分应考虑到各类资源的充分利用

二 结构化分析方法

1. 结构化分析方法

  • 结构化的分析方法SA:自顶向下,逐步分解,是面向数据的,强调分析对象的数据流;
  • 需要建立:
    • 功能模型(DFD数据流图)
    • 行为模型(状态转换图)
    • 数据模型(E-R图)
    • 数据字典(数据元素,数据结构,数据流,数据存储,加工逻辑,外部实体)

2. DFD数据流图

  • 2.1 数据流图描述数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模,数据流图相关概念如下图:
    软件设计师教程知识点整理

  • 2.2 数据流图是可以分层的,从顶层(即上下文无关数据流)到0层、1层等,顶层数据流图只含有一个加工处理表示整个管理信息系统,描述了系统的输入输出,以及和外部实体的数据交互。如下:
    软件设计师教程知识点整理

  • 2.3 数据流图的基本设计原则

    • 1) 数据守恒原则:对任何一个加工来说,其所有输出数据流中的数据必须能从该加工的数据数据流中直接获得,或者说是通过该加工能产生的数据
    • 2) 守恒加工原则:对同一个加工来说,输入和输出的名字必须不相同,即使他们的组成成分相同。
    • 3) 对于每个加工,必须既有输入数据流,又有输出数据流
    • 4) 外部实体与外部实体之间不存在数据流
    • 5) 外部实体与数据存储之间不存在数据流
    • 6) 数据存储于数据存储之间不存在数据流
    • 7) 父图和子图的平衡原则:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图和子图的平衡。此平衡原则不存在与单张图。
    • 8) 数据流与加工相关,且必须经过加工

3. 数据字典

  • 数据字典是用来定义在数据流图中出现的符号或者名称的含义,在数据流图中,每个存储、加工、实体的含义都必须定义在数据字典中。并且父图和子图之间这些名称要相同。如下
    软件设计师教程知识点整理

三 WEBAPP分析和设计

1. WEBAPP特性

  • 是基于web的系统和应用,大多数应用采用敏捷开发过程模型进行开发。
  • 网络密集性(服务于不同客户全体的需求)、并发性(大量用户同时访问)、无法预知的负载量(用户数量)、性能(响应时间过长导致用户流失)、可用性、数据驱动(和用户的数据交互)

2. WEBAPP需求模型

  • 2.1 内容模型
    给出由WEBAPP提供的全部系列内容,包括了文字、图形、图像、视频和视频。

  • 2.2 交互模型
    描述了用户与WEBAPP采用了那种交互方式。由一种或多种元素构成,包括用例、顺序图、状态图、用户界面原型等。

  • 2.3 功能模型
    许多WEBAPP提供了大量的计算和操作功能,这些功能与内容直接相关(既能使用又能生成内容,如统计报表)。这些功能常常以用户的交互活动为主要目标。
    功能模型定义了将用户WEBAPP内容并描述其它处理功能的操作,这些功能不依赖于内容却是最终用户所必需的。

  • 2.4 导航模型
    为WEBAPP定义所有导航策略,考虑了每一类用户如何从一个WEBAPP元素(如内容对象)导航到另一个元素

  • 2.5 配置模型
    描述WEBAPP所在环境和基础设施。在必需考虑配置体系结构的情况下,可以使用UML部署图。

3. WEBAPP设计

  • 3.1 架构设计
    使用多层架构来构造,包括用户界面或展示层、基于一组业务规则来知道与用户端浏览器进行信息交互的控制器,以及可以包含WEBAPP的业务规则的内容或模型层,描述将以什么方式来管理用户交互、操作内容处理任务、实现导航及展示内容。

  • 3.2 构件设计
    构件:定义良好的聚合功能,为最终用户处理内容或提供计算或处理数据
    构件内容:关注内容对象,以及包装后展示给最终用户的方式,应该适合创建的WEBAPP特性
    构件功能:将WEBAPP作为一些列构件加以交付,这些构件与信息提携结构并行开发,以确保一致性。

  • 3.3 内容设计
    着重于内容对象的表现和导航的组织,通常采用线性结构、网格机构、层次结构、网络结构四中结构及其组合。

  • 3.4 导航设计
    定义导航路径,使用户可以访问WEBAPP的内容和功能