【软件工程】软件工程需求分析——面向对象分析
halo~我是bay_Tong桐小白
本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点
软件工程需求分析——面向对象分析
- 【更新日志】
- 面向对象分析概述
- 建立用例模型
- 建立对象模型(更新中……)
- 建立动态模型(更新中……)
- 建立数据模型(更新中……)
【更新日志】
最近更新:
- 暂无编辑记录,持续更新中……
面向对象分析概述
问题域与系统责任
- 问题域:在软件工程中,问题域是指被开发系统的应用领域,即在客观世界中由该系统处理的业务范围
- 系统责任:所开发的软件系统应该具备的职能
面向对象分析(OOA)
强调运用面向对象方法,对问题域和系统责任进行分析和理解,找出描述问题和系统责任所需要的对象,定义对象的属性、操作以及对象之间的关系,建立一个符合问题域、满足用户功能需求的OOA模型
面向对象分析主要活动
- 与客户进行沟通、了解用户需求、建立需求模型
- 表示问题域中的对象,分析对象承担的职责
- 分析对象与对象间的关系
- 定义对象间的交互
这些活动需要反复迭代,直至模型完成
面向对象分析的模型
- 功能模型(用例模型):由用例和场景表示,从用户的角度描述系统的功能,是整个后续工作的基础,也是测试与验收的依据
- 静态模型(对象模型):由类和对象表示,主要包含面向对象系统中的类、接口及对象等软件的基本组成单元以及它们间的联系
- 动态模型(交互模型):由活动图、顺序图等表示,描述问题涉及的交互作用和时序
系统范围
建立需求模型时首先要确定系统的范围(即一个系统与系统以外各种事物的分界线),找出系统外与系统交互的事物,然后从这些事物与系统交互的角度,通过用例来描述这些事物怎样使用系统,以及系统向他们提供什么服务
进行面向对象系统分析时,需要建立这样的环境图(也可看成是顶层用例图)来确定系统的边界
建立用例模型
用例:简单说即为对系统的功能描述,用例模型奠定了整个系统软件开发的基础
建立用例模型的目的是提取和分析足够的需求信息,用例模型应能表述用户需要什么,而不涉及系统将如何构造和实现特定细节。
创建用例模型的过程:
- 确定参与者——标识系统将支持的不同类型的用户,可以是人、事件或其它系统
- 确定需求用例——参与者需要系统提供的完整功能
- 创建用例图——标识参与者与用例间、用例与用例间的关系
确定参与者
重点放在如何使用系统而不是如何构造系统上,也即进一步明确系统的范围和边界(环境图)。可以从几个方面来识别参与者:
- 人员或组织,即直接使用系统的人员或组织
- 外部系统,所有与本系统交互的外部系统都是参与者。两种常见的情况:
如果正在开发的系统中使用一个已有系统,则这个已有系统被看成是一个外部系统;
如果一个大系统在任务分解时被划分成几个子系统,则每个子系统的开发者都把其他子系统看成是外部系统 - 设备,即与系统交互的设备
确定需求用例
从用户的视角看,一个用例是参与者与系统之间的一次典型的交互作用;从系统内部的视角出发,一个用例代表系统执行的一系列动作,动作的执行结果能够被外部的参与者察觉。可以从以下几个方面获取用例:
- 从参与者角度获取。识别参与者的责任是尊者参与者与系统交互理由的良好基础
- 从系统功能的角度获取。完成一项功能的一组动作序列要描述在一个用例中,通常,以用例中的动作为线索能发现其他用例
- 利用场景获取用例。即仅关注具体的业务活动,确定谁是扮演者,具体做了哪些事情,做这些事情的目的是什么,将本质上相同的场景抽象为一个用例
用例规约描述(规格说明):对用例的完整描述包括用例名称、参与者、前置条件、后置条件、一个主事件流、零到多个备选事件流
- 前置条件:规定在用例中场景开始之前必须为“真”的条件
- 后置条件:规定在用例结束后必须为“真”的条件
- 主事件流:表示正常情况下参与者与系统之间的信息交互及动作序列
- 备选事件流:表示特殊情况或异常情况下的信息交互及动作序列
每个用例均应给出用例的规格说明
以银行ATM转账用例为例,规约描述如下:
创建用例图
用例图是若干个参与者和用例以及它们间的关系构成的图形表示
每个系统通常都有一个总体用例图,若总体用例图过于复杂,则可以创建多个用例图,每个用例图关注系统的某一方面,事实上用例建模是围绕参与者创建,且往往不是一次就能完成的,需要多次迭代、逐步完善
需要注意的是:
- 参与者和用例之间的连线并不表示信息流,仅代表用例同用例及参与者之间的相互联系
- 参与者和用例间的箭头表示在这一关系中哪一方是交互的主动发起者,箭头所指方式交互的被动接受者
用例图建好后,下一步应建立初步的类图,之后对于关键的用例需要建立顺序图、活动图等
建立对象模型(更新中……)
在系统分析阶段,对象建模的主要任务是建立问题域的概念模型,即描述现实世界中问题域类与对象以及他们之间的关系
复杂问题(大型系统)的对象模型应由5个层次组成:主题层(也称范畴层)、类-对象层、结构层、属性层、服务层,与此对应的5项主要活动:划分主题、确定类与对象、确定结构、确定属性、确定服务
这5项活动的抽象层次不同,在实际面向对象分析时,总体上是按照自顶向下的顺序进行的,但不需要严格遵守这种原则,也无需彻底完成一项工作后再开始另外一项工作
建立动态模型(更新中……)
动态模型描述与操作时间和顺序有关的系统特征、影响更改的事件、事件的序列、事件的环境以及事件的组织
在UML中动态模型的描述工具有顺序图、协作图、活动图、状态图等
建立数据模型(更新中……)
数据模型是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架
数据模型所描述的内容有三部分,分别是数据结构、数据操作和数据约束
- 数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束
- 数据操作:数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式
- 数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容
由类图可自动生成数据库表
持续更新中……
我是桐小白,一个摸爬滚打的计算机小白
【软件工程】软件工程需求分析——面向对象分析相关推荐
- 软件工程教程:第9章面向对象分析 课后习题
<软件工程教程>(第2版)主编:吴迪 马宏茹 丁万宁 电子科技大学出版社 目录 一.选择题 二.简答题 (1)简述O0A模型的层次结构. (2)简述面向对象分析方法(OOA)的五个基本步骤 ...
- 计算机网络工程实验分析与体会_《软件工程》面向对象分析实验
面向对象分析实验报告要求 1目的与要求: 1)系统学习和理解面向对象软件工程分析与设计阶段的基本任务.过程以及基本概念.原理.技术和方法: 2)掌握OOA阶段的建模方法和建模工具,如对象模型.动态模型 ...
- 软件工程 期末大作业参考 【餐厅点餐系统 】(面向对象模型:需求分析+面向对象设计书+可行性分析+测试文档+java界面)
软件工程大作业(餐厅管理系统)参考:需求分析+面向对象设计书+可行性分析+测试文档+JAVA项目 一.需求分析部分截图 二.面向对象设计书部分截图 三.可行性分析部分截图 四.测试文档部分截图 本文主 ...
- 软件工程OOAD(面向对象的分析与设计)概念整理
期中复习 词汇 说明 Iterative 迭代 Agile 敏捷 Vision 设想 Glossary 词汇表 Supplementary Specification 补充性规格说明 OOAD的定义 ...
- [软件工程] 面向对象分析
面向对象分析 面向对象分析 一. 面向对象的基本过程 (一) 概述面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程. (二) 3个子模型与5个层次 二.需求陈述 (一) 书写要点 (二) ...
- 软件工程之面向对象分析与设计
文章链接:https://codemouse.online/archives/2020-05-15124035 面向对象的基本概念 对象:一组属性以及这组属性上专用操作封装体. 消息:对象间通信手段, ...
- 软件工程慕课答案 第七周 面向对象分析
面向对象分析概述 识别类 识别属性和操作 识别对象之间的关系
- Visio——软件工程实验壹——面向对象需求分析方法
所使用的工具软件及环境: 硬件环境:微机1台. 软件环境:操作系统:Windows:建模工具:Visio或Rose:数据库:MySQL(可选):开发工具包:JDK(可选):开发环境:MyEclipse ...
- 软考——软件工程——面向对象分析与设计方法
目录 1,面向对象的基本概念 2,面向对象分析与设计 2.1,面向对象分析OOA 2.2,面向对象设计OOD 2.3,面向对象编程OOP 面向对象(Object-Oriented)OO. 面向对象的基 ...
- (软件工程复习核心重点)第九章面向对象分析-第二节:面向对象分析之建立对象模型
文章目录 一: 基本概念 (1)对象模型 (2)先建立对象模型的原因 (3)信息来源 (4)典型的建模步骤 二:确定类与对象 (1)找出候选的类与对象 A:客观事物分类 B:非正式分析 C:提取隐含的 ...
最新文章
- Java系列 – 用Java8新特性进行Java开发太爽了(续)
- echarts legend文字配置多个颜色(转)
- 2019年第一个工作日!
- Hologres揭秘:高性能原生加速MaxCompute核心原理
- Matlab仿真PID控制(带M文件、simulink截图和参数分析)
- android studio第三方调试,Android Studio直接运行调试签名包
- SAP License:利润中心设计思路
- 导致集群重启_园区网核心交换机S7706异常重启导致无线网络故障
- 苹果mac交互原型设计软件:Axure RP
- win10添加桌面图标到开始屏幕
- visio2019画电路图(论文)
- springboot配置文件yml格式
- Pyecharts+高德地图实现3D地图效果
- “Sensor”的名词解释与概述
- 优漫动游平面设计思维思维训练法
- FBG光纤反射器,FTTX网络链路监控的理想光端
- 思科下一代模拟器EVE-NG镜像导入
- 计算机EI检索论文,EI检索论文
- 运维监控都监控些什么
- 芯片封装测试流程详解
热门文章
- 【裴礼文数学分析】例1.2.1
- kmp算法题全套svp版
- 22-09-04 西安 谷粒商城(01)MySQL主从复制、MyCat读写分离、MyCat分库分表
- 如何解决一些控件无法运行在高版本的Chrome下运行的问题
- 最强下载神器IDM的安装和使用
- libaio在mysql中的作用,ubuntu安裝mysql遇到的坑----解決Mysql報錯缺少libaio.so.1
- java转换字符串编码格式_java转换字符串编码格式的方法
- 基于matlab实现数字图像处理之图像复原
- 五笔字根表口诀的通俗易懂讲解
- Leetcode(java)