[架构之路-201]-《软考-系统分析师》- 关键技术 - 结构化分析方法与面向对象分析(分析与设计的区别)

news2024/11/28 4:44:40

目录

前言:

一、分析与设计的区别

二、结构化分析方法

2.1  实体关系图:E - R 图 (名词)

2.2. 数据流图(数据的流动)

(1) 顶层图。

(2) 逐层分解。

2.3. 状态转换图(动作)

2.4 数据字典

三、面向对象分析方法

3.1 用例模型

3.2 分析模型

3.2.1 定义概念类

3.2.2 确定类之间的关系

3.2.3 为类添加职责

3.2.4 建立交互图

3.2.5 分析模型的详细程度问题


前言:

结构化分析和面向对象分析,都是一种需求分析的方法和手段,用于把复杂问题分解成简单的问题,把复杂的需求分解成简单的需求,把高层笼统的需求分解成低层细化后的需求。

所谓:需求,就是“what”,是“是什么”?做成“什么样子”,是“目标”,即未来的软件系统长成什么样子?

系统分析不关系怎么做,也不是解决方案。

当然,有时候,客户的需求也提出解决方案,但这并不意味着“需求”关注的“怎么做”。

一、分析与设计的区别

二、结构化分析方法

S A 方法的基本思想是自顶向下,逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。经过逐层分解,每个最低层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。在 S A 方法中导出的分析模型如阁11-5所示。

从 图 11-5可以看出, S A 方法分析模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也称为状态模型)。

在实际工作中:

  • 一般使用 E - R 图表示数据模型
  • 用 D F D 表示功能模型数据转换模型
  • 用状态转换图 (State TransformDiagram , S T D ) 表示行为模型。

这三个模型有着密切的关系,它们的建立不具有严格的时序性,而是一个迭代的过程。

2.1  实体关系图:E - R 图 (名词)

E-R图,也称为实体关系图,用于显示实体集之间的关系。它提供了一种表示实体类型、属性和连接的方法;用来描述现实世界的概念模型

2.2. 数据流图(数据的流动)

(1) 顶层图。

顶层图是描述系统最高层结构的 D F D , 它的特点是将整个待开发的系统表示为一个加工,将所有的外部实体和进出系统的数据流都画在一张图屮。

例如,图11-6就是一个顶层图的实例,只不过在绘制时做了一些处理,使得它看上去更加直观
易懂。

顶层图用来描述系统有什么输入和输出数据流,与哪些外部实体直接相关,可以把整个系统的范围勾画出来。

(2) 逐层分解。

当完成了顶层图的建模之后,就可以在此基础上进行进一步的分解。对 图 11-6进行分解,在对原有流程了解的基础上,可以得到图11-7。

 图 11-7是在顶层图11-6的基础上做的第一次分解,而在图】1-7中只有一个加工,那就是系统本身,可以将其编号为0。因此,对顶层图进行的分解,其实就是对这个编号为0 的加工进行更细化的描述,在这里引入了新的加工和数据存储,为了能够区分其位于的级别,在这个层次上的加工将以1, 2, 3 为序列进行编号。正是由于这是对加工0 的分解,因此也称为0 层图。可以根据谣要对0 层图上的加工进行类似的再分解,称之为1层图,在 1层图中引入的新加工,其编号规则就是1.1、
1.2、…,以及2.1、2.2、…,依次类推,直到完成分析工作。

2.3. 状态转换图(动作)

大多数业务系统是数据驱动的,所以适合使用 D F D 。但是,实时控制系统却主要是事件驱动的,因此,行为模型是最有效的描述方式。 S T D 通过描述系统的状态和引起系统状态转换的事件,来表示系统的行为。此外, S T D 还指出了作为特定事件的结果将执行哪些动作(例如,处理数据等)。状态是任何可以被观察到的系统行为模式,每个状态代表系统的-•种行为模式。在
S T D 中,用圆形框或椭圆框表示状态,通常在框内标上状态名。状态规定了系统对事件的响应方式。系统对事件的响应可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态。 S T D 描述了系统如何在各种状态之间移动。事件是在某个特定时刻发生的事情,它是对引起系统从一个状态转换到另一个状态的外界事件的抽象。例如,内部时钟指明某个规定的时间段己经过去,鼠标移动或单击等都是事件。简而言之,事件就是引起系统状态转换的控制信息。
在 S T D 中,从一个状态到另一个状态的转换用箭头线表示,箭头表明转换方向,箭头线上标上事件名。必要时可在事件名后面加一个方括号,括号内写上状态转换的条件。也就是说,仅当方括号内所列出的条件为真时,该事件的发生才引起箭头所示的状态转换。图 11-8给出了一个在线课程学习的 S T D 示例。

 

