结构化方法
SA方法的基本思想是自顶向下,逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。经过逐层分解,每个最低层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。
SA方法分析模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也称为状态模型)
功能模型
数据流图
子主题
数据流图的组成<br>
①数据流:由一组固定成分的数据组成,表示数据的流向。每一个<br>数据流都有一个定义明确的名字。<br>
②加工:描述了输入数据流到输出数据流之间的变换,即输入数据<br>流经过什么处理后变成输出数据流。每个加工都有一个名字和编号。
③数据存储:用来存储数据。每个数据存储都有一个定义明确的名
字标识
④外部实体:是指存在于软件系统之外的人员或组织,它指出系统<br>所需数据的发源地和系统所产生的数据的归宿地。每个外部实体都<br>有一个定义明确的名字标识
数据流图的主要作用
① DFD是理解和表达用户需求的工具,是需求分析的手段。系统分析师可以
通过DFD与用户进行交流
② DFD概括地描述了系统的内部逻辑过程,是需求分析结果的表达工具,也
是系统设计的重要参考资料,是系统设计的起点
③ DFD作为一个存档的文字材料,是进一步修改和充实开发计划的依据。
绘制数据流图的步骤<br>
①画系统的输入和输出:在图的边缘标出系统的输入数据流和输出数据流。
这一步其实是决定研究的内容和系统的范围。在画的时候,可以先将尽可能
多的数据流画出来,然后再删除多余的,增加遗漏的。
②画DFD的内部:将系统的输入、输出用一系列的处理连接起来,可以从输入
数据流画向输出数据流,也可以从中间画出去
③为每一个数据流命名:命名的好坏与DFD的可理解性密切相关,应避免使用
空洞的名字。
④为加工命名:使用动宾短语为每个加工命名。
行为模型
状态转换图(STD图))
通过描述系统的状态和引起系统状态转换的事件,来表示系统的行为。
子主题
数据字典的内容
数据项
数据流
数据存储
数据加工(处理过程)
面向对象方法
运用面向对象方法,对问题域进行分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域和系统功能所需的类和对象,定义它们的属性和职责,以及它们之间所形成的各种联系,最终产生一个符合用户需求,并能直接反映问题域和系统功能的面向对象分析模型及其详细说明。
统一建模语言
UML又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。
从总体上来看,UML的结构包括构造块、规则和公共机制三个部分。
构造块
UML有三种基本的构造块,分别是<font color="#e74f4c"><b>事物、关系和图</b></font>。
公共机制
主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制4种。
公共机制是指每个事物必须遵守的公共规则
规则
是某些事物应该遵守的约束或者规定。包括命名、范围、可见性、完整性和执行。
子主题<br>
用例图(需求模型)
用例图描述一组用例、参与者及它们之间的关系。用例图给出系统的静态用例视图。<br>
参与者是指存在于系统外部并与系统进行交互的任何事物。参与者可以由人、物、其他系统、时钟组成。
通信关联表示的是参与者和用例之间的关系,或用例与用例之间的关系。发现用例的方法可以采用“动词(短语)+名词(短语)”的形式。
用例是由系统执行的一系列动作,为相关的参与者提供其所期望的服务。
用例关系
包含关系 include<br>
包含关系当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享。
扩展关系 extend<br>
扩展关系是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。<br>
泛化关系 generalize
泛化关系是继承的反关系,用于描述父类与子类之间的关系。
类图(分析模型)
类图展现了一组对象、接口、协作和它们之间的关系。<br>
子主题
类之间的关系<br>
关联关系<br>
是一种<b>拥有</b>的关系,关联提供了不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。
子主题
子主题
聚合关系<br>
共享聚集关系通常简称为聚合关系,表示类之间的整体与部分的关系。其含义是“部分”可能同时属于多个“整体”,“部分”与“整体”的生命周期可以不相同。
子主题
组合关系<br>
是表示类之间的整体与部分的关系。与聚合关系的区别在于,组合关系中的“部分”只能属于一个“整体”,“部分”与“整体”的生命周期相同,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。
子主题
依赖关系<br>
是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。可以简单的理解,就是一个类A使用到了另一个类B。
子主题
泛化关系<br>
是继承关系的反关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
子主题
实现关系
实现关系将说明和实现联系起来。一个或多个类可以实现一个接口,而每个类分别实现接口中的操作。<br>
子主题
对象图
描述一组对象及它们之间的关系。
对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图。
对象图一般包括对象和链。
子主题
顺序图(SequenceDiagram,序列图)
顺序图是一种交互图,交互图展现了一种交互,它由一组对象或参与者以及它们之间可能发送的消息构成。
交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图。
子主题
协作图
协作图又叫通信图(Communication Diagram)。通信图也是一种交互图,它强调收发消息的对象或参与者的<b>结构组织</b>。
子主题
状态图
状态图(State Diagram)。状态图描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。
子主题
行为的结果
活动图
活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。
活动图专注于系统的动态视图。
它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程。
行为的动作
包图
包图描述由模型本身分解而成的组织单元,以及它们之间的依赖关系。
一个包图可以由任何一种UML图组成,通常是UML用例图或是UML类图。包图只是把某些类放在一个包中,因此可以看做是类图的一种。
部署图
部署图(Deployment Diagram)。
部署图描述对运行时的处理节点及在其中生存的构件的配置。
部署图给出了架构的静态部署视图通常一个节点包含一个或多个部署图