2.4 数据字典

D F D 描述了系统的分解,即系统由哪几部分组成,各部分之间的联系等,但是,对于数据的详细内容却无法在 D F D 中得到反映。例如,图 11-7中的数据存储“课程”包括哪些内容,在 D F D 中就无法具体、准确地描述。数据字典是在 D F D 的基础上,对 D F D中出现的所有命名元素都加以定义,使得每个图形元素的名字都有一个确切的解释。D F D 和数据字典等工具相配合,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。

三、面向对象分析方法

0 0 A 的基本任务是运用 O O 方法,对问题域进行分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域和系统功能所需的类和对象,定义它们的属性和职责,以及它们之间所形成的各种联系。最终产生一个符合用户需求,并能直接反映问题域和系统功能的 O O A 模型及其详细说明。

0 0 A 模型独立于具体编程语言实现(怎么做),即不考虑与系统具体实现有关的因素,这也是0 0 A 和0 0 D 的区别之所在。

O O A 的任务是“做什么”,0 0 D 的任务是“怎么做”。

3.1 用例模型

S A 方 法 采 用 功 能 分 解 的 方 式 来 描 述 系 统 功 能 , 在 这 种 表 达 方 式 中 , 系 统 功 能 被 分解 到 各 个 功 能 模 块 中 ,通 过 描 述 细 分 的 系 统 模 块 的 功 能 来 达 到 描 述 整 个 系 统 功 能 的 目 的 。
采 用 SA 方 法 来 描 述 系 统 需 求 , 很 容 易 混 淆 需 求 和 设 计 的 界 限 , 这 样 的 描 述 实 际 上 已 经包含了部分的设计在内。因此,系统分析师常常感到迷惑,不知道系统需求应该详细到
何种程度。一个极端的做法就是将需求详细到概要设计,因为这样的需求描述既包含了外部需求也包含了内部设计。 S A 方法的另一个缺点是分割了各项系统功能的应用环境,从各项功能项入手,很难了解到这些功能项如何相互关联来实现一个完整的系统服务的。
从用户的角度来看,他们并不想了解系统的内部结构和设计,他们所关心的是系统所能提供的服务,这就是用例方法的基本思想。用例方法是一种需求合成技术,采用10.2.3节 和 11.2节介绍的技术(方法)获取需求,记录下来,然后从这些零散的要求和期望中进行整理与提炼,从而建立用例模型。

在 O O A 方法中,构建用例模型一•般需要经历4 个阶段,分别是识别参与者、合并需求获得用例、细化用例描述和调整用例模型,其中前三个阶段是必需的。

3.2 分析模型

11.5.2节从用户的观点对系统进行了用例建模,但捕获了用例并不意味着分析的结束,还要对需求进行深入分析,获取关于问题域本质内容分析模型

分析模型描述系统的基本逻辑结构,展示对象和类如何组成系统(静态模型),以及它们如何保持通信,实现系统行为(动态模型)。

为了使模型独立于具体的幵发语言,系统分析师需要把注意力集中在概念性问题而不是软件技术问题上,这些技术的起点就是领域模型。领域模型又称为概念模型或简称为域模型,也就是找到那些代表事物与概念的对象,即概念类。概念类可以从用例模型中获得灵感,经过完善将形成分析模型中的分析类。

每一个用例对应一个类图,描述参与这个用例实现的所有概念类,而用例的实现主要通过交互图来表示。例如,用例的事件流会对应产生一个顺序图,描述相关对象如何通过合作来完成整个事件流,复杂的备选事件流也吋以产生-个或多个顺序图。所有这些图的集合就构成了系统的分析模型。

建立分析模型的过程大致包括定义:概念类、确定类之间的关系、为类添加职责、建立交互图等,

其中有学者将前三个步骤统称为 C R C C C l a s s - Responsibity - Collaborator , 类-责任-协作者)建模。

3.2.1 定义概念类

 

3.2.2 确定类之间的关系

 

 

3.2.3 为类添加职责

 

3.2.4 建立交互图

多个对象的行为通常釆用对象交互来表示 ,U M L 2.0提供的交互图有:

  • 顺序图
  • 交互概览图
  • 通信图
  • 定时图。

每种图出于不同视点对行为有不同的表现能力,其中最常用的是顺序图,几乎可以用在任何系统的场合。顺序图的基本元素有对象、参与者、生命线、激活框、消息和消息路线,其中消息是顺序图的灵魂。当对象行为复杂并存在多种不同状态转换时,还要用到反映对象状态变化的状态图

3.2.5 分析模型的详细程度问题

对于分析模型的详细程度,各种文献说法不一,在实践中的做法也不一样。

有些文献建议只列出类以及类之间的主要关系,不要对关系进行描述,更不要体现类的职责;

而有些文献则认为应该将这些东西都列出來。其实,干巴巴地讨论这个问题是没有任何意义的。

在整个系统开发的过程中,分析模型是不断演变的,应随着幵发的深入加入新的内容,或修改己有内容,逐渐完善,演变完整。最初的分析模型主要是围绕着领域知识进行的,对现实的事物进行建模。而后,则不断地加入设计的元素,最终演变成为运行于计算机上的系统。
总之,模型不是要开发的目标产物,而是开发过程中的一个辅助工作,只要能够利用其帮助团队更好地开发,详细也罢,简约也罢,都是好模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/537783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电压比较器

电压比较器&#xff1a; 应用一&#xff1a;过压&#xff0c;低压检测&#xff08;over and undervoltage detectors&#xff09; 如果Vin<Vs&#xff0c;则VoutVpullup。 如果Vin>Vs&#xff0c;则Vout0V。 应用二&#xff1a;窗口比较器&#xff08;window comparat…

Zadoff-Chu序列

ZC序列的定义 ZC序列有两个重要的参数&#xff1a; 根索引&#xff08;root index&#xff09; q 1 , 2 , ⋯ , N z c − 1 q1,2,\cdots,N_{zc}-1 q1,2,⋯,Nzc​−1ZC序列的长度 N z c N_{zc} Nzc​&#xff0c;一定得是奇数&#xff08;常常是质数&#xff09; 给定上述两…

网络:网络分层与协议/OSI七层模型/(TCP/IP模型)

一、简单理解 OSI模型(Open System Interconnection)&#xff1a; 七层模型&#xff0c;亦称OSI&#xff08;Open System Interconnection&#xff09;。参考模型是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;一般…

数据结构——带头双向循环链表实现

目录 前言 一、结构介绍 二、增删查改的实现 1.在某一位置前插入数据 2.头插 3.尾插 4.删除某一位置的节点 5.头删 6.尾删 7.查找 8.打印 9.销毁 三、完整项目代码 1.头文件(List.h) 2.函数文件(List.c) 3.主函数测试文件(test.c) 前言 在学习数据结构过程中&…

HQL语法

HQL基础语法 Hive中的语句叫做HQL语句,是一种类似SQL的语句,基本上和SQL相同但是某些地方也是有很大的区别. 数据库操作 创建数据库 1.创建一个数据库,数据库在HDFS上的默认存储路径是/hive/warehouse/*.db。 create database hive01; 避免要创建的数据库已经存在错误&…

【零基础学机器学习 3】机器学习类型简介:监督学习 - 无监督学习 - 强化学习

机器学习是人工智能的一种应用,从大量数据中学习并解决特定问题。它使用计算机算法,通过经验自动提高效率。 机器学习主要有三种类型:监督、无监督和强化学习。 监督学习 概述 监督学习是一种使用标记数据来训练机器学习模型的机器学习类型。在标记数据中,输出已经是已知…

javascript-基础知识点总结

目录 &#xff08;一&#xff09;基础语法 1、javaScript引入方式 2、变量与常量 3、数据类型 typeof操作符 4、运算符 5、输出函数 6、类型转化 7、转移字符 8、注释 &#xff08;二&#xff09;流程控制 1、选择结构 switch 2、循环结构 for &#xff08;三&…

简单网络管理协议 SNMP

文章目录 1 概述1.1 结构1.2 操作 2 SNMP2.1 报文格式2.2 五大报文类型 3 扩展3.1 网工软考真题 1 概述 #mermaid-svg-95KMV1m3prKJgwv1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-95KMV1m3prKJgwv1 .error-ico…

【云原生】K8sYaml文件详细

K8sYaml文件详细 一、Kubernetes支持的文件格式1、yaml和json的主要区别2、yaml语言格式 二、YAML操作1、查看API资源版本标签2、编写资源配置清单3、创建资源对象4、查看创建的pod5、创建service服务对外提供访问并测试6、创建资源对象7、测试访问 三、Kubernetes中的Port四、…

chatgpt赋能Python-new_init_python

新版Python中的__new__和__init__方法 Python作为一种高级编程语言&#xff0c;具有简单易学、代码可读性高和编写效率高等特点&#xff0c;因此越来越受到程序员们的青睐。其中&#xff0c;__new__和__init__方法是Python中的两个非常重要的方法&#xff0c;它们在实例化一个…

chatgpt赋能Python-matplotlib绘制雷达图

Matplotlib 绘制雷达图 在数据分析和可视化领域&#xff0c;雷达图是一种常用的图表类型。Matplotlib 是一个用于绘制 2D 图形的 Python 库&#xff0c;也可以用于绘制雷达图。本文将介绍如何使用 Matplotlib 绘制雷达图&#xff0c;包括数据准备、绘图方式和样式设置。 数据…

改进YOLOv5 | 在 C3 模块中添加【SE】【CBAM】【 ECA 】【CA】注意力机制 | 附详细结构图

文章目录 1. SE 注意力模块1.1 原理1.2 C3_SE 代码2. CBAM 注意力模块2.1 原理2.2 C3_CBAM 代码3. CA 注意力模块3.1 原理3.2 C3_CA 代码4. ECA 注意力模块4.1 原理4.2 C3_ECA 代码5. 添加方式💡6. C3_Attention 结构图 🍀7. 相关推荐🍀

Ada语言学习(1)Basic Knowledge

文章目录 说在前头命名注释数字变量变量类型signed integersEnumerationsFloating Points 类型重用&#xff08;继承&#xff09;类型转换 运算符属性&#xff08;Attributes&#xff09;练习 说在前头 本系列教程将会通过提问的方式来完成整个学习过程&#xff0c;因为当你能…

瑞吉外卖 - 公共字段自动填充功能(10)

某马瑞吉外卖单体架构项目完整开发文档&#xff0c;基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成&#xff0c;有需要的胖友记得一键三连&#xff0c;关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料&#xff1a;https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

每日一练 | 网络工程师软考真题 Day3

1、以下图的两种编码方案分别是 。 A&#xff0e;①差分曼彻斯特编码&#xff0c;②双相码 B&#xff0e;①NRZ编码&#xff0c;②差分曼彻斯特编码 C&#xff0e;①NRZ-I编码&#xff0c;②曼彻斯特编码 D&#xff0e;①极性码&#xff0c;②双极性码 2、假设模拟…

windows下安装emsdk

先从github上下载emsdk工程&#xff1a; # Get the emsdk repo git clone https://github.com/emscripten-core/emsdk.git# Enter that directory cd emsdkgit pull 更新到最新代码 clone 工程可以在 git bash here 命令行下&#xff1a; 执行下面的指令用cmd命令行&#xf…

chatgpt赋能Python-numpy_加速

介绍 NumPy是Python编程语言的数值计算扩展库。它包括一个强大的N维数组对象和用于处理这些数组的函数。NumPy是一个基于Python的免费开源软件项目&#xff0c;由社区驱动。这个库提供了一种高效的存储和处理大型矩阵数据的方式&#xff0c;同时也提供了非常高效的处理大量数据…

chatgpt赋能Python-jinja_python

Jinja Python介绍及SEO优化 Jinja是一个流行的Python模板引擎&#xff0c;它允许开发人员使用简单的语法来生成动态内容。在本文中&#xff0c;我们将介绍Jinja的基础知识&#xff0c;并探讨如何将其应用于搜索引擎优化。 Jinja Python介绍 Jinja是Python语言的一种模板引擎…

Java面向对象程序设计实验报告(实验一 面向对象基础练习)

✨作者&#xff1a;命运之光 ✨ 专栏&#xff1a;Java面向对象程序设计实验报告 目录 ✨一、需求分析 ✨二、概要设计 ✨三、详细设计 ✨四、调试分析 ✨附录&#xff1a;源代码&#xff08;带注释&#xff09; 实验一 面向对象基础练习 实验环境&#xff1a;EclipseJDK …

MindFusion.JavaScript Pack 2023 crack

MindFusion.JavaScript Pack 2023 crack 径向树布局-添加了新的类&#xff0c;它将树级别排列在围绕根的同心圆中。 套索缩放工具-控件现在支持使用套索工具进行缩放的几种方法&#xff1a; 可以将行为属性设置为“缩放”以始终绘制缩放套索。 用户可以使用修改键和鼠标左键绘制…